Contador binário síncrono

De MediaWiki do Campus São José
Ir para: navegação, pesquisa
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.
  4. Após isso faça a Análise e Síntese do projeto.
  5. 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.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 > Megawizard Plugin Manager
    2. Create a new custom megafunction variation > Next.
    3. Aritimethic > LPM_counter > what name do you want for the outoput file?: clock1ms > Next
    4. 16 bits > Up only > Next
    5. Modulus, with a count modulus of 50000 > [Habilite a opção] Carry-out > Next.
    6. Next.
    7. Next.
    8. Habilite a opção Quartus II symbol file > Finish.
    9. Baixe o projeto deboucer Arquivo:Deboucer.qar.
    10. Restaure o projeto: Project > Restore Archived Project
    11. {procure o arquivo} Deboucer.qar > Open.
    12. OK
    13. Abra o esquemático do Debouncer_v2.
    14. Copie todo o arquivo: (Ctrl + a) e (Ctrl + c)
    15. Abra novamente o projeto do contador: File > Open Project > /home/aluno/Contador > Open.
    16. Crie um novo diagrama nesse projeto: File > New > Block Diagram/Schematic File > OK.
    17. Cole o diagrama do debouncer copiado: (Ctrl + v).
    18. Salve o diagrama esquemático com o nome debouncer: (Ctrl + s) > /home/aluno/Contador/debouncer > Save.
    19. Configure o debouncer para ser o Top Level Entity e compile o esquemático.
    20. Crie um novo Symbol File para o debouncer: [File > Create/Update > Create Symbol File for Current File].
    21. Volte ao diagrama do contador (ContCompleto) e acrescente os blocos clock1ms e debouncer: Symbol Tool > Project ...
    22. 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
    23. Compile o projeto, programe na placa e verifique o funcionamento. Perceba que agora a chave não deve mais apresentar os repiques.