Tutorial :: Introdução ao VHDL
em ambiente Design Works
●
Objectivos
●
Familiarização com a linguagem VHDL
●
Familiarização com a construção de modelos em VHDL utilizando o software DesignWorks.
●
Trabalho a realizar
●
Implementar um módulo em VHDL com a implementação de uma função lógica combinatória
●
Abordagem
●
Realização passo-a-passo
SD :: Introdução ao VHDL 2
introdução
Em muitos carros actuais, o motor é ligado através, não de acção de uma chave, mas por um botão START. O motor de arranque deve ser accionado quando:
● o botão “START” for premido e se verificar uma das duas seguintes:
● o pedal de embraiagem estiver carregado ou
● o travão estiver carregado e o carro estiver em ponto-morto (mudança não engatada)
A actuação do motor de arranque pode ser visto como uma função lógica com quatro variáveis: B (botão START carregado), E (embraiagem carregada), T (travão
carregado) e C (caixa com velocidade engatada).
Com estas variáveis, é fácil verificar que a função M que determina o funcionamento do motor de arranque é dada pela
expressão:
Pretende-se agora implementar esta função no Design Works recorrendo à linguagem VHDL
M = B ⋅( E +( T⋅̄ C ))
1. criação do template
No DW5, crie um novo modelo através do Model Wizard, seleccionando as opções:
- Create a new empty model e - Create a new symbol ...
SD :: Introdução ao VHDL 4
1. criação do template
Defina o modelo criado como sendo VHDL e dê-lhe nome (ex: Motor_Start).
1. criação do template
No passo seguinte, irá definir os pinos de entrada e saída para o modelo. Estes pinos correspondem às variáveis (entradas) e à função calculada (saída).
Definição do tipo de pino: entrada, saída ou
entrada/saída.
Nome do pino Lista dos pinos já
criados
Acrescenta um pino
Também é possível acrescentar um conjunto de pinos, na forma de um vector
SD :: Introdução ao VHDL 6
1. criação do template
A disposição gráfica dos pinos no modelo pode ser manualmente ajustada:
1. criação do template
A terminar, o DW armazena o modelo desenvolvido numa biblioteca. Sugere-se que guarde o modelo numa biblioteca sua e não numa das bibliotecas de origem do DW.
Para criar uma nova biblioteca, deverá seleccionar a opção “New Lib” quando lhe é pedida a selecção de uma biblioteca.
SD :: Introdução ao VHDL 8
1. criação do template
Neste último passo, o código gerado vai ser guardado num ficheiro com extensão .dwv.
Este ficheiro terá o código VHDL associado ao modelo criado.
Por alguma razão, o DW entende por bem, neste ponto, fechar a janela com o código VHDL, o que obriga a reabrir o ficheiro para poder fazer a sua edição.
A biblioteca IEEE tem um conjunto de definições que vão ser usadas na simulação. É incluída por
default no template.
A entidade VHDL criada chama-se
“Motor_Start”...
... e tem estas entradas e saídas.
Esta linha é um comentário, que será substituída pelo código VHDL que descreve a função a
implementar.
2. edição do código VHDL
Abrindo o ficheiro .dwv, podemos editar o código VHDL a partir do template que foi criado automaticamente.
SD :: Introdução ao VHDL 10
2. edição do código VHDL
Neste caso, o código VHDL que vai substituir a linha de comentário é:
em que:
M : nome do pino de saída
<= : operador de atribuição de valor a uma saída B and ( E or ( T and not C));
: expressão lógica com o valor a atribuir ao pino de saida (não esquecer o ';' no final).
Depois de alterar o template, acrescentando o código que define o valor de M, verifique a correcção do código, compilando-o (opção menu: VHDL > Compile (Ctrl+Q)).
Para criar o módulo controlador Motor_Start que implementa a função M, apenas temos que adaptar o código do template criado e gravar o ficheiro .dwv.
M <= B and ( E or ( T and not C));
3. utilização do modelo criado
O modelo Motor_Start faz agora parte das bibliotecas do DW e pode ser usado como qualquer um outro.
Para o testar, crie um novo circuito (File > New > Design : Generic Simulation) e insira nesse circuito o módulo que criou. Seguidamente, atribua nome às linhas ligadas a cada um dos pinos de entrada e saída, para permitir o teste do circuito.
Para o teste, pode utilizar o ficheiro motor_start2.tsv. Este ficheiro tem uma coluna $I (“Input”) com o valor a atribuir às entradas e um coluna $E (“Expected”), com o valor esperado para cada combinação das entradas. A simulação vai verificar a concordância entra a saída gerada e a saída esperada e assinala qualquer incorrecção que encontre.
Em alternativa, pode proceder ao teste usando os elementos binary switch e binary probe.
SD :: Introdução ao VHDL 12
conclusões
Neste tutorial, fez-se a criação de um modelo em VHDL com o DW5.
Um circuito com as mesmas especificações pode ser construído com recurso a portas lógicas. Os dois modelos (circuito e modelo em VHDL) são funcionalmente equivalentes e implementam a mesma função. Estas duas soluções são assim duas formas diferentes de se obter o mesmo resultado.
A criação deste modelo seguiu um processo de execução passo-a-passo. Espera-se que tenham sido obtidos os conhecimentos necessários para, com o conhecimento da
linguagem VHDL, o aluno fique capaz de desenvolver os seus próprios modelos.
avaliação
Usando os conhecimentos adquiridos, desenvolva em linguagem VHDL e com o DW5, um módulo que implemente uma das portas seguintes. Depois, crie um novo circuito que inclua o módulo e teste o seu funcionamento.
≥1
&
&
AOI
1) 2) 3)
4) 5) 6)
7) 8) 9)