Mudanças entre as edições de "Contador binário síncrono"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
 
(23 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 13: Linha 13:
 
==Teste do módulo contador binário síncrono==
 
==Teste do módulo contador binário síncrono==
  
* Abra o Quartus II e crie um novo projeto na pasta '''/home/aluno/Contador''' com nome '''ContUpDown''', utilizando a família family='''Cyclone IV E''' com o dispositivo device='''EP4CE115F29C7''' ou '''Family = Cyclone IV E''' com dispositivo '''device = EP4CE30F23C7'''.
+
#Abra o Quartus II e crie um novo projeto com nome '''ContUpDown''' na pasta '''/home/aluno/Contador''', utilizando a família family='''Cyclone IV E''' com o dispositivo device='''EP4CE115F29C7''' (placa grande) ou '''Family = Cyclone IV E''' com dispositivo '''device = EP4CE30F23C7''' (Placa pequena).
* Crie um novo diagrama esquemático (''File >> New >> Block Diagram/Schematic File'').
+
#Crie um novo diagrama esquemático ('''File >> New >> Block Diagram/Schematic File''').
* Insira o diagrama esquemático de um Contador binário síncrono com 4 bits, conforme a figura abaixo.
+
#Insira o diagrama esquemático de um Contador binário síncrono com 4 bits, conforme a figura abaixo.[[Imagem:CI74191_diag.png|900px]]
 
+
#Após isso faça a Análise e Síntese do projeto: '''Processing >> Start Compilation'''.
[[Imagem:CI74191_diag.png|900px]]
+
#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 ...''') = 1000 ns.
* Após isso faça a Análise e Síntese do projeto.
+
#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 tb_CI74191.vwf.[[Imagem:tb_CI74191.png|900px]]
* Abra o editor de forma de onda do simulador QSIM  (File > New > University Programa VWF) (v 13.0 e 13.1).  
+
#Indique que o QSIM será usado na simulação ('''Simulation > Options > (x) Quartus II Simulator''') > [OK] > [OK] (v. 13.0)
* Defina o tempo de simulação (Edit > Set End Time ...) = 1000 ns.
+
#Faça a simulação funcional do circuito lógico usando o sinal criado ('''Simulation > Run Functional Simulation''')
* Importe todos os nós de lista do projeto (Edit > Insert > Insert Node or Bus) > [Node Finder] > [List] > [>>] > [OK] > [OK].
+
#O resultado da simulação deve corresponder a um contador.  
* Desenhe a forma de onda dos sinais de entrada conforme mostrado na figura abaixo, e salve com o nome tb_CI74191.vwf.
+
#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].
[[Imagem:tb_CI74191.png|900px]]
+
#Verifique se o resultado obtido corresponde a respostas do circuito implementado.
 
 
* 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 contador.  
 
* 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].
 
 
 
 
 
* Verifique se o resultado obtido corresponde a respostas do circuito implementado.
 
  
 
[[Imagem:Rtb_CI74191.png|900px]]
 
[[Imagem:Rtb_CI74191.png|900px]]
Linha 39: Linha 31:
 
;QUESTIONÁRIO:
 
;QUESTIONÁRIO:
 
* O que é necessário para fazer o contador fazer uma contagem descendente?
 
* O que é necessário para fazer o contador fazer uma contagem descendente?
* Como deve ser feita a configuração para o contador contar de 2 a 15?
 
* Como deve ser feita a configuração para contar de 0 a 9? e de 9 a 0?
 
 
* Como fazer para parar a contagem por um tempo mantendo o sinal de ''clock'' ligado?
 
* Como fazer para parar a contagem por um tempo mantendo o sinal de ''clock'' ligado?
  
 
==Teste do módulo decodificar de 7 segmentos==
 
==Teste do módulo decodificar de 7 segmentos==
  
* Crie um novo diagrama esquemático (''File >> New >> Block Diagram/Schematic File'') no mesmo projeto para inserir o diagrama esquemático de um decodificar de 7 segmentos para display de anodo comum, conforme a figura abaixo. <span style="color: red;">Para a FPGA grande (DE2-115) utilize o conversor '''7447''', conforme figura abaixo, e para a FPGA pequena (Macnica), que possui display Catodo Comum, deve-se utilizar o '''7448'''. Ambos os componentes apresentam a mesma pinagem.</span>
+
#Crie um novo diagrama esquemático ('''File >> New >> Block Diagram/Schematic File''') no mesmo projeto para inserir o diagrama esquemático de um decodificar de 7 segmentos para display de anodo comum, conforme a figura abaixo. <span style="color: red;">Para a FPGA grande (DE2-115) utilize o conversor '''7447''', conforme figura abaixo, e para a FPGA pequena (Macnica), que possui display Catodo Comum, deve-se utilizar o '''7448'''. Ambos os componentes apresentam a mesma pinagem.</span>[[Imagem:CI7447_diag.png|900px]]
 
+
#Após salvar o arquivo como '''ConvBcdSsd.bdf''' na mesma pasta Contador. Mude o '''Top-Level Entity''' para este novo esquemático. Após isso faça a Análise e Síntese do projeto.
[[Imagem:CI7447_diag.png|900px]]
 
 
 
* Após salvar o arquivo como '''ConvBcdSsd.bdf''' na mesma pasta Contador. Mude o '''Top-Level Entity''' para este novo esquemático. Após isso faça a Análise e Síntese do projeto.
 
 
 
<!--*Desenhe a forma de onda dos sinais de entrada conforme mostrado na figura abaixo, e salve com o nome tb_ConvBcdSsd.vwf.  
 
  
 
<span id="[[Imagem:tb_CI7447.png|900px]]" class="mw-image" title="[[Imagem:tb_CI7447.png|900px]]" data-mw-type="image" data-mw-id="104956" data-mw-src="Imagem:tb_CI7447.png" data-mw-link="false" data-mw-sizewidth="900" data-mw-sizeheight="false" data-mw-wikitext="%5B%5BImagem:tb_CI7447.png%7C900px%5D%5D" draggable="true" contenteditable="false"></span>
 
<span id="[[Imagem:tb_CI7447.png|900px]]" class="mw-image" title="[[Imagem:tb_CI7447.png|900px]]" data-mw-type="image" data-mw-id="104956" data-mw-src="Imagem:tb_CI7447.png" data-mw-link="false" data-mw-sizewidth="900" data-mw-sizeheight="false" data-mw-wikitext="%5B%5BImagem:tb_CI7447.png%7C900px%5D%5D" draggable="true" contenteditable="false"></span>
 
<div>
 
* Analise se o resultado está de acordo com a figura a seguir, ou a tabela verdade do ''datasheet'' do componente 74XX47/48.
 
* Se tiver dúvidas sobre o funcionamento do ''display'' consulte a página sobre o <a href="Display%20de%207%20segmentos" data-mce-href="Display%20de%207%20segmentos" title="Display de 7 segmentos" data-mw-type="internal_link" class="link internal mw-internal-link mceNonEditable" data-mw-wikitext="%5B%5BDisplay%20de%207%20segmentos%5D%5D" contenteditable= "false" ></a>.
 
</div><span id="[[Arquivo:Segmentos_7447.png|900 px|]]" class="mw-image" title="[[Arquivo:Segmentos_7447.png|900 px|]]" data-mw-type="image" data-mw-id="157416" data-mw-src="Arquivo:Segmentos_7447.png" data-mw-link="false" data-mw-sizewidth="900 " data-mw-sizeheight="false" data-mw-wikitext="%5B%5BArquivo:Segmentos_7447.png%7C900%20px%7C%5D%5D" draggable="true" contenteditable="false"></span>-->
 
 
;QUESTIONÁRIO:
 
* Neste Circuito Integrado (CI), qual é a condição para cada led do display acender?
 
* O que deveria ser feito caso o display fosse do tipo catodo ou anodo comum?
 
* Qual é a função dos pinos LT, RBI, BI e RBO?
 
  
 
==Criação do sistema completo com os módulos testados==
 
==Criação do sistema completo com os módulos testados==
  
* Selecione o diagrama esquemático do ContUpDown.bdf e crie um simbolo para este diagrama [File > Create/Update > Create Symbol File for Current File], [Save], [OK].
+
#Selecione o diagrama esquemático do ContUpDown.bdf e crie um simbolo para este diagrama ['''File > Create/Update > Create Symbol File for Current File'''], [Save], [OK].
* Repita o procedimento para o ConvBcdSsd.bdf.
+
#Repita o procedimento para o ConvBcdSsd.bdf.
* Crie um novo diagrama esquemático com nome '''/home/aluno/Contador/ContCompleto''' (''File >> New >> Block Diagram/Schematic File''), no mesmo projeto para inserir o diagrama esquemático do sistema que será composto dos dois módulos, conforme a figura abaixo.  Mude o Top-Level Entity para este novo esquemático.
+
#Crie um novo diagrama esquemático com nome '''/home/aluno/Contador/ContCompleto''' ('''File >> New >> Block Diagram/Schematic File'''), no mesmo projeto para inserir o diagrama esquemático do sistema que será composto dos dois módulos, conforme a figura abaixo.  Mude o '''Top-Level Entity''' para este novo esquemático. [[Imagem:Contador0-15_diagv2.png|900px]]
* Após isso faça a Análise e Síntese do projeto.
 
* Coloque o sinal de entrada para testar o circuito para verificar se os dois módulos estão funcionando corretamente. Faça o circuito contar de 0 até 15 e depois de 15 até 0.
 
 
 
[[Imagem:Contador0-15_diag.png|900px]]
 
  
 
==Preparar o circuito lógico para gravação em um kit de desenvolvimento==
 
==Preparar o circuito lógico para gravação em um kit de desenvolvimento==
 
Para gravar o circuito lógico no FPGA, é necessário escolher um FPGA para a aplicação.  Neste caso utilizaremos o kit '''DE2-115''' ou '''Mercurio IV'''. [[Arquivo:KitDE2-115.png|200px|right|Clique para Ampliar]]
 
Para gravar o circuito lógico no FPGA, é necessário escolher um FPGA para a aplicação.  Neste caso utilizaremos o kit '''DE2-115''' ou '''Mercurio IV'''. [[Arquivo:KitDE2-115.png|200px|right|Clique para Ampliar]]
* Confira a família e dispositivo a ser usado (Assignments > Devices), utilizando a família family='''Cyclone IV E''' com o dispositivo device='''EP4CE115F29C7''' ('''DE2-115''') ou '''device = EP4CE30F23C7''' ('''Mercurio IV'''), e faça uma nova '''Análise e Síntese''' para que a nova pinagem do FPGA seja reconhecida pelo Quartus.
+
# Confira a família e dispositivo a ser usado (Assignments > Devices), utilizando a família family='''Cyclone IV E''' com o dispositivo device='''EP4CE115F29C7''' (Placa grande) ou '''device = EP4CE30F23C7''' (Placa pequena), e faça uma nova '''Análise e Síntese''' para que a nova pinagem do FPGA seja reconhecida pelo Quartus.
* Atribua os pinos do circuito aos pinos do FPGA utilizando o '''Pin Planner''' [Assignments > Pin Planner].
+
# Atribua os pinos do circuito aos pinos do FPGA utilizando o '''Pin Planner''' ['''Assignments > Pin Planner'''].
* Para descobrir a pinagem do FPGA e sua associação com os componentes do kit consulte o [ftp://ftp.altera.com/up/pub/Altera_Material/12.1/Boards/DE2-115/DE2_115.qsf Manual da DE2-115]/[[Interfaces de entrada e saída da DE2-115]] ou [[Pinagem_dos_dispositivos_de_entrada_e_saída_do_kit_MERCURIO_IV]].
+
# Para descobrir a pinagem do FPGA e sua associação com os componentes do kit consulte o [ftp://ftp.altera.com/up/pub/Altera_Material/12.1/Boards/DE2-115/DE2_115.qsf Manual da DE2-115]/[[Interfaces de entrada e saída da DE2-115]] ou [[Pinagem_dos_dispositivos_de_entrada_e_saída_do_kit_MERCURIO_IV]].
* Para facilitar a configuração dos pinos:
+
# Para facilitar a configuração dos pinos, '''Assignments >> pin Planner''':
** Utilize o display de sete segmentos para mostrar a saída do decodificador de 7 segmentos, fazendo as devidas conexões.
+
## Utilize o display de sete segmentos para mostrar a saída do decodificador de 7 segmentos, fazendo as devidas conexões.
** Utilize uma chave de contato momentâneo (''push button'') para gerar o sinal de CLK.
+
## Utilize uma chave de contato momentâneo (''push button'') para gerar o sinal de CLK.
** Utilize a chave deslizante SW[0] para o sinal DN/UP, SW[1] para o sinal G', SW[2] para o sinal LD'.
+
## Utilize a chave deslizante SW[0] para o sinal DN/UP, SW[1] para o sinal G', SW[2] para o sinal LD'.
** Utilize leds para mostrar a contagem em binário QD QC QB e QA.
+
## Utilize leds para mostrar o estado dos sinais MXMN, RBO' e RCO'. Pode ser os leds RGB.
** Utilize leds para mostrar o estado dos sinais MXMN, RBO' e RCO'.
+
# '''Compile''' o projeto. Note que agora a numeração dos pinos também aparece no diagrama esquemático.
 
+
# Use a porta USB-Blaster para fazer a programação na placa DE2-115 ou MERCURIO IV;
* '''Compile''' o projeto. Note que agora a numeração dos pinos também aparece no diagrama esquemático.
+
# No Quartus vá em ('''Tools > Programmer''') para abrir a página de programação;
* Use a porta USB-Blaster para fazer a programação na placa DE2-115 ou MERCURIO IV;
+
## Selecione o Hardware ('''Hardware Setup > USB-Blaster''');
* No Quartus vá em (Tools > Programmer) para abrir a página de programação;
+
## Utilize o modo JTAG e clique em Start para começar a programação;[[Arquivo:Programador.png|200px|thumb|Clique para Ampliar]]
** Selecione o Hardware (Hardware Setup > USB-Blaster);
+
# Configure as chaves e verifique o funcionamento do circuito. <span style="color: rgb(0, 128, 0);" data-mce-style="color: #008000;">Provavelmente você perceberá que a cada toque na chave associada ao clock ocorrerão vários saltos no contador, isso é provocado pelos repiques na chave.</span>
** Utilize o modo JTAG e clique em Start para começar a programação;[[Arquivo:Programador.png|200px|thumb|Clique para Ampliar]]
+
# Normalmente uma chave apresenta os denominados repiques de sinal, ou seja, ao se alterar o estado da chave o sinal elétrico oscila várias vezes entre um nível lógico e outro, antes de estabilizar. Para evitar esse fenômeno pode-se fazer uso de um ''deboucer'' que gera um atraso entre os estados. Para usar o ''deboucer'' siga os seguintes passos:
* Configure as chaves e verifique o funcionamento do circuito. Provavelmente você perceberá que a cada toque na chave associada ao clock ocorrerão vários saltos no contador, isso é provocado pelos repiques na chave.
+
## Tools > IP Catalog > Library > Basic Function > Arithmetic > LPM_COUNTER
* Normalmente uma chave apresenta os denominados repiques de sinal, ou seja, ao se alterar o estado da chave o sinal elétrico oscila várias vezes entre um nível lógico e outro, antes de estabilizar. Para evitar esse fenômeno pode-se fazer uso de um ''deboucer'' que gera um atraso entre os estados. Para usar o ''deboucer'' siga os seguintes passos:
+
## IP Variation file name: /home/aluno/Contador/clock1ms > OK
*# Tools > Megawizard Plugin Manager
+
## 16 bits > Up only > Next
*# Create a new custom megafunction variation > Next.
+
## Modulus, with a count modulus of 50000 > [Habilite a opção] '''Carry-out''' > Next.
*# Aritimethic > LPM_counter > what name do you want for the outoput file?: '''clock1ms''' > Next
+
## Next.
*# 16 bits > Up only > Next
+
## Next.
*# Modulus, with a count modulus of 50000 > [Habilite a opção] '''Carry-out''' > Next.
+
## Habilite a opção '''Quartus II symbol file''' > Finish.
*# Next.
+
## Baixe o projeto ''deboucer'' [https://docente.ifsc.edu.br/odilson/CIL29003/Debounce.zip].
*# Next.
+
## Abra o Navegador de Arquivos e descompacte o pacote zip baixado.
*# Habilite a opção '''Quartus II symbol file''' > Finish.
+
## Crie um novo arquivo ('''File >> New >> Block Diagram/Schematic File''')
*# Baixe o projeto ''deboucer'' [[Arquivo:Deboucer.qar]].
+
## File > Open > {procure o arquivo} '''Debouncer_v2.bdf''' > Open.
*# Restaure o projeto: Project > Restore Archived Project
+
## Salve o arquivo na pasta do projeto ('''File >> Save As >> /home/aluno/Contador/Debouncer_v2.bdf''')
*# {procure o arquivo} '''Deboucer.qar''' > Open.
+
## Configure o '''debouncer''' para ser o Top Level Entity e compile o esquemático.
*# OK
+
## Crie um novo ''Symbol File'' para o debouncer: [File > Create/Update > Create Symbol File for Current File].
*# Abra o esquemático do Debouncer_v2.
+
## Volte ao diagrama do contador (ContCompleto) e acrescente os blocos '''clock1ms''' e '''debouncer''': Symbol Tool > Project ...
*# Copie todo o arquivo: (Ctrl + a) e (Ctrl + c)
+
## Interligue os blocos. 1) a entrada '''clock''' do '''clock1ms''' em '''PIN_T1'''. 2) A saída '''cout''' do '''clock1ms''' em '''clk_1ms''' do '''debouncer'''. 3) A entrada '''sw''' do '''debouncer''' na chave '''KEY[11]'''. 4) A saída '''sw_debounced''' no '''CLK''' do contador. Conforme figura ao lado: [[Arquivo:Debouncer.png|800px|thumb|Clique para Ampliar]]
*# Abra novamente o projeto do contador: File > Open Project > /home/aluno/Contador > Open.
+
## Compile o projeto, programe na placa e verifique o funcionamento. Perceba que agora a chave não deve mais apresentar os repiques.
*# Crie um novo diagrama nesse projeto: File > New > Block Diagram/Schematic File > OK.
 
*# Cole o diagrama do debouncer copiado: (Ctrl + v).
 
*# Salve o diagrama esquemático com o nome '''debouncer''': (Ctrl + s) > '''/home/aluno/Contador/debouncer''' > Save.
 
*# Configure o '''debouncer''' para ser o Top Level Entity e compile o esquemático.
 
*# Crie um novo ''Symbol File'' para o debouncer: [File > Create/Update > Create Symbol File for Current File].
 
*# Volte ao diagrama do contador (ContCompleto) e acrescente os blocos '''clock1ms''' e '''debouncer''': Symbol Tool > Project ...
 
*# Interligue os blocos. 1) a entrada '''clock''' do '''clock1ms''' em '''PIN_T1'''. 2) A saída '''cout''' do '''clock1ms''' em '''clk_1ms''' do '''debouncer'''. 3) A entrada '''sw''' do '''debouncer''' na chave '''KEY[11]'''. 4) A saída '''sw_debounced''' no '''CLK''' do contador. Conforme figura ao lado: [[Arquivo:Debouncer.png|200px|thumb|Clique para Ampliar]]
 
*# Compile o projeto, programe na placa e verifique o funcionamento. Perceba que agora a chave não deve mais apresentar os repiques.
 
 
 
;QUESTIONÁRIO:
 
* Verifique o funcionamento da chave LDN. Qual é a sua função?
 
* Verifique o funcionamento da chave GN. Qual é a sua função?
 
* Verifique o funcionamento da chave UP/DN.  Qual é a sua função?
 
* Confira se a contagem está sendo feita da forma correta e se os símbolos mostrados no display correspondem ao esperado e mostrado nos leds vermelhos. Existe algum problema na contagem?
 
* Analise as saídas MXMN, RBO, RCO tanto na contagem crescente como decrescente.  O que estes sinais representam?
 

Edição atual tal como às 08h57min de 17 de maio de 2023

Objetivos
  • Inserir o circuito comercial de um Contador síncrono crescente/decrescente;
  • Inserir o circuito comercial de um decodificadores de 7 segmentos;
  • Testar os circuitos e gerar blocos para ser utilizado em um sistema maior;
  • Gravar o sistema final em um kit de desenvolvimento e validação do funcionamento;
Materiais necessários
  1. CI 74X191 Contador binário síncrono(disponível na biblioteca da ALTERA)
  2. CI 74X47/48 Decod 7-seg(disponível na biblioteca da ALTERA)
  3. Computador com software Quartus II da Altera.
  4. Kit DE2-115 - Cyclone: EP1C3T100A8 ou Mercurio IV - Cyclone IV: EP4CE30F23C7;

Teste do módulo contador binário síncrono

  1. Abra o Quartus II e crie um novo projeto com nome ContUpDown na pasta /home/aluno/Contador, utilizando a família family=Cyclone IV E com o dispositivo device=EP4CE115F29C7 (placa grande) ou Family = Cyclone IV E com dispositivo device = EP4CE30F23C7 (Placa pequena).
  2. Crie um novo diagrama esquemático (File >> New >> Block Diagram/Schematic File).
  3. Insira o diagrama esquemático de um Contador binário síncrono com 4 bits, conforme a figura abaixo.CI74191 diag.png
  4. Após isso faça a Análise e Síntese do projeto: Processing >> Start Compilation.
  5. Abra o editor de forma de onda do simulador QSIM (File > New > University Programa VWF) (v 13.0 e 13.1).
  6. Defina o tempo de simulação (Edit > Set End Time ...) = 1000 ns.
  7. Importe todos os nós de lista do projeto (Edit > Insert > Insert Node or Bus) > [Node Finder] > [List] > [>>] > [OK] > [OK].
  8. Desenhe a forma de onda dos sinais de entrada conforme mostrado na figura abaixo, e salve com o nome tb_CI74191.vwf.Tb CI74191.png
  9. Indique que o QSIM será usado na simulação (Simulation > Options > (x) Quartus II Simulator) > [OK] > [OK] (v. 13.0)
  10. Faça a simulação funcional do circuito lógico usando o sinal criado (Simulation > Run Functional Simulation)
  11. O resultado da simulação deve corresponder a um contador.
  12. 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].
  13. Verifique se o resultado obtido corresponde a respostas do circuito implementado.

Rtb CI74191.png

QUESTIONÁRIO
  • O que é necessário para fazer o contador fazer uma contagem descendente?
  • Como fazer para parar a contagem por um tempo mantendo o sinal de clock ligado?

Teste do módulo decodificar de 7 segmentos

  1. Crie um novo diagrama esquemático (File >> New >> Block Diagram/Schematic File) no mesmo projeto para inserir o diagrama esquemático de um decodificar de 7 segmentos para display de anodo comum, conforme a figura abaixo. Para a FPGA grande (DE2-115) utilize o conversor 7447, conforme figura abaixo, e para a FPGA pequena (Macnica), que possui display Catodo Comum, deve-se utilizar o 7448. Ambos os componentes apresentam a mesma pinagem.CI7447 diag.png
  2. Após salvar o arquivo como ConvBcdSsd.bdf na mesma pasta Contador. Mude o Top-Level Entity para este novo esquemático. Após isso faça a Análise e Síntese do projeto.

Criação do sistema completo com os módulos testados

  1. Selecione o diagrama esquemático do ContUpDown.bdf e crie um simbolo para este diagrama [File > Create/Update > Create Symbol File for Current File], [Save], [OK].
  2. Repita o procedimento para o ConvBcdSsd.bdf.
  3. Crie um novo diagrama esquemático com nome /home/aluno/Contador/ContCompleto (File >> New >> Block Diagram/Schematic File), no mesmo projeto para inserir o diagrama esquemático do sistema que será composto dos dois módulos, conforme a figura abaixo. Mude o Top-Level Entity para este novo esquemático. Contador0-15 diagv2.png

Preparar o circuito lógico para gravação em um kit de desenvolvimento

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

Clique para Ampliar
  1. Confira a família e dispositivo a ser usado (Assignments > Devices), utilizando a família family=Cyclone IV E com o dispositivo device=EP4CE115F29C7 (Placa grande) ou device = EP4CE30F23C7 (Placa pequena), e faça uma nova Análise e Síntese para que a nova pinagem do FPGA seja reconhecida pelo Quartus.
  2. Atribua os pinos do circuito aos pinos do FPGA utilizando o Pin Planner [Assignments > Pin Planner].
  3. Para descobrir a pinagem do FPGA e sua associação com os componentes do kit consulte o Manual da DE2-115/Interfaces de entrada e saída da DE2-115 ou Pinagem_dos_dispositivos_de_entrada_e_saída_do_kit_MERCURIO_IV.
  4. Para facilitar a configuração dos pinos, Assignments >> pin Planner:
    1. Utilize o display de sete segmentos para mostrar a saída do decodificador de 7 segmentos, fazendo as devidas conexões.
    2. Utilize uma chave de contato momentâneo (push button) para gerar o sinal de CLK.
    3. Utilize a chave deslizante SW[0] para o sinal DN/UP, SW[1] para o sinal G', SW[2] para o sinal LD'.
    4. Utilize leds para mostrar o estado dos sinais MXMN, RBO' e RCO'. Pode ser os leds RGB.
  5. Compile o projeto. Note que agora a numeração dos pinos também aparece no diagrama esquemático.
  6. Use a porta USB-Blaster para fazer a programação na placa DE2-115 ou MERCURIO IV;
  7. No Quartus vá em (Tools > Programmer) para abrir a página de programação;
    1. Selecione o Hardware (Hardware Setup > USB-Blaster);
    2. Utilize o modo JTAG e clique em Start para começar a programação;
      Clique para Ampliar
  8. Configure as chaves e verifique o funcionamento do circuito. Provavelmente você perceberá que a cada toque na chave associada ao clock ocorrerão vários saltos no contador, isso é provocado pelos repiques na chave.
  9. Normalmente uma chave apresenta os denominados repiques de sinal, ou seja, ao se alterar o estado da chave o sinal elétrico oscila várias vezes entre um nível lógico e outro, antes de estabilizar. Para evitar esse fenômeno pode-se fazer uso de um deboucer que gera um atraso entre os estados. Para usar o deboucer siga os seguintes passos:
    1. Tools > IP Catalog > Library > Basic Function > Arithmetic > LPM_COUNTER
    2. IP Variation file name: /home/aluno/Contador/clock1ms > OK
    3. 16 bits > Up only > Next
    4. Modulus, with a count modulus of 50000 > [Habilite a opção] Carry-out > Next.
    5. Next.
    6. Next.
    7. Habilite a opção Quartus II symbol file > Finish.
    8. Baixe o projeto deboucer [1].
    9. Abra o Navegador de Arquivos e descompacte o pacote zip baixado.
    10. Crie um novo arquivo (File >> New >> Block Diagram/Schematic File)
    11. File > Open > {procure o arquivo} Debouncer_v2.bdf > Open.
    12. Salve o arquivo na pasta do projeto (File >> Save As >> /home/aluno/Contador/Debouncer_v2.bdf)
    13. Configure o debouncer para ser o Top Level Entity e compile o esquemático.
    14. Crie um novo Symbol File para o debouncer: [File > Create/Update > Create Symbol File for Current File].
    15. Volte ao diagrama do contador (ContCompleto) e acrescente os blocos clock1ms e debouncer: Symbol Tool > Project ...
    16. Interligue os blocos. 1) a entrada clock do clock1ms em PIN_T1. 2) A saída cout do clock1ms em clk_1ms do debouncer. 3) A entrada sw do debouncer na chave KEY[11]. 4) A saída sw_debounced no CLK do contador. Conforme figura ao lado:
      Clique para Ampliar
    17. Compile o projeto, programe na placa e verifique o funcionamento. Perceba que agora a chave não deve mais apresentar os repiques.