Lab10 somadores

  • 875 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
875
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
32
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Universidade Federal de Santa Catarina Centro Tecnológico – CTC Departamento de Engenharia Elétrica http://gse.ufsc.br“EEL7020 – Sistemas Digitais” Prof. Eduardo Augusto Bezerra Eduardo.Bezerra@eel.ufsc.br Florianópolis, agosto de 2012.
  • 2. Sistemas DigitaisProjeto de somador de 4 bits EEL7020 – Sistemas Digitais 2/21
  • 3. Exemplo: somador de 4 bitsci FA (1 bit)aibi si = ci xor ai xor bi ci si ci+1 = ai and bi or ai FA ci+1 ai and ci or bi bi and ci FA (1 bit) Ripple-carry adder de 4 bits, construído com 4 FAs ai bi ci ci+1 si carry 0 carry 2 carry 1 FA FA FA FA carry 2 carry 1 carry 0 EEL7020 – Sistemas Digitais 3/21
  • 4. Exemplo: somador de 4 bits Cout C3 C2 C1 C0 Cin A3 A2 A1 A0 + B3 B2 B1 B0 Ripple Carry Addder (RCA) S3 S2 S1 S0 b3 a3 b2 a2 b1 a1 b0 a0 Cin FA FA FA FA C3 C2 C1 C0 Cin carry(2) carry(1) carry(0) Cout S3 S2 S1 S0 EEL7020 – Sistemas Digitais 4/21
  • 5. Exemplo: somador de 4 bitsA seguir são apresentadas três implementações em VHDL para umsomador de 4 bits para utilização no kit DE2 da Altera.Algumas observações:• A “Solução I” é bastante semelhante às implementações em VHDL estrutural desenvolvidas nas aulas anteriores (início do curso).• Na “Solução I”, notar a utilização do signal carry na architecture.• Na “Solução II” foi criado um componente que implementa um somador completo (Full-Adder ou FA) na entity FA, e esse componente é utilizado na architeture RCA_stru da entity RCA.• Na “Solução II” foi utilizado um XOR para verificação de overflow. Isso é necessário, uma vez que está sendo assumido o uso do circuito para cálculos com números com sinal (complemento de 2).• Na “Solução III”, foi utilizado o operador + para geração do somador de 4 bits.• Lembrando que para utilizar o operador + é necessário incluir o use IEEE.std_logic_unsigned.all; EEL7020 – Sistemas Digitais 5/21
  • 6. Solução I SW(0) ciLIBRARY ieee; SW(1) aiUSE ieee.std_logic_1164.all; si SW(5) biENTITY Somador4 IS LEDG(0) PORT ( SW : IN STD_LOGIC_VECTOR(17 DOWNTO 0); ci+1 LEDG : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) carry(0) );END Somador4;ARCHITECTURE stru OF Somador4 IS -- SW(0) = Cin signal carry, a, b: std_logic_vector(3 downto 0); -- SW(1) = A0BEGIN -- SW(2) = A1 a <= SW(4 downto 1); b <= SW(8 downto 5); -- SW(3) = A2 LEDG(0) <= ((a(0) xor b(0)) xor SW(0)); -- SW(4) = A3 carry(0) <= (a(0) and b(0)) or (a(0) and SW(0)) or (b(0) and SW(0)); LEDG(1) <= ((SW(2) xor SW(6)) xor carry(0)); -- SW(5) = B0 carry(1) <= (a(1) and b(1)) or (a(1) and carry (0)) or (b(1) and carry(0)); -- SW(6) = B1 LEDG(2) <= ((SW(3) xor SW(7)) xor carry(1)); -- SW(7) = B2 carry(2) <= (a(2) and b(2)) or (a(2) and carry(1)) or (b(2) and carry(1)); -- SW(8) = B3 LEDG(3) <= ((SW(4) xor SW(8)) xor carry(2)); -- LEDG(0) = S0 carry(3) <= (a(3) and b(3)) or (a(3) and carry(2)) or (b(3) and carry(2)); -- LEDG(1) = S1 LEDG(4) <= carry(3); -- LEDG(2) = S2END stru; -- LEDG(3) = S3 -- LEDG(4) = Cout EEL7020 – Sistemas Digitais 6/21
  • 7. library ieee; library ieee;use ieee.std_logic_1164.all; use ieee.std_logic_1164.all; Solução II-- somador completo (FA) entity RCA isentity FA is port (SW : IN STD_LOGIC_VECTOR(17 downto 0); port (a, b, c: in std_logic; LEDG : OUT STD_LOGIC_VECTOR(7 downto 0) soma, carry: out std_logic); ); end FA; end RCA;architecture FA_beh of FA isbegin architecture RCA_stru of RCA is soma <= (a xor b) xor c; signal carry: std_logic_vector (3 downto 0); carry <= b when ((a xor b) = 0) component FA else c; port (a, b, c: in std_logic;end FA_beh; soma, carry: out std_logic); end component;-- SW(0) = Cin begin-- SW(1) = A0-- SW(2) = A1 FA0:-- SW(3) = A2 FA port map (sw(1), sw(5), sw(0), LEDG(0), carry(0));-- SW(4) = A3 FA1:-- SW(5) = B0 FA port map (sw(2), sw(6), carry(0), LEDG(1), carry(1));-- SW(6) = B1 FA2:-- SW(7) = B2 FA port map (sw(3), sw(7), carry(1), LEDG(2), carry(2));-- SW(8) = B3 FA3:-- LEDG(0) = S0-- LEDG(1) = S1 FA port map (sw(4), sw(8), carry(2), LEDG(3), carry(3));-- LEDG(2) = S2 LEDG(6) <= carry(3); -- carry out-- LEDG(3) = S3 LEDG(7) <= carry(2) xor carry(3); -- overflow-- LEDG(6) = Cout -- para tratar números com sinal (complemento de 2)-- LEDG(7) = Overf end RCA_stru; EEL7020 – Sistemas Digitais 7/21
  • 8. Solução IIIlibrary IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;entity RCA is port (SW : IN STD_LOGIC_VECTOR(17 DOWNTO 0); LEDG : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );end RCA;architecture RCA_stru of RCA isbegin LEDG(3 downto 0) <= SW(4 downto 1) + SW(8 downto 5) + ("000" & SW(0));end RCA_stru; -- SW(0) = Cin -- SW(1) = A0 -- SW(5) = B0 -- LEDG(0) = S0 -- SW(2) = A1 -- SW(6) = B1 -- LEDG(1) = S1 -- SW(3) = A2 -- SW(7) = B2 -- LEDG(2) = S2 -- SW(4) = A3 -- SW(8) = B3 -- LEDG(3) = S3 EEL7020 – Sistemas Digitais 8/21
  • 9. Resultado da síntese (compile no Quartus II) Solução II Solução III 10 5 EEL7020 – Sistemas Digitais 9/21
  • 10. Utilizando o RTL Viewer do Quartus II EEL7020 – Sistemas Digitais 10/21
  • 11. Utilizando o RTL Viewer do Quartus II Solução I Solução II Entrando no projeto hierárquico EEL7020 – Sistemas Digitais 11/21
  • 12. Flags • Na Solução II foram realizadas as seguintes atribuições: LEDG(6) <= carry(3); LEDG(7) <= carry(2) xor carry(3); • A princípio, essas sinalizações (flags) não são necessárias, uma vez que o resultado da soma já está sendo indicado em LEDG(3), LEDG(2), LEDG(1), LEDG(0). • Porém, flags são bastante úteis para sinalizar situações, tais como (números com sinal): • Resultado está incorreto devido a overflow (LEDG(7)) • Somador gerou um carry out (LEDG(6)) • Resultado da soma foi um valor negativo • Resultado da soma foi ZERO EEL7020 – Sistemas Digitais 12/21
  • 13. Tarefa a ser realizada:Projeto de somador de 8 bits com flags EEL7020 – Sistemas Digitais 13/21
  • 14. Projeto de somador paralelo RCA • O diagrama a seguir apresenta um RCA de 4 bits • Utiliza um XOR entre o C2 e C3 para indicar ocorrência de overflow, assumindo que o circuito trabalho com números com sinal • Sinaliza em LEDR(0) a ocorrência de carry out b3 a3 b2 a2 b1 a1 b0 a0 Cin SW(8) SW(4) SW(7) SW(3) SW(6) SW(2) SW(5) SW(1) SW(0)LEDR(0) FA FA FA FA C3 C2 C1 C0 Cin carry(2) carry(1) carry(0)LEDR(1) LEDG(3) LEDG(2) LEDG(1) LEDG(0)Overflow S3 S2 S1 S0 EEL7020 – Sistemas Digitais 14/21
  • 15. TarefaA partir da Solução II apresentada anteriormente, implementar umsomador de 8 bits com as seguintes entradas e saídas: Entrada Cin e A Entrada B Saída Soma Saída Flags SW(0) = Cin SW(1) = A0 SW(9) = B0 LEDG(0) = S0 LEDR(0) = carry out SW(2) = A1 SW(10) = B1 LEDG(1) = S1 LEDR(1) = overflow SW(3) = A2 SW(11) = B2 LEDG(2) = S2 LEDR(2) = negativo SW(4) = A3 SW(12) = B3 LEDG(3) = S3 LEDR(3) = zero SW(5) = A4 SW(13) = B4 LEDG(4) = S4 SW(6) = A5 SW(14) = B5 LEDG(5) = S5 SW(7) = A6 SW(15) = B6 LEDG(6) = S6 SW(8) = A7 SW(16) = B7 LEDG(7) = S7 C8 C7 C6 C5 C4 C3 C2 C1 “vai-um” (carry) A7 A6 A5 A4 A3 A2 A1 A0 1º operando + B7 B6 B5 B4 B3 B2 B1 B0 2º operando S7 S6 S5 S4 S3 S2 S1 S0 soma EEL7020 – Sistemas Digitais 15/21
  • 16. Tarefa (continuação)• Os LEDs verdes (LEDG) deverão apresentar o resultado da soma dosoperandos A e B (fornecidos com SW).• O LED vermelho 0 deverá acender, sempre que o resultado de umasoma gerar um carry out, caso contrário deverá permanecer apagado.• O LED vermelho 1 deverá acender, sempre que o resultado de umasoma resultar em overflow, caso contrário deverá permanecer apagado.• O LED vermelho 2 deverá acender, sempre que o resultado de umasoma resultar em um valor negativo (bit 7 = ‘1’), caso contrário deverápermanecer apagado.• O LED vermelho 3 deverá acender, sempre que o resultado de umasoma resultar em zero, caso contrário deverá permanecer apagado. LEDR(0) = carry out LEDR(1) = overflow LEDR(2) = negativo LEDR(3) = zero EEL7020 – Sistemas Digitais 16/21
  • 17. Tarefa (continuação)• Realizar a simulação temporal (e não a funcional das aulasanteriores), de forma a verificar os valores intermediários dasoma, até o circuito combinacional do somador fornecer oresultado correto na saída. EEL7020 – Sistemas Digitais 17/21
  • 18. Utilização do novo somador na mini-calculadora EEL7020 – Sistemas Digitais 18/21
  • 19. Somador paralelo RCA na mini-calculadora• Após o novo somador estar funcionando na simulação temporal,alterar o projeto da mini-calculadora desenvolvida durante osemestre, de forma a utilizar esse novo circuito.• O componente C1 utilizado desde as primeiras aulas pararealizar a soma (com o operador de ‘+’), deve ser removido, e onovo somador RCA deve ser incluído no seu lugar.• Realizar todas as alterações necessárias na interface (entity) donovo somador, de forma a incluí-lo na mini-calculadora semprecisar alterar os demais componentes, conforme o diagrama deblocos a seguir.• Como os LEDs vermelhos já estão em uso pelo circuito da mini-calculadora, nesse caso, os LEDs verdes poderiam ser utilizadospara apresentar os flags do EEL7020 – Sistemas Digitais novo somador. 19/21
  • 20. top_calc.vhd F=A+B Registrador Registrador D Q 8 8 D F(7..4) Decod. EN 8 Q 4 7-seg EN 8 4 HEX1 F= A or B 8 8 F1 00 8 F2Operandos 01 F(3..0) Registrador FSW(7 downto 0) F3 Mux D 10 8 4 Q Decod. F4 11 4 7-seg EN F=A/2 2 HEX0 sel 8 8 8 F(7..0) Registrador F=A*2 D Q EN 8 8 8 LEDR(7 downto 0) Enable_1 Clock Reset Seleção da operação EEL7020 – Sistemas Digitais Enable_2 20/21
  • 21. TOPO HEX1 Operandos SW(7 downto 0) 8 HEX0 LEDR 2 (7 downto 0) Enable_1 Seleção Enable_2 Reset KEY(0) Clock CLOCK_50 Rst FSM Clk Máquina de estados com a função de Enter KEY(1) Enter “controlador” do fluxo de operaçõesOperação SW(17..16) Operacao realizadas pela calculadora. 2 EEL7020 – Sistemas Digitais 21/21