a2_introdução ao vhdl

129
Projeto a partir de VHDL Prof. Thiago Felski Pereira Universidade do Sul de Santa Catarina UNISUL Slides utilizados para apresentação dos conceitos iniciais de VHDL no LEDS/UNIVALI Adaptado da palestra da EMICRO 2007 do prof. Dr. Cesar Albenes Zeferino Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

Upload: jefferson-madeira

Post on 16-Oct-2015

22 views

Category:

Documents


2 download

TRANSCRIPT

  • Projeto a partir de VHDL

    Prof. Thiago Felski Pereira Universidade do Sul de Santa Catarina UNISUL Slides utilizados para apresentao dos conceitos iniciais de VHDL no LEDS/UNIVALI Adaptado da palestra da EMICRO 2007 do prof. Dr. Cesar Albenes Zeferino

    Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Tpicos

    Introduo ao VHDL

    Noes Bsicas de VHDL

    Pacotes e Bibliotecas

    Sinais Variveis

    Modelagem de Circuitos Combinacionais em VHDL

    Modelagem de Circuitos Seqenciais em VHDL

    Consideraes Finais

  • Introduo ao VHDL

    Definio Tipos de modelagem Fluxos de simulao e sntese Aspectos gerais

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    O que VHDL?

    uma linguagem de descrio de hardware

    Desenvolvida a partir da necessidade do Departamento de

    Defesa (DoD) dos EUA para unificar a documentao de

    projetos de seus fornecedores no contexto do programa

    VHSIC, substituindo os diagrama esquemticos

    VHDL = VHSIC HDL

    VHSIC = Very High Speed Integrated Circuit

    HDL = Hardware Description Language

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    O VHDL ou a VHDL?

    Assim como toda e qualquer linguagem de programao,

    em portugus, costuma-se masculinizar o gnero da linguagem

    o C

    o Delphi

    o JAVA

    o assembly

    o VHDL

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Cronologia e uso do VHDL

    Marcos histricos

    1980: criao da linguagem

    1987: padronizao pelo IEEE (IEEE Std 1076-1987)

    1993: reviso do padro

    2008: modernizao da linguagem (IEEE Std 1076-2008)

    Uso

    Documentao

    Simulao

    Sntese

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Tipos de modelagem

    Estrutural

    O que

    Comportamental

    O que faz

    ENTITY mux_2x1 IS

    PORT (a, b : IN BIT;

    sel : IN BIT;

    s : OUT BIT);

    END mux;

    ARCHITECTURE structural OF mux_2x1 IS

    BEGIN

    s

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Simulao funcional de um modelo VHDL

    Biblioteca

    VHDL

    Modelo

    VHDL

    Testbench

    VHDL

    Modelo de

    Simulao Vetores

    de teste

    Opcional

    Diagrama de

    Formas de Onda

    Sada em

    Formato texto Simulao

    VHDL

    Compilador

    de Simulao

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Sntese de um modelo VHDL

    Biblioteca

    VHDL

    Modelo

    VHDL

    Arquivo de

    Tecnologia

    Netlist

    Opcional

    Simulao

    VHDL

    com timing

    Compilador

    de Sntese

    Anlise de

    Timing Posicionamento

    e Roteamento

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Aspectos gerais do VHDL

    Dois conjuntos de construtores

    Simulao

    Sntese

    Caractersticas

    baseado em palavras reservadas (BEGIN, END, ...)

    insensvel caixa (BEGIN = Begin = begin)

    Declaraes terminadas por ponto e vrgula ;

    Comentrios marcados precedidos por duplo hfen --

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Aspectos gerais do VHDL

    Ex: Editor de texto com destaque coloridos de sintaxe

    Palavras reservadas

    Comentrios

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Resumo

    VHDL uma linguagem de descrio de hardware para

    Documentao

    Simulao

    Sntese

    Foi criada no contexto de um projeto do DoD-USA e hoje

    uma HDL padronizada pelo IEEE

  • Noes Bsicas de VHDL

    Entidade Arquitetura Configurao Componentes

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Estrutura de um modelo VHDL bsico

    Modelo VHDL = Entidade + Arquitetura

    Entidade (ENTITY)

    Define a interface com o mundo externo (portas de entrada e

    sada)

    Arquitetura (ARCHITECTURE):

    Define a implementao do projeto (ex. equaes lgicas)

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Estrutura de um modelo VHDL bsico

    ENTITY IS

    ...

    END ;

    ARCHITECTURE OF IS

    ...

    END ;

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Exemplo: Multiplexador 2-para-1 (mux_2x1)

    s a

    b

    sel

    0

    1 s

    a

    b

    0

    0

    1

    sel s

    0 a

    1 b

    Tabela verdade

    s = sel.a + sel.b

    Equao lgica

    if (sel == 0)

    s = a;

    else

    s = b;

    Funcionalidade (C)

    s a

    b

    1

    0

    1

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Exemplo: Multiplexador 2-para-1 (mux_2x1)

    Diagrama esquemtico

    s = sel.a + sel.b

    sel.a

    sel.b

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Exemplo: Multiplexador 2-para-1 (mux_2x1)

    Diagrama de formas de onda

    sel = 0 sel = 1

    sel

    a

    b s

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Modelando o mux_2x1 em VHDL

    ARCHITECTURE structural OF mux_2x1 IS

    BEGIN

    s

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Modelando o mux_2x1 em VHDL

    ENTIDADE

    ARQUITETURA

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Modelando o mux_2x1 em VHDL

    ENTIDADE

    ARQUITETURA

    ENTITY mux_2x1 IS

    PORT (a, b : IN BIT;

    sel : IN BIT;

    s : OUT BIT);

    END mux_2x1;

    ARCHITECTURE structural OF mux_2x1 IS

    BEGIN

    s

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Entidade (ENTITY)

    onde so declarados os parmetros (GENERIC) da

    entidade e os seus sinais de entrada e de sada (PORT)

    ENTITY IS

    GENERIC (

    : STRING := ;

    : INTEGER :=

    );

    PORT (

    : IN BIT;

    : INOUT BIT;

    : BUFFER BIT;

    : OUT BIT

    );

    END ;

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Entidade (ENTITY)

    Parmetros (GENERIC)

    Permite passar informaes a um modelo. Ex:

    Especificao de atrasos de propagao (somente simulao)

    Especificao de largura de canais em modelos parametrizveis

    Podem ser definidos com valores defaults e modificados por

    instncias superiores em uma descrio hierrquica

    Estrutura geral da declarao de um parmetro GENERIC

    : := ;

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Entidade (ENTITY)

    Sinais da interface (PORTS)

    Entradas e sadas do modelo

    Existem quatro modos de port

    IN entrada

    OUT sada

    BUFFER sada com realimentao interna

    INOUT bidirecional

    SIGNAL : ;

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Entidade (ENTITY)

    Exemplo

    ou

    ENTITY mux_2x1 IS

    PORT (SIGNAL a, b : IN BIT; -- data inputs

    SIGNAL sel : IN BIT; -- selector

    SIGNAL s : OUT BIT); -- data output

    END mux_2x1;

    ENTITY mux_2x1 IS

    PORT (a, b : IN BIT; -- data inputs

    sel : IN BIT; -- selector

    s : OUT BIT); -- data output

    END mux_2x1;

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Arquitetura (ARCHITECTURE)

    Descreve a estrutura e/ou a funcionalidade do modelo

    Tem que ser associada a uma entidade. Ex:

    Uma entidade pode ter mltiplas arquiteturas

    Estilos de arquitetura

    Comportamental

    Estrutural

    Hbrida

    ARCHITECTURE structural OF mux_2x1 IS

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Arquitetura (ARCHITECTURE)

    Um arquitetura constituda por processos

    Tipos de processos

    Implcito (em ingls, usa-se implied = implicado)

    Uma declarao de atribuio a um sinal

    Explcito

    Consiste de declaraes seqenciais

    Os mltiplos processos de uma arquitetura so

    executados de forma concorrente

    No importa a ordem em que so declarados no modelo

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Arquitetura (ARCHITECTURE)

    ARCHITECTURE OF IS

    BEGIN

    -- Concurrent Signal Assignments (implied processes)

    -- ...

    END ; --(1076-1987 Version)

    END ARCHITECTURE; --(1076-1993 Version)

    Estrutura mnima de uma descrio estrutural

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Arquitetura (ARCHITECTURE)

    Exemplo

    ARCHITECTURE structural OF mux_2x1 IS

    BEGIN

    s

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Arquitetura (ARCHITECTURE)

    ARCHITECTURE OF IS

    BEGIN

    -- Process statements (explicit processes)

    -- ...

    END ; --(1076-1987 Version)

    END ARCHITECTURE; -- (1076-1993 Version)

    Estrutura mnima de uma descrio comportamental

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Arquitetura (ARCHITECTURE)

    Exemplo

    ARCHITECTURE behavior OF mux_2x1 IS

    BEGIN

    PROCESS(a,b,sel)

    BEGIN

    IF (sel='0') THEN

    s

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Arquitetura (ARCHITECTURE)

    ARCHITECTURE OF IS

    -- Signal Declarations

    -- Constant Declarations

    -- Type Declarations

    -- Component Declarations

    -- Subtype Declarations

    -- Attribute Declarations

    -- Attribute Specifications

    -- Subprogram Declarations

    -- Subprogram Body

    BEGIN

    -- Process Statements

    -- Concurrent Procedural Calls

    -- Concurrent Signal Assignment

    -- Component Instantiation Statements

    -- Generate Statements

    END ; --(1076-1987 Version)

    END ARCHITECTURE; -- (1076-1993 Version)

    Estrutura genrica

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Configurao (CONFIGURATION)

    Usada para fazer associaes em modelos

    Associar uma entidade a um arquitetura

    Associar um componente a um par entidade-arquitetura

    Largamente usada em ambientes de simulao

    Facilita a explorao do espao de projeto

    Uso limitado em ambientes de sntese (nem sempre

    suportada)

    CONFIGURATION OF IS

    FOR

    END FOR;

    END; -- (1076-1987 version)

    END CONFIGURATION; -- (1076-1993 version)

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Configurao (CONFIGURATION)

    Exemplos

    CONFIGURATION config OF mux_2x1 IS

    FOR structural

    END FOR;

    END;

    CONFIGURATION config OF mux_2x1 IS

    FOR behavior

    END FOR;

    END;

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Exemplo de modelo ENTITY mux_2x1 IS PORT (a, b : IN BIT; -- data inputs

    sel : IN BIT; -- selector

    s : OUT BIT); -- data output

    END mux_2x1;

    -------------------------------------

    ARCHITECTURE structural OF mux_2x1 IS

    BEGIN

    s

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Exemplo de modelo ENTITY mux_2x1 IS PORT (a, b : IN BIT; -- data inputs

    sel : IN BIT; -- selector

    s : OUT BIT); -- data output

    END mux_2x1;

    -------------------------------------

    ARCHITECTURE structural OF mux_2x1 IS

    BEGIN

    s

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    mux_2x1.vhd

    Alternativas de modelagem:

    em um nico arquivo ou em mltiplos arquivos

    ENTITY mux_2x1 IS

    PORT (a, b : IN BIT; -- data inputs

    sel : IN BIT; -- selector

    s : OUT BIT); -- data output

    END mux_2x1;

    -------------------------------------

    ARCHITECTURE structural OF mux_2x1 IS

    BEGIN

    s

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Alternativas de modelagem:

    em um nico arquivo ou em mltiplos arquivos

    ou

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Componente (COMPONENT)

    Um modelo VHDL pode ser implementado de forma

    hierrquica, utilizando instncias de componentes baseados

    em outros modelos VHDL

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Componente (COMPONENT)

    Declarao do componente

    COMPONENT IS

    PORT ( : ;

    ...

    : );

    END COMPONENT;

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Componente (COMPONENT)

    Declarao do componente x declarao de entidade

    COMPONENT IS

    PORT ( : ;

    ...

    : );

    END COMPONENT;

    ENTITY IS

    PORT ( : ;

    ...

    : );

    END ;

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Componente (COMPONENT)

    Instanciao do componente

    Mapeamento dos ports da instncia do componente com os sinais

    do modelo de nvel mais alto

    Mapeamento posicional (feito na ordem exata da declarao)

    Mapeamento nomeado (pode ser feito em qualquer ordem)

    :

    PORT MAP(,..., );

    :

    PORT MAP( => ,

    ...

    => );

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Componente (COMPONENT)

    Onde declarar e instanciar o componente?

    Na arquitetura do modelo

    ARCHITECTURE OF IS

    -- ...

    -- Component Declarations

    -- ...

    BEGIN

    -- ...

    -- Component Instantiation Statements

    -- ...

    END ; --(1076-1987 Version)

    END ARCHITECTURE; -- (1076-1993 Version)

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Exemplo: Circuito com dois mux_2x1 (mux_2x1_duo)

    s0 a0

    b0

    sel

    0

    1

    s1 a1

    b1

    0

    1

    ENTITY mux_2x1_duo IS

    PORT (SIGNAL a0, b0 : IN BIT; -- data inputs

    SIGNAL a1, b1 : IN BIT; -- data inputs

    SIGNAL sel : IN BIT; -- selector

    SIGNAL s0, s1 : OUT BIT); -- data output

    END mux_2x1_duo;

    ARCHITECTURE structural OF mux_2x1_duo IS

    -- Component declaration

    COMPONENT mux_2x1

    PORT (SIGNAL a, b : IN BIT; -- data inputs

    SIGNAL sel : IN BIT; -- selector

    SIGNAL s : OUT BIT); -- data output

    END COMPONENT;

    BEGIN

    -- Component instantiation

    u0 : mux_2x1 PORT MAP (a0, b0, sel, s0);

    u1 : mux_2x1 PORT MAP (sel => sel,

    a => a1,

    b => b1,

    s => s1);

    END structural;

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Resumo

    Um modelo VHDL formado por

    Entidade (ENTITY): interface

    Arquitetura (ARCHITECTURE): corpo do modelo

    A arquitetura pode ser modelada de forma

    Estrutural: O que o circuito

    Comportamental: O que o circuito faz

    Hbrida (estrutural + comportamental)

    Um modelo pode ter mltiplas arquiteturas (selecionadas

    pela configurao)

    Um modelo pode ser implementado usando instncias de

    outros modelos (componentes)

  • Pacotes e Bibliotecas

    Pacotes

    Bibliotecas

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Pacote (PACKAGE)

    uma forma conveniente para armazenar e usar informaes ao longo de um modelo completo (tipicamente com mltiplas entidades)

    Um pacote consiste de:

    Declarao do pacote

    Declarao de tipos

    Declarao de subprogramas

    Corpo do pacote (opcional)

    Definio de subprogramas (se declarados)

    VHDL possui dois pacotes implcitos (built in)

    Standard

    Textio

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Pacote (PACKAGE)

    PACKAGE IS

    -- Constant Declarations

    -- Type Declarations

    -- Signal Declarations

    -- Subprogram Declarations

    -- Component Declarations

    END ; -- (1076-1987)

    END PACKAGE ; -- (1076-1993)

    PACKAGE BODY IS

    -- Constant Declarations

    -- Type Declarations

    -- Subprogram Body

    END ; -- (1076-1987)

    END PACKAGE BODY ; -- (1076-1993)

    Estrutura genrica

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Exemplo: Pacote com a declarao do componente mux_2x1

    PACKAGE my_package IS

    -- Component declaration

    COMPONENT mux_2x1

    PORT (SIGNAL a, b : IN BIT; -- data inputs

    SIGNAL sel : IN BIT; -- selector

    SIGNAL s : OUT BIT); -- data output

    END COMPONENT;

    END my_package;

    -- There is no package body

    Declarao

    do

    componente

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Bibliotecas

    Contm um ou mais pacotes

    Bibliotecas de recursos

    Pacotes padro

    Pacotes IEEE

    Pacotes especficos da ferramenta EDA (ex. pacotes Altera)

    Qualquer biblioteca de unidades de projeto que so referenciadas em um projeto

    Biblioteca de trabalho (WORK)

    Biblioteca na qual a unidade de projeto corrente est sendo compilada

    Bibliotecas implcitas: WORK e STD

    No precisam ser referenciadas

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Referenciando uma biblioteca ou um pacote

    Bibliotecas implcitas: WORK e STD

    Clusula LIBRARY

    Define um nome simblico da biblioteca referenciada, o qual

    aponta para um caminho de diretrios

    LIBRARY ;

    Clusula USE

    Especifica o pacote e o objeto a serem utilizados da biblioteca

    A palavra reservada ALL permite referenciar todos os objetos do

    pacote

    USE ..;

    USE ..ALL;

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Exemplo: Modelagem o mux_2x1_duo com o mux_2x1 declarado no pacote my_package

    LIBRARY WORK;

    USE WORK.my_package.ALL;

    ENTITY mux_2x1_duo IS

    PORT (SIGNAL a0, b0 : IN BIT; -- data inputs

    SIGNAL a1, b1 : IN BIT; -- data inputs

    SIGNAL sel : IN BIT; -- selector

    SIGNAL s0, s1 : OUT BIT); -- data output

    END mux_2x1_duo;

    ARCHITECTURE structural OF mux_2x1_duo IS

    BEGIN

    u0 : mux_2x1 PORT MAP(a0, b0, sel, s0);

    u1 : mux_2x1 PORT MAP(a1, b1, sel, s1);

    END structural;

    Instncias

    do

    componente

    Referncia biblioteca WORK (opcional)

    Referncia ao pacote my_package

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Biblioteca STD

    Contm os seguintes pacotes

    STANDARD

    Suporta os tipos: BIT, BOOLEAN, INTEGER, REAL e TIME)

    Funes de operadores para os tipos suportados

    TEXTIO

    Suporte a operaes com arquivos

    uma biblioteca implcita e no precisa ser referenciada

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Biblioteca STD

    Tipos de dados escalares do pacote STANDARD

    No tipo INTEGER conveniente limitar a faixa de representao para

    economizar recursos. Ex:

    SIGNAL int_8bit : INTEGER RANGE 0 TO 255;

    Classe Tipo Valores Exemplo

    Enumerado BIT Um e zero 1, 0

    BOOLEAN Verdadeiro e falso TRUE, FALSE

    CHARACTER Caracteres ASCII a, b, c,..., A, B, C

    Numrico INTEGER -231 x 231-1 19, 8#57#, 16#A2#, 2#11#

    REAL -3.65x1047 x +3.65x1047 2.63, 1.75E+2, 16#8.C#

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Biblioteca STD

    Tipos de dados compostos do pacote STANDARD

    Na declarao de um tipo composto, seus limites so definidos por TO

    e DOWNTO

    Exemplos

    CONSTANT X: BIT_VECTOR(0 TO 3) := "1011"

    CONSTANT X: BIT_VECTOR(3 DOWNTO 0) := "1101"

    Classe Tipo Valores Exemplo

    Vetor BIT_VECTOR Tipo BIT 1110, B11_10, O32, XA2

    STRING Tipo CHARACTER teste, oi mundo

    bit 0

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Biblioteca IEEE

    Contm os seguintes pacotes

    STD_LOGIC_1164

    Descreve os tipos STD_LOGIC e STD_LOGIC_VECTOR e funes

    relacionadas

    STD_LOGIC_ARITH

    Descreve os tipos SIGNED e UNSIGNED, funes de converso,

    aritmticas e relacionais

    STD_LOGIC_SIGNED e STD_LOGIC_UNSIGNED

    Fazem referncia aos pacotes NUMERIC_BIT e NUMERIC_STD os

    quais descrevem funes que permitem ferramenta de sntese usar os tipos BIT_VECTOR e STD_LOGIC_VECTOR para sintetizar os tipos

    SIGNED e UNSIGNED

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Biblioteca IEEE

    Tipos de dados do pacote STD_LOGIC_1164

    STD_LOGIC

    9 valores lgicos (U, X, 0, 1, Z, W, L, H, -)

    Possui funes de resoluo associadas para a modelagem de

    mltiplos drivers acionando o mesmo sinal (ex. barramento)

    STD_LOGIC_VECTOR

    Vetor de elementos STD_LOGIC

    STD_ULOGIC

    No possui funes de resoluo

    STD_ULOGIC_VECTOR

    Vetor de elementos STD_ULOGIC

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Biblioteca IEEE

    Funes disponveis no pacote STD_LOGIC_1164

    Operadores lgicos

    and, or, nand, nor, xor, xnor, not

    Funes de converso entre BIT, STD_LOGIC e STD_ULOGIC

    To_bit, To_bitvector, To_StdLogicVector, e outras

    Funes de deteco de borda de subida

    rising_edge e falling_edge

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Biblioteca IEEE

    Tipos de dados do pacote STD_LOGIC_UNSIGNED

    UNSIGNED

    Nmero inteiro sem sinal

    Composto por elementos do tipo STD_LOGIC (ou BIT)

    Os elementos mais significativos so posicionados esquerda

    Tipos de dados do pacote STD_LOGIC_SIGNED

    SIGNED

    Nmero inteiro com sinal

    Representao em complemento de dois

    O bit mais esquerda o bit de sinal

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Biblioteca IEEE

    Funes disponveis nos pacotes STD_LOGIC_SIGNED e

    STD_LOGIC_SIGNED

    Tipo do operador Nome do operador (funo)

    Lgico and, or, nand, nor, xor, xnor

    Relacional =, /=, =

    Adio e subtrao +,

    Concatenao &

    Multiplicao e diviso *, /, mod, rem

    Sinalizao

    Miscelnea **, abs e not

    Deslocamento shift_right, shift_left, srl, sll

    Rotao rotate_right,rotate_left, ror, rol

    Converso to_integer, to_unsigned, to_signed

    ... ...

  • Sinais e Variveis

    Sinais

    Processos implcitos

    Processos explcitos

    Variveis

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Sinais

    Representam interconexo fsica (fio) que realizam a

    comunicao de informaes entre os processos

    Declarao

    Declarados na entidade, na arquitetura ou em um pacote

    ENTIDADE

    ARQUITETURA

    Processo A Processo B

    sinal

    sinal

    sinal sinal

    SIGNAL : ;

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Atribuindo valores a sinais (processos implcitos)

    A atribuio feita usando

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Atribuindo valores a sinais

    Exemplo

    Atribuindo valor a todos os bits (usar aspas duplas)

    temp

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Tipos de atribuio a sinais concorrentes Exemplo: mux_2x1

    Atribuio simples

    Atribuio condicional

    Atribuio selecionada

    s

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Processos explcitos

    Necessrios na implementao de funes compostas por atribuio seqenciais (ex. if-then-else)

    : -- (optional)

    PROCESS ()

    -- Constant declarations

    -- Type declarations

    -- Variable declarations

    BEGIN

    -- Signal Assignment Statement (optional)

    -- Variable Assignment Statement (optional)

    -- Procedure Call Statement (optional)

    -- If Statement (optional)

    -- Case Statement (optional)

    -- Loop Statement (optional)

    END PROCESS ;

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Processos explcitos

    Um processo executado

    infinitamente se no for

    quebrado por uma declarao WAIT ou por uma

    lista de sensibilidade

    Uma lista de sensibilidade infere uma declarao WAIT

    no final do processo

    Um processo pode ter mltiplos WAIT, mas no

    pode ter um WAIT e uma

    lista de sensibilidade

    As atribuies a sinais em

    um processo so efetivadas

    ao trmino da sua execuo

    ARCHITECTURE behavior OF mux_2x1 IS

    BEGIN

    PROCESS(a,b,sel)

    BEGIN

    IF (sel='0') THEN

    s

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Variveis

    Declaradas dentro de processos e constituem-se em

    objetos de armazenamento temporrio

    Declarao

    A atribuio feita usando :=

    So atualizadas no momento da atribuio (no ao trmino

    do processo, como os sinais)

    := ;

    VARIABLE : ;

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Atribuindo valores a variveis

    Exemplo

    ARCHITECTURE behavior OF mux_2x1 IS

    VARIABLE temp := BIT;

    BEGIN

    PROCESS(a,b,sel)

    BEGIN

    IF (sel='0') THEN

    temp := a;

    ELSE

    temp := b;

    END IF;

    s

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Sinais x Variveis

    Sinal Varivel

    Atribuio

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Atribuindo valores a variveis

    Exemplo

    Atribuindo valor a todos os bits (usar aspas duplas)

    temp := 10101010;

    temp := XAA;

    Atribuindo valor a um nico bit (usar aspas simples)

    temp(7) := 1;

    Atribuindo valor a um grupo de bits

    temp (7 downto 4):= 1010;

    VARIABLE temp : STD_LOGIC_VECTOR (7 DOWNTO 0);

  • Modelagem de Circuitos Combinacionais em VHDL

    Definio Multiplexadores Somadores Comparadores

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Circuitos Combinacionais

    So aqueles cujas sadas dependem exclusivamente do

    estado atual das entradas

    Exemplos:

    Codificadores e decodificadores

    Multiplexadores e demultiplexadores

    Somadores e subtratores

    Unidade Aritmtica e Lgica

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Multiplexador 2-para-1 com canais de W bits (mux_2x1_Wbits)

    s(W-1..0) a (W-1..0)

    b (W-1..0)

    sel

    0

    1

    s(0) a(0)

    b(0)

    sel

    0

    1

    s(w-1) a(w-1)

    b(w-1)

    0

    1

    Associao em paralelo

    de mux_2x1

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Modelando o mux_2x1_Wbits Entidade

    ENTITY mux_2x1_Wbits IS

    GENERIC (W : NATURAL := 16);

    PORT (a, b : IN BIT_VECTOR (W-1 DOWNTO 0); -- data inputs

    sel : IN BIT; -- selector

    s : OUT BIT_VECTOR (W-1 DOWNTO 0)); -- data output

    END mux_2x1_Wbits;

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Modelando o mux_2x1_Wbits Arq. Estrutural

    ARCHITECTURE structural OF mux_2x1_Wbits IS

    BEGIN

    f0: FOR i IN (W-1) DOWNTO 0 GENERATE

    s(i)

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Modelando o mux_2x1_Wbits Arq. Estrutural

    ARCHITECTURE structural OF mux_2x1_Wbits IS

    BEGIN

    f0: FOR i IN 3 DOWNTO 0 GENERATE

    s(i)

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Modelando o mux_2x1_Wbits Arq. Comportmental

    Igual do mux_2x1

    ARCHITECTURE behavior OF mux_2x1_Wbits IS

    BEGIN

    PROCESS(a,b,sel)

    BEGIN

    IF (sel='0') THEN

    s

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Multiplexador 4-para-1 com canais de 1 bit

    s0

    a

    b

    sel(1..0)

    0

    1

    c

    d

    2

    3

    x

    a

    b

    Sel(0)

    0

    1

    y c

    d

    0

    1

    0

    1

    Sel(1)

    s

    Associao em srie

    de mux_2x1

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Modelando o mux_4x1 Entidade

    Vrias arquiteturas possveis

    Baseada em equaes lgicas

    Associao em srie de mux_2x1

    WHEN ... ELSE

    WITH ... SELECT

    IF-THEN-ELSE

    CASE

    ENTITY mux_4x1 IS

    PORT (a, b, c, d : IN BIT; -- data inputs

    sel : IN BIT_VECTOR(1 DOWNTO 0); -- selector

    s : OUT BIT); -- data output

    END mux_4x1;

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Modelando o mux_4x1 Arquitetura 1

    Baseada em equaes lgicas

    ARCHITECTURE arch_1 OF mux_4x1 IS

    BEGIN

    s

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Modelando o mux_4x1 Arquitetura 2

    Associao em srie de mux_2x1

    ARCHITECTURE arch_2 OF mux_4x1 IS

    -- Component declaration

    COMPONENT mux_2x1

    PORT (SIGNAL a, b : IN BIT; -- data inputs

    SIGNAL sel : IN BIT; -- selector

    SIGNAL s : OUT BIT); -- data output

    END COMPONENT;

    -- Signals declaration

    SIGNAL x,y : BIT;

    BEGIN

    -- Component instantiation

    u0 : mux_2x1 PORT MAP (a, b, sel(0), x);

    u1 : mux_2x1 PORT MAP (c, d, sel(0), y);

    u3 : mux_2x1 PORT MAP (x, y, sel(1), s);

    END arch_2;

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Modelando o mux_4x1 Arquitetura 3

    WHEN ... ELSE

    ARCHITECTURE arch_3 OF mux_4x1 IS

    BEGIN

    s

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Modelando o mux_4x1 Arquitetura 4

    WITH ... SELECT

    ARCHITECTURE arch_4 OF mux_4x1 IS

    BEGIN

    WITH sel SELECT

    s

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Modelando o mux_4x1 Arquitetura 5

    IF-THEN-ELSE ARCHITECTURE arch_5 OF mux_4x1 IS

    BEGIN

    PROCESS(a,b,c,d,sel)

    BEGIN

    IF sel(1) = '0' THEN

    IF sel(0) = '0' THEN

    s

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Modelando o mux_4x1 Arquitetura 6

    CASE ARCHITECTURE arch_6 OF mux_4x1 IS

    BEGIN

    PROCESS(a,b,c,d,sel)

    BEGIN

    CASE sel IS

    WHEN "00" => s s s s

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Circuitos somadores

    Meio somador (half adder) Arquitetura estrutural

    ENTITY half_adder IS

    PORT (a, b : IN BIT; -- data inputs

    s : OUT BIT; -- data output

    cout : OUT BIT); -- carry out

    END half_adder;

    --------------------------------------------------

    ARCHITECTURE structural OF half_adder IS

    BEGIN

    s

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Circuitos somadores

    RTL do meio somador (half adder)

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Circuitos somadores

    Somador completo (full adder) Arquitetura estrutural

    ENTITY full_adder IS

    PORT (a, b : IN BIT; -- data inputs

    cin : IN BIT; -- carry in

    s : OUT BIT; -- data output

    cout : OUT BIT); -- carry out

    END full_adder;

    --------------------------------------------------

    ARCHITECTURE structural OF full_adder IS

    BEGIN

    s

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Circuitos somadores

    RTL do somador completo (full adder)

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Circuitos somadores

    Somador ripple carry de W bits Entidade

    ENTITY adder_Wbits IS

    GENERIC(W : NATURAL := 4);

    PORT (a, b : IN BIT_VECTOR(W-1 DOWNTO 0); -- data inputs

    cin : IN BIT; -- carry in

    s : OUT BIT_VECTOR(W-1 DOWNTO 0); -- data output

    cout : OUT BIT); -- carry out

    END adder_wbits;

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Circuitos somadores

    Somador ripple carry de W bits Arq. Estrutural 1

    ARCHITECTURE arch_1 OF adder_Wbits IS

    -- Signals declaration

    SIGNAL carry : BIT_VECTOR(W DOWNTO 0); -- internal carry in

    BEGIN

    carry(0)

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Circuitos somadores

    Somador ripple carry de W bits Arq. Estrutural 2 ARCHITECTURE arch_2 OF adder_Wbits IS

    -- Component declaration

    COMPONENT full_adder IS

    PORT (a, b : IN BIT; -- data inputs

    cin : IN BIT; -- carry in

    s : OUT BIT; -- data output

    cout : OUT BIT); -- carry out

    END COMPONENT;

    -- Signals declaration

    SIGNAL carry : BIT_VECTOR(W DOWNTO 0); -- internal carry in

    BEGIN

    carry(0)

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Circuitos somadores

    RTL do somador ripple carry com W = 4bis

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Circuitos somadores

    Utilizando o operador + do pacote std_logic_unsigned

    LIBRARY IEEE;

    USE IEEE.std_logic_1164.ALL;

    USE IEEE.std_logic_unsigned.ALL;

    ENTITY adder_unsigned_Wbits IS

    GENERIC(W : NATURAL := 4);

    PORT (a, b : IN STD_LOGIC_VECTOR(W-1 DOWNTO 0); -- data inputs

    s : OUT STD_LOGIC_VECTOR(W-1 DOWNTO 0)); -- data output

    END adder_unsigned_Wbits;

    ------------------------------------------------------------------

    ARCHITECTURE behavior OF adder_unsigned_Wbits IS

    BEGIN

    s

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Circuitos somadores

    Utilizando o operador + do pacote std_logic_unsigned

    LIBRARY IEEE;

    USE IEEE.std_logic_1164.ALL;

    USE IEEE.std_logic_unsigned.ALL;

    ENTITY adder_unsigned_Wbits_carried IS

    GENERIC(W : NATURAL := 4);

    PORT (a, b : IN STD_LOGIC_VECTOR(W-1 DOWNTO 0); -- data inputs

    s : OUT STD_LOGIC_VECTOR(W-1 DOWNTO 0); -- data output

    cout : OUT STD_LOGIC); -- carry out

    END adder_unsigned_Wbits_carried;

    -------------------------------------------------------------------

    ARCHITECTURE behavior OF adder_unsigned_Wbits_carried IS

    SIGNAL result : STD_LOGIC_VECTOR(W DOWNTO 0);

    BEGIN

    result

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Circuito comparador

    LIBRARY IEEE;

    USE IEEE.std_logic_1164.ALL;

    USE IEEE.std_logic_unsigned.ALL;

    ENTITY comparator_Wbits IS

    GENERIC(W : NATURAL := 4);

    PORT (a, b : IN STD_LOGIC_VECTOR(W-1 DOWNTO 0); -- data inputs

    eq : OUT STD_LOGIC; -- a = b

    gt : OUT STD_LOGIC; -- a > b

    lt : OUT STD_LOGIC); -- a < b

    END comparator_Wbits;

    ------------------------------------------------------------------

    ARCHITECTURE behavior OF comparator_Wbits IS

    BEGIN

    lt

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Circuito comparador

    Nmeros de 4 bits sem sinal [0,15]

    Nmeros de 4 bits com sinal [-8, 7]

  • Modelagem de Circuitos Seqencias em VHDL

    Blocos construtivos bsicos Inferncia de flip-flops Registradores Contadores Mquinas de Estado

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Circuitos Seqenciais

    So aqueles cujas sadas dependem do estado atual e

    passado das entradas

    Exemplos:

    Registradores

    Contadores

    Mquinas de Estado

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Arquitetura genrica de um circuito seqencial

    Registrador de Estado

    Circuito Combinacional

    Entradas Sadas

    Prximo

    Estado

    Estado

    Atual

    Funo de Transio

    de Estado

    Funo de

    Sada

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Blocos construtivos bsicos

    Latches

    Flip-flops

    D Q

    ENA

    D Q

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Latch transparente

    ENTITY latch_d IS

    PORT (d : IN BIT; -- data input

    ena : IN BIT; -- enable

    q : OUT BIT); -- data output

    END latch_d;

    ---------------------------------------

    ARCHITECTURE behavior OF latch_d IS

    BEGIN

    PROCESS(d,ena)

    BEGIN

    IF (ena = '1') THEN

    Q

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Latch com clear ENTITY latch_d_clear IS

    PORT (d : IN BIT; -- data input

    ena : IN BIT; -- enable

    clrn: IN BIT; -- clear

    q : OUT BIT); -- data output

    END latch_d_clear;

    -----------------------------------------

    ARCHITECTURE behavior OF latch_d_clear IS

    BEGIN

    PROCESS(d,ena,clrn)

    BEGIN

    IF (clrn = '0') THEN

    Q

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Flip-flop D (gatilhado pela borda de subida do clock)

    D Q

    ENTITY ff_d IS

    PORT (d : IN BIT; -- data input

    clk : IN BIT; -- clock

    q : OUT BIT); -- data output

    END ff_d;

    ---------------------------------------

    ARCHITECTURE arch_1 OF ff_d IS

    BEGIN

    PROCESS

    BEGIN

    WAIT UNTIL clk='1';

    Q

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Flip-flop D (gatilhado pela borda de subida do clock)

    D Q

    ENTITY ff_d IS

    PORT (d : IN BIT; -- data input

    clk : IN BIT; -- clock

    q : OUT BIT); -- data output

    END ff_d;

    ---------------------------------------

    ARCHITECTURE arch_2 OF ff_d IS

    BEGIN

    PROCESS(clk)

    BEGIN

    IF (clk'EVENT AND clk='1') THEN

    Q

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Flip-flop D

    D Q

    LIBRARY IEEE;

    USE IEEE.std_logic_1164.ALL;

    ENTITY ff_d_std_logic IS

    PORT (d : IN STD_LOGIC; -- data input

    clk : IN STD_LOGIC; -- clock

    q : OUT STD_LOGIC); -- data output

    END ff_d_std_logic;

    ---------------------------------------------

    ARCHITECTURE arch_1 OF ff_d_std_logic IS

    BEGIN

    PROCESS(clk)

    BEGIN

    IF rising_edge(clk) THEN

    Q

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Flip-flop D com clear ENTITY ff_d_clear IS

    PORT (d : IN BIT; -- data input

    clk : IN BIT; -- clock

    clrn: IN BIT; -- clear

    q : OUT BIT); -- data output

    END ff_d_clear;

    ---------------------------------------

    ARCHITECTURE arch_1 OF ff_d_clear IS

    BEGIN

    PROCESS(clk,clrn)

    BEGIN

    IF (clrn='0') THEN

    Q

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Flip-flop D com clear e enable ENTITY ff_d_clear_ena IS

    PORT (d : IN BIT; -- data input

    clk : IN BIT; -- clock

    clrn: IN BIT; -- clear

    ena : IN BIT; -- enable

    q : OUT BIT); -- data output

    END ff_d_clear_ena;

    ----------------------------------------

    ARCHITECTURE arch_1 OF ff_d_clear_ena IS

    BEGIN

    PROCESS(clk,clrn)

    BEGIN

    IF (clrn='0') THEN

    Q

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Inferncia de flip-flops

    Quando flip-flops sero inferidos para reg1.vhd?

    ENTITY reg1 IS

    PORT ( d : IN BIT;

    clk : IN BIT;

    q : OUT BIT);

    END reg1;

    ------------------------------------

    ARCHITECTURE arch_1 OF reg1 IS

    SIGNAL a, b : BIT;

    BEGIN

    PROCESS(clk)

    BEGIN

    IF (clk'EVENT AND clk='1') THEN

    a

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Inferncia de flip-flops

    Quando flip-flops sero inferidos reg1.vhd?

    D Q D Q D Q

    clk

    d a b

    q

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Inferncia de flip-flops

    Quando flip-flops sero inferidos para reg2.vhd?

    ENTITY reg2 IS

    PORT ( d : IN BIT;

    clk : IN BIT;

    q : OUT BIT);

    END reg1;

    ------------------------------------

    ARCHITECTURE arch_1 OF reg2 IS

    SIGNAL a, b : BIT;

    BEGIN

    PROCESS(clk)

    BEGIN

    IF (clk'EVENT AND clk='1') THEN

    a

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Inferncia de flip-flops

    Quando flip-flops sero inferidos reg1.vhd?

    D Q D Q

    clk

    d a b

    q = b

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Inferncia de flip-flops

    Quando flip-flops sero inferidos para reg3.vhd?

    ENTITY reg3 IS

    PORT ( d : IN BIT;

    clk : IN BIT;

    q : OUT BIT);

    END reg1;

    ------------------------------------

    ARCHITECTURE arch_1 OF reg3 IS

    BEGIN

    PROCESS(clk)

    VARIABLE a, b : BIT;

    BEGIN

    IF (clk'EVENT AND clk='1') THEN

    a := d;

    b := a;

    q

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Inferncia de flip-flops

    Quando flip-flops sero inferidos reg3.vhd?

    D Q

    clk

    d q

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Registradores

    Registrador Paralelo-Paralelo de W bits

    D Q

    CLRN

    ENA

    D Q

    CLRN

    ENA

    D Q

    CLRN

    ENA

    ena

    clk

    clrn

    d(W-1) d(1) d(0)

    q(0) q(1) q(W-1)

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Registradores

    Registrador Paralelo-Paralelo de W bits

    ENTITY reg_pp_Wbits IS

    GENERIC(W : NATURAL := 4);

    PORT (d : IN BIT_VECTOR(W-1 DOWNTO 0);-- data input

    clk : IN BIT; -- clock

    clrn: IN BIT; -- clear

    ena : IN BIT; -- enable

    q : OUT BIT_VECTOR(W-1 DOWNTO 0));-- data output

    END reg_pp_Wbits;

    ARCHITECTURE arch_1 OF reg_pp_Wbits IS

    BEGIN

    PROCESS(clk,clrn)

    BEGIN

    IF (clrn='0') THEN

    q '0');

    ELSIF (clk'EVENT AND clk='1') THEN

    IF (ena='1') THEN

    q

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Registradores

    Registrador Paralelo-Paralelo de W bits

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Contadores

    Incrementador de W bits

    Aplicao tpica: Program Counter (PC)

    CLRN Ena Load Qf

    0 X X 0

    1 0 X Qa

    1 1 D

    0 Qa+1

    D(W-1..0)

    CLRN

    ENA

    Q(W-1..0)

    LOAD

    CLRN assncrono

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Contadores

    Incrementador de W bits Entidade

    LIBRARY IEEE;

    USE IEEE.std_logic_1164.ALL;

    USE IEEE.std_logic_unsigned.ALL;

    ENTITY counter_Wbits IS

    GENERIC(W : NATURAL := 4);

    PORT (d : IN STD_LOGIC_VECTOR(W-1 DOWNTO 0);-- data input

    clk : IN BIT; -- clock

    clrn: IN BIT; -- clear

    ena : IN BIT; -- enable

    load: IN BIT; -- load

    q : BUFFER STD_LOGIC_VECTOR(W-1 DOWNTO 0));-- data

    output

    END counter_Wbits;

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Contadores

    Incrementador de W bits Arquitetura

    ARCHITECTURE arch_1 OF counter_Wbits IS BEGIN

    PROCESS(clk,clrn)

    BEGIN

    IF (clrn='0') THEN

    q '0');

    ELSIF (clk'EVENT AND clk='1') THEN

    IF (ena='1') THEN

    IF (load='1') THEN

    q

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Contadores

    Incrementador de W bits

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Mquinas de Estado

    Mquina de Moore mnima

    S0

    0

    S1

    1

    go

    /go

    back

    /back

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Mquinas de Estado

    Mquina de Moore mnima Entidade e Arquitetura

    ENTITY fsm_go_back IS

    PORT (clk : IN BIT; -- clock

    clrn: IN BIT; -- clear

    go : IN BIT; -- input 1

    back: IN BIT; -- input 2

    q : OUT BIT); -- output

    END fsm_go_back;

    ARCHITECTURE arch_1 OF fsm_go_back IS

    TYPE state_type IS (s0, s1);

    SIGNAL state_reg : state_type;

    SIGNAL next_state: state_type;

    BEGIN

    -- next slides

    END arch_1;

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Mquinas de Estado

    Mquina de Moore mnima Registrador de estado

    p_state_reg: PROCESS(clk,clrn)

    BEGIN

    IF (clrn='0') THEN

    state_reg

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Mquinas de Estado

    Mquina de Moore mnima Funo de transio de estado

    p_next_state: PROCESS(state_reg)

    BEGIN

    CASE (state_reg) IS

    WHEN s0 => IF (go='1') THEN

    next_state

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Mquinas de Estado

    Mquina de Moore mnima Funo de sada

    -- Output

    q

  • Consideraes Finais

  • Projeto a partir de VHDL Thiago Felski Pereira, UNISUL/2014

    Para saber mais

    Referncia

    DAMORE, Roberto. VHDL: descrio e sntese de circuitos digitais. Rio de Janeiro: LTC, 2012 (na Saraiva por R$ 142,00)

    Muitos outros livros internacionais (mais caro$)

    Repositrio

    The Hamburg VHDL Archive

    http://tams-www.informatik.uni-hamburg.de/vhdl/

    Livros e tutoriais gratuitos

    Artigos

    Modelos (8051, DLX, Leon, ...)

    Ferramentas (Compiladores, Editores, Visualizadores)