Você está na página 1de 15

VHDL

Apostila Bsica de VHDL


Prof. Dr. Renato Giacomini

Objetivo
Esta apostila tem como objetivo introduzir conceitos bsicos de VHDL, para alunos de Engenharia Eletrnica ou de Computa o, envolvidos em atividades de projeto de hard!are digital de alguma comple"idade, #ue e"ija boa documenta o e #ue bus#ue independ$ncia de tecnologia de implementa o% &ara um aprendizado mais apro'undado do assunto, indicam(se as re'er$ncias )*+, ),+ e )-+, al.m das normas /EEE(01D(*2345*673 e /EEE(01D(**485*66-, #ue estabelecem os padr9es internacionais para a linguagem% :utras re'er$ncias citadas ao longo do te"to permitem um apro'undamento em temas e estruturas espec;'icas%

Definies e Abreviaturas
<0/C =<pplication 0peci'ic /ntegrated Circuits> Circuito integrado de aplica o espec;'ica% C&LD =Comple" &rogrammable Logic Devices> Dispositivo l?gico programvel comple"o% @&A< =@ield &rogrammable Aate <rraB> <rranjo de portas programvel em campo% VHDL =VH0/C Hard!are Description Language>% < sigla . derivada de outra abreviatura ( VH0/C =VerB High 0peed /ntegrated Circuits>, j #ue seu objetivo inicial era voltado ao projeto de circuitos integrados de alt;ssima velocidade% VH0/C =VerB High 0peed /ntegrated Circuits> Circuito integrado de alt;ssima velocidade%

Histrico
Cas d.cadas de 32 e 72 'oi posto em prtica um programa do Departamento de De'esa =DoD> americano, para desenvolvimento de circuitos integrados de alta velocidade, denominado VH0/C e originado da preocupa o de dom;nio das tecnologias envolvidas% Desde o princ;pio, anteviu(se o problema de representa o dos projetos segundo uma linguagem #ue 'osse comum Ds vrias empresas envolvidas e #ue permitisse uma documenta o 'echada e clara para projetos de comple"idade crescente% Cesta mesma .poca, j havia no mercado de computa o a chamada crise do so't!are, caracterizada pela di'iculdade de gest o, documenta o e sistematiza o do ciclo de vida do so't!are

*5 *E

VHDL =#ue envolve, em termos gerais, todas as atividades de relativas D sua cria o e uso> *% : problema surgiu inicialmente no so't!are por#ue era no so't!are #ue se desenvolviam as aplica9es, #ue tornavam o produto particular para um uso espec;'ico% /sso 'azia com #ue um grande volume de projetos 'ossem conduzidos, #uase sempre com muita comple"idade e pouco m.todo% Co hard!are a #uest o era mais bem controlada, pois os projetos eram, em geral, mais gen.ricos, especialmente para o hard!are digital% :s projetos de microprocessadores, #ue eram os mais comple"os, visavam na maior parte dos casos o uso geral% Fm mesmo microprocessador seria utilizado em vrias aplica9es, seria reproduzido e testado aos milh9es% /sso signi'icava #ue o investimento em um Gnico projeto poderia ser muito maior, inclusive em termos de especi'ica o e testes% < evolu o da metodologia de projeto de so't!are 'oi ent o natural, em 'un o dos argumentos sustentados pela crise% Hoje ainda . grande o desenvolvimento de novos m.todos e a busca por uma linguagem descritiva universal, como o FHL, para especi'ica o e projeto de so't!are orientado a objetos% < #uest o preocupante #uanto ao hard!are, para o programa VH0/C americano, era #ue alguns 'atos indicavam para uma evolu o do mercado #ue 'aria surgirem problemas semelhantes aos apresentados pela crise de so't!are% Entre estes 'atosI a> < 'abrica o de circuitos integrados dei"ava de ser e"clusiva de alguns poucos 'abricantes% 0urgiam empresas especializadas na 'abrica o de projetos de terceiros, o #ue permitiria, em conjunto com o desenvolvimento de tecnologias de 'abrica o menos custosas, a cria o de C/s de uso espec;'ico para certas aplica9es% b> <s novas tecnologias de 'abrica o =abai"o de ,m, na .poca> permitiam um aumento de densidade dos C/s, com conse#Jente aumento de comple"idade% c> 0urgiam componentes de l?gica programvel =&LDs e &<Ls>, inicialmente de pe#uena densidade, mas #ue poderiam evoluir para densidades muito maiores rapidamente% 1ais componentes poderiam criar, como de 'ato ocorreu posteriormente, um grande mercado de projetos de pe#uena escala e aplica9es espec;'icas, muito parecido com o mercado de projetos de so't!are% < cria o de uma linguagem de descri o de hard!are patrocinada pelo programa e, em paralelo algumas outras linguagens criadas pela indGstria, 'oi ent o uma decorr$ncia natural% Em *673, o VHDL 'oi normalizado pelo /EEE, tornando(se um padr o mundial, ao lado do Verilog, uma alternativa tamb.m e"pressiva no mercado de projetos de hard!are% Hoje, praticamente todas as
* :s cap;tulos iniciais de &ressman tratam com clareza das causas e decorr$ncias da crise de so't!are%

,5 *E

VHDL 'erramentas de desenvolvimento de hard!are computadorizadas aceitam essas linguagens como entrada, de 'orma #ue um projeto baseado em VHDL ou Verilog pode ser implementado com #ual#uer tecnologia%

Vantagens do Uso
< alternativa para uso de uma linguagem 'ormal de descri o de hard!are como o VHDL . a descri o por diagramas es#uemticos% : VHDL apresenta as seguintes vantagensI a> Em sistemas se#Jenciais, o detalhamento da l?gica de controle . realizado pelas 'erramentas de automa o do projeto, o #ue evita a trabalhosa e limitada aplica o das t.cnicas manuais tradicionaisK b> : objetivo do projeto 'ica mais claro #ue na representa o por es#uemticos, nos #uais a implementa o se sobrep9e D inten o do projetoK c> : volume de documenta o diminui, j #ue um c?digo bem comentado em VHDL substitui com vantagens o es#uemtico e a descri o 'uncional do sistemaK d> : projeto ganha portabilidade, j #ue pode ser compilado em #ual#uer 'erramenta e para #ual#uer tecnologia% L comum, na indGstria, o uso de @&A<s e C&LDs para produ9es iniciais ou de menores escalas em projetos #ue posteriormente possam ser implementados em <0/Cs% 1odas as implementa9es podem usar o mesmo c?digo VHDL%

Ciclo de Projeto
: projeto de um sistema digital au"iliado por 'erramentas computadorizadas segue normalmente as etapas descritas a seguir%

1- Especificao
Esta etapa visa determinar os re#uisitos e 'uncionalidade de projeto, incluindo timing dos sinais e de'inido completamente as inter'aces% L uma etapa comum e necessria a #ual#uer projeto, independentemente do uso do VHDL%

2- Codificao
Cesta etapa, o objetivo . descrever, de 'orma estruturada e bem documentada, em VHDL, todo o projeto, segundo seus padr9es de sinta"e% <ssim, 'ormaliza(se a especi'ica o da etapa anterior, numa

-5 *E

VHDL implementa o de alto n;vel, em #ue s o descritos apenas os aspectos relevantes D solu o do problema%

3- Simulao de Cdigo Fonte


Cesta etapa, procura(se simular o c?digo em uma 'erramenta con'ivel, a 'im de veri'icar, preliminarmente, o cumprimento da especi'ica o% Esta simula o n o considera ainda detalhes tecnol?gicos de implementa o%

4- Sntese Otimizao e Fitting


0;ntese ( L o processo de Mtradu oN ou compila o de um c?digo VHDL para uma descri o abstrata, em linguagem mais pr?"ima da implementa o% Caturalmente, a s;ntese . ainda um processo independente da tecnologia% Oasicamente, o resultado obtido . o #ue se chama de P1L =register( trans'er level>, em #ue se de'inem registros, suas entradas e sa;das e a l?gica combinacional entre elas% :timiza o ( L o processo de sele o da melhor solu o de implementa o para uma dada tecnologia% Logicamente, as 'erramentas ED< =Engineering Design <utomation> s o preparadas para aceitar diretivas de otimiza o, dependendo do resultado #ue se #uer =minimiza o de rea, consumo, tempo de resposta, etc>% @itting ( L o processo em #ue a l?gica sintezada e otimizada . mapeada nos recursos o'erecidos pela tecnologia%

- Simulao do modelo ps-la!out


< simula o realizada com o resultado do 'itting permite resultados mais apurados de comportamento e timing, por#ue considera as caracter;sticas da implementa o de'initiva na tecnologia, como, por e"emplo, os tempos de propaga o dos sinais%

"- #e$ao
L a 'ase de con'igura o das l?gicas programveis ou de 'abrica o de <0/Cs%

85 *E

VHDL

Entidades e Arquiteturas
: c?digo abai"o representa um comparador binrio para palavras de #uatro bitsI -- comparador de 4 bits entity comp4 is port ( a, b: in bit-vector (3 downto ); equals: out bit); end comp4; architecture arq1 of comp4 is be in equals ! "1# when (a!b) else "$#; end arq1;

Fma entidade =entitB> . uma abstra o #ue descreve um sistema, uma placa, um chip, uma 'un o ou, at. mesmo, uma porta l?gica% Ca declara o de uma entidade, descreve(se o conjunto de entradas e sa;das% Co e"emplo dado, a entidade comp8 possui duas entradas, a e b, e uma sa;da, e#uals, #ue de'inem o port da entidade% :s ports correspondem a pinos e s o tratados como objetos de dados% &ode(se atribuir valores ou obt$(los de ports% Cada entrada ou sa;da possui um modo =mode> de opera o% :s modos poss;veis s oI in Q entradaK out Q sa;daI os pinos de'inidos como sa;da n o podem ser utilizados como entradas, nem seus valores utilizados na l?gica internaK buffer ( sa;da com possibilidade de realimenta oK inout ( substitui #ual#uer um dos outros, mas seu uso deve ser limitado aos casos em #ue o pino deva ser utilizado como entrada e sa;da, para clareza na descri o% < ar#uitetura =architecture> descreve as 'un9es realizadas pela entidade% Co caso do e"emplo . atribu;do o valor R* R D sa;da e#uals, sempre #ue as entradas 'orem iguais e R2S, caso contrrio%

Co$po de %$&uitetu$a
< ar#uitetura de uma entidade pode ser descrita de tr$s 'ormas distintas, mas #ue, em geral, conduzem a uma mesma implementa o% E5 *E

VHDL a> Descri o comportamental Esta . a 'orma mais 'le";vel e poderosa de descri o% 0 o de'inidos processos concorrentes =process>% < cada processo . associada uma lista de sensibilidade, #ue indica #uais s o as variveis cuja altera o deve levar D reavalia o da sa;da% Co simulador 'uncional, #uando uma varivel da lista . modi'icada, o processo . simulado novamente% : c?digo abai"o ilustra a aplica o deste tipo de descri o ao comparador do e"emplo% -- comparador de 4 bits entity comp4 is port ( a, b: in bit%vector (3 downto ); equals: out bit); end comp4; architecture comport of comp4 is be in comp: process (a,b) -- lista de sensibilidade be in if a ! b then equals ! "1# ; else equals ! "$# ; end if; end process comp; end comport; Fma ar#uitetura pode ter mais de um processo e eles ser o e"ecutados concorrentemente entre si%

b> Descri o por 'lu"o de dados Ceste tipo de descri o, os valores de sa;da s o atribu;dos diretamente, atrav.s de e"press9es l?gicas% 1odas as e"press9es s o concorrentes no tempo% -- comparador de 4 bits entity comp4 is port ( a, b: in bit%vector (3 downto ); equals: out bit); end comp4; architecture flu&o of comp4 is be in equals ! "1# when (a!b) else "$#; end flu&o; 45 *E

VHDL

c> Descri o estrutural < descri o estrutural apresenta netlists e instancia o de componentes bsicos, ou seja, . como se 'osse uma lista de liga9es entre componentes bsicos pr.(de'inidos% -- comparador de 4 bits entity comp4 is port ( a, b: in bit%vector (3 downto ); equals: out bit); end comp4; use wor'( ates' (all; architecture estrut of comp4 is si nal & bit%vector () to 3); be in *: &nor+ port map (a(), b(), &()); *1: &nor+ port map (a(1), b(1), &(1)); *+: &nor+ port map (a(+), b(+), &(+)); *3: &nor+ port map (a(3), b(3), &(3)); *4: and4 port map (&(), &(1), &(+), &(3), equals); end estrut;

'dentificado$es
:s identi'icadores s o usados como re'er$ncia a todos os objetos declarados no c?digo% <s regras para 'orma o de nomes s oI ( : primeiro caracter deve ser uma letra ( : Gltimo n o pode ser underscore ( C o s o permitidos , underscores em se#J$ncia ( HaiGscula 5 HinGscula s o e#uivalentes

O()etos de dados
Constantes ( <ssumem apenas um valor em todo o c?digo E"I constant larguraI integerI T 7 K &odem ser declaradas no n;veis de pacUage

35 *E

VHDL entitB architecture process e valem apenas no conte"to em #ue s o declaradas Sinais ( Pepresentam liga9es ='ios> #ue interligam componentes% &orts s o e"emplos de sinais% E"% signal valor(de(contagemI bit(vector =- do!nto >I &odem ser declarados na entidade ou na ar#uitetura% Variveis ( 0 o utilizadas em processos e subprogramas e devem ser declaradas neles% 0 o atualizadas imediatamente e n o correspondem D implementa o ';sica, como no caso dos sinais% E"I variable resultadoI std(logic IT R2S

*ipos de +ados
VHDL . stronglB tBpedI objetos de dados de tipos di'erentes n o podem ser atribu;dos um ao outro, sem convers o e"pl;cita% Tipos escalares a> Enumeration 1Bpes Lista de valores #ue o objeto pode assumir% E"I tBpe estado is =espera, erro, clculo, transmitido>K &ode(se ent o declarar um sinal do tipoI signal estadoVatualI estadoK :s dados desse tipo s o ordenados, ou seja erro T espera J definidos pela norma: type boolean is (,-./0, 12*0); type bit is ("$#, "1#); type std%ulo ic is ( "*#, -- n3o iniciali4ada "5#, -- desconhecida forte

75 *E

VHDL ")#, -"1#, -"6#, -"8#, -".#, -"9#, -"-# -); subtype std%lo ic is resolved ) forte 1 forte alta imped7ncia desconhecida fraca $ fraco 1 fraco tanto fa4 std%ulo ic

resolved E"iste uma 'un o de resolu o para os casos em #ue e"iste W de * driver para o sinal% C:1<I para usar stdVlogic e stdVulogic devem(se acrescentar as seguintes linhas antes da entidadeI library ieee; use ieee(std%lo ic%11:4(all; b> /nteger 1Bpes /nteiros na 'ai"a de valores poss;veisI ( =,( *> a =,-* -* ( *> E"emploI variable atturaI integer range 2 to ,EEK c> @looting 1Bpes de (*%2E -7 a *%2 E-7 pouco utilizados, por envolverem grande #uantidade de recursos% d> &hBsical 1Bpes E"emplo type time in ran e - +14;4<3:4;to+14;4<3:4; units fs; ps ! 1))) fs; ns ! 1))) ps; s ! 1))) ns; ms ! 1))) us; sec ! 1))) ms; min ! :) sec; hr ! :) min;

65 *E

VHDL end units; Este tipo relaciona(se diretamente a grandezas ';sicas

Tipos compostos
Array E"emploI type ward is array (1= downto ) of bit; si nal b: ward; ecord E"emploI type iocell is record buffer%inp: bitvector (; downto ); enable: bit; bufer%out: bit-vector (; downto ); end record;

E erc!cios
* ( &rojetar e simularI a> Oiestvel tipo XY com clocU a borda de subida, com descri o comportamental% b> /dem, com &reset e Clear ass;ncronos c> Fm 'ull(adder de * bit comportamental , Q Pealizar o projeto de um contador s;ncrono, com uma se#J$ncia pr.(de'inida em VHDL e simular% - ( Comentar os E"emplosI --1 - >?@?.?A2-2B ieee; */0 ieee(std%lo ic%11:4(all; 0C1?1B >i ia ?/

*25 *E

VHDL D$21( cl' : ?C /1E%.$@?F; /ensor-, /ensorA : ?C /1E%.$@?F; Gulta%>el, Gulta%Fomp : $*1 /1E%.$@?F); 0CE >i ia; -2F9?10F1*20 ?ntuitiva $, >i ia ?/ 1BD0 /1-10%1BD0 ?/ (0spera, >erificando%>elocidade, >erificando%1amanho, Gulta%>elocidade, Gulta%1amanho, 0rro); /?@C-. 0stado: /1-10%1BD0; /?@C-. Fronometro: ?C10@02 2-C@0 ) to 31; A0@?C D2$F0// (cl') A0@?C ?, cl'H0>0C1 -CE cl' ! H1H 190C Gulta%>el I! H)H; Gulta%Fomp I! H)H; F-/0 0stado ?/ 890C 0spera !J ?, /ensor- ! H1H 190C ?, /ensorA ! H)H 190C 0stado I! >erificando%>elocidade; 0./0 0stado I! 0rro; 0CE ?,; 0CE ?,; 890C >erificando%>elocidade !J ?, /ensor- ! H1H 190C ?, /ensorA ! H)H 190C Fronometro I! Fronometro K 1; 0./0 ?, Fronometro I < $2 Fronometro J +4 190C 0stado I! Gulta%>elocidade; 0./0 0stado I! >erificando%1amanho; 0CE ?,; 0CE ?,; 0./0 ?, /ensorA ! H)H 190C 0stado I! 0spera; Fronometro I! ); 0./0

**5 *E

VHDL 0stado I! 0rro; 0CE ?,; 0CE ?,; 890C >erificando%1amanho !J ?, /ensor- ! H1H 190C ?, /ensorA ! H1H 190C Fronometro I! Fronometro -1; ?, Fronometro ! ) 190C 0stado I! Gulta%1amanho; 0CE ?,; 0./0 0stado I! 0rro; 0CE ?,; 0./0 0stado I! 0spera; Fronometro I! ); 0CE ?,; 890C Gulta%>elocidade !J Gulta%>el I! H1H; 890C Gulta%1amanho !J Gulta%Fomp I! H1H; 890C 0rro !J Gulta%>el I! H1H; Gulta%Fomp I! H1H; 0CE F-/0; 0CE ?,; 0CE D2$F0//; 0CE ?ntuitiva;

--+ L 20F0D1$2 -- 2eceptor serial entity 2eceptor is port( data%in, cloc', limpa: in bit; pronto, ocupado: out bit; data%out: buffer bit%vector(; downto ))); end 2eceptor architecture 2eceptor of 2eceptor is 1BD0 /1-10%1BD0 ?/ ( 0spera, /tart%bit, 2ecebendo, Dronto); /?@C-. 0stado: /1-10%1BD0; /?@C-. Fronometro: ?C10@02 2-C@0 ) to ;;

*,5 *E

VHDL /?@C-. Fonta%bits: ?C10@02 2-C@0 ) to ;; process be in if cloc'Hevent and cloc' ! H1H then F-/0 0stado ?/ 890C 0spera !J ?, Eata%in ! H)Hthen Fronometro I! ); $cupado I! H1H; 0stado I! /tart%bit; 0./0 $cupado I! H)H; 0CE ?,; 890C /tart%bit !J ?, Fronometro I 4 then Fronometro ! FronometroK1; 0./0 FronMmetro ! ); Fonta%bits !); 0stado I! 2ecebendo; 0CE ?,; 890C 2ecebendo !J ?, Fonta%bits I : then ?, Fronometro I 3 then Fronometro ! FronometroK1; 0./0 FronMmetro ! ); Fonta%bits ! Fonta%bitsK1; Eata%out())I! Eata%out(1); Eata%out(1)I! Eata%out(+); Eata%out(+)I! Eata%out(3); Eata%out(3)I! Eata%out(4); Eata%out(4)I! Eata%out(=); Eata%out(=)I! Eata%out(:); Eata%out(:)I! Eata%out(;); Eata%out(;)I! Eata%in; 0CE ?,; 0./0 0stado I! Dronto; Dronto I! H1H; 0CE ?,; 890C Dronto !J ?, .impa ! ) 1hen $cupado I! H)H; Dronto I! H)H; 0stado I! 0spera;

*-5 *E

VHDL 0CE ?,; 0CE F-/0; 0CE ?,; end process; end 2eceptor;

*85 *E

VHDL

"efer#ncias
)*+ Hazor, 0% Langstraat, &% < Auide to VHDL% Ylu!er <cademic &ublishers, Ooston, *66-% ),+ 0carpino, @% VHDL and <HDL Digital 0Bstem /mplementation% &rentice Hall, Ce! XerseB, *667% )-+ 0Uahill, Y% VHDL 'or &rogrammable Logic% <ddison ZesleB, Peading, Hassachusetts, *664%

*E5 *E

Você também pode gostar