Mudanças entre as edições de "Circuitos Lógicos Aritméticos"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
 
(36 revisões intermediárias por 3 usuários não estão sendo mostradas)
Linha 12: Linha 12:
 
=Somador Completo=
 
=Somador Completo=
 
==Diagrama Esquemático==
 
==Diagrama Esquemático==
Abra o Quartus II e insira o diagrama esquemático do somador completo, conforme a figura abaixo.
+
#Crie uma pasta '''/home/aluno/somador'''.
<small>
+
#Abra o Quartus II e crie um novo projeto:
*OBS: Use a versão 13.0 ou 13.1 do Quartus II na versão 12.x o uso do QSIM é feita de modo não integrado a IDE do QUARTUS.
+
#*File >> New Project Wizard >> Next
</small>
+
#*[diretório]: /home/aluno/somador >> [nome do projeto]: somador >> [top-level]: somador >> Next >> Yes
 +
#*Next
 +
#*[Família]: Ciclone IV E >> [Name Filter]: EP4CE30F23C7 >> Duplo clique sobre EP4CE30F23C7 no [Avaliable devices] >> Next
 +
#*Next
 +
#*Finish
 +
#Crie um novo diagrama esquemático (''File >> New >> Block Diagram/Schematic File''), conforme figura abaixo: <center> [[Arquivo:FA-bdf.png|600px]] </center>
 +
#Salve o arquivo como somador.bdf.
 +
#Faça a Análise e Síntese do projeto e tenha certeza que tudo esteja funcionando perfeitamente através da compilação do projeto.
  
<center>
+
==Criar o componente somador==
[[Arquivo:FA-bdf.png|600px]]
+
#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].
</center>
+
#Note que um novo simbolo estará disponível para uso no diagrama esquemático com o nome somador [Symbol >> Project >> somador] [[Arquivo:FA-bsf.png|thumb|150px]]
 
 
*Salve o arquivo como FullAdder.bdf em uma pasta vazia com nome PROJ2, e crie um projeto FullAdder.qpf utilizando a família family='''Cyclone''' com o dispositivo device='''EP1C3T100A8''' ou '''Family = Cyclone IV''' E com dispositivo '''device = EP4CE30F23C7'''.  Após isso faça a Análise e Sintese do projeto.
 
 
 
==Criar o componente FullAdder==
 
*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].
 
*Note que um novo simbolo estará disponível para uso no diagrama esquemático com o nome FullAdder
 
 
 
<center>
 
[[Arquivo:FA-bsf.png|thumb|150px]]
 
</center>
 
  
 
==Simulação funcional com o QSIM==
 
==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).  
+
#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].
*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. Dica, use o ícone C [''Count Value''] na barra de tarefas para auxiliar a confecção do diagrama de tempo. [[Arquivo:FA-SIM_IN.png|800 px]]
*Desenhe a forma de onda dos sinais de entrada conforme mostrado na figura abaixo, e salve com o nome TesteFA.vwf.
+
#Indique que o QSIM será usado na simulação (Simulation > Options > (x) Quartus II Simulator) > [OK] > [OK] (v. 13.0)
[[Arquivo:FA-SIM_IN.png|800 px]]
+
#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].
 +
[[Arquivo:FA-SIM.png|800 px]]
  
*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].
 
 
[[Arquivo:FA-SIM.png|800 px]]
 
 
==Análise dos resultados==
 
==Análise dos resultados==
*Analise o resultado preenchendo a tabela-verdade abaixo:
+
#Analise o resultado preenchendo a tabela-verdade abaixo:<center>
 
 
<center>
 
 
{| border="1" cellpadding="5" cellspacing="0" style="text-align: center;"
 
{| border="1" cellpadding="5" cellspacing="0" style="text-align: center;"
 
! colspan="3" style="background: #efefef;" | Entradas
 
! colspan="3" style="background: #efefef;" | Entradas
Linha 79: Linha 71:
 
=Somador de 4 bits=
 
=Somador de 4 bits=
 
==Diagrama Esquemático==
 
==Diagrama Esquemático==
Crie um novo diagrama (File >> New >> Block Diagram/Schematic File) e insira o diagrama esquemático do somador completo, utilizando o componente FullAdder criado anteriormente.
+
#Crie um novo diagrama (File >> New >> Block Diagram/Schematic File) e insira o diagrama esquemático do somador completo, utilizando o componente somador criado anteriormente. <center> [[Arquivo:Somador4bits-bdf.png|800px]] </center>
<center>
+
#Salve o arquivo como Somador4bits.bdf na mesma pasta do '''somador'''.
[[Arquivo:Somador4bits-bdf.png|800px]]
+
#Mude o Top Level para este circuito (Aba Files >> tecla direita do mouse em Somador4bits >> Set as Top-Level Entity).
</center>
+
#Faça a Análise e Síntese do projeto.
 
 
*Salve o arquivo como Somador4bits.bdf na mesma pasta do PROJ2.
 
*Mude o Top Level para este circuito (Aba Files >> tecla direita do mouse em Somador4bits >> Set as Top-Level Entity).
 
*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].
 
<center>
 
[[Arquivo:Somador4bits-bsf.png|thumb|150px]]
 
</center>
 
  
 
==Simulação funcional com o QSIM==
 
==Simulação funcional com o QSIM==
*Abra o editor de forma de onda do simulador QSIM  (File > New > University Programa VWF).  
+
#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].
*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 a0, a1, a2, e a3 [Edit > Grouping] [Group name = A] > [Radix = Unsigned Decimal],  b0, b1, b2 e b3 [Group name = B] > [Radix = Unsigned Decimal] e s0, s1, s2 e s3 [Group name = S] > [Radix = Unsigned Decimal]> [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]
*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. [[Arquivo:S4b-SIM_IN.png|800 px]]
*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.
+
#Indique que o QSIM será usado na simulação (Simulation > Options > (x) Quartus II Simulator) > [OK] > [OK]
[[Arquivo:S4b-SIM_IN.png|800 px]]
+
#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.   
*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.   
 
 
[[Arquivo:S4b-SIM.png|800 px]]
 
[[Arquivo:S4b-SIM.png|800 px]]
  
Linha 186: Linha 167:
 
|}
 
|}
 
</center>
 
</center>
 +
 +
==Simulando um somador N+1 bits==
 +
*Como discutido na teoria, para não haver problemas com ''overflow'' uma das possibilidade é a criação de uma saída com um bit extra, que no caso é o '''cout'''.
 +
#Para fazermos isto basta altera o agrupamento de saída - S - acrescentando a saída '''cout''' como a mais significativa.
 +
#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 TesteSomador5bits.vwf. [[Arquivo:S5b-SIM_IN.png|800 px]]
  
 
==Simulação Temporal com o QSIM==
 
==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 (15 -> 4 entrada A, 4 entrada B, 4 saida S e mais Cin e Cout2 e Cout3).
+
#Mude a família lógica para que permita a simulação temporal (as famílias mais avançadas não admitem): Assignments >> Device >> Family: Cyclone II E e Available Devices: EP2C5AF256A7 >> OK
*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)
+
#Compile o circuito [Processing > Start Compilation] > após alguns minutos [OK]. Confira o [Compilation Report], verificando que o circuito e dispositivo corretos foram utilizados na compilação.
 
+
#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.
+
#O resultado da simulação deve corresponder a um somador completo com ''glitches'' e um atraso no sinal de saída.
 +
#Dê zoom nos ''glitches'' e analise-os.
 
[[Arquivo:S4b-SIM-timing.png|800 px]]
 
[[Arquivo:S4b-SIM-timing.png|800 px]]
  
 
==Análise dos resultados==
 
==Análise dos resultados==
 
*Identifique as diferenças entre os sinais gerados na simulação funcional e na simulação temporal.
 
*Identifique as diferenças entre os sinais gerados na simulação funcional e na simulação temporal.
 +
* Como poderíamos fazer com que não ocorresse overflow nesse somador? Mostre esse procedimento através de uma simulação temporal e criando uma nova saída '''TesteSomador4bitsSemOverflow.vwf'''
 +
 
*Responda as seguintes questões:*
 
*Responda as seguintes questões:*
 
;Como este tipo de somador deveria ser utilizado?  
 
;Como este tipo de somador deveria ser utilizado?  

Edição atual tal como às 13h49min de 18 de outubro de 2022

Objetivos

  • Construir testar um circuito somador completo (FA -full adder) a partir de portas lógicas usando o diagrama esquemático do QUARTUS II.
  • Fazer a simulação funcional do circuito com o QSIM.
  • Criar componentes após o teste e reutiliza-los em projetos maiores.
  • Construir um somador de 4 bits usando os FA como componente.
  • Construir um multiplicador de 4 bits usando os FA como componente.
  • Construir um circuito que realiza o complemento de 2.
  • Construir um somador/subtrator de 4 bits usando o somador de 4 bits e complemento de 2 como componentes. (TAREFA ADICIONAL PARA OS ALUNOS)
  • Preparar o circuito para programação e implementação do hardware FPGA do kit DE2-115.
  • Escrever relatório técnico do projeto seguindo as normas ABNT

Somador Completo

Diagrama Esquemático

  1. Crie uma pasta /home/aluno/somador.
  2. Abra o Quartus II e crie um novo projeto:
    • File >> New Project Wizard >> Next
    • [diretório]: /home/aluno/somador >> [nome do projeto]: somador >> [top-level]: somador >> Next >> Yes
    • Next
    • [Família]: Ciclone IV E >> [Name Filter]: EP4CE30F23C7 >> Duplo clique sobre EP4CE30F23C7 no [Avaliable devices] >> Next
    • Next
    • Finish
  3. Crie um novo diagrama esquemático (File >> New >> Block Diagram/Schematic File), conforme figura abaixo:
    FA-bdf.png
  4. Salve o arquivo como somador.bdf.
  5. Faça a Análise e Síntese do projeto e tenha certeza que tudo esteja funcionando perfeitamente através da compilação do projeto.

Criar o componente somador

  1. 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].
  2. Note que um novo simbolo estará disponível para uso no diagrama esquemático com o nome somador [Symbol >> Project >> somador]
    FA-bsf.png

Simulação funcional com o QSIM

  1. Abra o editor de forma de onda do simulador QSIM (File > New > University Programa VWF) (v 13.0 e 13.1).
  2. Importe todos os nós de lista do projeto (Edit > Insert > Insert Node or Bus) > [Node Finder] > [List] > [>>] > [OK] > [OK].
  3. Desenhe a forma de onda dos sinais de entrada conforme mostrado na figura abaixo, e salve com o nome TesteFA.vwf. Dica, use o ícone C [Count Value] na barra de tarefas para auxiliar a confecção do diagrama de tempo. FA-SIM IN.png
  4. Indique que o QSIM será usado na simulação (Simulation > Options > (x) Quartus II Simulator) > [OK] > [OK] (v. 13.0)
  5. Faça a simulação funcional do circuito lógico usando o sinal criado (Simulation > Run Functional Simulation)
  6. O resultado da simulação deve corresponder a um somador completo.
  7. 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].
  8. 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

  1. 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

Somador de 4 bits

Diagrama Esquemático

  1. Crie um novo diagrama (File >> New >> Block Diagram/Schematic File) e insira o diagrama esquemático do somador completo, utilizando o componente somador criado anteriormente.
    Somador4bits-bdf.png
  2. Salve o arquivo como Somador4bits.bdf na mesma pasta do somador.
  3. Mude o Top Level para este circuito (Aba Files >> tecla direita do mouse em Somador4bits >> Set as Top-Level Entity).
  4. Faça a Análise e Síntese do projeto.

Simulação funcional com o QSIM

  1. Abra o editor de forma de onda do simulador QSIM (File > New > University Programa VWF).
  2. Importe todos os nós de lista do projeto (Edit > Insert > Insert Node or Bus) > [Node Finder] > [List] > [>>] > [OK] > [OK].
  3. Note que os bits das entradas e das saídas estão agrupados e definidos como RADIX "Unsigned Decimal". Para isso selecione os sinais a0, a1, a2, e a3 [Edit > Grouping] [Group name = A] > [Radix = Unsigned Decimal], b0, b1, b2 e b3 [Group name = B] > [Radix = Unsigned Decimal] e s0, s1, s2 e s3 [Group name = S] > [Radix = Unsigned Decimal]> [OK].
  4. 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]
  5. 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
  6. Indique que o QSIM será usado na simulação (Simulation > Options > (x) Quartus II Simulator) > [OK] > [OK]
  7. Faça a simulação funcional do circuito lógico usando o sinal criado (Simulation > Run Functional Simulation)
  8. 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
.
.
.
.
.
.
.
.
.
.
.
.

Simulando um somador N+1 bits

  • Como discutido na teoria, para não haver problemas com overflow uma das possibilidade é a criação de uma saída com um bit extra, que no caso é o cout.
  1. Para fazermos isto basta altera o agrupamento de saída - S - acrescentando a saída cout como a mais significativa.
  2. 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 TesteSomador5bits.vwf. S5b-SIM IN.png

Simulação Temporal com o QSIM

  1. Mude a família lógica para que permita a simulação temporal (as famílias mais avançadas não admitem): Assignments >> Device >> Family: Cyclone II E e Available Devices: EP2C5AF256A7 >> OK
  2. Compile o circuito [Processing > Start Compilation] > após alguns minutos [OK]. Confira o [Compilation Report], verificando que o circuito e dispositivo corretos foram utilizados na compilação.
  3. 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).
  4. O resultado da simulação deve corresponder a um somador completo com glitches e um atraso no sinal de saída.
  5. Dê zoom nos glitches e analise-os.

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.
  • Como poderíamos fazer com que não ocorresse overflow nesse somador? Mostre esse procedimento através de uma simulação temporal e criando uma nova saída TesteSomador4bitsSemOverflow.vwf
  • 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?

Multiplicador de 4 bits

Diagrama Esquemático

Abra o Quartus II e insira o diagrama esquemático do módulo básico do multiplicador, utilizando o componente FullAdder criado anteriormente.

ModuloBMultiplier-bdf.png

ModuloBMultiplier-bsf.png
  • Salve o arquivo como ModuloBMultiplicador.bdf na mesma pasta do PROJ2.
  • 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 do ModuloBMultiplicador > [File > Create/Update > Create Symbol Files for Current File] > [Save] > [OK].

Abra um novo diagrama esquematico no Quartus II e insira o circuito digital abaixo utilizando os componentes FullAdder e ModuloBMultiplicador criados anteriormente.

Multiplier4bits-bdf.png

  • Salve o arquivo como Multiplicador4bits.bdf na mesma pasta do PROJ2.
  • 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).
  • 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 TesteMultiplicador4bits.vwf.
  • Note que os bits das entradas e saídas estão agrupados em ordem reversa e definidos como RADIX = "Decimal sem sinal"

M4b-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.

M4b-SIM.png

Análise dos resultados

  • Analise os resultados preenchendo a tabela abaixo, e conferindo em uma calculadora:
Entradas Saídas x Entradas Saídas
A B P x A B P
x
x
x
x
x
x
x
x
x
x

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 (16 -> 4 entradas A, 4 entradas B, 8 saidas P).
  • Abra o arquivo TesteMultiplicador4bits.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 multiplicador de 4 bits com gliches e um atraso no sinal de saída.

M4b-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 multiplicar deveria ser utilizado?
Meça o atraso do resultado em relação a entrada? Considere a resposta após o término dos gliches.
Determine o atraso para 4 valores diferentes de multiplicação. Existem diferença nos atrasos dessas operações?
Por que esse atraso acontece?
Quantas multiplicações por segundo o circuito pode realizar?
Compare o tempo do atraso do somador de 4 bits com o multiplicador de 4 bits.
De que outra forma a mesma multiplicação poderia ser feita?

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 PROJ2.
  • 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
  • Responda as seguintes questões:
Qual é o valor minimo e máximo que pode ser representado em complemento de 2 com 4 bits?
Quais são as restrições de uso desse circuito?
Qual o valor obtido quando colocamos um valor positivo na entrada?
Qual o valor obtido quando colocamos um valor negativo na entrada?
Se for inserido um inversor em cada saída qual é o resultado obtido? Como poderia ser chamado este circuito?

Multiplexador de 2 para 1

Diagrama Esquemático

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

Mux2para1-bdf.png

Mux2para1-bsf.png
  • Salve o arquivo como Mux2para1.bdf na mesma pasta do PROJ2.
  • 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].
  • Utilize 4 desses componentes para criar um multiplexador de 2 entradas para 1 saída de 4 bits.

QUADMux2para1-bdf.png

  • 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].
QUADMux2para1-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, B e Sel e salve com o nome QUADMux2para1.vwf.
  • 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)

QUADMux2para1-SIM.png

Análise dos resultados

  • Verifique se o multiplexador está funcionando. Quando S = 0 => Y = x0, e quando S = 1 => Y = x1.

Circuito Somador e Substrator de 4 bits

Diagrama Esquemático

Utilizando os componentes anteriormente criados, insira o diagrama esquemático do circuito a seguir.

Sub Add4bits-bdf.png

  • Salve o arquivo como Sub_Add4bits.bdf na mesma pasta do PROJ2.
  • 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].
Sub Add4bits-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, B e Sel e salve com o nome Sub_Add4bits.vwf.
  • 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)

Sub Add4bits-SIM.png

Análise dos resultados

  • Anote os resultados das operações de soma e subtração
Entrada Carry Entrada A Entrada B Saídas
C_in Op_A A Op_B B Erro Soma
.
.
.
.
.
.
.
.
.
.
.
  • Verifique se o circuito está funcionando corretamente.
  • Responda as seguintes questões:
Qual é o valor minimo e máximo que pode ser representado na saída do circuito sem que haja erro?
Quais são as restrições de entrada no uso desse circuito?
Qual a função da entrada op_a e op_b?
Como interpretar o resultado da saída S do circuito quando a saída Over_Under está em 1?

Programação do FPGA e testes finais

Para programar o circuito lógico no FPGA, é necessário escolher um FPGA para a aplicação. Neste caso utilizaremos o kit DE2-115.

  • Mude a família e dispositivo a ser usado (Assignments > Devices), [Family = Cyclone IV E] e selecione EP4CE115F29C7 ou ou Family = Cyclone IV E com dispositivo device = EP4CE30F23C7
  • Defina como alta impedância o estado dos pinos não utilizados no projeto. (Assignments > Devices), [Device and Pin Options...], escolha a (Category=Unused Pins), e selecione Reserve all unused pins: As input tri-stated. [OK].
  • Selecione as interfaces de entrada e saída que deseja no kit educacional disponível, utilizando 4 chaves para cada entrada de dado A (a0-3) e B (b0-3), 2 chaves para os op_A e Op_B, 1 chave para o C_in. Para as saídas utilize 4 leds para o dado S (s0-3) e um led para a indicação de erro.
Entradas
  • a0 -> PIN_AB28
  • a1 -> PIN_AC28
  • a2 -> PIN_AC27
  • a3 -> PIN_AD27
  • op_A -> PIN_AB27
  • b0 -> PIN_AC24
  • b1 -> PIN_AB24
  • b2 -> PIN_AB23
  • b3 -> PIN_AA24
  • op_B -> PIN_AA23
  • C_in -> PIN_Y23
Saídas
  • s0 -> PIN_E21
  • s1 -> PIN_E22
  • s2 -> PIN_E25
  • s3 -> PIN_E24
  • erro -> PIN_G19

Sub Add4bitsBLOCK-bdf.png