Você está na página 1de 15

PROGRAMA DE PS-GRADUAO EM CINCIA DA COMPUTAO PPGCC

IFCE

VLSI :: TUTORIAL

Active-HDL
Implementao e Simulao em VHDL

FAUSTO SAMPAIO

O objetivo deste tutorial apresentar de forma


simples e objetiva o uso bsico da ferramenta
Active-HDL para implementao e simulao de
circuitos digitais descritos em VHDL.

MARACANA
2015.2

Tutorial: Active-HDL| Fausto Sampaio

Sumrio
Introduo ..................................................................................................................................... 2
Linguagem VHDL ....................................................................................................................... 2
IDE Active-HDL........................................................................................................................... 2
Caso de Estudo .............................................................................................................................. 3
Entidade de projeto .................................................................................................................. 4
Declarao da entidade e corpo da arquitetura ................................................................... 4
Classe de objetos ................................................................................................................... 5
Tipos ...................................................................................................................................... 5
Operadores............................................................................................................................ 5
Comando PROCESS ............................................................................................................ 6
Interagindo com a IDE Active-HDL ................................................................................................ 6
Criando um novo arquivo .......................................................................................................... 8
Compilando o cdigo ................................................................................................................ 9
Simulando o projeto ................................................................................................................ 10
Configurando as entradas para simulao .............................................................................. 11
Resultado da simulao .......................................................................................................... 12
Caso de Estudo 2 ......................................................................................................................... 13
Cdigo do segundo exemplo ................................................................................................... 13
Resultado do segundo exemplo .............................................................................................. 13
Possveis aplicaes..................................................................................................................... 14

Tutorial: Active-HDL| Fausto Sampaio

Introduo
A maior parte deste tutorial baseia-se na obra VHDL Descrio e Sntese de Circuitos
Digitais de Roberto dAmore como referencial terico e implementao/simulao de alguns
exerccios presentes no livro.

Linguagem VHDL
VHDL ou "VHSIC Hardware Description Language" (Linguagem de descrio de hardware
VHSIC "Very High Speed Integrated Circuits") uma linguagem usada para facilitar o design
(projeto/concepo) de circuitos digitais em CPLDs, FPGAs e ASICs.
uma linguagem de descrio de hardware, ou seja, uma forma estruturada para a
descrio de circuitos digitais. Essa linguagem permite que o circuito eletrnico seja descrito
com sentenas, tais como em uma linguagem de programao, possibilitando que seja simulado
e sintetizado, isto , transformado em portas lgicas.

IDE Active-HDL
Active-HDL uma ferramenta baseada em Windows, permite a criao e simulao de
projetos integrados em FPGA. A mesma tambm permite desenvolvimento com ambientes
baseados em equipe. A IDE inclui uma HDL completa e um conjunto de ferramentas grficas para
a rpida implantao e verificao de projetos em FPGA.
Para adquirir a verso estudante da ferramenta, acesse o link abaixo e aps um breve
cadastro, um link para o endereo do download da IDE ser enviado para seu e-mail cadastrado.
Active-HDL Student Edition - https://www.aldec.com/students/student.php?id=5

Figura 1: Tela inicial do Active-HDL Student Edition

Tutorial: Active-HDL| Fausto Sampaio

Caso de Estudo
Como caso de estudo utilizaremos o exemplo do Quadro 6.6.1 ilustrado no livro de
Roberto dAmore que apresenta um exerccio baseado em mquinas de estados.
Na Figura 2, ilustrado o diagrama de estados de uma mquina com quatro estados que
realiza uma contagem entre os valores 00, 01, 11 e 10, simulando um contador Gray de
2 bits. Para simplificao do circuito, o valor que representa o estado atual corresponde ao valor
das sadas. A mquina inclui, tambm, uma entrada para inicializao assncrona denominada
rst.

Figura 2: Mquina de quatro estados

A Figura 3 apresenta uma possvel descrio para a mquina de estado proposta. O


cdigo contm uma construo do tipo IF ELSE que detecta condies: sinal rst ativo e
ocorrncia de uma borda de subida no sinal de clock. O sinal rst ativo leva a mquina para o
estado 00, e a ocorrncia de uma transio entre 0 e 1 no sinal ck leva a uma mudana
de estado. O estado futuro determinado por uma construo CASE WHEN, sendo o estado
atual o valor das sadas.

Figura 3: Cdigo do exemplo proposto

Tutorial: Active-HDL| Fausto Sampaio


Para entender melhor o cdigo da Figura 3, abordaremos de forma introdutria alguns
elementos que compem uma descrio em VHDL, tais como entidade de projeto, classes de
objeto, tipos e operadores.

Entidade de projeto
Em VHDL, uma entidade de projeto ilustrada na Figura 4, pode representar desde uma
simples porta lgica a um sistema completo, e composta de duas partes: declarao da
entidade e arquitetura. A declarao da entidade define a interface entre entidade e o ambiente
exterior, como, por exemplo, entradas e sadas de um circuito. A arquitetura contm a
especificao das relaes entre as entradas e sadas de uma entidade.

Figura 4: Exemplo de entidade de projeto

Declarao da entidade e corpo da arquitetura


A Figura 5 apresenta a declarao para a entidade do nosso caso de estudo. A declarao
inicia com a palavra reservada ENTITY seguida do nome que a identifica. A clusula PORT
empregada para definir o modo e tipo das portas de entrada e sada da descrio.

Figura 5: Declarao da Entidade do Caso de Estudo

O modo de uma porta determina a direo e como os comandos na arquitetura podem


operar com as portas. Existem quatro modos possveis de uma porta: IN, OUT, BUFFER e
INOUT.
Nos modos IN e OUT, h portas que operam exclusivamente como entrada e sada.
No modo BUFFER, a porta opera unicamente no modo sada, diferenciando do modo OUT
porque o valor apresentado pode ser referenciado internamente pela arquitetura. Uma porta
do modo OUT no pode, por exemplo, controlar um sinal interno da entidade; no caso de uma
porta do tipo BUFFER, isso permitido. O modo INOUT caracteriza uma porta bidirecional.
O corpo de uma arquitetura inicia-se com a palavra reservada ARCHITECTURE seguida
de um nome identificador e o nome da declarao de entidade associada. As linhas seguintes
podem conter declaraes de sinais e constantes, declaraes que identificam os componentes
externos utilizados ela arquitetura, bem como a descrio completa de subprogramas que so
utilizados localmente pela arquitetura. Os comandos concorrentes que descrevem a entidade
ficam entre as palavras reservadas BEGIN e END.

Tutorial: Active-HDL| Fausto Sampaio


A Figura 6 apresenta a arquitetura do nosso caso de estudo.

Figura 6:Arquitetura do caso de estudo

Classe de objetos
Objetos so elementos que contm um valor armazenado. Quatro classes de objetos
so definidas em VHDL: CONSTANT, VARIABLE, SIGNAL e FILE.

Tipos
Objetos de tipos diferentes no permitida a transferncia de valores. Na Figura 7 so
ilustrados os tipos disponveis pela linguagem VHDL.

Figura 7: Exemplo de tipos pr-definidos no pacote padro VHDL

Operadores
Os operadores definidos so divididos em classes que estabelecem a precedncia na
execuo das operaes. Na Figura 8 so apresentadas, em ordem crescente de precedncia, as
classes de operaes. Os operadores de mesma classe possuem o mesmo nvel de precedncia.

Figura 8: Operadores definidos por classe

Tutorial: Active-HDL| Fausto Sampaio

Comando PROCESS
Um processo permite definir um rea contendo comandos sequncias. A palavra
reservada PROCESS identifica o comando conforme o formato apresentado na Figura 9. Um
processo composto de duas regies: parte de declarao e a parte de comandos sequenciais;
A primeira regio o local para a declarao de tipos e subtipos, constantes, variveis,
entre outros. A declarao de sinais no permitida. A segunda regio, aps a palavra reservada
BEGIN, inicia a rea contendo comandos sequenciais que representam o comportamento de
uma parte ou de toda descrio.
A palavra reservada PROCESS pode ser antecedida de um rtulo qualquer, e ser
seguida de uma lista de sensibilidade. Essa lista define a quais sinais o conjunto de comandos
contido no processo sensvel. Ou seja, ocorrendo uma mudana no valor de um dos sinais
contidos na lista, o processo ser executado. No exemplo deste tutorial o rtulo do processo
abc e a lista de sensibilidade composta pelos sinais ck e rst.

Figura 9: Exemplo de processo

Interagindo com a IDE Active-HDL


Depois de adquirida e instalada, abra a IDE Active-HDL Student Edition. Logo aps, ser
exibida uma janela perguntando se desejamos criar um Workspace ou selecionar um
existente. Clique no boto OK e digite Tutorial para o nome do nosso Workspace de
acordo com as ilustraes da Figura 10.

Figura 10: Criando um workspace

Tutorial: Active-HDL| Fausto Sampaio


Aps ter clicado em OK na janela New Workspace, podemos criar um projeto com a ajuda
da janela New Design Wizard. Para nosso exemplo criaremos nosso primeiro projeto de
acordo com a Figura 11.

Figura 11:Criando um projeto

Depois de concluir a criao do projeto a tela inicial (ver Figura 12) do Active-HDL ser exibida.
1

5
4

Figura 12: Criando um projeto

6
Figura 13: Tela Inicial

Tutorial: Active-HDL| Fausto Sampaio

1.
2.
3.
4.
5.
6.

Aba de MENU;
Paleta padro da IDE;
Simulao;
Navegao do Projeto;
rea de trabalho;
Console.

Criando um novo arquivo


Para criar um novo arquivo, temos que clicar no item Add new File na rea de
navegao do projeto. Com isso ser exibida uma janela pedindo para informarmos o tipo de
arquivo e o nome do mesmo. Para o nosso exemplo informaremos maq_est1 como nome do
arquivo e por final pressione o boto OK. (ver Figura 14).

Figura 14: Adicionando um novo arquivo no projeto

Tutorial: Active-HDL| Fausto Sampaio


No arquivo recentemente criado digitaremos o cdigo do nosso caso de estudo que
est escrito logo abaixo, e depois temos que salv-lo (Ctrl+S) .
ENTITY maq_est1 IS
PORT (ck : IN BIT;
-- relogio borda subida
rst : IN BIT;
-- rst=1, q=00
q
: BUFFER BIT_VECTOR (1 DOWNTO 0)); -- saida codigo Gray
END maq_est1;
ARCHITECTURE teste OF maq_est1 IS
BEGIN
abc: PROCESS (ck, rst)
BEGIN
IF rst = '1' THEN
-- estado inicial
q <= "00";
ELSIF (ck'EVENT and ck ='1') THEN -- ciclo de estados
CASE q IS
WHEN "00" => q <= "01";
WHEN "01" => q <= "11";
WHEN "11" => q <= "10";
WHEN "10" => q <= "00";
END CASE;
END IF;
END PROCESS abc;
END teste;

Obs: Comentrios iniciam-se com -- (dois traos).

Compilando o cdigo
Quando um arquivos teve alguma modificao e ainda no foi compilado, observa-se ao
lado do nome do arquivo um poro de interrogao, sinalizando que o mesmo no foi compilado
(ver Figura 14). Para compilar o cdigo basta ativar a tecla de atalho F11 ou clicando com o
boto direito do mouse no arquivo alvo e depois clicar no item Compilar. Caso o cdigo tenha
algum erro ou warning os mesmos sero exibidos na aba Console.

Figura 15: Arquivo no compilado

Tutorial: Active-HDL| Fausto Sampaio

Simulando o projeto
Depois do cdigo ter sido salvo e compilado, o prximo passo ser a simulao. Para
deixarmos a IDE no modo de simulao temos que acionar a aba de menu e clicar no item
Initialize Simulation de acordo com a Figura 15.

Figura 16: inicializando a simulao

Quando a IDE entra no modo de simulao a rea de navegao do projeto (Designed


Browser) modificada de acordo com a Figura 16.

Figura 17: Entradas para simulao

10

Tutorial: Active-HDL| Fausto Sampaio


Como nosso exemplo necessita de um sinal de clock, podemos abrir uma janela de
simulao chamada WaveForm, no qual trabalha com sinais no formato de ondas.
Para adicionar um WaveForm necessrio est no modo de simulao e clicar com o
boto direito do mouse no nome da entidade do arquivo a ser simulado. (ver Figura 17).

Figura 18: Adicionando o WaveForm

Depois de adicionar o WaveForm, a rea de trabalho da IDE ser modificada de acordo


coma Figura 18.

Figura 19: WaveForm

Configurando as entradas para simulao


Para darmos incio simulao do projeto, temos que configurar as estradas/sadas do
projeto. Com a tela do WaveForm ativada, acione a combinao de teclas Ctrl+A para
selecionar todas os objetos do projeto e em seguida clique com o boto direito do mouse nos
objetos selecionados e depois clique com o esquerda na opo Simulators. Aps isso ser
exibida uma janela de configuraes do objetos. Configure os objetos conforme a Figura 19. Para
confirmar a configurao para cada objeto temos que clicar em Apply. No nosso exemplo ser
necessrio apenas configurar um sinal de clock para o objeto (varivel) ck (10MHz).

11

Tutorial: Active-HDL| Fausto Sampaio

Figura 20: Configurando o sinal de clock

Finalmente para executar a simulao, basta ficar clicando no boto destacado na Figura
20 ou ficar pressionando F5, que a IDE executar um teste apresentando o comprimentos de
onda com perodos de 100ns, esse tempo pode ser modificado conforme imagem abaixo.

Figura 21: Configurando simulao

Resultado da simulao
A Figura 21 exibi o resultado da simulao do caso de estudo proposto inicialmente
com sinal de clock de 10Mhz e dois pulsos no sinal de rst.

Figura 22: Resultado do exemplo proposto

12

Tutorial: Active-HDL| Fausto Sampaio


Observou-se que a simulao executou de acordo com a descrio em VHDL do exemplo
inicial. No processo, primeiramente verifica se rst tem valor 1, se verdadeiro a sada q
recebe 00, fato verificado no tempo de 800ns, pois o prximo estado de q deveria ser 11.
Caso rst for 0, a cada subida de borda do clock ck haver uma transio de estado.

Caso de Estudo 2
Como nova proposta de estudo modificaremos o exemplo inicial, adicionando algumas
outras variveis, inclusive o objeto do tipo sinal. O segundo exemplo destaca uma outra mquina
de estados, onde a transio de estados controlada por uma varivel entrada. A mquina
consiste em quatro estados onde o propsito geral habilitar a sada saida caso na entrada
apresente uma sequncia de trs 1s.

Cdigo do segundo exemplo

Figura 23: Cdigo exemplo2

Resultado do segundo exemplo


Observamos que na Figura 23, o sinal de sada 1 quando a entrada permanece em
nvel alto por 4 bordas de subida do clock.

Figura 24: Resultado do Exemplo2

13

Tutorial: Active-HDL| Fausto Sampaio

Possveis aplicaes
No primeiro caso de estudo, o descrio de hardware em VHDL pode ser aplicada
quando se desejar um codificador Gray de 2 bits.
Contudo no segundo caso, pode-se aplicar quando necessrio verificar se trs objetos
consecutivos foram postos em uma esteira, no qual a sada poderia ser considerada como um
soar de um alarme avisando o ocorrido.

14