341tica somador de 16 bits em vhdl.)professorcesarcosta.com.br/upload/imagens_upload/4ª aula...
Post on 10-Sep-2018
212 Views
Preview:
TRANSCRIPT
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.
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;
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
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.
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".
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
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.
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.
top related