BCD vers 7 segments Décodeur
Je viens de commencer le codage VHDL, et maintenant avoir de code BCD vers 7 segments décodeur. Je fais un comportement de la conception(c'est obligatoire), mais pour l'instant j'ai de la difficulté sur la façon de coder l'affichage.
Je sais comment le code de ce décodeur avec juste une entrée et une sortie, cependant, nous avons une deuxième sortie appelé DIGEN_L qui est utilisé comme notre écran. Elle est active basse bus de sortie qui permet à chaque chiffre de l'affichage à 7 segments sur notre conseil d'administration.
Il nous a dit de nous programmer à '01110 de sorte que le quatrième chiffre est toujours en marche et les trois autres sont éteints.
Je ne sais pas comment code DIGEN_L dans mon code, et ne savent pas ce que la déclaration ci-dessus, signifie en fait (code sage). Quelqu'un peut-il aider?
Si des éclaircissements sont nécessaires sur cette question, commentaire et je vais modifier.
Voici mon code:
library IEEE;
ise IEEE.std_logic_1164.all;
library unisim;
use unisim.vcomponents.all;
entity decoder is
port( BCD: in STD_LOGIC_VECTOR (3 downto 0);
( SEGS_L: out STD_LOGIC_VECTOR(5 downto 0);
( DIGEN_L: out STD_LOGIC_VECTOR(3 downto 0));
end decoder;
architecture decoder_arc of decoder is
begin
process(BCD)
begin
DIGEN_L <= "0111";
case BCD is
when "0000"=> SEGS_L <="1111110"; -- '0'
when "0001"=> SEGS_L <="0110000"; -- '1'
when "0010"=> SEGS_L <="1101101"; -- '2'
when "0011"=> SEGS_L <="1111001"; -- '3'
when "0100"=> SEGS_L <="0110011"; -- '4'
when "0101"=> SEGS_L <="1011011"; -- '5'
when "0110"=> SEGS_L <="1011111"; -- '6'
when "0111"=> SEGS_L <="1110000"; -- '7'
when "1000"=> SEGS_L <="1111111"; -- '8'
when "1001"=> SEGS_L <="1111011"; -- '9'
when others=> SEGS_L <="-";
end case;
end process;
end decoder_arc;
- Veuillez noter que lorsque les autres=> SEGS_L <="-"; n'est pas synthesizable. Soit faire une réelle affectation (par exemple, tous les feux sur, toutes les lampes off) à l'intérieur de l'instruction de cas, ou de faire une affectation par défaut en haut de la procédure: decode_bcd_proc: processus (BCD) commencer SEGS_L <= (autres => '0'); cas BCD est ... la fin du processus de decode_bcd_proc;
Vous devez vous connecter pour publier un commentaire.
Donc, fondamentalement, vous disposez d'un numéro à 4 chiffres d'affichage avec chaque chiffre étant un affichage à 7 segments.
Maintenant, vous avez quatre low-active digil enen mesure DIGEN_L pour chaque chiffre. (Btw, pourquoi ton vecteur de cinq bits?)
L'idée ici est que vous avez votre code BCD-7-seg décodeur comme vous le feriez normalement. Donc, nous avons notre entité
Maintenant, vous dit comment code le réel décodeur, donc BCD et SEVEN_SEG doit être clair. Votre professeur m'a demandé de vous fournir une valeur statique à DIGEN_L. Donc, juste aller de l'avant et de le faire:
L'idée ici est que tous les 7 segments affiche part les mêmes signaux pour les différents segments (SEVEN_SIG si vous voulez). Cependant, tous les drains pour les LEDs sont connectées à des lignes individuelles, DIGEN_L (ou progrably un transistor contrôlé par DIGEN_L).
Donc, si vous passez DIGEN_L rapidement tout en fournissant un chiffre différent sur chaque interrupteur, vous verrez que tous les quatre chiffres de l'affichage de leur nombre respectif, en raison de la persistance de la vision.
Cependant, dans votre exemple, vous commencez à avoir juste un chiffre et un futur sera d'afficher deux chiffres ou plus, où vous apprendrez comment multiplex et éventuellement de vous préoccuper avec modulation de largeur d'impulsion de variation des chiffres individuels.