SlideShare a Scribd company logo
1 of 21
Download to read offline
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.
Sistemas Digitais


Projeto de somador de 4 bits




         EEL7020 – Sistemas Digitais   2/21
Exemplo: somador de 4 bits
ci                                                                     FA (1 bit)
ai
bi                     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
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
Exemplo: somador de 4 bits
A seguir são apresentadas três implementações em VHDL para um
somador 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
Solução I                    SW(0) ci
LIBRARY ieee;                                                SW(1) ai
USE ieee.std_logic_1164.all;                                                               si
                                                              SW(5) bi
ENTITY 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) = A0
BEGIN                                                                          -- 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) = S2
END stru;                                                                      -- LEDG(3) = S3
                                                                               -- LEDG(4) = Cout
                                         EEL7020 – Sistemas Digitais                      6/21
library ieee;                          library ieee;
use ieee.std_logic_1164.all;           use ieee.std_logic_1164.all;
                                                                               Solução II
-- somador completo (FA)               entity RCA is
entity 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 is
begin                                  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
Solução III
library 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 is
begin
 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
Resultado da síntese (compile no Quartus II)
        Solução II                                    Solução III




                  10                                          5




                        EEL7020 – Sistemas Digitais                 9/21
Utilizando o RTL Viewer do Quartus II




                     EEL7020 – Sistemas Digitais   10/21
Utilizando o RTL Viewer do Quartus II
                     Solução I




   Solução II     Entrando no projeto
                  hierárquico




                      EEL7020 – Sistemas Digitais   11/21
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
Tarefa a ser realizada:
Projeto de somador de 8 bits com flags




              EEL7020 – Sistemas Digitais   13/21
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
Tarefa
A partir da Solução II apresentada anteriormente, implementar um
somador 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
Tarefa (continuação)
• Os LEDs verdes (LEDG) deverão apresentar o resultado da soma dos
operandos A e B (fornecidos com SW).
• O LED vermelho 0 deverá acender, sempre que o resultado de uma
soma gerar um carry out, caso contrário deverá permanecer apagado.
• O LED vermelho 1 deverá acender, sempre que o resultado de uma
soma resultar em overflow, caso contrário deverá permanecer apagado.
• O LED vermelho 2 deverá acender, sempre que o resultado de uma
soma 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 uma
soma 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
Tarefa (continuação)

• Realizar a simulação temporal (e não a funcional das aulas
anteriores), de forma a verificar os valores intermediários da
soma, até o circuito combinacional do somador fornecer o
resultado correto na saída.




                           EEL7020 – Sistemas Digitais       17/21
Utilização do novo somador na mini-calculadora




                EEL7020 – Sistemas Digitais      18/21
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 o
semestre, de forma a utilizar esse novo circuito.

• O componente C1 utilizado desde as primeiras aulas para
realizar a soma (com o operador de ‘+’), deve ser removido, e o
novo somador RCA deve ser incluído no seu lugar.

• Realizar todas as alterações necessárias na interface (entity) do
novo somador, de forma a incluí-lo na mini-calculadora sem
precisar alterar os demais componentes, conforme o diagrama de
blocos a seguir.

• Como os LEDs vermelhos já estão em uso pelo circuito da mini-
calculadora, nesse caso, os LEDs verdes poderiam ser utilizados
para apresentar os flags do EEL7020 – Sistemas Digitais
                             novo somador.                 19/21
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
                                                                             F2
Operandos                                                                         01
                                                                                               F(3..0)




                                                                                                              Registrador
                                                                                           F
SW(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
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ções
Operação SW(17..16)           Operacao     realizadas pela calculadora.
                      2
                                    EEL7020 – Sistemas Digitais                       21/21

More Related Content

What's hot

Tabela completa de derivadas e integrais
Tabela completa de derivadas e integraisTabela completa de derivadas e integrais
Tabela completa de derivadas e integraisDiego Rodrigues Vaz
 
Exercícios Resolvidos: Distribuição Binomial
Exercícios Resolvidos: Distribuição BinomialExercícios Resolvidos: Distribuição Binomial
Exercícios Resolvidos: Distribuição BinomialDiego Oliveira
 
Introdução à Teoria dos Grafos
Introdução à Teoria dos GrafosIntrodução à Teoria dos Grafos
Introdução à Teoria dos GrafosBianca Dantas
 
Regras Das Potências
Regras Das PotênciasRegras Das Potências
Regras Das Potênciasnunograca
 
Relatório colisões turma t5
Relatório colisões   turma t5Relatório colisões   turma t5
Relatório colisões turma t5Roberto Leao
 
Hibridação sp sp2 e sp3
Hibridação sp sp2 e sp3Hibridação sp sp2 e sp3
Hibridação sp sp2 e sp3Pedro Kangombe
 
Sucessões: Exercícios Resolvidos
Sucessões: Exercícios ResolvidosSucessões: Exercícios Resolvidos
Sucessões: Exercícios Resolvidosnumerosnamente
 
Relatório de Experimento: Perdas de Carga Localizada.
Relatório de Experimento: Perdas de Carga Localizada.Relatório de Experimento: Perdas de Carga Localizada.
Relatório de Experimento: Perdas de Carga Localizada.UFMT
 
Resumo EquaçõEs 8º Ano
Resumo EquaçõEs 8º AnoResumo EquaçõEs 8º Ano
Resumo EquaçõEs 8º Anonescalda
 
Trigonometria e funções trigonométricas
Trigonometria  e funções trigonométricasTrigonometria  e funções trigonométricas
Trigonometria e funções trigonométricasRosana Santos Quirino
 

What's hot (20)

Tabela completa de derivadas e integrais
Tabela completa de derivadas e integraisTabela completa de derivadas e integrais
Tabela completa de derivadas e integrais
 
Tabela de Integrais
Tabela de  IntegraisTabela de  Integrais
Tabela de Integrais
 
Distribuição Normal
Distribuição NormalDistribuição Normal
Distribuição Normal
 
Exercícios Resolvidos: Distribuição Binomial
Exercícios Resolvidos: Distribuição BinomialExercícios Resolvidos: Distribuição Binomial
Exercícios Resolvidos: Distribuição Binomial
 
Estrutura de Dados - Grafos
Estrutura de Dados - GrafosEstrutura de Dados - Grafos
Estrutura de Dados - Grafos
 
Introdução à Teoria dos Grafos
Introdução à Teoria dos GrafosIntrodução à Teoria dos Grafos
Introdução à Teoria dos Grafos
 
Regras Das Potências
Regras Das PotênciasRegras Das Potências
Regras Das Potências
 
Capítulo 6
Capítulo 6Capítulo 6
Capítulo 6
 
Relatório colisões turma t5
Relatório colisões   turma t5Relatório colisões   turma t5
Relatório colisões turma t5
 
Hibridação sp sp2 e sp3
Hibridação sp sp2 e sp3Hibridação sp sp2 e sp3
Hibridação sp sp2 e sp3
 
Funções
FunçõesFunções
Funções
 
Isometrias
IsometriasIsometrias
Isometrias
 
Escoamento aula01
Escoamento aula01Escoamento aula01
Escoamento aula01
 
Tabela de iões
Tabela de iõesTabela de iões
Tabela de iões
 
Sucessões: Exercícios Resolvidos
Sucessões: Exercícios ResolvidosSucessões: Exercícios Resolvidos
Sucessões: Exercícios Resolvidos
 
Probabilidade condicional
Probabilidade condicionalProbabilidade condicional
Probabilidade condicional
 
Zero de função
Zero de funçãoZero de função
Zero de função
 
Relatório de Experimento: Perdas de Carga Localizada.
Relatório de Experimento: Perdas de Carga Localizada.Relatório de Experimento: Perdas de Carga Localizada.
Relatório de Experimento: Perdas de Carga Localizada.
 
Resumo EquaçõEs 8º Ano
Resumo EquaçõEs 8º AnoResumo EquaçõEs 8º Ano
Resumo EquaçõEs 8º Ano
 
Trigonometria e funções trigonométricas
Trigonometria  e funções trigonométricasTrigonometria  e funções trigonométricas
Trigonometria e funções trigonométricas
 

Similar to Lab10 somadores

Similar to Lab10 somadores (20)

Lab5 decod 7seg
Lab5 decod 7segLab5 decod 7seg
Lab5 decod 7seg
 
Lab3 componentes
Lab3 componentesLab3 componentes
Lab3 componentes
 
Lab2 vhdl fluxo_quartus
Lab2 vhdl fluxo_quartusLab2 vhdl fluxo_quartus
Lab2 vhdl fluxo_quartus
 
Comunicação serial
Comunicação serialComunicação serial
Comunicação serial
 
Le02 asd
Le02 asdLe02 asd
Le02 asd
 
Relatório multiplexadores e decodificadores
Relatório multiplexadores e decodificadoresRelatório multiplexadores e decodificadores
Relatório multiplexadores e decodificadores
 
Apostila de comandos 8051
Apostila de comandos 8051Apostila de comandos 8051
Apostila de comandos 8051
 
Prova de aptidão tecnológica
Prova de aptidão tecnológicaProva de aptidão tecnológica
Prova de aptidão tecnológica
 
Estudo dirigido arquitetura didática
Estudo dirigido arquitetura didáticaEstudo dirigido arquitetura didática
Estudo dirigido arquitetura didática
 
Unidade Aritmética
Unidade AritméticaUnidade Aritmética
Unidade Aritmética
 
Pic18xx
Pic18xxPic18xx
Pic18xx
 
gk_2021_01_Aula07-twi.pdf
gk_2021_01_Aula07-twi.pdfgk_2021_01_Aula07-twi.pdf
gk_2021_01_Aula07-twi.pdf
 
Contadorgray
ContadorgrayContadorgray
Contadorgray
 
Capitulo 004 logica ladder - logica combinacional
Capitulo 004   logica ladder - logica combinacionalCapitulo 004   logica ladder - logica combinacional
Capitulo 004 logica ladder - logica combinacional
 
Logica Digital
Logica DigitalLogica Digital
Logica Digital
 
Pic slides
Pic slidesPic slides
Pic slides
 
Atividade de Eletronica Digita - Técnico em Eletrotécnica
Atividade de Eletronica Digita - Técnico em EletrotécnicaAtividade de Eletronica Digita - Técnico em Eletrotécnica
Atividade de Eletronica Digita - Técnico em Eletrotécnica
 
2a aula mod_mol_alunos
2a aula mod_mol_alunos2a aula mod_mol_alunos
2a aula mod_mol_alunos
 
Arduino
ArduinoArduino
Arduino
 
26-aula26.pdf
26-aula26.pdf26-aula26.pdf
26-aula26.pdf
 

More from Eduardo Bezerra

More from Eduardo Bezerra (6)

Lab9 processos
Lab9 processosLab9 processos
Lab9 processos
 
Lab8 controladores
Lab8 controladoresLab8 controladores
Lab8 controladores
 
Lab7 fsm
Lab7 fsmLab7 fsm
Lab7 fsm
 
Lab6 flipflop
Lab6 flipflopLab6 flipflop
Lab6 flipflop
 
Lab4 mux
Lab4 muxLab4 mux
Lab4 mux
 
Lab1 apresentacao disciplina
Lab1 apresentacao disciplinaLab1 apresentacao disciplina
Lab1 apresentacao disciplina
 

Lab10 somadores

  • 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 Digitais Projeto de somador de 4 bits EEL7020 – Sistemas Digitais 2/21
  • 3. Exemplo: somador de 4 bits ci FA (1 bit) ai bi 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 bits A seguir são apresentadas três implementações em VHDL para um somador 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) ci LIBRARY ieee; SW(1) ai USE ieee.std_logic_1164.all; si SW(5) bi ENTITY 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) = A0 BEGIN -- 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) = S2 END 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 is entity 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 is begin 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 III library 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 is begin 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. Tarefa A partir da Solução II apresentada anteriormente, implementar um somador 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 dos operandos A e B (fornecidos com SW). • O LED vermelho 0 deverá acender, sempre que o resultado de uma soma gerar um carry out, caso contrário deverá permanecer apagado. • O LED vermelho 1 deverá acender, sempre que o resultado de uma soma resultar em overflow, caso contrário deverá permanecer apagado. • O LED vermelho 2 deverá acender, sempre que o resultado de uma soma 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 uma soma 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 aulas anteriores), de forma a verificar os valores intermediários da soma, até o circuito combinacional do somador fornecer o resultado 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 o semestre, de forma a utilizar esse novo circuito. • O componente C1 utilizado desde as primeiras aulas para realizar a soma (com o operador de ‘+’), deve ser removido, e o novo somador RCA deve ser incluído no seu lugar. • Realizar todas as alterações necessárias na interface (entity) do novo somador, de forma a incluí-lo na mini-calculadora sem precisar alterar os demais componentes, conforme o diagrama de blocos a seguir. • Como os LEDs vermelhos já estão em uso pelo circuito da mini- calculadora, nesse caso, os LEDs verdes poderiam ser utilizados para 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 F2 Operandos 01 F(3..0) Registrador F SW(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ções Operação SW(17..16) Operacao realizadas pela calculadora. 2 EEL7020 – Sistemas Digitais 21/21