Você está na página 1de 142

Universidade do Vale do Rio dos Sinos - UNISINOS

Prototipao em PLDs
Introduo ao VHDL
Autor: Prof. Rodrigo Marques de Figueiredo

Agenda
Introduo;
Histrico; Caractersticas do VHDL; Aplicaes do VHDL; Novas Tecnologias.

Estrutura da Linguagem; Implementaes de Lgica Assncronas; ModelSim (Simulador); Implementao de Lgica Sncrona; Integrao Entre Mdulos Descritos em VHDL; Testbenches Descritos em VHDL.

VHDL

Introduo

Histrico

1968 primeiras HDLs (incompatveis); 1973 primeiro esforos de padronizao (CONLAN) incio do primeiro projeto patrocinado pelo DoD (Department of Defence); 1983 final do CONLAN (ADA) e DoD inicia o projeto VHSIC com um consrcio de empresas privadas (IBM, Intermetrics e Texas Instruments); 1986 primeiros compilador e simulador e criao de um grupo de padronizao do IEEE para VHDL;

Histrico

1988 primeiros softwares so comercializados; 1991 novo processo de padronizao; 1993 um novo padro publicado, chamado VHDL93, padronizado IEEE Std 1164-1993; 1997 foi publicado o manual de referncia da linguagem VHDL; 2002 Lanado o VHDL- AMS (VHDL para Analog and Mixed Signals); 2003 publicado o novo padro chamado VHDL03, padronizado IEEE Std 1164-1993.

Caractersticas do VHDL
Caractersticas:
- Modular; - Paralelismo entre instrues (comandos); - Fcil de documentar.

Desvantagens:
- VHDL no gera um hardware otimizado.

Caractersticas do VHDL
Vantagens:
- Intercmbio de projetos entre grupos de pesquisa sem a necessidade de alterao; - A linguagem independe da tecnologia atual, ou seja, voc pode desenvolver um sistema hoje e implement-lo depois; - Os projetos so fceis de serem modificados; - O custo de produo de um circuito dedicado elevado, enquanto que usando VHDL e Dispositivos Programveis, isto passa a ser muito menor; - Reduz consideravelmente o tempo de projeto e implementao.

Caractersticas do VHDL
Vantagens:

Caractersticas do VHDL
Vantagens:

Base de Cores
(componentes em VHDL)

Caractersticas do VHDL
Vantagens:
Controlador de Verso
(Servidor)

Caractersticas do VHDL
Vantagens:

Trabalho Colaborativo
(Colaborao Mltipla)

Aplicaes do VHDL
Controle de Processos; Instrumentao; Drivers de Barramentos; Conversores de Interface; Novas aplicaes; Processamento Digital de Sinais:
Processamento de udio; Processamento de Vdeo; Multiprocessamento de sinais de controle (Controle Multivarivel).

Novas Tecnologias
Cores de Microcontroladores Softcores; DSP com auxlio de pacote do MatLab; PLDs transceivers; Solues para projetos com circuitos analgicos e mistos; CAD para projetos de hardware dedicados (Block RAMs, Distributed RAMs, Digital Clock Manager, ...); Ferramentas para verificao de ocupao (efetiva) do PLD; VHDL-AMS (VHDL para Analog and Mixed Signals).

Tipos de Descries
Descrio Comportamental:
Mais utilizada por ter curva de aprendizado mais rpida; Seu principal problema ser dependente da descrio realizada, por sua vez dependente da expertise do projetista; Sua principal virtude a velocidade de implementao de uma funcionalidade.

Descrio Estrutural:
Menos utilizada por ter curva de aprendizado mais lenta; Sua principal virtude o controle do hardware gerado pela descrio; Seu principal problema seu tempo de implementao; Porm pode ser contornado por um bom gerenciamento de projeto.

Caractersticas do VHDL
Vantagens:
Controlador de Verso
(Servidor)

Base de Cores
(componentes em VHDL)

Trabalho Colaborativo
(Colaborao Mltipla)

VHDL

Estrutura da Liguagem

Estrutura da Linguagem
Um programa em VHDL possui 3 estruturas bsicas e 1 sub-estrutura:
Package; Entity; Architecture & Process.
library IEEE; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;

Package (Bibliotecas)

entity CIxx is port ( -- descrio dos pinos de entrada e sada ); end CIxx ; architecture comportamento of CIxx is Entity (Pinagem E/S)

begin
signal ) process( -- pinos de entrada e Architecture begin -- descrio do circuito integrado end process; (Descrio do comportamento do componente)

end comportamento ;

Estrutura da Linguagem
Package:

-- declarao das libraries package nome_do_package is -- declarao de tipos (opcional) -- declarao de subtipos (opcioal) -- declarao de constantes (opcional) -- declarao de sinais (opcional) -- declarao de componentes (opcional) -- declarao de funes (opcional) end nome_do_package;

Estrutura da Linguagem
Entity:

entity nome_topo_de_hierarquia is port ( reset : in std_logic; clock : in std_logic; entrada : in std_logic_vector(7 downto 0); saida : out std_logic_vector(7 downto 0) ); end nome_topo_de_hierarquia;

As portas podem ser declaradas com in, out, inout e buffer.

Estrutura da Linguagem
Entity:
entity nome_topo_de_hierarquia is generic( TAMANHO : integer := 8 ); port ( reset : in std_logic; clock : in std_logic; entrada : in std_logic_vector(TAMANHO-1 downto 0); saida : out std_logic_vector(TAMANHO-1 downto 0) ); end nome_topo_de_hierarquia;

Os generics so utilizados para parametrizar os cdigos.

Estrutura da Linguagem
Architecture:
architecture Nome_da_Arquitetura of Nome_da_Entidade is -- Declarao de sinais e tipos prprios (ou variveis) begin -- Descrio da funcionalidade (Coportamento) da aplicao end Nome_da_Arquitetura;

dentro (aps a palavra reservada begin) da architecture que descrita a lgica do programa prpriamente dita; Podem ser declarados process, que so executados em paralelo dentro da architecture.

Estrutura da Linguagem
Process:

Nome_do_processo: process(-- Lista de sensibilidade) -- Declarao de variveis begin -- Descrio da lgica utilizada end process Nome_do_processo;
Toda lgica descrita fora de um process assncrona; Lgicas sncronas devem ser descritas obrigatoriamente dentro de um process; Todos os sinais analisados pelo processo devem constar na lista de sensibilidade, sob pena de no ser inferido na implementao.

Estrutura da Linguagem
Implementao:

ia1

ib1

o1

ia2

ib2

o2

ia3

ib3

o3

ia4

ib4

o4

Estrutura da Linguagem
Implementao:

ia1

ib1

o1

ia2

ib2

o2

ia3

ib3

o3

ia4

ib4

o4

Estrutura da Linguagem
Implementao:
ia1 ib1 o1 ia2 ib2 o2

ia3

ib3

o3

ia4

ib4

o4

Estrutura da Linguagem
Implementao:

ia1

ib1

o1

ia2

ib2

o2

ia3

ib3

o3

ia4

ib4

o4

Estrutura da Linguagem
Implementao:

ia1

ib1

o1

ia2

ib2

o2

ia3

ib3

o3

ia4

ib4

o4

Declaraes
Signals, Constants & Variables:
Signals:
- Os signals so declarados antes do incio (begin) da architecture; - So visveis por todos os processos da architecture; - Podem ser vistos como os fios que unem os diversos processos; - Sua prototipao mais estvel.

signal nome_do_sinal : std_logic;

Declaraes
Signals, Constants & Variables:
Constants:
- As constants so declaradas a exemplo dos signals dentro da architecture, antes de seu incio (begin); - So visveis por todos processos a que pertencem; - Geralmente so utilizadas para facilitar a documentao do cdigo.

constant nome_da_constante : std_logic := 1;

Assignments
Signals & Variables:
Signals:
nome_do_sinal <= 1;

Variables:
nome_da_varivel := 0;

O sinal de assignment sempre ser do tipo do identificador da esquerda.

Operadores
Operadores Lgicos:
Em VHDL esto disponveis todos os operadores lgicos existentes em lgica discreta: NOT, AND, NAND, OR, NOR, XOR e XNOR.

Operadores de Comparao:
Estes operadores so fundamentais para as implementaes de lgicas computacionais, sendo eles:
= /= > >= <
<=

igual diferente maior que maior igual a menor que


menor igual a

Operadores
Operadores Aritmticos:
So operadores muito utilizados para auxiliar na parametrizao de cdigos ou nos testbenches; Geralmente utilizados em tempo de sntese e no de execuo; Quando utilizados em tempo de execuo estes operadores so performados por macros que geram um hardware muito longe do ideal.
+
* / **

Adio
Subtrao Multiplicao Diviso potenciao

&
mod rem abs

concatenao
mdulo resto da diviso valor absoluto

Nmeros
Constantes:
Existe mais de uma maneira expressar nmeros em VHDL, seguem algumas:
Base#nmero# letrastring decimal 16#ACDC# xACDC ou b10101010 ou o755 255 ou 10e3 ou 5.88

Tipos em VHDL
Integer:
A um integer sempre inferido um barramento de 32 bits a menos que a ele seja dado um range; o tipo de dados que utilizado pelo VHDL para indexar seus vetores (barramentos); O consumo de hardware moderado.

Real:
Possuem um alcance de 64 bits, porm mesmo definindo-se a ele um range ocupam o mesmo espao em lgica, uma vez que parte dos bits dada para a parte fracionria; Possui alto consumo de hardware, principalmente para as operaes que o utilizam.

Tipos em VHDL
Enumerao:
Cria uma lista dos possveis valores que o identificador poder assumir; Muito til para criar um nvel de abstrao que facilite o projeto; o tipo que permite a implementao de mquina de estados.

Fsicos:
So utilizados para representar grandezas fsicas; H um tipo fsico j declarado nas bibliotecas VHDL, o tipo time; Estes tipo no so prototipveis.

Tipos em VHDL
Arrays:
So conjuntos de dados de um mesmo tipo; Geralmente so utilizados para representar espaos em memria. type memoria is array (0 to 9) of std_logic_vector;

Subtypes:
So declarados a partir de um tipo de dado j declarado; No so muito usuais por sua aplicao ser replicada; subtype natural is integer range 0 to integer'high;

Atributos
Funcionalidade:
Os atributos exercem funes de anlise de sinais; Exemplos:
event: retorna true se ocorreu uma transio de borda de clock, caso contrrio retorna false. active: retorna true se ocorreu uma transio em uma lgica, caso contrrio retorna false. last_event: retorna o tempo que demorou a transio do sinal; last_active: retorna o tempo que o sinal demorou para realiza a transio lgica; last_value: retorna o valor anterior a transio do sinal; lenght: retorna o tamanho do array do sinal.

Comandos
if:
o comando em VHDL, juntamente ao case mais utilizado; Geralmente utilizado para limitar a ao de lgicas; Implementado somente de um process.
Sintaxe:

if Condio_1 then -- Lgica_1; elsif Condio_2 then -- Lgica_2; else -- Lgica_3; end if;

Comandos
if (generate):
Utilizado para criar caminhos de sntese; Facilita a parametrizao de cdigos em relao a timing, rea ou performance; Implementado em qualquer ponto da architecture.

Sintaxe:

if Condio generate -- Lgica_1; end generate;

Comandos
case:
Geralmente utilizado para limitar a ao de lgicas; Muito utilizado para criar tabelas, conversores de barramento e mquinas de estado; Implementado somente dentro de um process.
Sintaxe:

case valor_comparado is when valor_cte_compar_1 => -- Lgica_1; when valor_cte_compar_2 => -- Lgica_2; when valor_cte_compar_3 => -- Lgica_3; when others => -- Lgica_padro; end case;

Comandos
when:
Pode ser utilizado fora de um process; Geralmente utilizado para triggar sinais em lgicas assncronas.
Sintaxe:

sinal_sada <= '1' when Lgica else '0';

Comandos
for (loop):
Pode ser utilizado tanto em lgica assncrona com em sncrona; No prototipvel.
Sintaxe:

label: for varivel_de_indexao in limite_do_loop loop -- lgica 1; -- lgica 2; end loop label;

Comandos
for (generate):
Utilizado para facilitar a descrio de cdigos em repetio; No prototipvel.
Sintaxe:

label: for varivel_de_indexao in limite_do_loop generate -- lgica 1; -- lgica 2; end generate label;

Comandos
Implementao:

ia1

ib1

o1

ia2

ib2

o2

ia3

ib3

o3

ia4

ib4

o4

Comandos
Implementao:

ia1

ib1

o1

ia2

ib2

o2

ia3

ib3

o3

ia4

ib4

o4

Comandos
Implementao:

ia1

ib1

o1

ia2

ib2

o2

ia3

ib3

o3

ia4

ib4

o4

Comandos
Implementao:

ia1

ib1

o1

ia2

ib2

o2

ia3

ib3

o3

ia4

ib4

o4

Comandos
Implementao:

ia1

ib1

o1

ia2

ib2

o2

ia3

ib3

o3

ia4

ib4

o4

Comandos
while:
Comando pouco utilizado por no ser prototipvel e possuir um controle pouco eficiente; Geralmente utilizado em testbenches.
Sintaxe:

label: while expresso_booleana loop -- lgica 1; -- lgica 2; end loop label;

Comandos
wait:
Comando no prototipvel; Utilizado somente em testbenches.
Sintaxe:

wait for tempo; (s, ms, ns, ...) wait on sinal; wait until condio; wait;

VHDL

Implementao de Lgica Assncrona

Implementaes Assncronas
Combinacional:
Portas Lgicas; Comparadores; Interligaes.

Computacional:
ULAs; Conversores de barramento; Codificadores/Decodificadores; Multiplexadores/Demultiplexadores.

Implementaes Assncronas
Exemplo:
Portas Lgicas:
o <= ia and ib; ou process(ia, ib begin x <= ia and ib; end process;

Implementaes Assncronas
Exemplo:
Cdigo completo para uma porta AND:

Implementaes Assncronas
Exemplo:
Cdigo completo para uma porta AND:

Implementaes Assncronas
Exemplo:
Cdigo completo para uma porta AND:
Bibliotecas utilizadas

Implementaes Assncronas
Exemplo:
Cdigo completo para uma porta AND:
Bibliotecas utilizadas

Entidade (especificao das portas)

Implementaes Assncronas
Exemplo:
Cdigo completo para uma porta AND:
Bibliotecas utilizadas

Entidade (especificao das portas)

Arquitetura (comportamento)

Implementaes Assncronas
Exemplo:
Portas Lgicas:

x <= A and not (B or C) and (D(1) xor D(2)); ou process(A, B, C, D) begin x <= A and not (B or C) and (D(1) xor D(2)); end process;

Implementaes Assncronas
Exemplo:
ULA (descrio):
process(Op_code, Input_A, Input_B) begin case Op_code(2 downto 1) is when "00" => temp <= Input_A + Input_B; when "01" => temp <= Input_A - Input_B; when "10" => temp <= Input_A and Input_B; when "11" => temp <= Input_A or Input_B; when others => temp <= "00000000"; end case; if Op_code(0) = '1' then ALU_output <= temp(6 downto 0) & '0'; else ALU_output <= temp; end if; end process ctrl;

Exerccios
Implemente o seguinte circuito combinacional:

Exerccios
Implemente o seguinte decodificador:

Implementaes Assncronas
Exerccio:
Crie mdulos VHDL equivalentes as seguintes CIs: 7404: 6 (seis) portas NOT; 7408: 4 (quatro) portas AND; 7432: 4 (quatro) portas OR.

VHDL

ModelSim
Simulador Computacional

ModelSim
Apresentao:
um simulador computacional para anlise de sistemas digitais; Possui alta fidelidade de resultados; Nas verses full inclusive possvel ter-se a simulao do tempo de porta das ligaes dos circuitos lgicos; Nas verses student existem limitaes, pricipalmente no que tange ao tempo de simulao, porm permanece uma poderosa ferramenta de simulao; Atualmente o simulador de sistemas digitais mais aceito tanto pelo mundo acadmico como pela indstria.

ModelSim
Objetivos:
Possuir fcil uso; Velocidade de simulao; Aprendizagem do usurio exponencial; Atende tanto ao usurio comum (projetos pequenos), como usurios avanados (grandes projetos) Oferecer suporte as mais modernas tecnologias (Sistemas Digitais); Suporte aos grandes fabricantes (Lgica Programvel); Difuso no meio acadmico (parcerias com projetos de pesquisa); Difuso no meio industrial (pacotes de softwares); Manuseio por IDE grfica ou scripts.

ModelSim
Caractersticas:
Capacidade de simular desde simples circuitos combinacionais sistemas digitais complexos Possui uma ampla gama de configuraes que podem ser personalizadas a qualquer tempo; Frontend feito totalmente em Tcl/Tk; Middleend criado em cima do Tcl; Backend totalmente implementado em Linguagem C; Alta performance de simulao (tanto qualitativa como quantitativa); Grande flexibilidade para automatizao de processos (via scripts) e integrao com outras ferramentas (Gnuplot, Pearl, Lua, Python, etc); Baseado em sistema UNIX (cuidado ao instalar com Octave, SciLab, Cygwin...)

ModelSim
Instalao:
Rodar o aplicativo mti60se.exe;
Escolher a opo evaluation.

Copiar os arquivos *.zip para a pasta que o projeto foi criada;


Extrair o contedo das pastas

Ordem de descompactao dos dados deve ser cuidada:


1: mxe5.7g_6.2isp2_simulation_libraries.zip; 2: mxe5.7g_62i_ip1_1_xilinxcorelib.zip.

ModelSim
Configurao:
Adio de libraries
-

Com as libraries (diferencial do ModelSim) a resposta da simulao melhorada; Para se adicionar uma library basta executar os seguintes passos:

File

=> Import Library

=>

Informar o path desejada

da

library

ModelSim
Funcionamento do Simulador:
Fluxo de execuo da simulao:
-

Criao de um projeto (especifica configuraes ao simulador); Compilao dos arquivos (so criadas bibliotecas de funes com o resultado da compilao); Incio da simulao com a seleo dos sinais a serem monitorados; Rodar simulao (com estmulo via script ou lgica).

File => New => Project

Nomear o projeto

ModelSim
Funcionamento do Simulador:
Fluxo de execuo da simulao:
Insero de arquivos.

Escolher Add Existing File

Fornecer path do(s) arquivo(s)

ModelSim
Funcionamento do Simulador:
Fluxo de execuo da simulao:
O processo anterior pode ser substitudo pode duas linhas de comando.

Cria projeto (pasta work)

mapeia projeto (pasta work)

ModelSim
Funcionamento do Simulador:
Fluxo de execuo da simulao:
Compilao dos arquivos VHDL (compilao da lgica programvel).

Tela com os arquivos do projeto

Boto direito do mouse: Compile => Compile All

ModelSim
Funcionamento do Simulador:
Fluxo de execuo da simulao:
Compilao dos arquivos em ordem hierarquica.

Boto direito do mouse: Compile => Compile Order

ModelSim
Funcionamento do Simulador:
Fluxo de execuo da simulao:
Compilao dos arquivos por script TCL/ModelSim.

Criar um arquivo *.do, fazendo sua chamada no prompt de comando Ex.: compile.do

ModelSim
Funcionamento do Simulador:
Fluxo de execuo da simulao:
Inicializao de uma simulao.

Simulate => Start Simulation

Escolher entidade a simular

ModelSim
Funcionamento do Simulador:
Fluxo de execuo da simulao:
Inicializao de uma simulao via scripts.

Criar um arquivo *.do, fazendo sua chamada no prompt de comando Ex.: simula.do

ModelSim
Funcionamento do Simulador:
Fluxo de execuo da simulao:
Inicializao do visualizador de waveforms.

Add

=> Wave Signals

=>

Select

ou por linha de comando


add wave r /*

ModelSim
Funcionamento do Simulador:

Exemplo de uma tela de waveform.

ModelSim
Funcionamento do Simulador:
Fluxo de execuo da simulao:
Rodando a simulao.

Utilizando a IDE

Run => Opo desejada ou por linha de comando run tempo_desejado Utilizando a scripts

ModelSim
Funcionamento do Simulador:

Resultado de uma simulao.

ModelSim
Funcionamento do Simulador:
Fluxo de execuo da simulao:
Melhorando a visualiao das informaes da simulao.

ModelSim
Funcionamento do Simulador:

Resultado de uma simulao.

ModelSim
Funcionamento do Simulador:

Resultado de uma simulao aplicando a ferramenta de zoom.

ModelSim
Funcionamento do Simulador:
Automao dos processos:
Todo o processo pode ser otimizado e passar a ser gerenciado em um nico arquivo de script o qual faz as chamadas dos comandos TCL/ModelSim.

VHDL

ISE Project Navigator


IDE para Prototipao de PLDs

ISE Project Navigator


Apresentao:
O ISE Project Navigator, Xilinx um conjunto de ferramentas dedicadas a todas as etapas de desenvolvimento com a tecnologia de Lgica Programvel; Contemplas as seguintes etapas:
Sntese; Roteamento; Placement; Floorplanner; Power Analyser; FPGA Editor; Core Generator.

ISE Project Navigator


Caractersticas:
Baseado totalmente em scripts integradores apresentados em uma IDE grfica; Portanto bastante fcil integr-los a scripts proprietrios aumentando a produtividade; Seus recursos so bastante confiveis em termos de qualidade de resposta computacional; Computacionalmente possui 5 nveis de otimizadores desde a sntese, passando pela implementao at o placement final:
Redes Neurais Artificiais; Algoritmo Bando de Pssaros; Algoritmo Gentico; Algoritmo Caminho de Menor Custo; Mtodo de Otimizao Determinstico (proprietrio da Xilinx).

ISE Project Navigator


Exerccio:
Com base no tutorial implementar uma porta AND, onde as entradas sero dadas por botes e a sada conectada a um LED.
library ieee; use ieee.std_logic_1164.all; entity and_port is port ( i1 : in i2 : in o : out ); end and_port;

std_logic; std_logic; std_logic

architecture and_port of and_port is begin o <= i1 and i2; end and_port;

VHDL

Implementao de Lgica Sncrona

Implementaes Sncronas
Combinacional:
PLLs; Comparadores; Sincronizadores.

Computacional:
CPUs; Conversores de protocolo; DSPs (Filtros, espectrmetros, DFTs, DCTs, processamento de imagem, etc).

Implementaes Sncronas
Anlise de bordas:
Para a anlise de bordas de sinais utilizado o atributo event; Pode ser utilizado para analisar qualquer sinal do tipo bit ou std_logic; Estes sinais podem ser de entrada ou internos, nunca sinais de sada; O sintetizador ir sempre inferir um flip-flop para cada sinal de sada.

Implementaes Sncronas
Anlise de bordas:
Para a anlise de bordas de sinais utilizado o atributo event; Pode ser utilizado para analisar qualquer sinal do tipo bit ou std_logic; Estes sinais podem ser de entrada ou internos, nunca sinais de sada; O sintetizador ir sempre inferir um flip-flop para cada sinal de sada.

Sintaxe:
if clkevent and clk = 1 then

Observao:
Sempre que um sinal precisar ser registrado ele dever passar por uma lgica que infira um flip-flop.

Implementaes Sncronas
Exemplo:
Flip-Flop D Reset Assncrono
process(nrst, clk) begin if nrst = 0 then Q <= 0; elsif clkevent and clk = 1 then Q <= D; end if; end process;

Reset Sncrono
process(clk) begin if clkevent and clk = 1 then if nrst = 0 then Q <= 0; else Q <= D; end if; end if; end process;

Implementaes Assncronas
Exemplo:
Cdigo completo para uma porta Flip-Flop D:

Implementaes Assncronas
Exemplo:
Cdigo completo para uma porta Flip-Flop D:
Bibliotecas utilizadas

Implementaes Assncronas
Exemplo:
Cdigo completo para uma porta Flip-Flop D:
Bibliotecas utilizadas

Entidade (especificao das portas)

Implementaes Assncronas
Exemplo:
Cdigo completo para uma porta Flip-Flop D:
Bibliotecas utilizadas

Entidade (especificao das portas)

Arquitetura (comportamento)

Implementaes Assncronas
Exemplo:
Cdigo completo para uma porta Flip-Flop D:
Bibliotecas utilizadas

Entidade (especificao das portas)

Arquitetura (comportamento)

Implementaes Assncronas
Exemplo:
Cdigo completo para uma porta Flip-Flop D:

Processo

Implementaes Sncronas
Exerccio:
Projete e simule um Flip-Flop JK

Implementaes Sncronas
Exemplo:
Contadores

Output <= cont; contador: process(nrst, clk) begin if nrst = 0 then cont <= (others => 0); elsif clkevent and clk = 1 then if cont < 11111111 then cont <= cont + 1; elsif cont = 11111111 then cont <= (others => 0); end if; end if; end process contador;

Implementaes Sncronas
Exerccio:
Projete e simule um contador com carga paralela

VHDL

Integrao entre Mdulos Descritos em VHDL

Integrao de Mdulos
Motivao: Implementao de Projetos Modular:
- Implementando projetos de maneira modular pode-se isolar erros mais facilmente ; - Possibilita a diviso de tarefas entre projetistas em um mesmo projeto; - Facilita documentao de manuteno e upgrade.

Reaproveitamento de cdigos:
- Cdigos descritos anteriormente podem ser reaproveitados, simplesmente agragandoos ao projeto atravs de cdigos de integrao; - Possibilidade de utilizar macros (instanciar) hardwares especficos de cada dispositivo; - Capacidade de otimizao de reaproveitamento de elementos de hardware.

Integrao de Mdulos
Diviso em Nveis de Hierarquia:
Todo projeto desenvolvido em VHDL pode possuir n n-veis hierrquicos; Os cdigos podem ser divididos em trs nveis bsicos de hierarquia entre si, inferior, equivalente e superior; Como conveno normalmente deixa-se o ltimo nvel (Top-Level) sem nenhum processo corrente, a menos que este seja um Testbench.

Integrao de Mdulos
Diviso em Nveis de Hierarquia:

Mdulos
MaiorMenor

Processos

Integrao de Mdulos
Diviso em Nveis de Hierarquia:
Implementao Prtica:

Integrao de Mdulos
Diviso em Nveis de Hierarquia:
Implementao Prtica:

Integrao de Mdulos
Declarao do Top-Level:
A declarao do top-level nada mais do que a declarao da entity do mdulo:
-- libraries entity nome_da_entidade is port( -- declarao das portas da integrao ); end entity nome_da_entidade; architecture nome_da_arquitetura of nome_da_entidade is -- declarao dos sinais (de controle e de integrao) -- declarao dos componentes begin -- port map dos mdulos (componentes) -- processos end architecture nome_da_arquitetura;

Integrao de Mdulos
Declarao de um Component:
A declarao de um component nada mais do que a descrio do prottipo do componente (mdulo) VHDL descrito em outro arquivo; Este prottipo a descrio de sua entidade.
component nome_do_arquivo is port( -- declarao das portas do componente --Ex.: rst : in std_logic; clk: in std_logic; q : out std_logic ); end component nome_do_arquivo;

Integrao de Mdulos
Realizao de um Port Map:
Faz a ligao do component com o restante da descrio do hardware; Port map convencional (necessita da prvia declarao do component).
nome_da_integrao : nome_do_arquivo port map( -- lista das ligaes com as portas do componente -- Ex: rst => reset, clk => clock, q => output );
Observao: Note que o operador => realiza o mapeamento do sinal e um assingment; Note tambm que diferentemente da declarao das portas de um componente ou de uma entidade, uma vrgula que separa as ligaes dos sinais, sendo que o ltimo no separado por nenhum caractere.

Integrao de Mdulos
Realizao de um Port Map:
Port map otimizado (no necessita da prvia declarao do component).
nome_da_integrao : entity work.nome_do_arquivo port map( -- lista das ligaes com as portas do componente -- Ex: rst => reset, clk => clock, q => output );
Observao: Com este tipo de declarao no existe a necessidade de se declarar o componente previamente.

VHDL

FSM
Finite State Machine

Implementaes Sncronas
Mquinas de Estado Finito (FSM):
Motivao:
- Desenvolvida pela Teoria dos Autmatos; - Racionalizar sistemas complexos de deciso; - Descrio de sistemas seqenciais.

Utilidade em Sistemas Digitais:


- Permite simplificar lgicas de controle; - Facilidade de codificao e implementao.

Tipos:
- Mquina Moore; - Mquina Mealy.

Implementaes Sncronas
Mquinas de Estado Finito (FSM):
Mquina Moore:
- Em uma mquina Moore a sada funo exclusiva do estado atual; - o tipo de mquina de estado mais comum e utilizada para implementar sincronismo e seqencialidade de procedimentos; - Geralmente a mquina que implementa gerenciadores de transmisso e recepo de dados, ou analisadores de barramento.

Entradas

Funo Prximo Estado

Prximo Estado clock reset

Estado Atual

Registro de Estado Atual

Funo de Sada

Sadas

Implementaes Sncronas
Mquinas de Estado Finito (FSM):
Mquina Moore:

Condio de Transio 1

Condio de Transio 2

Estado 1 Sada 1

Estado 2 Sada 2

Condio de Transio 4

Condio de Transio 3

Implementaes Sncronas
Mquinas de Estado Finito (FSM):
Mquina Moore (Exemplo):

ch = 1

ch = 0

S1 01

S2 10

ch = 0

ch = 1

Implementaes Sncronas
Mquinas de Estado Finito (FSM):
case estado is when S1 => saida <= 01; if ch = 1 then estado <= S2; else estado <= S1; end if; when S2 => saida <= 10; if ch = 1 then estado <= S1; else estado <= S2; end if; when others => null; end case;

Implementaes Sncronas
Mquinas de Estado Finito (FSM):
Mquina Mealy:

Entradas

Funo Prximo Estado

- Em uma mquina Mealy a sada funo do estado atual e das entradas;


Estado Atual

Prximo Estado clock reset

Registro de Estado Atual

- o tipo de mquina de estado pouco utilizada, porm muito til para implementar operaes assncronas que so dependentes de seqencialidade de procedimentos.

Funo de Sada

Sadas

Implementaes Sncronas
Mquinas de Estado Finito (FSM):
Mquina Mealy:

Condio de Transio 1 Entrada/Sada 3 Condio de Transio 2 Entrada/Sada 1 Entrada/Sada 4 Condio de Transio 4

Estado 1
Entrada/Sada 2

Estado 2

Condio de Transio 3

Implementaes Sncronas
Mquinas de Estado Finito (FSM):
Mquina Mealy (Exemplo):

ch = 1 00 00 01

ch = 0

S1
10 ch = 1

S2

ch = 0

Implementaes Sncronas
Mquinas de Estado Finito (FSM):
case estado is when S1 => if ch = 1 then estado <= S2; else estado <= S1; end if; when S2 => if ch = 1 then estado <= S1; else estado <= S2; end if; when others => null; end case;

saida <= 01 when estado = S1 and entrada = 1 else 10 when estado = S2 and entrada = 1 else 00;

Implementaes Sncronas
Mquinas de Estado Finito (FSM):
Codificaes de Estados:
- Codificao One Hot; - Codificao Gray; - Codificao Binria.
Estado S0 S1 S2 One Hot 00000001 00000010 00000100 Gray 000 001 011 Binrio 000 001 010

S3
S4 S5 S6 S7 Nmero total de transies

00001000
00010000 00100000 01000000 10000000 16

010
110 111 101 100 8

011
100 101 110 111 11

Mximo de transies por ciclo

Implementaes Sncronas
Mquinas de Estado Finito (FSM):
A implementao da codificao de estados pode ser realizada de duas maneiras bsicas:
Por enumerao*: onde o usurio apenas define os identificadores que corresponde a cada estado, sendo responsabilidade do sintetizador definir o tipo de codificao; Por definio: neste modo o usurio define os valores assumidos por cada estado, e com isso acaba por definir a codificao desejada para a sua mquina de estados.

* Quando utilizado o modo de enumerao pode-se definir o tipo de codificao via passagem de parmetros para o sintetizador, porm isto cria um overhead indesejvel de sntese. Portanto quando se quer ter controle de qual codificao utilizada recomenda-se fortemente utilizarse o estilo de descrio por definio.

Implementaes Sncronas
Mquinas de Estado Finito (FSM):
Exemplo de descrio utilizando o estilo de enumerao:
. . . architecture fsm of fsm is type tipo_estado is (S0, S1);

signal estado : tipo_estado; begin . . . end fsm;

Implementaes Sncronas
Mquinas de Estado Finito (FSM):
Exemplo de descrio utilizando o estilo de definio:
. . . architecture fsm of fsm is constant S0 : std_logic_vector(2 downto 0); constant S1 : std_logic_vector(2 downto 0); signal estado : std_logic_vector(2 downto 0); begin . . . end fsm;

Implementaes Sncronas
Mquinas de Estado Finito (FSM):
Exemplos:

Implementaes Sncronas
Mquinas de Estado Finito (FSM):
Exemplos:

Implementaes Sncronas
Mquinas de Estado Finito (FSM):
Exerccio:

Implemente e simule um mdulo serializer em VHDL.

Implementaes Sncronas
Mquinas de Estado Finito (FSM):
Exerccio:

send = 1

send = 0

Idle -

Tx serial

cnt > 0

cnt = 0

Implementaes Sncronas
Mquinas de Estado Finito (FSM):
Exerccio:

Implemente e simule um mdulo deserializer em VHDL.

Implementaes Sncronas
Mquinas de Estado Finito (FSM):
Exerccio:

sb= 1

sb= 0

Idle -

Rx serial

cnt > 0

cnt = 0

VHDL

Testbenches Descritos em VHDL

Testbench
Motivao: Criar testes de projeto em software:
- Pode-se desenvolver cdigos de alto nvel (em VHDL) para se testar os mdulos; - Cria-se uma infinidade de possibilidades de depurao; - Testes de transiente e de regime permanente; - Testes de DSP, Computacionais, de interfaceamento, etc.

Criar testes de projeto em hardware:


- Possibilidade de criao de gerador de sinais digitais para teste em hardware; - Interfaceamento via JTAG ou pinos normais; - Depurao do projeto em hardware.

Testbench
Sintaxe:
A sintaxe de um testbench idntica a de uma integrao, com a diferena de que existir um processo gerando sinais de teste;

-- libraries entity nome_da_entidade is port( -- declarao das portas da integrao ); end entity nome_da_entidade;

Testbenches de hardware normalmente possuem portas para interface

-- libraries entity nome_da_entidade is end entity nome_da_entidade;

Testbenches de software no necessitam dessas portas, podendo-se ento deixar a declarao da entidade sem a nomeao de nenhuma porta.

Testbench - Software
Gerenciamento de Sinais:
Em um testbench interessante passar para o cdigo VHDL o mximo de funcionalidades possveis; Quando utiliza-se o script TCL ou as interfaces grficas de simuladores o processo de simulao torna-se mais lento pelo seu maior custo computacional; Alm disso a possibilidade de tornar o teste autocontido (o prprio testbench gera os sinais e os avalia) diminui a influncia humana padronizando os testes*.
* Facilitar a repetibilidade do teste importante para submeter o mdulos aos mesmos tipos de entradas e distrbios, alm de pode-se sempre aumentar o espao de testes incrementando o testbench.

Testbench - Software
Gerenciamento de Sinais:
Os principais sinais existentes em um testbench so o clock e o reset; Para implementar-se estes sinais existem uma tcnica bastante simples para gerenci-los; Utiliza-se constantes com o tipo time e o comando after (pode-se lanar mo dessas premissas, pois se est lidando com um cdigo no prototipvel); Basta ento criar um sinal astvel para o clock utilizando da mesma premissa utilizada em um oscilador; E criar um sinal monoestvel para o reset, utilizando a idia de um timer.

Testbench - Software
Gerenciamento de Sinais:
Gerenciamento do Clock constant CLK_HALF_PER : time := 10 ns; signal clk : std_logic := 0;
Atribuio feita normalmente (na descrio comportamental do cdigo)
Declarao feita normalmente (antes do begin da architecture)

clk <= not clk after CLK_HALF_PER;

Gerenciamento do Reset constant RST_PER : time := 1 us; signal rst : std_logic := 1;


Atribuio feita normalmente (na descrio comportamental do cdigo) Declarao feita normalmente (antes do begin da architecture)

rst <= 0 after RST_PER;

Testbench - Software
Exerccio:
Faa a integrao dos mdulos descritos a seguir

Cdigos disponilbiizados no arquivo conversor.zip

Testbench - Software
Exerccio:
Crie um testbench para o projeto anterior da seguinte maneira

Universidade do Vale do Rio dos Sinos - UNISINOS

Prototipao em PLDs
Obrigado!