Na continuação da construção do multiplicador 8×8, o objetivo desta etapa é construir em Verilog, um somador de 16 bits utilizando o operador de soma “+”.
O projeto resolvido desta etapa, pode ser baixado diretamente no github <clicando neste link aqui> e no diretório raiz IVER10_1 temos todos os arquivos e instruções dos exercícios.
Se você caiu de paraquedas por aqui e precisa saber como instalar o software Questa para trabalhar com Verilog, leia a série “Instalando Quartos com Questa”, <clicando neste link aqui>.
Na etapa a seguir:
Caso o Quartus Prime apresente uma mensagem informando que o “design target do projeto é para a família do Cyclone III …” conforme figura abaixo, precisa acertar a configuração do seu projeto de acordo com o FPGA da placa de desenvolvimento que estiver sendo utilizado.
Neste exemplo, como estou utilizando a placa de desenvolvimento Mini-Fpga que usa o Cyclone IV EP4CE6F17C8, deve clicar em “Ok” -> escolher o “Cyclone IV E” -> “Ok”.
Assim que abrir a tela do projeto, precisa clicar em “Assignments” (1) -> “Device” (2) -> “Device”(3) -> “Name filter” coloca “EP4CE6F17C8” (4) -> “Ok” (5).
Continuando, passos A e B:
O exercício pede para baixar o diretório “lab 1a” e abrir o projeto no Quartus, que é o arquivo “adder.qpf”, que em seguida pede para escrever o código de um somador de 16bits, conforme diagrama abaixo:
A descrição de hardware deste componente é bastante simples conforme indicado abaixo:
module adder ( input [15:0] dataa, datab, output[15:0] sum ); assign sum = dataa + datab; endmodule
O nome do arquivo a ser salvo no diretório do projeto deve ser “adder.v”. Caso estivéssemos programando, seria comparável a um “hello world” ;-).
Caso minhas notas sejam de grande valia para ti, vou ficar muito agradecido se você clicar nos anúncios desta página e conferir o que meus patrocinadores tem para lhe oferecer.
Passo C:
O exercício pede para sintetizar o projeto clicando em “Start -> Start Analysis & Synthesis”. Erros de digitação devem ser entendidos e corrigidos até que o Quartus retorne a mensagem indicando que foi concluída com sucesso a análise e síntese do circuito. Não adianta prosseguir antes de concluir esta etapa.
Passo D:
Nesta etapa o exercício pede para fazer uma simulação RTL usando o software ModelSim-Intel FPGA Edition. Nesta resolução vamos usar o Questa, que é a versão mais nova do ModelSim.
Precisa iniciar o simulador Questa, clicando em “Iniciar” -> “Questa”, devendo aparecer a tela de abertura, conforme abaixo:
Basta fechar a tela “IMPORTANT Information” e trocar o diretório para o local correto do exercício lab1a, conforme indicado abaixo:
“File” -> “Change Directory…” -> “navegar até a pasta do lab1a” -> clicar em no botão “Selecionar pasta”.
Conforme indicado abaixo, somente após a primeira simulação, o diretório de nome “work” será adicionado na primeira linha da área de bibliotecas (library) e o caminho do projeto deve aparecer na janela de transcript do console:
Este exercício lab1a, já vem com uma macro preparada na pasta lab1a, que é o arquivo adder-tb.do.
Precisa executar essa macro adder-tb.do para executar a simulação. Isso deve ser feito, clicando no menu “Tools” (1) -> “tcl” (2) ->”Execute Macro” (3) e em seguida selecionando o arquivo de macro “adder_tb.do” (4) e clicando no botão “Abrir” (5).
Aguarde a macro executar, leva cerca de 30 segundos. Uma vez executada a simulação definida pela macro, precisa clicar com o botão direito do mouse na tela preta “Wave – Default” (1) e selecionar “Zoom Full” (2), conforme indicado abaixo:
Após aplicar o zoom na tela Wave-Default, dá para notar a soma das entradas “dataa” e “datab” sendo executadas e o resultado sendo apresentado em “sum”, conforme indicado abaixo:
Tenha em mente que os registros “dataa”, “datab” e “sum”, são nomes de um barramento (bus). Neste cada um dos barramentos é composto por 16 bits.
Por exemplo, se clicar no sinal de “+”, de “dataa”, a tela vai expandir, exibindo cada um dos bits que compõem o barramento “dataa” indicado abaixo. Dá inclusive para saber o valor de cada bit individual e fazer a conversão para o valor hexadecimal.
Caso você tente reproduzir o exercício, caso ele não fique como apresentado nesta resolução, deve-se conferir os passos executados anteriormente.
Terminada a simulação, basta fechar a janela do Questa Intel Starter FPGA Edition.
Implementando e testando na placa Mini-FPGA, o somador 8×8 bits
Os passos a seguir são específicos para a placa de desenvolvimento Mini-FPGA utilizando o Cyclone IV EP4CE6F17C8. Caso esteja utilizando outra placa de desenvolvimento, os devidos ajustes devem ser realizados.
Feito os testes, para subir a descrição de hardware para a placa de desenvolvimento, precisamos levar alguns pontos em consideração:
- A placa de desenvolvimento precisaria de 16 chaves para receber a entrada de dataa e datab.
- Também precisaria de 16 leds para indicar o resultado da soma.
- Os pinos de entrada e de saída devem ser indicados na etapa de pin assignment, de acordo com diagrama esquemático da placa Mini-FPGA.
Como a placa de desenvolvimento tem apenas 8 chaves, para a entrada de dados, vou dividir as chaves para entrar os bits de 0 a 3 de “dataa” e de “datab”, assim dá para fazer testes inserindo valores de zero até 0xF para cada uma das entradas e o resultado do somador, será exibido nos leds 0 até 4 que são os cinco primeiros bits do resultado, podendo representar valores entre 0 e 31 decimal ou 0x00 e 0x1F.
Dito isso, basta abir a interface do Pin Planner do Questa, já configurada para o CycloneIV EP4CE6F17C8 e atribuir os pinos conforme a seguir:
| dataa[0] - PIN_N16 | dataa[1] - PIN_M12 | dataa[2] - PIN_N14 | dataa[3] - PIN_N13 | | datab[0] - PIN_R16 | datab[1] - PIN_P15 | datab[2] - PIN_P16 | datab[3] - PIN_N15 | | sum[0] - PIN_A5 | sum[1] - PIN_B5 | sum[2] - PIN_A4 | sum[3] - PIN_B4 | sum[4] - PIN_A3 |
Feita a atribuição dos pinos, basta compilar o projeto e gravar na Mini-FPGA <conforme abordado neste artigo aqui>.
Depois é só testar na Mini-FPGA, o funcionamento do somador ;-).
- Multiplicador 8×8: Exercício lab1a somador 16bits <-
- Multiplicador 8×8: Exercício lab1b multiplicador 4 bits
- Multiplicador 8×8: Exercício lab2a 4-bits 2:1 Mux
- Multiplicador 8×8 Exercício lab2b 8-16bit left regb
- Multiplicador 8×8 Exercício lab3 Display 7 segmentos
- Multiplicador 8×8 Exercício lab4a Registrador 16bits
- Multiplicador 8×8 Exercício lab4b Contador 2bits assíncrono
- Multiplicador 8×8 Exercício lab5a State Machine
- Multiplicador 8×8 Exercício lab5b Montagem final
Publicado por Renato de Pierri em 23/nov/2023.
Fonte: Manual de exercícios de Introdução ao Verilog, da Intel.