Você está na página 1de 40

INTRODUO LINGUAGEM VHDL

Monitoria de Infra-Estrutura de Hardware Joo Paulo Fernandes Barbosa - jpfb

Pontos Abordados
2

Principais tipos Operadores Descrio de Entidades e Arquiteturas Circuitos Sncronos e Assncronos Sinais e Variveis Decises: IF ELSE, CASE WHEN e WITH SELECT Iteraes Formas de Descrio de Circuitos Mquinas de Estados

Principais Tipos
3

VHDL possui um conjunto de tipos definidos que se caracterizam pelo conjunto de valores que podem assumir e o conjunto de operaes que sobre eles podem ser executadas. Objetos CONSTANT, VARIABLE e SINAL devem ser declarados como de um tipo definido para que possam ser identificados seus possveis valores e quais operaes podem ser executadas.

Principais Tipos
4

So esses alguns dos principais tipos que so definidos.

BIT: utilizado para representar os nveis lgicos 0 e 1 em um circuito. SIGNAL valor: bit;

BOOLEAN: podem assumir os valores FALSE e TRUE sendo freqentemente utilizados em comandos que executam um teste de deciso. SIGNAL teste: boolean;

Principais Tipos
5

INTEGER:

assume um valor inteiro entre 2.147.483.647 e +2.147.483.67. Na maioria das vezes no necessrio a utilizao de valores to altos ou to baixos, portanto, para melhor utilizao dos recursos disponveis, importante definir o conjunto de valores que um objeto do tipo inteiro pode sumir. SINGNAL valor: integer; SINGNAL valor: integer range 0 to 10; REAL: representa um nmero de ponto flutuante. Na maioria das ferramentas esse tipo no suportado por conta da complexidade das operaes executadas sobre tais valores.

Principais Tipos
6

O tipo std_logic foi definido a partir da necessidade de se representar circunstncias fsicas que os circuitos podem possuir e que atravs do tipo bit no possvel. Alta impedncia uma delas.
STD_LOGIC:

podem assumir dentre outros valores os seguintes: no inicializado(U), alta impedncia(Z), nvel lgico alto(1) e nvel lgico baixo(0).
SIGNAL valor: std_logic;

Principais Tipos
7

Vetores de bits e de valores std_logic.


So

definidos tambm vetores de bits e de std_logic que facilitam o agrupamento de um conjunto de sinais que sero manipulados.

Exemplos:
SIGNAL vetor: std_logic_vector(10 DOWNTO 0); SIGNAL vetor: std_logic_vector(0 TO 10); SIGNAL vetor: bit_vector(10 DOWNTO 0); SIGNAL vetor: bit_vector(0 TO 10);

PRINCIPAIS TIPOS
8

possvel definir novos tipos enumerados. Para tanto basta definir um nome para o tipo e quais os valores ele poder assumir.

TYPE estados IS ( estado1, estado2, estado3); SIGNAL estado: estados;

Operadores
9

A seguir so apresentados os operadores definidos para VHDL. Eles esto dispostos dos operadores de menor ordem de precedncia para os de maior.

Operadores do mesmo tipo possuem a mesma ordem de precedncia obrigando o uso de parnteses para a correta execuo de um conjunto agrupado de operaes.
A maioria dos operadores agem sobre elementos do mesmo tipo, sendo poucas as excees.

Operadores
10

Operadores Lgicos

and, or, nand, nor, xor, xnor


valor := op xor op; valor := a nand b;

Operadores Relacionais

=, /=, <, <=, >, >=


A >= B; IF (a /= b) THEN;

OPERADORES
11

Operadores de deslocamento

sll, srl, sla, sra, rol, ror


z <= x sll 1; sinal_a <= x ror 1;

Operadores de adio

+, -, &
z := x + 1; s := 0001 & 1000;

OPERADORES
12

Operadores de sinal

+,

a <= -b;

Operadores de multiplicao e diviso

*, /, mod, rem

l_div_r := l/r

Operadores diversos

**, abs, not


sinal_a <= abs( -1.7); valor := a**2;

Descrio de Entidades e Arquiteturas


13

Para descrever circuitos em VHDL devemos definir quais so as portas de entrada e sada e qual ser seu comportamento. Nesse contexto surgem as entidades e arquiteturas de circuito.

Entidade: trecho do cdigo que descreve os sinais de entrada e de sada, definindo assim, como o circuito ir se comunicar com o mundo exterior.
Arquitetura: indica qual o comportamento do circuito que est sendo descrito. Parte que guarda o algoritmo interno do circuito.

Descrio de Entidades e Arquiteturas


14

Entidades: descrevendo as portas de entrada e sada.


ENTITY P_Desvios IS PORT( ent: IN STD_LOGIC; clk: IN STD_LOGIC; rst: IN STD_LOGIC; sd: OUT STD_LOGIC ); END P_Desvios;

Descrio de Entidades e Arquiteturas


15

Dessa forma simples define-se quais as entradas e sadas do circuito. Agora devemos definir seu comportamento.
P_Desv ios ent clk rst inst sd

Descrio de Entidades e Arquiteturas


16

Para tanto, descrevemos sua arquitetura da seguinte forma.


ARCHITECTURE Comportamento OF P_Desvios IS Regio para declarao de tipos, constantes e variveis compartilhadas. BEGIN Regio para a definio do comportamento do circuito END Comportamento;

17

Circuitos Sncronos e Assncronos

possvel descrever circuitos sncronos e assncronos em VHDL. No caso de um circuito assncrono basta colocar o comportamentos do circuito aps a clusula BEGIN de uma arquitetura.
BEGIN sd <= ent; END Comportamento;

18

Circuitos Sncronos e Assncronos

Para declarar um circuito sncrono usamos a clusula PROCESS definimos sua lista de sensibilidade.
A

lista de sensibilidade o conjunto de sinais que quando alterado dispara a execuo do processo a qual est vinculado.

19

Circuitos Sncronos e Assncronos


ARCHITECTURE Comportamento OF P_Desvios IS
BEGIN PROCESS(clk) BEGIN IF ( clk'event AND clk = '1') THEN sd <= ent; END IF; END PROCESS; END Comportamento;

Sinais e Variveis
20

Sinais
Funcionam

como fios que interligam diferentes mdulos de um circuito e tambm podem funcionar como estruturas internas de armazenamento de valores. ser compartilhados por vrios processos e tem seu valor alterado apenas no final de um processo. atribuio feita atravs do operador <=

Podem

Sinais e Variveis
21

Variveis

So declaradas dentro de processos e pertencem apenas ao processo onde foram criadas.

A alterao de seu valores imediata: no preciso esperar o final do processo.


A atribuio de valores s variveis feita atravs do operador :=.

Sinais e Variveis
22

Variveis compartilhadas
As

variveis compartilhadas funcionam como um meio termo entre variveis e sinais, ou seja, podem ser utilizadas por vrios processos e tem seu valor alterado de forma assncrona. ser to perigoso usar variveis compartilhadas em VHDL quanto usar variveis globais em linguagens de programao convencionais.

Pode

Sinais e Variveis
23

ARCHITECTURE Comportamento OF P_Desvios IS Regio para declarao de tipos, constantes e variveis compartilhadas. Aqui no defini-se variveis. SIGNAL valor: STD_LOGIC; SHARED VARIABLE valorVariavel: INTEGER;

BEGIN PROCESS(clk) Regio para definio de tipos e variveis. Aqui no define-se sinais. VARIABLE valor: STD_LOGIC; BEGIN END PROCESS; END Comportamento;

Decises
24

Construo IF THEN ELSE


Esse

comando pode ser usado em circuitos sncronos para se tomar decises sobre qual caminho deve seguir.
IF (condio) THEN END IF;

Decises
25

Construo IF THEN ELSE

Podem ser encadeados e aninhados. Caso exista uma clusula ELSE e nenhum dos testes condicionais se confirme ela ser executada.

IF (condio) THEN IF (condio) THEN END IF; ELSIF (condio) THEN IF (condio) THEN ELSE END IF; ELSE END IF;

Decises
26

Construo CASE WHEN


Usado em circuitos sncronos. Ocorre um teste de um valor e de acordo com o resultado um conjunto de operaes executado.

CASE estado IS WHEN estado1 THEN operaes WHEN estado2 THEN operaes WHEN estado3 THEN operaes END CASE;

Decises
27

Construo CASE WHEN

necessrio que todos os possveis valores que o teste pode assumir sejam tratados, caso contrrio disparado um erro de compilao.
SIGNAL sinalA: STD_LOGIC_VECTOR(1 DOWNTO 0);

WHEN 00 => operaes WHEN 01 => operaes WHEN OTHERS => pode ter ou no operaes END CASE;

CASE sinalA IS

Decises
28

Construo WITH SELECT


Podem

ser usadas em circuitos assncronos.

Transfere

um valor a um sinal de destino segundo uma relao de opes . as condies de seleo devem ser consideradas e elas devem ser mutuamente exclusivas

Todas

Decises
29

Construo WITH SELECT


WITH expressao_escolha SELECT sinal <= expressao_a WHEN condicao1, expressao_b WHEN condicao2, expressao_c WHEN condicao3 | condicao4, expressao_d WHEN OTHERS;

Iteraes
30

Podemos tambm utilizar loops na descrio de circuitos com VHDL


Loop
O

comando LOOP permite repetir a execuo de um conjunto de comandos seqenciais. Dois esquemas de iterao esto disponveis: FOR e WHILE.

Iteraes
31

Esquema de iterao FOR


Contm

um identificador local e os limites da iterao.


O identificador local no precisa ser declarado e os limites de iterao so definidos por uma faixa discreta de valores. Nenhuma operao dentro do lao pode atribuir um valor ao identificador.

FOR i IN valor_final DOWNTO valor_inicial LOOP --comando seqencial END LOOP;

Iteraes
32

Esquema de Iterao WHILE


Um

conjunto de comandos seqenciais so executados se uma condio for verdadeira.


A condio de controle feita atravs de um valor de varivel e esta deve ser alterada dentro do lao.

abc: WHILE condicao LOOP -- comandos seqenciais -- atualizao da varivel de ndice END LOOP abc; Exemplo de condio: (valor < 10).

Formas de Descrio de Circuitos


33

Existem duas formas principais de descrever circuitos em VHDL


Descrio

Comportamental

A arquitetura possui um algoritmo que descreve o comportamento do circuito gerando respostas a partir de estmulos externos.

Descrio

Estrutural

A arquitetura possui um conjunto de componentes interligados atravs de sinais. Esses circuitos devem ter sido descritos anteriormente.

Formas de Descrio de Circuitos


34

Descrio estrutural

Cada componente deve ser interligados atravs de fios. Isso feito declarando sinais que vo servir de pontes de ligao entre os diferentes circuitos. Para fazer a ligao preciso usar clusula PORT MAP descrevendo onde cada sinal deve se ligar.

preciso que todas as entradas e sadas de componentes se liguem a um sinal.

Formas de Descrio de Circuitos


35

Forma Estrutural: Exemplo


ARCHITECTURE Proc OF Processador IS COMPONENT Banco_reg IS PORT( Clk : IN STD_LOGIC; Reset : IN STD_LOGIC; RegWrite : IN STD_LOGIC; ReadReg1 : INSTD_LOGIC_VECTOR (4 downto 0); ReadReg2 : INSTD_LOGIC_VECTOR (4 downto 0); WriteReg : IN STD_LOGIC_VECTOR (4 downto 0); WriteData : IN STD_LOGIC_VECTOR (31 downto 0); ReadData1 : OUT STD_LOGIC_VECTOR (31 downto 0); ReadData2 : OUT STD_LOGIC_VECTOR (31 downto 0); ); END COMPONENT ;

Formas de Descrio de Circuitos


36

Forma Estrutural: Exemplo


BEGIN B_REG: BANCO_REG PORT MAP ( REGWRITE => S_RWR, (sinal declarado internamente) READREG1 => INST_25_21 , READREG2 => INST_20_16 , WRITEREG => F_MUX_REG , WRITEDATA => F_MUX_DAR, READDATA1 => BR_A, READDATA2 => BR_B, RESET => RST, (entrada do circuito maior)

CLK => CLOC


); As entradas e sadas do banco de registradores esto mapeadas em sinais internos ou nas entradas e sadas do circuito que o contm

Mquinas de Estados
37

Definio

Mquinas de Estado podem ser consideradas como computadores com memria bem reduzida, que de acordo com uma entrada assume um determinado estado. Tipicamente implementa-se mquinas de estado com clusula CASE WHEN.

Cria-se um tipo enumerado que possui todos os valores de estado que a mquina assume e de acordo com um estmulo esterno move-se essa mquina para um prximo estado.

Mquinas de Estados
38

Exemplo:
TYPE estados IS ( inicia, busca, opera); SIGNAL estado: estados; CASE estado IS WHEN inicia => --seqncia de operaes estado <= busca; WHEN busca => --seqncia de operaes estado <= opera; WHEN opera => --seqncia de operaes estado <= inicia; END CASE;

Dica para o Projeto


39

Usem as seguintes bibliotecas abaixo


LIBRARY

IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;

Referncia
40

VHDL Descrio e Sntese de Circuitos Digitais.


Autor: Roberto dAmore

Você também pode gostar