Experimento 13 para Circuitos Lógicos

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar

Aritmética binária (Somador/Subtrator/Complemento de 2)

Objetivos
  • Compreender o funcionamento dos circuitos aritméticos somador, subtrator e complemento de 2;
  • Obter o sinal de saída simulado usando o QSIM - diagrama funcional;
  • Analisar os resultados obtidos para entender e associar os tipos de operações realizadas;
  • Verificar os resultados obtidos;
Materiais necessários
  1. CI 74X00 NAND(disponível na biblioteca da ALTERA)
  2. CI 74X04 NOT(disponível na biblioteca da ALTERA)
  3. CI 74X32 OR(disponível na biblioteca da ALTERA)
  4. CI 74X386 XOR(disponível na biblioteca da ALTERA)
  5. Computador com software Quartus II da Altera.

Diagrama Esquemático

  • Abra o Quartus II e insira o diagrama esquemático do somador completo, conforme a figura abaixo.

FA-bdf.png

  • Salve o arquivo como FullAdder.bdf em uma pasta vazia com nome Exp13, e crie um projeto FullAdder.qpf utilizando a família family=Cyclone (device=EP1C3T100A8) ou Cyclone IV E (device=EP4CE30F23C7). Após isso compile o projeto.
  • Crie um simbolo para este circuito, selecionando na IDE do Quartus II o diagrama esquemático e [File > Create/Update > Create Symbol Files for Current File] > [Save] > [OK].
FA-bsf.png

Simulação funcional com o QSIM

  • Abra o editor de forma de onda do simulador QSIM (File > New > University Programa VWF) (v 13.0 e 13.1).
  • Defina o tempo de simulação (Edit > Set End Time ...) = 200 ns.
  • Importe todos os nós de lista do projeto (Edit > Insert > Insert Node or Bus) > [Node Finder] > [List] > [>>] > [OK] > [OK].
  • Desenhe a forma de onda dos sinais de entrada conforme mostrado na figura abaixo, e salve com o nome TesteFA.vwf.

FA-SIM IN.png

  • Indique que o QSIM será usado na simulação (Simulation > Options > (x) Quartus II Simulator) > [OK] > [OK] (v. 13.0)
  • Faça a simulação funcional do circuito lógico usando o sinal criado (Simulation > Run Functional Simulation)
  • O resultado da simulação deve corresponder a um somador completo.
  • Note que os bits das entradas estão agrupados e definidos como RADIX "Binary". Para isso selecione os sinais [Edit > Grouping] [Group name = IN] > [Radix = Binary] > [OK].
  • Note que os bits das saídas estão agrupados e definidos como RADIX = "Decimal sem sinal". Para isso selecione os sinais [Edit > Grouping] [Group name = OUT] > [Radix = Unsigned Decimal] > [OK].

FA-SIM.png

Análise dos resultados

  • Analise o resultado preenchendo a tabela-verdade abaixo:
Entradas Saídas
cin a b s cout
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1

Criar o componente FullAdder

  • Selecione na IDE do Quartus II o diagrama esquemático do FullAdder e selecione [File > Create/Update > Create Symbol Files for Current File] > [Save] > [OK].
  • Note que um novo simbolo estará disponível para uso no diagrama esquemático com o nome FullAdder

Complemento de 2

Diagrama Esquemático

Abra o Quartus II e insira o diagrama esquemático do módulo básico do complementador de 2.

Complemento2-bdf.png

  • Salve o arquivo como Complemento2.bdf na mesma pasta do Exp13.
  • Mude o Top Level para este circuito. Após isso faça a Análise e Síntese do projeto.
  • Crie um simbolo para este módulo, selecionando na IDE do Quartus II o diagrama esquemático e [File > Create/Update > Create Symbol Files for Current File] > [Save] > [OK].
Complemento2-bsf.png

Simulação funcional com o QSIM

  • Abra o editor de forma de onda do simulador QSIM (File > New > University Programa VWF).
  • Defina o tempo de simulação (Edit > Set End Time ...) = 1000 ns.
  • Importe todos os nós de lista do projeto (Edit > Insert > Insert Node or Bus) > [Node Finder] > [List] > [>>] > [OK] > [OK].
  • Gere uma forma de onda dos sinais de entrada semelhante a mostrado na figura abaixo (Use a função [Randon Value] em A e B, e salve com o nome TesteComplemento2.vwf.
  • Note que os bits das entradas e saídas estão agrupados em ordem reversa e definidos como RADIX = "Decimal com sinal"

C2-SIM IN.png

  • Indique que o QSIM será usado na simulação (Simulation > Options > (x) Quartus II Simulator) > [OK] > [OK]
  • Faça a simulação funcional do circuito lógico usando o sinal criado (Simulation > Run Functional Simulation)
  • O resultado da simulação deve corresponder a um somador completo.

C2-SIM.png

Análise dos resultados

  • Analise os resultados preenchendo a tabela abaixo, e conferindo se está correto:
Entradas Saídas x Entradas Saídas
X >= 0 Y OK x X < 0 Y OK
0 x
1 x -1
2 x -2
3 x -3
4 x -4
5 x -5
6 x -6
7 x -7
8 x -8

Somador de 4 bits

Diagrama Esquemático

Abra o Quartus II e insira o diagrama esquemático do somador completo, utilizando o componente FullAdder criado anteriormente.

Somador4bits-bdf.png

  • Salve o arquivo como Somador4bits.bdf na mesma pasta do Exp13.
  • Mude o Top Level para este circuito. Após isso faça a Análise e Síntese do projeto.
  • Crie um simbolo para este módulo, selecionando na IDE do Quartus II o diagrama esquemático e [File > Create/Update > Create Symbol Files for Current File] > [Save] > [OK].
Somador4bits-bsf.png

Simulação funcional com o QSIM

  • Abra o editor de forma de onda do simulador QSIM (File > New > University Programa VWF).
  • Defina o tempo de simulação (Edit > Set End Time ...) = 200 ns.
  • Importe todos os nós de lista do projeto (Edit > Insert > Insert Node or Bus) > [Node Finder] > [List] > [>>] > [OK] > [OK].
  • Note que os bits das entradas e das saídas estão agrupados e definidos como RADIX "Unsigned Decimal". Para isso selecione os sinais [Edit > Grouping] [Group name = IN] > [Radix = Unsigned Decimal] > [OK].
  • Note que ao fazer este procedimento os bits estão provavelmente na ordem x0,x1,x2,x3. Isso implica que o simulador está interpretando o Vetor X como sendo x3 o LSB e x0 o MSB. Normalmente queremos que o x0 seja o LSB, então é necessário trocar a ordem. [Edit > Reverse Group or Bus Bit Order]
  • Gere uma forma de onda dos sinais de entrada semelhante a mostrado na figura abaixo (Use a função [Randon Value] em A e B, e salve com o nome TesteSomador4bits.vwf.

S4b-SIM IN.png

  • Indique que o QSIM será usado na simulação (Simulation > Options > (x) Quartus II Simulator) > [OK] > [OK]
  • Faça a simulação funcional do circuito lógico usando o sinal criado (Simulation > Run Functional Simulation)
  • O resultado da simulação deve corresponder a um somador completo.

S4b-SIM.png

Análise dos resultados

  • Analise os resultados preenchendo a tabela abaixo:
Entradas Saídas
cin A B S cout
.
.
.
.
.
.
.
.
.
.
.
.

Simulação Temporal com o QSIM

  • Compile o circuito [Processing > Start Compilation] > após alguns minutos [OK]. Confira o [Compilation Report], verificando que o circuito correto foi compilado e anote o número de elementos lógicos e o total de pinos (14 -> 4 entrada A, 4 entrada B, 4 saida S e mais Cin e Cout).
  • Abra o arquivo TesteSomador4bits.vwf e faça a simulação temporal do circuito lógico usando o sinal anteriormente já criado (Simulation > Run Timing Simulation)
  • O resultado da simulação deve corresponder a um somador completo com gliches e um atraso no sinal de saída.

S4b-SIM-timing.png

Análise dos resultados

  • Identifique as diferenças entre os sinais gerados na simulação funcional e na simulação temporal.
  • Responda as seguintes questões:*
Como este tipo de somador deveria ser utilizado?
Meça o atraso do resultado em relação a entrada? Considere a resposta após o término dos gliches.
Por que esse atraso acontece?
Quantas somas por segundo o circuito pode realizar?
Apresente alguma solução utilizar esse circuito mesmo com o atraso no resultado.
Que tipo de outro circuito pode ser utilizado para fazer a soma de 4 bits?

Subtrador usando Complemento de 2

Diagrama Esquemático

Abra o Quartus II e insira o diagrama esquemático do somador completo, utilizando o componente FullAdder e Complemento2 criado anteriormente.

SubtratorComplemento24bits-bdf.png

  • Note que ao passar a entrada B de 4 bits em um circuito Complemento de 2, a expressão matemática óbtida é:
  • Salve o arquivo como Complemento2.bdf na mesma pasta do Exp13.
  • Mude o Top Level para este circuito. Após isso faça a Análise e Síntese do projeto.

Simulação funcional com o QSIM

  • Abra o editor de forma de onda do simulador QSIM (File > New > University Programa VWF) (v 13.0 e 13.1).
  • Defina o tempo de simulação (Edit > Set End Time ...) = 200 ns.
  • Importe todos os nós de lista do projeto (Edit > Insert > Insert Node or Bus) > [Node Finder] > [List] > [>>] > [OK] > [OK].
  • Desenhe a forma de onda dos sinais de entrada conforme mostrado na figura abaixo, e salve com o nome TesteSubtrator.vwf.

Exp13 entrada.png

  • Indique que o QSIM será usado na simulação (Simulation > Options > (x) Quartus II Simulator) > [OK] > [OK] (v. 13.0)
  • Faça a simulação funcional do circuito lógico usando o sinal criado (Simulation > Run Functional Simulation)
  • O resultado da simulação deve corresponder a um circuitos subtrator: .
  • Note que os bits das entradas estão agrupados e definidos como RADIX "Decimal com sinal". Para isso selecione os sinais a3,a2,a1 e a0[Edit > Grouping] [Group name = A] > [Radix = Binary] > [OK]. Repita o procedimento para as entradas B: b3,b2,b1 e b0 e também para os sinais de saídas S: s3,s2,s1 e s0.]

Exp13 saidafunc.png

Análise dos resultados

  • Analise o resultado do circuito implementado.
  • Modifique o circuito para detectar a ocorrência de Overflow.