1. Nome:
Turma:
Professor:
Data:
Prática 1 – Implementação de Circuitos Lógicos em FPGA
O objetivo desta prática é apresentar a criação do arquivo de projeto, do arquivo de
estímulos e a simulação de circuitos digitais combinacionais com recursos de lógica
programável. Ao final desta prática o leitor deve estar familiarizado com o software Quartus
II, simular os resultados de saída de um circuito digital combinacional de acordo com as
suas entradas e interpretar a tabela verdade do circuito por meio do seu gráfico de formas
de onda.
A Figura 3.1 mostra um circuito combinacional simples com portas lógicas AND, NAND e
NOR. Crie um arquivo gráfico de projeto, compile, salve-o, crie um arquivo de estímulos e
simule o funcionamento do circuito. Depois, a partir do gráfico de formas de ondas do
circuito, monte a sua tabela verdade.
O leitor que possuir um kit de desenvolvimento DE 2 com FPGA pode descarregar e testar o
circuito, simulando a tabela verdade, por meio de quatro chaves dip switches como entradas
e um LED como a saída do circuito. A Tabela 3.1 apresenta a designação dos pinos do
FPGA.
Tabela 3.1 - Designação de pinos do FPGA.
Função
Pinos do FPGA
Kit DE 2
Entrada A
PIN_N25
Chave SW (0)
Entrada B
PIN_N26
Chave SW (1)
Entrada C
PIN_P25
Chave SW (2)
Entrada D
PIN_AE14
Chave SW (3)
Saída S
PIN_AE23
LED vermelho (0)
Figura 3.1 - Circuito combinacional simples.
Solução:
A entrada de um projeto pode ser realizada de duas formas: um diagrama lógico,
desenvolvido a partir do editor gráfico, no qual se utilizam portas lógicas e macroinstruções,
ou pelo editor de texto e uso de uma linguagem de descrição de hardware, como, por
exemplo, VHDL. Neste capítulo utiliza-se o modo editor gráfico do software Quartus II para
solução dos exercícios propostos.
1
2. Para iniciar um novo projeto no software Quartus II, clique na opção Create a New Project.
No menu da barra de ferramentas principal, clique em arquivos (File) e selecione a opção
New Project Wizard.
A primeira vez que você abre um projeto, uma tela introdutória é apresentada. A opção New
Project Wizard permite criar um projeto e informar dados básicos dele. Crie o diretório
C:altera91sp2quartusprojetos_01. Digite o nome do projeto na caixa de diálogo
correspondente combinacional_1 e use esse mesmo nome como a entidade de mais alto
nível de projeto, na caixa de diálogo correspondente.
A janela dois do New Project Wizard não necessita ser preenchida; clique em Next. A janela
três seleciona a família de dispositivos de fabricação da empresa Altera Corp, que será
utilizada no projeto; surgem diversas famílias de FPGAs e CLPDs. Selecione a família
Cyclone II.
Na opção dispositivo alvo (Target device) selecione um dispositivo específico ou use a
opção filtro (Filter) para seleção automática. Escolha o dispositivo EP2C35F672C6. Clique
em Next; a janela quatro não precisa ser preenchida, então clique em Next. A janela cinco é
a última do New Project Wizard e apresenta um resumo dos dados informados sobre o
projeto:
Υ
Diretório de projeto: C:altera91sp2quartusprojetos_01
Υ
Nome do projeto: combinacional_1
Υ
Entidade de projeto de nível mais alto: combinacional_1
Υ
Número de arquivos acrescentados: 0
Υ
Número de bibliotecas de usuário acrescentadas: 0
Υ
Dispositivo escolhido:
−
−
Υ
Nome da família: Cyclone II
Dispositivo: EP2C35F672C6.
Ferramentas EDA:
−
Entrada de projeto/Síntese: <Nenhuma>
−
Simulação: <Nenhuma>
−
Análise de tempo: <Nenhuma>
Clique no botão Finish e a criação do projeto está encerrada. Este procedimento deve ser
sempre utilizado para a criação de um projeto.
Depois do projeto criado, para entrar no modo de edição gráfica, na janela principal do
software Quartus II, escolha no menu de arquivos (File) a opção novo (New). Selecione a
opção Block diagram/Schematic File e clique no botão OK. Surge a tela de edição gráfica,
na qual é editado o circuito lógico da Figura 3.1.
A inserção de um componente lógico na janela do editor gráfico é realizada, clicando na
barra de ferramentas lateral, no desenho de uma porta lógica. A janela denominada símbolo
(Symbol) é aberta. Digite o nome do componente no campo Name da seguinte forma: porta
NOR de 2 entradas - NOR2, porta NAND de 2 entradas - NAND2 e porta AND de 2 entradas
- AND2.
2
3. Para inserir o componente NOR2, digite o nome do componente no campo Name da janela.
Clique no botão OK. O símbolo do componente NOR2 é mostrado na janela maior do editor
gráfico.
Quando o componente é selecionado, o cursor do mouse deve ser utilizado para posicionálo na janela. Para fixá-lo, arraste-o até o ponto desejado e clique com o botão esquerdo do
mouse. O cursor do mouse somente é liberado do componente quando o botão de seleção
(símbolo de uma seta), na barra de ferramentas lateral, for pressionado. Repita os passos
anteriores para inserir os componentes NAND2 e AND2 respectivamente.
Insira os terminais de entrada e saída dos componentes, repetindo os mesmos
procedimentos usados no item anterior para inserção dos componentes lógicos, ou então,
digite a palavra input para uma entrada e output para uma saída no campo Name da janela
Symbol e clique no botão OK.
Para interligar os componentes do circuito, na barra de ferramentas selecione com o cursor
do mouse o botão fio ortogonal. O cursor muda para uma cruz. Clique com o botão esquerdo
do mouse no componente de origem e com o botão esquerdo pressionado arraste o fio até o
componente de destino. Caso deseje apagar a ligação ou o componente, basta selecionar o
objeto, que aparece com uma cor azul, e pressionar a tecla Delete. A Figura 3.2 apresenta a
tela do editor gráfico com os componentes interligados.
Figura 3.2 - Circuito com os componentes interligados.
Os terminais de entrada (input) e saída (output) inseridos no circuito devem ser identificados
para posterior utilização, para isso os terminais devem ter nomes. Com o cursor selecione o
terminal a ser identificado e com o botão esquerdo do mouse dê um duplo clique no terminal
(Pin name). Surge uma janela, chamada propriedades do terminal (Pin properties). No
campo nome do terminal digite A, B, C e D para as entradas e S para a saída. Clique em
OK. Repita o processo passo a passo para cada terminal de entrada e para cada terminal de
saída.
Uma vez que o projeto foi inserido, agora é necessário compilá-lo para verificar a existência
de erros. Acesse na barra de ferramentas do editor gráfico o menu Processing e selecione a
opção Star Compilation. O projeto é salvo e o andamento da compilação é apresentado na
parte lateral da tela. As mensagens de cuidado (cor azul) e de erros (cor vermelha)
aparecem na parte inferior da janela.
Caso não haja erro, uma mensagem é fornecida; clique em OK. Se o compilador acusar
algum erro, verifique as mensagens de erros, na parte inferior da janela, corrija os erros e
compile novamente. O projeto só é compilado quando não houver mais erros.
A simulação funcional verifica os resultados de saída de um circuito digital combinacional de
acordo com as suas entradas. Para tanto, deve-se criar um arquivo de estímulo para
verificar a funcionalidade do projeto. Assim, acesse na barra de ferramentas do editor gráfico
o menu Assignments e selecione a opção Settings. Na seção modo de simulação selecione
a opção Functional e clique em OK.
Na barra de ferramentas do editor gráfico, selecione no menu File a opção New. Na caixa de
diálogo escolha o arquivo Vector waveform e clique em OK. Surge a janela do Editor de
Forma de Ondas, arquivo com extensão.vwf, na qual se realiza a simulação funcional do
projeto.
3
4. Para inserir as entradas e saídas do circuito, na barra de ferramentas da janela do Editor de
Forma de Ondas, acesse o menu Edit e selecione a opção Insert Node or Bus. Na caixa de
diálogo clique no botão Node Finder. Selecione em Filter a opção Pins: all e pressione o
botão List. Todas as entradas e saídas que você definiu no seu circuito são mostradas.
Selecione todas as entradas e saídas e clique na seta à direita. Desta forma, as entradas e
saídas aparecem no quadro Selected Nodes. Pressione OK e a janela Node Finder se fecha.
Pressione novamente OK. Na janela do Editor de Formas de Ondas surgem as entradas e
saídas selecionadas, que serão simuladas.
Agora vamos atribuir formas de ondas às entradas para verificar a saída. Selecione uma das
entradas, clicando no nome da entrada; a linha toda é selecionada. Clique duas vezes na
primeira coluna (Node). Surge a janela Node Properties; selecione em Radix (base
numérica) a opção binário. Clique em OK.
Na janela do Editor de Forma de Ondas, selecione a linha correspondente à entrada A, na
barra vertical de ferramentas em que estão os sinais de estímulos, e clique no botão Count
Value, correspondente a um gerador de onda quadrada.
Na janela Count Value, selecione a opção Timing; o período (Count Every), não deve ser
maior que o intervalo. A opção fator de multiplicação (Multiply By) aumenta o período da
onda quadrada a ser gerada. Neste caso, mantenha os valores default. No menu Edit do
Editor de Forma de Ondas escolha o tempo de simulação (End Time) para 20 µs
(microssegundos).
Repita os passos anteriores para os sinais de entrada B, C e D. Entretanto, na janela opção
Timing, estabeleça o fator de multiplicação (Multiply By) igual a 2, 3 e 4 para cada entrada.
Este procedimento aumenta o período da onda quadrada a ser gerada para cada entrada B,
C e D.
Antes da simulação é necessário criar o arquivo de sinais de estímulos waveform.vwf.
Selecione na barra de ferramentas do Editor de Formas de Onda, no menu Processing, a
opção Generate Functional Simulation Netlist. Salve as alterações do arquivo
waveform1.vwf e clique em OK. Salve o arquivo waveform1.vwf como combinacional_1.
Clique em OK. Caso não haja nenhum erro no procedimento de criação dos estímulos, uma
mensagem de confirmação é gerada; clique em OK.
Para compilar e simular o arquivo combinacional_1.vwf, na barra de ferramentas do Editor
de Formas de Onda, no menu Processing, selecione a opção Start Simulation. O projeto é
compilado e simulado. Se a compilação ocorrer sem nenhum erro, o resultado da simulação,
saída S, em função das entradas A, B, C e D será igual ao apresentado na Figura 3.3.
Figura 3.3 - Resultado da simulação.
É possível montar a tabela verdade do circuito, verificando o estado da saída S, para cada
estado das entradas A, B, C e D, em cada intervalo de tempo, no diagrama de forma de
onda da Figura 3.3.
Analisando a Figura 3.3, chega-se à conclusão de que a saída S só é verdadeira em três
condições:
1.
Todas as entradas são falsas, nível zero.
4
5. 2.
A entrada D é verdadeira, nível um, e as entradas A, B e C são falsas, nível zero.
3.
A entrada C é verdadeira, nível um, e as entradas A, B e D são falsas, nível zero.
Nos demais casos a saída S é falsa, nível zero. A Tabela 3.2 apresenta a tabela verdade do
circuito, obtida a partir do diagrama de forma de ondas da Figura 3.3.
Tabela 3.2 – Tabela verdade do circuito dado.
A
B
C
D
S
0
0
0
0
1
0
0
0
1
1
0
0
1
0
1
0
0
1
1
0
0
1
0
0
0
0
1
0
1
0
0
1
1
0
0
0
1
1
1
0
1
0
0
0
0
1
0
0
1
0
1
0
1
0
0
1
0
1
1
0
1
1
0
0
0
1
1
0
1
0
1
1
1
0
0
1
1
1
1
0
Os nomes dos terminais de entradas e saídas do circuito projetado devem ser associados
com os pinos do FPGA utilizado, conforme a Tabela 3.1 de designação dos pinos do FPGA.
A configuração das posições dos pinos do FPGA é obtida na barra de ferramentas do editor
gráfico, menu Assignments, opção Assignments Editor. No campo Category selecione Pins.
Com um duplo clique, na coluna To, no campo New, são apresentadas todas as entradas e
saídas definidas no projeto. Com um duplo clique na coluna Locations, campo New, são
mostradas todas as posições dos pinos do FPGA.
Selecione a entrada ou saída na coluna To e posicione o pino correspondente na coluna
Locations ou digite o nome do Pino conforme a Tabela 3.1. As entradas ou saídas já
posicionadas são indicadas com uma grafia diferente. Salve a nova configuração dos pinos
do FPGA e compile o projeto novamente. Na tela do editor gráfico do arquivo
combinacional_1.bdf o posicionamento dos pinos é indicado, conforme indicado na figura
3.4.
5
6. Para descarregar o projeto no kit do FPGA DE 2 e testar o circuito, acompanhe os seguintes
procedimentos:
1.
Coloque a chave RUN/PROG do kit de desenvolvimento DE 2 no modo RUN. No
software Quartus II, menu Tools, selecione a opção Programmer. Surge uma tela que
vai gerenciar a transferência de dados do microcomputador PC para o FPGA do kit de
desenvolvimento. Nessa tela é necessário especificar o hardware de comunicação que
será utilizado e o modo da transferência de dados. Selecione o modo JTAG, na caixa
Mode. Se a opção USB - Blaster não estiver selecionada (default), pressione o botão
Hardware Set - Up e selecione USB-Blaster na caixa de diálogo.
2.
O arquivo combinacional.sof é exibido na janela de transferência. Se ele não for exibido,
clique em Add File e selecione-o para incluir na janela de gerenciamento da transferência de
dados. O arquivo combinacional.sof é binário, produzido pelo Quartus II, que contém os
dados necessários para configurar o dispositivo FPGA. Note também que o dispositivo
selecionado é o EP2C35F672, FPGA utilizado no kit de desenvolvimento DE2. Marque a opção
Program/Configure e pressione START. O campo Progress atinge 100% e um LED no kit de
desenvolvimento DE2 acende, quando a configuração for descarregada com sucesso.
.
3.
Após carregar o programa no kit DE 2, teste a tabela verdade do circuito apresentado na Tabela
3.2. Tente todas as possibilidades da tabela verdade, pressionando as chaves SW(0), SW(1),
SW(2) e SW(3), observe o LED vermelho LEDR(0), saída S.
6
7. Para descarregar o projeto no kit do FPGA DE 2 e testar o circuito, acompanhe os seguintes
procedimentos:
1.
Coloque a chave RUN/PROG do kit de desenvolvimento DE 2 no modo RUN. No
software Quartus II, menu Tools, selecione a opção Programmer. Surge uma tela que
vai gerenciar a transferência de dados do microcomputador PC para o FPGA do kit de
desenvolvimento. Nessa tela é necessário especificar o hardware de comunicação que
será utilizado e o modo da transferência de dados. Selecione o modo JTAG, na caixa
Mode. Se a opção USB - Blaster não estiver selecionada (default), pressione o botão
Hardware Set - Up e selecione USB-Blaster na caixa de diálogo.
2.
O arquivo combinacional.sof é exibido na janela de transferência. Se ele não for exibido,
clique em Add File e selecione-o para incluir na janela de gerenciamento da transferência de
dados. O arquivo combinacional.sof é binário, produzido pelo Quartus II, que contém os
dados necessários para configurar o dispositivo FPGA. Note também que o dispositivo
selecionado é o EP2C35F672, FPGA utilizado no kit de desenvolvimento DE2. Marque a opção
Program/Configure e pressione START. O campo Progress atinge 100% e um LED no kit de
desenvolvimento DE2 acende, quando a configuração for descarregada com sucesso.
.
3.
Após carregar o programa no kit DE 2, teste a tabela verdade do circuito apresentado na Tabela
3.2. Tente todas as possibilidades da tabela verdade, pressionando as chaves SW(0), SW(1),
SW(2) e SW(3), observe o LED vermelho LEDR(0), saída S.
6