341tica somador de 16 bits em vhdl.)professorcesarcosta.com.br/upload/imagens_upload/4ª aula...

8

Click here to load reader

Upload: ngodan

Post on 10-Sep-2018

212 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 341tica Somador de 16 bits em VHDL.)professorcesarcosta.com.br/upload/imagens_upload/4ª Aula Prática... · 1 4.a Aula Prática – Projeto de um Somador de 16 bits com a Linguagem

1

4.a Aula Prática – Projeto de um Somador de 16 bits com a Linguagem VHDL

Prof. Cesar da Costa

VHDL é uma linguagem para descrever sistemas digitais utilizada universalmente. VHDL é proveniente de VHSIC Hardware Description Language, no contexto do

programa americano “Very High Speed Integrated Circuits” (VHSIC), iniciado em

1980.

A linguagem VHDL permite particionar o sistema em diferentes níveis de abstração,

quais sejam:

• Nível de sistema;

• Nível de transferência entre registradores (RT level);

• Nível lógico;

• Nível de circuito.

Permite três diferentes domínios de descrição:

• Comportamental;

• Estrutural;

• Físico.

Níveis de abstração e descrição 1) Nível de sistema:

• Descrição comportamental: algoritmos;

• Descrição estrutural: processadores e memórias;

• Descrição física: boards e chips.

2) Nível RT (Transfer Register):

• Descrição comportamental: transferências entre registradores;

• Descrição estrutural: registradores, unidades funcionais e multiplexadores;

• Descrição física: chips e módulos.

3) Nível Lógico:

• Descrição comportamental: equações booleanas;

• Descrição estrutural: gates e flip-flops;

• Descrição física: módulos e células.

4)Nível de Circuito:

• Descrição comportamental: funções de transferência;

• Descrição estrutural: transistores e conexões;

• Descrição física: células e segmentos do circuito.

Page 2: 341tica Somador de 16 bits em VHDL.)professorcesarcosta.com.br/upload/imagens_upload/4ª Aula Prática... · 1 4.a Aula Prática – Projeto de um Somador de 16 bits com a Linguagem

2

Comentários, Notações e Estruturas na Linguagem VHDL

Os comentários em VHDL ocorrem após dois traços “- -“. Os caracteres maiúsculos e

minúsculos não tem distinção em VHDL. Os nomes de variáveis devem iniciar-se com

letras alfabéticas, sendo possível utilizar também dígitos numéricos e “_”. O caracter

“_” não pode ser usado duplicado, e nem no final de um nome.

A estrutura básica de um programa em VHDL é composta de três elementos:

As primeiras informações contidas num programa VHDL é a declaração das bibliotecas

library (ies) usada no projeto. Várias funções e tipos básicos são armazenados em

bibliotecas. A biblioteca “IEEE” é sempre incluída.

Ex:

Library IEEE;

Use IEEE.std_logic_1164.all;

Use IEEE.std_logic_unsigned.all;

Observações:

1) A declaração Library IEEE é usada para definir a biblioteca IEEE;

2) A declaração use IEEE.std_logic_1164.all é necessária para usar os dados

correspondentes à lógica padrão da biblioteca;

3) A declaração use IEEE.std_logic_unsigned.all é necessária para realizar a

aritmética não sinalizada.

O entity (entidade) define a interface (port) do projeto, através dos pinos de entrada (in) e saída (out) e o tipo do sinal correspondente, no seguinte formato:

entity nome_da_entity is

port (

Declaração dos pinos

);

end [nome_da_entity] ;

Exemplo:

entity COMPARA is

port ( A,B : in std_logic; C: out std_logic);

end COMPARA;

Page 3: 341tica Somador de 16 bits em VHDL.)professorcesarcosta.com.br/upload/imagens_upload/4ª Aula Prática... · 1 4.a Aula Prática – Projeto de um Somador de 16 bits com a Linguagem

3

A architecture define a lógica do circuito e pode ser composta dos seguintes elementos:

a) component

b) signal

c) lógica

Sendo component e signal declarações de componentes e sinais intermediários

opcionais. O formato para a descrição da arquitetura é o seguinte:

Architecture nome_da_architecture of nome_da_entity is

Declarações opcionais (component e signal)

begin

end [nome_da_architecture];

No ambiente do editor de texto do software Quartus II, é possível criar projetos

utilizando uma das seguintes linguagens de descrição de hardware: AHDL, VHDL,

HDL e Verilog.

Vamos criar um projeto completo em que utilizamos a linguagem VHDL. Vamos

estudar a edição, síntese e simulação do projeto de um somador digital de 16 bits,

conforme apresenta a Figura 2.21. Para criar um projeto, selecione no menu de

arquivos (File) a opção New Project Wizard.

A primeira vez que você abre um novo projeto, uma tela introdutória é apresentada,

conforme vimos anteriormente no editor gráfico para informação de dados básicos

sobre o projeto.

Na primeira janela do New Project Wizard digite o nome do diretório de trabalho do seu

projeto ou localize-o por meio do botão (Browse), clicando, por exemplo, em

C:\altera\91sp2\quartus\projetos_01.

Digite o nome do projeto na caixa de diálogo correspondente, com o nome de adder, e

digite esse mesmo nome como nome da entidade de mais alto nível de projeto na caixa

de diálogo correspondente. Clique em Next.

A janela dois do New Project Wizard não necessita ser preenchida; pois nesse caso, não

existe nenhum arquivo de projeto, nenhuma fonte de arquivo ou biblioteca a ser

incluída. Clique em Next.

A janela três seleciona uma família de dispositivos de fabricação da empresa Altera, que

será utilizada no projeto; vão surgir diversas famílias de FPGAs e CLPDs; selecione a

Page 4: 341tica Somador de 16 bits em VHDL.)professorcesarcosta.com.br/upload/imagens_upload/4ª Aula Prática... · 1 4.a Aula Prática – Projeto de um Somador de 16 bits com a Linguagem

4

família Cyclone II. O dispositivo EP2C35F672C6 será selecionado automaticamente.

Clique em Next.

Na janela quatro não marque nenhuma opção, pois esse projeto só usa ferramentas

do software Quartus II, não outras ferramentas EDA. 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:/altera/90/quartus/projetos_01

• Nome do projeto: adder

• Entidade de projeto de nível mais alto: adder

• 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. Note que o nome do

projeto no topo da janela principal do navegador é modificado para o nome da entidade

de nível mais alto, C:/altera/91sp2/quartus/projetos_01/ adder-adder.

Na janela principal selecione no menu de arquivos (File), a opção novo (New). Será

aberta uma caixa de diálogo, selecione a opção VHDL File e clique no botão OK.

Surge uma janela denominada Vhdl1.vhd, em que será editado o programa em VHDL.

A tela do editor de texto oferece uma barra de ferramentas com diversas opções.

Clique na figura (Insert Template). Abre-se uma janela denominada Insert Template,

onde estão disponíveis diversos modelos de templates (declarações) correspondentes às

estruturas de programas escritos em VerilogHDL, Verilog, VHDL, AHDL,

Quartus II TCL, TimeQuest e Megafunçoes.

Selecione as opções apresentadas na sequência: (i) VHDL; (ii) Full Designs; (iii)

Arithmetic; (iv) Adder; (v) Unsigned Adder. Um exemplo de modelo (Template)

VHDL de um somador aparece na janela Preview. Esses modelos são de grande ajuda

na edição de programas em VHDL. A Figura 2.23 apresenta um modelo de somador

não sinalizado em VHDL.

Page 5: 341tica Somador de 16 bits em VHDL.)professorcesarcosta.com.br/upload/imagens_upload/4ª Aula Prática... · 1 4.a Aula Prática – Projeto de um Somador de 16 bits com a Linguagem

5

Pressione o botão Insert. Uma cópia do modelo é transferida para a janela do editor de

texto. Clique no botão Close e feche a janela do Insert Template.

Inicialmente se deve declarar a biblioteca, seguida da entidade e, finalmente, a

arquitetura; utilize as mesmas entradas (A e B) e saída (Soma) do diagrama da Figura

2.21. A Figura 2.24 apresenta o programa escrito em VHDL no editor de texto.

O projeto deve ser salvo e compilado para verificação da existência de erros básicos de

sintaxe e semântica. Vá para o menu de arquivo (File) e escolha Salvar Como. Salve o

novo arquivo texto VHDL como adder.

Para compilar o projeto, acesse o menu Processing, selecione a opção Star Compilation,

ou clique no botão localizado na barra de ferramentas. Será aberta uma janela, conforme

mostra a Figura 2.25. Caso haja problemas na compilação, surge uma caixa de diálogo

com a seguinte mensagem: "Full Compilation was NOT successfull".

Page 6: 341tica Somador de 16 bits em VHDL.)professorcesarcosta.com.br/upload/imagens_upload/4ª Aula Prática... · 1 4.a Aula Prática – Projeto de um Somador de 16 bits com a Linguagem

6

Então verifique a caixa de mensagens de erros, na parte inferior da janela, e selecione

uma mensagem de erro; por exemplo, "Error: Top-level design entity "adder" is

undefined". Esse tipo de erro é muito comum no software Quartus II, pois o nome do

projeto tem que ser o nome da arquitetura; caso contrário, ocorrerá erro de compilação.

Para solucionar o problema, volte à tela de edição do programa, parte superior, clique

no arquivo adder.vhd e altere as linhas 9 e 25 do programa para:

Linha 9: entity adder is

Linha 25: architecture rtl of adder is

Compile o projeto novamente, menu Processing, selecione a opção Star Compilation.

Caso não haja mais problemas na compilação, surge uma caixa de diálogo com a

seguinte mensagem: "Full Compilation was successfull". Então clique em OK.

A simulação funcional verifica os resultados de saída do circuito de acordo com as

suas entradas. Deve-se criar um arquivo de estímulo para verificar a funcionalidade do

projeto.

A criação de um arquivo de estímulo deve seguir algumas etapas. Inicialmente acesse o

menu Assignments e selecione a opção Settings. Surge uma janela, conforme indica a

Figura 2.26. Na seção Category escolha a opção Simulator e surge a janela do

simulador. Na seção modo de simulação (Simulation mode) selecione funcional

(Functional). Clique em OK.

Uma vez que o modo de simulação funcional foi ativado, para criar o arquivo de

estímulos acesse o menu File na barra de ferramentas da janela principal e selecione

New. Na caixa de diálogo escolha Vector waveform file. Clique em OK. Surge a janela

do Editor de Forma de Ondas, arquivo com extensão .vwf, na qual será realizada a

simulação funcional do projeto.

Para inserir as entradas e a saída (nodos) do projeto, na 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. Surge a janela Node Finder. Então selecione em Filter a

opção Pins: all. Pressionando o botão List, no quadro Nodes Found aparecem as

entradas e a saída do projeto, identificadas com seus respectivos nomes.

Selecione as entradas e a saída (nodos) e clique na seta à direita. As entradas e a saída

aparecem no quadro Selected Nodes. Pressione OK, a janela Node Finder se fecha.

Pressione novamente OK. A Figura 2.27 mostra a seleção das entradas e a saída do

projeto.

Na janela Editor de Formas de Ondas aparecem as entradas e a saída selecionadas, que

serão simuladas. Agora vamos atribuir formas de ondas às entradas para verificar a

saída. Selecione uma das entradas, clicando duas vezes no nome da entrada, a linha toda

será selecionada. Surge a janela Node Properties. Selecione em Radix a opção decimal

sinalizado (Signed Decimal) para as entradas A e B. Selecione binário, por exemplo,

para a saída Soma. Clique em OK.

Na janela do Editor de Forma de Ondas, na barra vertical de ferramentas, selecione para

as entradas A e B o botão, opção Count value, correspondente a um gerador de onda

quadrada. A janela Count Value se abre, mostrando várias informações sobre o sinal

que será gerado. Para este caso, mantenha os valores default.

Para visualizar melhor o sinal de estímulo das entradas A e B, selecione na barra

de ferramentas o botão Zoom e clique na janela do Editor de Forma de Ondas (botão

esquerdo do mouse aumenta a visualização e o botão direito diminui). A Figura 2.28

Page 7: 341tica Somador de 16 bits em VHDL.)professorcesarcosta.com.br/upload/imagens_upload/4ª Aula Prática... · 1 4.a Aula Prática – Projeto de um Somador de 16 bits com a Linguagem

7

apresenta os sinais de estímulos de entrada na janela do Editor de Formas de Ondas.

Antes da simulação das entradas e saídas do arquivo waveform.vwf, é necessário criar o

arquivo de sinais de estímulos. Para tanto, selecione na barra de ferramentas o menu

Processing e escolha a opção Generate Functional Simulation Netlist.

Salve as alterações do arquivo waveform1.vwf. Clique em OK. Salve o arquivo

waveform1.vwf como adder.Clique em OK. Caso não haja nenhum erro com o arquivo

de estímulos criado, aparece uma janela com a mensagem "Functional Simulate Netlist

was successful". Clique em OK.

Para compilar e simular o arquivo adder.vwf, selecione no menu Processing a opção

Start Simulation ou clique no botão. Se a compilação ocorrer sem nenhum erro,

a mensagem "Simulator was successful" surge na janela do Editor de Formas de Ondas.

Clique em OK.

O resultado da saída Soma é apresentado em binário, pois anteriormente na janela Node

Properties, em Radix foi escolhida a opção binário. Se fosse escolhida a opção decimal

sinalizado (Signed Decimal), a saída Soma seria dada em decimal como as entradas A e

B.

Para criar um símbolo gráfico, arquivo adder.bsf, que represente o arquivo adder.vhd

corrente, na barra de ferramentas no menu File, escolha a opção Create/Update, na

janela aberta selecione a opção Create Symbol Files for Current File, surge outra janela

com a mensagem Created Block Symbol File adder. Clique em OK.

Page 8: 341tica Somador de 16 bits em VHDL.)professorcesarcosta.com.br/upload/imagens_upload/4ª Aula Prática... · 1 4.a Aula Prática – Projeto de um Somador de 16 bits com a Linguagem

8

Para inserir o símbolo gráfico criado, arquivo adder.bsf, em um novo projeto, basta

proceder como visto anteriormente neste capítulo, ou seja, como se fosse inserir um

componente lógico qualquer. O símbolo gráfico criado adder agora faz parte da

biblioteca (library) do software Quartus II. A Figura 2.30 apresenta o símbolo gráfico

adder criado.

A configuração dos pinos do dispositivo FPGA deve ser realizada para definir o

posicionamento dos pinos. A configuração das posições dos pinos pode ser obtida no

menu Assignments, opção Assignments Editor, Category Pins, como visto

anteriormente no editor gráfico. A Figura 2.31 mostra a configuração dos pinos do

dispositivo FPGA. Salve a nova configuração dos pinos do FPGA e compile o projeto

novamente.