Diseny Digital
Enviado por kekakeku • 16 de Octubre de 2013 • 5.888 Palabras (24 Páginas) • 198 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 ‘0’ les tres sortides (bcd, ast i alm) són ‘0’, key indica si s’està introduint o no algun valor. Quan keycode[3..0] està entre ‘0000’ i ‘1001’ la sortida bcd serà ‘1’ i la resta ‘0’, quan keycode[3..0] sigui ‘1110’ la sortida ast serà ‘1’ i la resta ‘0’ i quan keycode[3..0] sigui ‘1111’ la sortida alm serà ‘1’ i la resta ‘0’. Per la resta de possibles valors de keycode[3..0] les tres sortides valdran ‘0’.
TdV del mòdul Keycode
Key Keycode[3..0] bcd ast alm
0 ---- 0 0 0
1 0000 1 0 0
1 0001 1 0 0
1 0010 1 0 0
1 0011 1 0 0
1 0100 1 0 0
1 0101 1 0 0
1 0110 1 0 0
1 0111 1 0 0
1 1000 1 0 0
1 1001 1 0 0
1 1010 0 0 0
1 1011 0 0 0
1 1100 0 0 0
1 1101 0 0 0
1 1110 0 1 0
1 1111 0 0 1
A partir d’aquesta taula de veritat, hem dibuixat un mapa de Karnaugh de la sortida bcd, i hem trobat els minterms de les tres sortides (la alm i ast ja els tenim directes). Després hem dissenyat amb portes lògiques el circuit resultant amb les entrades i sortides. L’esquemàtic resultant és el següent :
A continuació tenim la simulació d’aquest mòdul:
REG
El mòdul reg és un registre síncron de 4 bits. La funció que realitza aquest mòdul és guardar els valors introduïts. Sempre es guarden únicament els dos últims valors BCD introduïts. Quan el valor de l’entrada intro és ‘1’ en OpA[3..0] si introdueix el valor introduït
...