tutorial: diseño digital con lenguajes de descripción...

64
Tutorial: Diseño digital con lenguajes de descripción material (VHDL) Dr. Andrés David García García Departamento de Mecatrónica Escuela de Diseño, Ingeniería y Arquitectura Campus Estado de México

Upload: dangnguyet

Post on 05-Feb-2018

224 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Tutorial: Diseño digital con

lenguajes de descripción material

(VHDL)

Dr. Andrés David García García

Departamento de Mecatrónica

Escuela de Diseño, Ingeniería y Arquitectura

Campus Estado de México

Page 2: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Introducción: Justificación de los HDL’s

Debido a los rápidos avances en las tecnologías de integración

(semiconductores) de los C.I., la complejidad de los sistemas

digitales ha aumentado rápidamente en los últimos 30 años.

Objetivos:

Reducir tiempos y costos de fabricación

Reducir tamaños de PCBs

Aumentar la eficiencia de los dispositivos

2

Page 3: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Introducción: Evolución Tecnológica

De los transistores hacia el diseño VLSI:

Solución: Hardware Description Languages (HDLs) 3

Q1

PN2222

Q1_bis

PN2222

A

B

Q2

PN2222

INT

Q3

PN2222

INT1

Q4

PN2222

INT2

R1

4k

R2

1k

R3

130

R4

1.6k

VDD

C1

0.1n1

2

OUTV2

TD = 0.1u

TF = 0.15uPW = 6uPER = 13u

V1 = 5V

TR = 0.15u

V2 = 0V

V3

TD = 0.1u

TF = 0.15uPW = 13uPER = 26u

V1 = 5V

TR = 0.15u

V2 = 0V

GND

V5

5VdcD3

D1N4004

0

VV

V

Page 4: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Introducción: Surgimiento de VHDL

1980

El departamento de defensa de los Estados Unidos de América lanza un

concurso público con el propósito de crear una metodología de diseño de

circuitos de fácil documentación (self-documenting):

Común para cualquier diseñador,

Independiente tecnológicamente,

Re-utilizable en nuevas tecnologías de semiconductor.

El proyecto se fundó dentro del programa VHSIC (Very High Speed

Integrated Circuits) y bajo la bandera de la IEEE con el fin de generar un

HDL estándar.

Resultado: VHDL

4

Page 5: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Introducción: Surgimiento de VHDL

1983

VHDL: Desarrollado inicialmente con la colaboración de IBM, TI, e

Intermetrics.

Grupo de trabajo de personas con experiencia en lenguajes de alto nivel

y diseño en metodología “top-down”.

VHDL: Metodología de diseño y manipulación de la información estándar.

Facilita desarrollar, actualizar e implementar sistemas electrónicos

digitales. Adaptable a nuevas tecnologías una vez que la tecnología

actual se haya vuelto obsoleta.

1987

El Departamento de Defensa de EUA impone el uso de VHDL.

La IEEE avala el estándar de VHDL bajo el número: IEEE1076.

Avión-caza F-22, primer proyecto donde se exigió utilizar VHDL.

5

Page 6: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Introducción: Surgimiento de VHDL

1987

Los fabricantes de herramientas de diseño electrónico EDA (Electronic

Design Automation) comienzan a desarrollar software de diseño y

simulación bajo este estándar industrial.

1993

Se realiza la primera revisión del estándar, lo que tiene como

consecuencia una nueva versión del mismo: IEEE 1076 ’93

1996

Nuevas herramientas comerciales de simulación y síntesis lógica salen al

mercado cumpliendo con la nueva versión del estándar IEEE 1076’93

Incremento exponencial del uso de VHDL en la industria para el diseño de

C.I. bajo una metodología “Top-Down”.

Desarrollo de librerías del estándar IEEE 1076.3 que permite la

portabilidad de los diseños entre distintos fabricantes de EDA’s.

El estándar IEEE 1076.4 se complementa con librarías para modelar

estructuras de circuitos ASIC y FPGAs: VITAL(VHDL Initiative Towards

ASIC Libraries). 6

Page 7: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

¿Para qué sirven los HDL?

7

1 si A = 0

0 si A = 1

A Z A

Z

A Z

Modelización Simulación Síntesis lógica

Page 8: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

HDLs: Características

Inspirado en lenguajes de programación de altonivel como C, o C++ (Software) para modelar ydescribir funciones que serán implementadasfísicamente (Hardware)

Existen 2 aspectos importantes en la descripciónde Hardware que se facilitan con el uso deHDLs:

Modelado del comportamiento abstracto del circuito

Modelado estructural a nivel físico

8

Page 9: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

HDLs: Niveles de abstracción

9

Los modelos de alto nivel permiten

describir de forma abstracta la función

del HW

Los modelos de bajo nivel describen

con mas detalle las estructuras del

HW

Page 10: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Descripción comportamental

10

Page 11: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Descripción RTL

11

Page 12: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Nivel compuertas lógicas

12

Page 13: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Nivel de abstracción

VHDL permite codificar un algoritmo (como un lenguaje de alto

nivel).

Los diferentes niveles de abstracción del código permiten realizar

una concepción descendente TOP-DOWN.

El nivel RTL (Register Transfer Logic) donde los registros son

identificados es sintetizable. Después de la síntesis, la herramienta

genera la netlist, es decir, el HDL Estructural con los componentes

de la biblioteca.

13

S=fft(e,64) radix1 radix2 radix3

Síntesis

lógicaNivel 1 Nivel 2 Nivel RTL netlist

registros biblioteca

Page 14: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Módulos y jerarquía: Diseño Top-Down

Partición en varias partes del diseño

Reducción de la complejidad material

Permite el trabajo en red de diseñadores

Permite el estudio de soluciones alternativas

Permite la creación de macros en software

Permite la creación de modelos de simulación genéricos

14

Page 15: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Características de VHDL

VHDL: Proximidad con las herramientas de diseño

asistido por computadora (CAD):

Relación implícita con lenguajes de alto nivel como C.

Facilidad de documentar.

Código portátil (se puede usar en diferentes

tecnologías o procesos).

NO ES UN LENGUAJE COMPUTACIONAL

15

Page 16: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Estructura del lenguaje

16

Cinco unidades de diseño sintetizables:

Entity

Architecture

Package declaration

Package body

Configuration

La Entidad, el Empaquetado y la

Configuración son unidades principales

de diseño, visibes dentro de la librería.

Una librería es un conjunto de unidades

de diseño.

La Arquitectura y el Cuerpo del

Empaquetado son unidades de diseño

secundarias y no son visibles dentro de

la librería.

Un archivo de descripción en VHDL

consiste de una Entidad y una

Arquitectura.

Compilador

Editor de Conexiones

E A P B C

Librería

elaboración

Page 17: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

VHDL: Unidades de diseño y síntesis

Entity: Descripción de la interfaz con el mundo exterior. Aquí sedefinen las terminales que permiten a una unidad de diseñocomunicarse con otras, engloba a a las terminales de Entrada,Salida, y Bidireccionales definidas en la declaración de “puertos”, ycualquier parámetro o modelo general definido en la declaración de“genéricos”.

Architecture: Descripción de la funcionalidad del circuito,descripción de la estructura del diseño, puede ser descrita encualquiera de los niveles de abstracción (comportamenta, RTL onivel de compuertas lógicas).

17

Entidad del Circuito

Arquitectura

Page 18: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

VHDL: Unidades de diseño y síntesis

Package declaration: Archivo que concentra las declaracionesrecurrentemente utilizadas dentro de una serie de diseños (tipos dedatos, sub-programas, sub-rutinas) que serán accesibles a múltiplesunidades de diseño.

Package body: Contiene la definición de los sub-programas, sub-rutinas, funciones y procesos declarados en el Empaquetado.

Configuration: Asocia la Entidad a la Arquitectura para formar loscomponentes de un diseño. Permite asociar una Entidad a distintasversiones de la Arquitectura sintetizadas, lo que permite modificar lafuncionalidad sin modificar la estructura externa del circuito.

18

Page 19: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Estructura de un código en VHDLLibrary IEEE;use IEEE.std_logic_1164.ALL;

entity NAME_OF_ENT isPort ( NAME, NAME : in type of input;

NAME, NAME: out type of output;NAME : bidir type of bidir);

end NAME_OF_ENT;

architecture NAME_OF_ARC of NAME_OF_ENT issignal SIG_A, SIG_B : type of signal;variable VAR_A, VAR_B : type of variable;constan CONS_A: type of constant;type NAME_OF_TYPE is (values of type);component NAME_OF_COMP is

port ( ……….; in type of input:………..: out type of output);

end component NAME_OF_COMP;Begin------ concurrent instruction ----------;------ concurrent instruction ----------;end NAME_OF_ARC;

Definición de Librerías

Declaración de la Entidad

Definición de la Arquitectura

Declaraciones de:

signalsconstantsvariablescomponentstypes

Page 20: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Estructura de un código en VHDL:

Arquitectura architecture NAME_OF_ARC of NAME_OF_ENT issignal SIG_A, SIG_B : type of signal;variable VAR_A, VAR_B : type of variable;constan CONS_A: type of constant;type NAME_OF_TYPE is (values of type);component NAME_OF_COMP is

port ( ……….; in type of input:………..: out type of

output);end component NAME_OF_COMP;

Begin------ concurrent instruction ----------;------ concurrent instruction ----------;

process (list of sensibility)begin------ sequential instructions -----;------ sequential instructions -----;end process;

------ concurrent instruction ----------;end NAME_OF_ARC;

Configuración

Declaraciones :

signalsconstantsvariablescomponentstypes

Proceso (instrucción

concurrente)

Page 21: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Instrucciones concurrentes

VHDL permite describir una función materal con la ayuda de

instrucciones concurrentes.

Un process es un tipo de instrucción concurrente (también lo son

los procedures y las functions.

Las señales se usan para contectar entre si los procesos

(síncronos y combinatorios) y las instrucciones concurrentes:

21

Proceso

síncronoseñales

procesos

combin.

procesos

combin.

CLK

A

S1

C

B

instr concurrente

instr concurrenteS2

S3

Page 22: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Estructura de VHDL

22

C <= A and B;

E <= C or D;

A, B , C, D : señales

Señal : tipo correspondiente a

las señales en sistemas físicos

(cables)

Operador “señal”

AB

C

DE

Instrucción concurrente:

Instrucciones “paralelas”

para que el simulador

tome en cuenta el

tiempo de propagación

de las señales dentro de

un circuito.

Page 23: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Asignación Concurrente:

Dentro de una arquitectura podemos asignar un valor a

una señal (cable), a una variable (nodo R/W) o a una

constante (nodo R).

Las asignaciones concurrentes dentro de una

arquitectura de ejecutan al mismo tiempo (no es un

código síncrono):

VAR := VAR + ‘1’;

SIG <= SIG + ‘1’;

Las instrucciones concurrentes tales como los “process”

son pedazos de código secuencial y solo se ejecutan

cuando se cumplen sus condiciones de activación (lista

de sensibilidad).23

Page 24: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Señales/variables

24

ENTITY mux IS

PORT (a, b, c, selx, sely : IN BIT;

data_out : OUT BIT);

END mux;

ARCHITECTURE ex OF mux IS

SIGNAL sig : BIT;

BEGIN

sig <= a and selx or b and not(selx);

process_b: PROCESS(sig,b, c, sely)

VARIABLE var : BIT;

BEGIN

var := ‘ 0 ’;

IF (sely = ‘0’) THEN

var := '1';

ELSIF (sig = '1') THEN

var := c;

ELSE

var := '0';

END IF;

data_out <= var xor b;

END PROCESS process_b;

END ex;

La señal sig es conocida

En toda la arquitectura.La variable var es local (solo en el process).

Esta se actualiza instantáneamente.

La señal se actualiza al final del proceso

Page 25: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Procesos (Process)

Un proceso es una instrucción concurrente definidacon la ayuda de instrucciones secuenciales internas alproceso.

El proceso se activa si al menos una de las señales dela lista de sensibilidad cambia de estado lógico.

25

Ejemplo :

P1 : process(X,Y)

begin

if X=‘ 1 ’ then

Z <= Y;

else

Z <= ‘ 0 ’;

end if;

end process P1;

X

YZ

Lista de sensibilidad

Page 26: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Objetos:

26

Los objetos deben ser declarados antes de ser utilizados

Los puertos, señales, variables y constantes deben ser tipos

(integer, real, natural, …)

La conversión implícita de tipos es imposible, se deben crear

funciones de conversión

Signal

Port

variable

constant

function

procedure

component

Page 27: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Tipología

27

Las señales, variables y constantes deben pertencer a

un tipo. Con la biblioteca STD, los tipos son:

Files AccessComposite

Array

Record

Scalar

Enumerated

Real Integer

Physical

INTEGER

NATURAL

POSITIVE

BIT_VECTOR

BIT

BOOLEAN

Page 28: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Instrucción de afectación. Combinatorios

28

S <= c and ((a and not(sel)) or (b and sel));

Para el siguiente circuito : sel

mux

a

b

c

s

Una instrucción de afectación permite codificar directamente la

ecuación lógica :

Page 29: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Instrucción de afectación condicional

WHEN...ELSE

29

La afectación de la señal s depende de

condiciones descritas despues del WHEN :

s <= '0 ’ when c = '0' else

a when sel = '0' else

b when sel = '1' else

'0';

sel

mux

a

b

c

s

Page 30: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Instrucción de afectación condicional

WITH ... SELECT

30

LIBRARY ieee;

USE ieee.std_logic_1164.all;

ENTITY toto IS

port(a,b,c,sel: in std_logic;

s: out std_logic);

END toto;

ARCHITECTURE behavior OF toto IS

BEGIN

with sel select

S <= (a and c) when '0',

(b and c) when OTHERS;

END behavior;

La expresión que sigue al WITH se evalúa y permite la afectación

condicional de la señal s :

Nota : esta instrucción permite codificar fácilmente un multiplexor

sel

mux

a

b

c

s

Page 31: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Ejemplo: Full Adder

31

entity FullAdder is

port (X, Y, Cin: in bit; -- entradas

Cout, Sum: out bit ); -- salidas

end FullAdder;

palabras

reservadas

comentarios

FullAdderX

Y

Cin

Sum

Cout

Page 32: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Ejemplo: Full Adder

32

architecture ecuaciones of FullAdder is

begin

Sum <= X xor Y xor Cin;

Cout <= (X and Y) or (X and Cin) or (Y and Cin);

end ecuaciones;

Nombre de la

Arquitectura (arbitrario)

Arquitectura perteneciente

a la entidad FullAdder

(MISMO NOMBRE)

Page 33: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Componentes

Si ya tenemos una “biblioteca” concomponentes ya diseñados (FA´s, MUX´s, …),podemos utilizarlos para el diseño de otrossistemas que necesiten estos componentes yadiseñados.

Se habla de “instanciamiento” de componentes:crear “copias” de un componente paraimplementar un sistema más complejo.

33

Page 34: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Ejemplo: Full Adder de 4 bits

34

FullAdder FullAdder FullAdder FullAdderCi

A(0) B(0)A(1)A(2)A(3) B(1)B(2)B(3)

S(0)S(1)S(2)S(3)

C(1)C(2)C(3)Co

entity

Page 35: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Ejemplo: Full Adder de 4 bits

35

entity Adder4 is

port (A, B : in bit_vector (3 downto 0); --entradas

Ci : in bit; --entrada

S : out bit_vector (3 downto 0); --salidas

Co : out bit ); --salida

end Adder4; Señales vectoriales A, B y S

formadas por 4 bits

4

4

A

B

Ci

4S

Co Adder4

Page 36: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Ejemplo: Full Adder de 4 bits

36

architecture estructura of Adder4 is

component FullAdder

port (X, Y, Cin : in bit; --entradas

Cout, Sum : out bit); --salidas

end component;

signal C : bit_vector (3 downto 1) ; --señal interna que comunica

--los componentes FullAdder

begin --intanciar 4 copias de FullAdder

FA0 : FullAdder port map ( A(0), B(0), Ci, C(1), S(0) );

FA1: FullAdder port map ( A(1), B(1), C(1), C(2), S(1) );

FA2: FullAdder port map ( A(2), B(2), C(2), C(3), S(2) );

FA3: FullAdder port map ( A(3), B(3), C(3), Co, S(3) );

end estructura;

instancias

de FullAdder

FullAdder

es un

componente

Page 37: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

La construcción de tipos y sub-tipos

37

type COLORES is (ROJO, AMARILLO, AZUL, VERDE, NARANJA);

type BOOLEAN is (FALSE, TRUE);

type BIT is ('0', '1');

type UN_A_DIX is range 1 to 10;

type DIX_A_UN is range 10 downto 1;

type TAB1 is array (0 to 31) of BIT;

type TAB2 is array (0 to 1023, 0 to 31) of BIT;

type BIT_VECTOR is array (NATURAL range <>) of BIT;

subtype NATURAL is INTEGER range 0 to INTEGER'HIGH;

subtype POSITIVE is INTEGER range 1 to INTEGER'HIGH;

subtype UNO_A_DIEZ is NATURAL range (1 to 10);

subtype DIEZ_A_UNO is NATURAL range (10 downto 1);

Tipos diferentes

Herencia de

propiedades de

tipo

Page 38: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Los operadores

38

Lógicos

Relacionales

Aditivos

De signo

Multiplicativos

Diversos

and, or, nand, nor, xor

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

+, -

& (concatenación)

+, -

*, /, mod, rem

A = (A / B) * B + (A rem B)

signe(A rem B) = signe(A)

abs(A rem B) < abs(B)

(-A) / B = -(A / B) = A / (-B)

N, A = B * N + (A mod B)

signe(A mod B) = signe(B)

abs(A mod B) < abs(B)** (exponente)

abs (valor absoluto)

not (negación)

Nota: Cualquier operador que implique un operador aritmético requerirá de la librería correspondiente.

Page 39: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Bibliotecas y Librerías

39

En VHDL es posible utilizar componentes, funciones yprocesos descritos previamente por otros diseñadores opor las empresas que usan este estándar.

Estas unidades estarán almacenadas en una biblioteca(librería) que puede ser agregada al proyecto con el finde utilizar sus componentes en un nuevo diseño.

Los componentes se sintetizan dentro de la librería detrabajo

El nombre lógico para una librería de trabajo es “work”.La localización física de este repertorio debe serespecificada en la herramienta que se utilice.

Normalmente, las herramientas de diseño con VHDLdefinen y usan la librería “work” automáticamente.

Page 40: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Bibliotecas

40

• Para utilizar los componentes de una librería, ésta debe ser especificada como se muestra:

• “Work” y “Standard” (o STD) son librerías siempre visibes, es decir, no se requieren especificar dentro del código VHDL

• Todos los tipos de datos y funciones predefinidas en el estándar VHDL se localizan dentro del standard package que se localiza en la librería: std library

• Bit, bit vector, character, string, time, integer, …

library <library_name>;

use <library_name>.<package_name>.ALL;

library work;

Library std;

use std.standard.ALL;

No necesitan ser especificadas

Page 41: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Library

41

Otras librerías o empaquetados requieren ser

especificados al inicio del código en VHDL: std_logic

std_ulogic,

std_logic_vector

std_ulogic_vector

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

entity …

package std_logic_1164 defined by IEEE

Library ieee

Page 42: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Bibliotecas

42

Bibliotecas de ALTERA :

Biblioteca Empaquetado DescripciónALTERA maxplus2 primitivos y macros ALTERA

megacore megafunciones

LPM lpm_components megafonciones LPM

IEEE std_logic_1164 declaración de tipo STD_LOGIC

std_logic_unsigned aritmética con vectores sin signo

std_logic_signed aritmética con vectores con signo

std_logic_arith declaración de tipos UNSIGNED y SIGNED. Funciones aritméticas y de conversión

La biblioteca “WORK” corresponde al repertorio de trabajo

del usuario:

Page 43: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Biblioteca LPM de ALTERA

43

Compuertaslpm_and lpm_inv lpm_bustri lpm_mux

lpm_clshift lpm_or lpm_constant lpm_xor lpm_decode

Circuitos aritméticoslpm_abs lpm_counter lpm_add_sub lpm_mult

lpm_compare

Memoriascsfifo lpm_ram_dq csdpram lpm_ram_io

lpm_dff lpm_rom lpm_latch lpm_tff

Estándar industrial para los parámetros y E/S de funciones

lógicas

Código optimizado para las arquitecturas ALTERA

Xilinx tiene su propia biblioteca LPM

Page 44: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

VHDL para circuitos digitales

44

salidas

Combinatorio :

Secuencial :

lógicaentradas

Estado_flógica

entradas D

CLK

estado

Resultado para lógica secuencial

Page 45: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Lógica combinatoria

Con la ayuda de una instrucción concurrente de

afectación. (vistos previamente)

Con la ayuda de un proceso (process)

Con la ayuda de instanciación de componentes (código

estructural o jerárquico)

45

Hay varios estilos de codificación:

Page 46: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Proceso (Process)

Un proceso es una “subrutina” dentro de la arquitectura que solo se efectúa (activa) cuando algunas de las señales internas a éste cambian de estado.

Sintaxis:process (lista de sensibilidad)

begin

instrucciones combinatorias o

secuenciales

end process;

46

Page 47: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Código dentro de un proceso

IF ... THEN

47

combi : process(a,b,c,sel)

begin

if c='0' then

s <= '0';

elsif sel='0' then

s <= a;

else

s <= b;

end if;

end process;

La lista de sensibilidad contiene todas

las entradas de la función

La afectación de S depende de las condiciones del

IF y ELSIF

sel

mux

a

b

c

s

Page 48: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Código dentro de un proceso

CASE …WHEN

48

combi : process(a,b,c,sel)

begin

case sel is

when '0' => s <= a and c;

when '1' => s <= b and c;

when others => null;

end case;

end process;

La expresión que sigue al CASE se evalua y

permite la afectación condicional de la señal s :

Note : Este código permite

construir facilmente un

multiplexor

sel

mux

a

b

c

s

Page 49: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Precauciones para procesos combinatorios

49

Conclusión : Nunca olvidar una señal de entrada a un proceso en la lista de

sensibilidad

combi :

process(a,b,c,sel)

begin

if c='0' then

s <= '0';

elsif sel='0' then

s <= a;

else

s <= b;

end if;

end process;

A

B

C

SEL

S

Que pasaría si c se omite de la lista de

de sensibilidad ?

1

Page 50: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Síntesis de un « latch »:

50

PROCESS(A,B)

BEGIN

IF A = '1' THEN

Q <= B;

-- ELSE

-- Q <= ‘ 0 ’;

END IF;

END PROCESS;

A

B

Q

Con ELSE : síntesis de una AND

Sin ELSE : síntesis de un LATCH

Cuando las condiciones no son muy precisas en las instrucciones

condicionales => memorisación se traduce como una síntesis en

flip-flops tipo "latch".

Nota : Un Flip-Flop D es preferible a un LATCH

B

A

D

E

QQ

Page 51: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Operaciones aritméticas

Por default sobre los tipos INTEGER

Sobre tipos STD_LOGIC, UNSIGNED,

STD_LOGIC_VECTOR y SIGNED utilizar la

biblioteca IEEE1164 con las sublibrerías:

51

std_logic_1164 Declaración de tipos STD_LOGIC y STD_LOGIC_VECTOR

std_logic_unsigned Aritmética de tipos STD_LOGIC_VECTOR sin signo

std_logic_signed Aritmética de tipos STD_LOGIC_VECTOR con signo

std_logic_arith Declaración de UNSIGNED y SIGNED.Funciones aritméticas y de conversión

Operaciones posibles : + , - , *La síntesis llama automáticamente a las macrofunciones LPM

Page 52: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Lógica Síncrona

52

Una sola solución : uso de un process síncronocon un solo reloj en la lista de sensibilidad

Estado_flógicaEntradas D

CLK

estado

Proceso síncrono

Estado_fLógicaentradas D

CLK

estado

Proceso síncrono= registro

Codigo de la

lógica

Por separado

ó

Page 53: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Lógica Síncrona

Los circuitos secuenciales siempre van acompañados de

una red combinacional.

Para una sintaxis VHDL “limpia” SIEMPRE DEBE

separarse la red combinacional de la parte secuencial

Los procesos secuenciales van siempre dentro de un

process

Los procesos combinatorios pueden asignarse dentro de

la Arquitectura, en un process, en una function o en un

procedure53

Page 54: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Proceso síncrono elemental

síntesis de un Flip-Flop D

54

PROCESS(CLK)

BEGIN

IF CLK’event and CLK = '1' THEN

Q <= D;

END IF;

END PROCESS;

CLK

D

Q

D QD

CLK

Q

Reloj únicamente Indicación del flanco de subida

Note : es mejor añadir el atributo ‘event

Aún cuando no sea muy útil

Page 55: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Flip-Flop D con RESET síncrono

55

PROCESS (CLK)

BEGIN

IF (CLK’event and CLK = '1')

THEN

IF N_RST = ‘0’ THEN

Q <= ‘0’;

ELSE

Q<= D;

END IF;

END IF;

END PROCESS;

D Q

CLK

QN_RST

D

CLK

N_RS

T

D

Q

Page 56: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Flip-Flop D con RESET asíncrono

56

PROCESS (CLK, N_RST)

BEGIN

IF N_RST = ‘0’ THEN

Q <= ‘0’;

ELSIF (CLK’event and CLK = ‘1’) THEN

Q<= D;

END IF;

END PROCESS;

CLK

N_RST

D

Q

Que pasaría si no hay clk´event ?

Añadir la señal de reset asíncrono

dentro de la lista de sensibilidad

D Q

CLK

Q

N_RST

D

La condición sobre el reset es prioritaria

Page 57: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Flip-Flop D con “enable”

57

PROCESS (CLK)

BEGIN

IF EN= ‘0’ THEN

NULL; -- Q <= Q;

ELSIF CLK’event and CLK = ‘1’ THEN

Q<= D;

END IF;

END PROCESS;

D

ENA

Q

CLK

QD

La condición sobre el “enable” tiene prioridad

EN

Físicamente, la señan de “enable” equivale a un FF cuya

entrada está controlada por un MUX

Page 58: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Ejemplo de lógica síncrona:

el contador

58

ARCHITECTURE ex OF compteur IS

SIGNAL CPT : STD_LOGIC_VECTOR(7 downto 0);

BEGIN

PROCESS (CLK)

BEGIN

IF clk = '1' THEN

IF LOAD = '1' THEN

CPT <= D;

ELSE

CPT <= CPT + '1';

END IF;

END IF;

END PROCESS;

S <= CPT;

END ex;

Estado_F D

CLK

Estado+1S

La lógica combinatoria

se codifica dentro del proceso

Síncrono usando CPT<= CPT+1

El número de F-F D generado

= dimensión de CPT

El empaquetado

ieee.std_logic_unsigned debe ser

declarado para aritmética de

números sin signo

Page 59: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Ejemplo de un FlipFlop JK

59

PROCESS(CLK, RST)

BEGIN

IF RST = ‘0’ THEN

Q <= ‘0’;

ELSIF CLK’event and CLK = '1' THEN

Q <= (J and not(Q)) or (not(K) and Q);

END IF;

END PROCESS;

Q_N <= not (Q);

J QJ

CLK

K

Q

K Q_NQ_N

Page 60: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Máquina de estados

60

Máquina de MOORE :

D

Entradas estado

CLK

Estado_F

Salidas

Proceso combinatorio : P2Proceso combinatorio : P3

Proceso síncrono : P1Ejemplo de código :

Page 61: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Máquina de estados

61

ARCHITECTURE Ejemplo OF maquina_de_cafe IS

type ST is (elección,pieza,moneda,cafe);

signal estado,estado_futuro : ST;

BEGIN

P1 : PROCESS(CLK)

...estado <= estado_futuro;

P2 : PROCESS(estado)

if (estado = x) then

...sorties <=

end if;

if (estado = y) then

P3 : PROCESS(entradas,estado)

...estado_futuro <=

END Ejemplo;

Creación de un tipo que

engloba la lista de estados

Page 62: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Ejemplo de máquina de estados

62

bas

MON

DES

alto

m d

S1

S3

S0

S2

m='1'

d='1'

alto='1'bajo='1'

MON='1'

DES='1'

Page 63: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Ejemplo de máquina de estados

63

type ST is (S0,S1,S2,S3);

signal estado,estado_f : ST;

P1: process(CLK)

begin

if(CLK='1') then

estado <= estado_f;

end if;

end process P1;

P2: process(estado)

begin

if(estado=S1) then

MON <= '1';

else

MON <='0';

end if;

if(estado=S3) then

DES<= '1';

else

DES<='0';

end if;

end process P2;

bas

MON

DES

alto

m d

S1

S3

S0

S2

m='1'

d='1'

alto='1'bajo='1'

MON='1'

DES='1'

P3: process(estadot,m,d,alto,bajo)

begin

case estado is

when S0 =>if (m='1') then

estado_f<=S1;

else estado_f<=estado;

end if;

when S1 => if (alto='1') then

estado_f<=S2;

else

estado_f<=estado;

end if;

when S2 => if (d='1') then

estado_f<=S3;

else

estado_f<=estado;

end if;

when S3 => if (bajo='1') then

estado_f<=S0;

else

estado_f<=estado;

end if;

end case;

end process P3;

Page 64: Tutorial: Diseño digital con lenguajes de descripción ...homepage.cem.itesm.mx/garcia.andres/PDF201411/Tutorial de VHDL.pdf · VHDL permite describir una función materal con la

Bibliografía sugerida:

Roth, Ch. Jr. Digital Systems Design Using VHDL.PWS Publishing Company, 2a Ed.

Roth, Ch. Jr. Fundamentals of Logic Design, PWS Publishing Company, 2a Ed.

Brown, Vranesic. Fundamentals of Digital Logic with VHDL, McGrawHill. 2nd edition.

K. C. Chang. “Digital Design and Modeling with VHDL and Synthesis”. IEEE computer society press.

Sjoholm, Lindh. “VHDL for Designers”. Prentice Hall

64