Diseny Digital
Enviado por kekakeku • 16 de Octubre de 2013 • 5.888 Palabras (24 Páginas) • 181 Visitas
AperB
Aquest mòdul realitza el producte entre les dues entrades que són dos busos de 4 bits en BCD (A[3..0] i B[3..0]) i a la sortida tenim el resultat d’aquesta multiplicación en un bus de 8 bits en BCD de 4 bits (AperB[7..0]). Per arribar al resultat final, hem convertit la sortida del mòdul MULT8x8 que està en binari natural de 8 bits a BCD de 4 bits, fent-la passar per un mòdul on servint-nos d’un codi VHDL, la hem transformat.
A continuació veiem l’esquemàtic del mòdul:
Finalment la seva simulació és la següent:
Submòduls del mòdul AperB
- 4Bto8B
El mòdul 4Bto8B transforma el bus de 4 bits en BCD de l’entrada A[3..0] a un bus de 8 bits en BCD que veiem a la sortida B[7..0].
Per fer-ho només cal afegir un bus de 4 ‘0’ com a bits de més pes sigui quin sigui el valor de l’entrada.
Aquest és el seu esquemàtic:
- B_toBCD
El mòdul B_toBCD transforma l’entrada B[7..0] que està en binari natural en un bus de 8 bits en BCD de 4 bits. Els quatre bits de més pes corresponen al primer dígit decimal del producte i els quatre bits de menys pes al segon dígit.
Per fer aquest mòdul hem emparat el següent en VHDL:
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY B_toBCD IS PORT (
B : IN STD_LOGIC_VECTOR(7 downto 0);
BCD : OUT STD_LOGIC_VECTOR(7 downto 0));
END B_toBCD;
ARCHITECTURE taula_veritat OF B_toBCD IS
BEGIN
with B SELECT BCD <=
"10000001" WHEN "01010001", -- 81
"01110010" WHEN "01001000", -- 72
"01100100" WHEN "01000000", -- 64
"01100011" WHEN "00111111", -- 63
"01010110" WHEN "00111000", -- 56
"01010100" WHEN "00110110", -- 54
"01001001" WHEN "00110001", -- 49
"01001000" WHEN "00110000", -- 48
"01000101" WHEN "00101101", -- 45
"01000010" WHEN "00101010", -- 42
"01000000" WHEN "00101000", -- 40
"00110110" WHEN "00100100", -- 36
"00110101" WHEN "00100011", -- 35
"00110010" WHEN "00100000", -- 32
"00110000" WHEN "00011110", -- 30
"00101000" WHEN "00011100", -- 28
"00100111" WHEN "00011011", -- 27
"00100101" WHEN "00011001", -- 25
"00100100" WHEN "00011000", -- 24
"00100001" WHEN "00010101", -- 21
"00100000" WHEN "00010100", -- 20
"00011000" WHEN "00010010", -- 18
"00010110" WHEN "00010000", -- 16
"00010101" WHEN "00001111", -- 15
"00010100" WHEN "00001110", -- 14
"00010010" WHEN "00001100", -- 12
"00010000" WHEN "00001010", -- 10
"00001001" WHEN "00001001", -- 9
"00001000" WHEN "00001000", -- 8
"00000111" WHEN "00000111", -- 7
"00000110" WHEN "00000110", -- 6
"00000101" WHEN "00000101", -- 5
"00000100" WHEN "00000100", -- 4
"00000011" WHEN "00000011", -- 3
"00000010" WHEN "00000010", -- 2
"00000001" WHEN "00000001", -- 1
"00000000" WHEN "00000000", -- 0
"--------" WHEN OTHERS;
END taula_veritat;
SEL
El mòdul SEL veu a la sortida res[7..0], la entrada AxB[7..0], quan a l’entrada show hi tenim un ‘1’, i veurem VCC quan show sigui ‘0’. VCC és un bus de 8 ‘1’. Per implementar aquest funcionament ens hem valgut del mòdul Mux_2B8_to_1B8 per tal de decidir si hi tindrem una o altra entrada en funció del selector que en el nostre cas és show.
A continuació veiem la simulació que hem realitzat del mòdul:
Keygroup
El mòdul Keygroup ens indica quin tipus d’entrada li hem introduït en funció de l’entrada key. Quan key és
...