Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad...

80
VHDL VHDL V V ery ery H H igh speed integrated circuit igh speed integrated circuit H H ardware ardware D D escription escription L L anguage anguage Digital II – Ingeniería Electrónica Rosa Corti Rosa Corti

Transcript of Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad...

Page 1: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

VHDLVHDL

VVery ery HHigh speed integrated circuit igh speed integrated circuit HHardware ardware DDescription escription LLanguageanguage

Digital II – Ingeniería Electrónica

Rosa CortiRosa Corti

Page 2: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

Contenido

Dispositivos FPGALenguaje VHDL: Evolución y característicasUnidades de diseño básicas: Entidad y ArquitecturaSeñales en VHDLTipos de datos – Bibliotecas usualesDescripción de circuitos combinacionales

Sentencias de asignación concurrente Ejemplos

Descripción de circuitos secuencialesEl bloque ProcessRepresentación de la señal de relojSentencias algorítmicasEjemplos

Page 3: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

La Ley de MOORE

“ El número de transistores en un circuito integrado se podrá duplicar cada dos años”

3

Page 4: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

Dispositivos de lógica programable.

Mayor flexibilidad

10/09/2010 4

El usuario configura un dispositivo standard.

Personalización independiente de la fábrica

Entradas

Salidas

DESVENTAJA

Se desperdician recursos de pastilla

Page 5: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

FPGA: ¿ Cuál es la innovación introducida ??

Arquitectura extremadamente flexible de tecnología SRAM

Reprogramación simple y rápida en circuito Bloques lógicos programables

(CLB, LE)

Bloques I/O programables

Interconexión programable

10/09/2010 5

Page 6: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

FPGA: ¿ Cómo cambiar la lógica ?

PLD convencionales

LUT´s

FPGA10/09/2010 6

Page 7: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

Elementos básicos de la FPGA

Celdas o bloques lógicosLUT (Look Up Table) MultiplexorRegistro

10/09/2010 7

Page 8: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

Configuración de una FPGA:

BITSTREAM Los bits permanecen en el dispositivo que se configura

Un bit de configuración controla un switch de conexión o un bit de lógica

8

Page 9: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

Programación de un dispositivo

µP FPGA

Se cambian las conexiones y las funciones lógicas

Se cambian las instrucciones

Cambia el Software Cambia el Hardware

10/09/2010 9

Page 10: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

Evolución de las Arquitecturas

Virtex II y Virtex II Pro Spartan 2 y Virtex

Fuente: Publicaciones de la empresa Xilinx.10/09/2010 10

Page 11: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

FPGAs basadas en SRAM

1. Dispositivo de lógica programable estándar muy flexible

2. Personalizable por el usuario con ambientes EDA

programación en campo3. Arquitectura basada en SRAM

Pierden su configuración al cesar la energía4. Volátiles

Otras característicasOtras tecnologías de fabricación

10/09/2010 11

Page 12: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

Datos generales sobre FPGA´s

Algunas aplicaciones

Guitarras Gibson – sonido digitalVehículos de exploración de Marte (NASA)Módulo de control de Williams F1Misiles Tomahawk

XilinxAlteraAtmel

LatticeCypressActelQuicklogic

AlgunosFabricantes

Costo de los dispositivos

Desde menos de 10 dólares a varios cientos, dependiendo de las características, aún en la misma familia de dispositivos.

12

Page 13: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

Nivel RTL: Ingreso del diseño

Descripción esquemática Descripción VHDL

Descripción mixta10/09/2010 13

Page 14: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

Diseño digital

CI de gran nivel de integración

Nuevas metodologías para manejar la complejidad creciente de los diseños

Un lenguaje permite la edición más rápida y sencilla

Una descripción con esquemas resulta más fácil de entender10/09/2010 14

Page 15: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

Diseño digital

Lenguajes de Descripción de Hardware (HDL)

Permiten descripciones de alto nivel

La edición es rápida y sencilla

Soportados por herramientas EDA

Las herramientas EDA permitenintegrar distintos estilos de diseño

10/09/2010 15

Page 16: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

VHDL: Antecedentes históricos

Necesidad de estandarizar los diseños

DoD +IEEE Patrocinan el desarrollo en los 80´s

VHDL-87Es estándar de IEEE en 1987

VHDL-93El estándar se amplía en 1993

VHDL-01Modificaciones menores en 2001

Existen otros HDL populares como ABEL y VERILOG10/09/2010 16

Page 17: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

VHDL: Evolución

Se inicia como un leguaje de modelado y especificación.

DocumentaciónLigado a actividades de

Simulación

Luego se incorporan herramientas de síntesis capaces de manejar este tipo de descripciones

Ambientes integrados de diseño10/09/2010 17

Page 18: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

VHDL: Síntesis en FPGA

FPGA Ambientes CAD

SíntesisAtraviesa todos los niveles de abstracción de la descripción desde el más alto al más bajo

VHDL

Es un lenguaje para el modelado, simulación lógica dirigida por eventos y síntesis de sistemas de Hardware

10/09/2010 18

Page 19: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

Flujo de diseño VHDL orientado a FPGA

Análisis Código Síntesis Simulaciónfuncional

Mapeo, rutasy ubicación

Simulación post PAR

Bitstream

10/09/2010 19

Page 20: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

Programación de un dispositivo

µP FPGA

Se cambian las conexiones y las funciones lógicas

Se cambian las instrucciones

Cambia el Software Cambia el Hardware

10/09/2010 20

Page 21: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

VHDL VHDL

Construcciones bConstrucciones báásicassicas

Page 22: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

VHDL: Unidades de diseño básicas

10/09/2010 22

Componentes

DispositivoVHDLEntidad Arquitectura

Descripción comportamental

Declaración de I/O

Caja negra Caja blanca

Page 23: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

VHDL: Unidades de diseño básicas

10/09/2010 23

Diseño VHDL Entidad

Arquitectura

Archivo de texto

library IEEE;use IEEE.std_logic_1164.all;entity PuertaAnd is

port ( A, B:in std_logic;C: out std_logic );

end PuertaAnd;architecture arch_flu of PuertaAnd isbeginC <= A and B;end arch_flu;

AND

Page 24: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

Estructura de un diseño VHDL: Entidad

library IEEE;use IEEE.std_logic_1164.all;

entity PuertaAnd isport (A, B:in std_logic;

C: out std_logic );end PuertaAnd;

Declaración de bibliotecasVisibilidad de paquetes

Declaración de puertos

INTERFAZ

Da nombre al módulo y define su conexión con el exterior

10/09/2010 24

Page 25: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

Bibliotecas y unidades de diseño

Modelo VHDL

Bibliotecas VHDL

10/09/2010 25

Colecciones de unidades de diseño

Compuesto por unidades de diseño

Secciones mínimas de código compilables en forma independiente

Organizan el códigoPromueven el reuso

Page 26: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

Puertos de la entidad

port (nombre_señal : modo tipo_señal) ;

Modo Define cómo se lo utiliza

in: Entrada, se lee. No se le puede asignar valor.out: Salida, se le asigna valor. No se puede leer.inout: Entrada / Salida. CUIDADO !!buffer: Salida / Puede ser usado en el sistema (leído).

Define los valores y operaciones legalesTipo

10/09/2010 26

Page 27: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

Objetos VHDL: señales

a

b

c

d

s

nd

xnc

Modelan hilos de un circuito

SEÑALES

10/09/2010 27

Page 28: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

Objetos VHDL

Un objeto en VHDL es un elemento que contiene información de un tipo específico de

datos.SeñalesConstantesVariables

VHDL es un lenguaje fuertemente tipado.

10/09/2010 28

Page 29: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

VHDL: Tipos de datos

Un tipo de datos define los valores legales y los operadores aplicables para los objetos de ese tipo.

Tipos de datos escalares Sus valores constituyen una unidad indivisible

Sus valores pueden dividirse en unidades atómicas más pequeñasTipos de datos compuestos

No hay tipos propios del lenguaje, existen tipos

Bibliotecas del sistema

predefinidosSe pueden definir de datos en forma sencilla

10/09/2010 29

Page 30: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

VHDL: Tipos de datos

Tipos de datos predefinidos Biblioteca Standard (STD)

BITBOOLEANINTEGERREAL

Escalares Orientados a síntesis

Compuestos Bit_vector (n-1 downto 0)

Modela buses

Es un arreglo de n bits

10/09/2010 30

Page 31: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

Datos predefinidos: Ejemplos

DeclaraciónSignal valor: integer range 0 to 255;

Asignaciónvalor <= 128;

DeclaraciónSignal Bus1, Bus2: Bit_vector (7 downto 0);

Bus1 <= “11001010”;

Bus2 <= “11” & Bus1(6 downto 1);Asignación

Operador concatenación10/09/2010 31

Page 32: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

Datos definidos por el usuaro: Ejemplos

Escalar enumerado

Type desplazamiento is (arriba, abajo, izquierda, derecha);Signal puntero: desplazamiento;Puntero <= arriba;

Compuesto

Type memoria is array ( 0 to 63) of std_logic_vector(15 downto 0);Signal MiMem: memoria;Mimem (15) <= (others => ‘1’);Mimen (7) <= “1111000011110000”;

10/09/2010 32

Page 33: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

VHDL: Tipos de datos

Para representar situaciones reales en los circuitos, la IEEE definiódos tipos de datos multivaluados orientados a síntesis

Std_logic Modela líneas (escalar)

Std_logic_vector (n-1 downto 0) Modela buses (enumerado)

Los valores posibles en síntesis para un objeto de estos tipos son:

‘0’ valor bajo‘1’ valor alto‘Z’ alta impedancia

Biblioteca: IEEEPaquete: std_logic_1164

10/09/2010 33

Page 34: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

VHDL: Descripción de un circuito

library IEEE;use IEEE.std_logic_1164.all;entity circuito is

port ( a, b, c, d: in std_logic;s: out std_logic );

end;architecture arch_flu of circuito issignal nc, nd, x: std_logic;beginnc <= not c;nc <= not c;x <= a and nc and nd ;s <= c or a;end arch_flu;

b

c s

nd

xnc

a

d

10/09/2010 34

Page 35: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

Estructura de un diseño VHDL: Arquitectura

Se ligan arquitectura y entidad

architecture arch_flu of Circuito issignal nc, nd, x: std_logic;beginnc <= not c;nc <= not c;x <= a and nc and nd ;s <= c or a;end arch_flu;

Descripción de la funcionalidad del módulo

10/09/2010 35

Declaración objetos utilizados

b

c s

nd

xnc

a

d

Page 36: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

VHDL VHDL

DescripciDescripcióón de circuitos n de circuitos combinacionalescombinacionales

Page 37: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

Sentencias de asignación concurrente

Verificar el tipo de las señalesSi son vectores, verificar tamañoAsignaciones simples

10/09/2010 37

Asignaciones condicionales

x <= a and nc and nd ;

s <= a when c = “00” else d when c = “01” else e ;

Asignaciones con selección with (c or f) selects <= a when “100” ,

d when “010” ,e when others;

Page 38: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

Descripción de multiplexores

10/09/2010 38

library IEEE;use IEEE.STD_LOGIC_1164.ALL;entity Multiplexor isport ( a , b : in std_logic_vector(1 downto 0);

sel : in std_logic;s : out std_logic_vector(1 downto 0));

end Multiplexor;architecture Behavioral of Multiplexor isbegin

s <= a when sel ='1' else b;end Behavioral;

Page 39: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

10/09/2010 39

architecture Behavioral of Cod_7seg isbeginwith HEX select

LED <= "1111001" when "0001", --1"0100100" when "0010", --2"0110000" when "0011", --3"0011001" when "0100", --4"0010010" when "0101", --5"0000010" when "0110", --6"1111000" when "0111", --7"0000000" when "1000", --8"0010000" when "1001", --9"0001000" when "1010", --A"0000011" when "1011", --b"1000110" when "1100", --C"0100001" when "1101", --d"0000110" when "1110", --E"0001110" when "1111", --F"1000000" when others; --0

end;

Lógica negativa

library IEEE;use IEEE.STD_LOGIC_1164.ALL;

entity Cod_7seg isport ( HEX : in std_logic_vector( 3 downto 0);

LED:out in std_logic_vector( 6 downto 0));end;

Descripción de Codificadores

Page 40: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

Descripción de una memoria ROM

10/09/2010 40

architecture behavioral of MROM istype mem is array ( 0 to 15) of std_logic_vector(7 downto 0); signal mi_Rom : mem; begin mi_Rom <= (

0 => "00000000", 1 => "00000001", 2 => "00000010", 3 => "00000011", 4 => "00000100", 5 => "11110000", 6 => "11110011", 7 => "11110111",

others => "11111111");

datos <= Mi_rom (CONV_INTEGER(dir));end behavioral;

library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;

entity MROM is port ( dir : in std_logic_vector(3 downto 0); datos : out std_logic_vector(7 downto 0) );

end MROM;

Esquemático RTL

Tipo de datos del usuario

Page 41: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

Modelado y simulación de la concurrencia

Se modela HARDWARE usando SOFTWARE

Concurrente Secuencial

Las puertas deben funcionar al mismo tiempo !!A

D

BC

S

L No se puede modelar y simular en un lenguaje convencional

10/09/2010 41

Page 42: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

Caracterización de señales para simulación

Cada señal tiene asociado un “Driver”

Cola o tabla de transacciones que almacena la forma de onda

S

15 40 45 [ns]

Tiempo de simulación 0 El driver “proyecta” valores futuros de la señal en simulación

tiempo 0 15 40 45

valor 1 0 1 0Driver de S10/09/2010 42

Page 43: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

VHDL: Simulación de la concurrencia

Se utilizan sentencias “concurrentes” para describir el comportamiento del circuito

Estas sentencias son sensibles a señales

(A, B, C y S)S <= A or B;Q <= C and S;

Los cambios en las señales “fuente” (eventos), disparan la “ejecución” de las sentencias concurrentes.

En simulación hay un soporte explícito de la concurrencia.10/09/2010 43

Page 44: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

VHDL: Simulación de la concurrencia

Cada vez que se presenta un evento

library IEEE;use IEEE.STD_LOGIC_1164.ALL;entity SimCon isport ( a,b,c : in std_logic;

e,f : out std_logic);end ;architecture Behavioral of SimCon isbegine<= a and b;f<= b or c;end ;

Las señales se actualizan luego de que el simulador “procesa” una sentencia concurrente.

Page 45: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

VHDL: Operadores usados en Digital II

Existe una gran cantidad de operadores definidos para

distintos tipos de datos

Lógicos

Relacionales

AritméticosSólo un subconjunto está

orientado a síntesisConcatenación

10/09/2010 45

Page 46: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

VHDL: Operadores usados en Digital II

and, or, nor, xor, notLógicos

Definidos para: bit, bit_vector, std_logic, std_logic_vector, boolean

Los operandos deben ser del mismo tipo y tener la misma cantidad de bits

Ejemplos

signal A, B, C, D: std_logic_vector (7 downto 0);A <= “11001010”;B <=“10011010”;C <= A or B;D <= A and B;

10/09/2010 46

Page 47: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

VHDL: Operadores usados en Digital II

Relacionales= (igual) /= (distinto)< (menor) <= (menor o igual)> (mayor) >= (mayor o igual)

Definidos para: bit, bit_vector, std_logic, std_logic_vector, boolean, integer

Los operandos deben ser del mismo tipo y pueden tener distinta cantidad de bits

Las comparación de dos vectores, se realiza bit a bit alineando ambas tiras de dígitos a partir del MSB de cada una.

Cuidado !!!10/09/2010 47

Page 48: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

VHDL: Operadores relacionales

Comparación de vectores de distinta cantidad de bits

signal A : std_logic_vector (7 downto 0);signal B : std_logic_vector (3 downto 0);A <= “00100100”;B <= “0110”

A > B ? NO !!

10/09/2010 48

Page 49: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

VHDL: Operadores relacionales

Comparación de vectores

¿ Cómo se interpreta la tira de dígitos de std_logic_vector?

signal A : std_logic_vector (3 downto 0);A <= “1010”;

¿A es igual a 10 o a -6?

10/09/2010 49

Page 50: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

Interpretación de std_logic_vector

La interpretación que se da a los datos std_logic_vector depende de los paquetes que se incluyan en el diseño

STD_LOGIC_ARITH

STD_LOGIC_UNSIGNED

STD_LOGIC_SIGNED

Desarrollados por Synopsis. Se distribuyen como parte de

la biblioteca IEEE.

Los incorporan muchos los ambientes de diseño

Actualmente constituyen un estándar10/09/2010 50

Page 51: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

Interpretación de std_logic_vector

library IEEE; use IEEE.STD_LOGIC_1164.all;

use IEEE.STD_LOGIC_SIGNED.all;

use IEEE.STD_LOGIC_UNSIGNED.all;

STD_LOGIC_VECTOR se interpreta como entero en C2

STD_LOGIC_VECTOR se interpreta como entero sin signo10/09/2010 51

Page 52: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

VHDL: Operadores de comparación

Ejemplo de comparación de vectores

signal A :std_logic_vector (3 downto 0);signal B :std_logic_vector (3 downto 0);signal COMP: boolean;A <= “0110”;B <= “1000”;COMP <= A > B; COMP verdadero si se

incluyó el paquete SIGNED

COMP será falso si se incluyó el paquete UNSIGNED

10/09/2010 52

Page 53: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

VHDL: Comparador sin signo

library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity compara isport ( a : in std_logic_vector(3 downto 0);

b : in std_logic_vector(3 downto 0);mayor: out std_logic);

end compara;

architecture Behavioral of compara isbeginmayor <= '1' when a > b else '0';end Behavioral;

10/09/2010 53

Page 54: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

VHDL: Comparador sin signo

Circuito RTL inferido por el ambiente

Simulación del modelo

10/09/2010 54

Page 55: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

VHDL: Comparador en C2

library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_SIGNED.ALL;

entity comparaSig isport ( a : in std_logic_vector(3 downto 0);

b : in std_logic_vector(3 downto 0);mayor: out std_logic);

end comparaSig;

architecture Behavioral of comparaSig isbeginmayor <= '1' when a > b else '0';end Behavioral;

10/09/2010 55

Page 56: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

VHDL: Comparador en C2

Simulación del modelo

10/09/2010 56

Circuito RTL inferido por el ambiente

Page 57: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

VHDL: Operadores usados en Digital II

+ (suma) - (resta) Aritméticos

Definidos para datos enteros (integer)

Se pueden utilizar con vectores std_logic_vector

Se debe incluir el paquete correspondiente (SIGNED o UNSIGNED)

10/09/2010 57

Page 58: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

VHDL: Operadores usados en Digital II

Concatenación (&)

Permite definir vectores a partir de líneas u otros vectores

signal A :std_logic_vector (3 downto 0);signal B :std_logic_vector (3 downto 0);signal C: std_logic_vector (5 downto 0);A <= “0110”;B <=“1000”;C <= A(3 downto 1) & B(2 downto 0); C será “011000”

10/09/2010 58

Page 59: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

VHDL: Sumador / Restador en C2

library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_SIGNED.ALL;

entity SuRes isport ( a : in std_logic_vector(3 downto 0);

b : in std_logic_vector(3 downto 0);sub : in std_logic;

s : out std_logic_vector(4 downto 0));end;

architecture Behavioral of SuRes isbegins <= (a(3) & a) + b when sub = '0' else (a(3) & a) - b;end;

Se incluye el paquete SIGNED

Se previene OF definiendo la salida

con un bit más

Se completa formato con bit de signo

10/09/2010 59

Page 60: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

VHDL: Sumador / Restador en C2

10/09/2010 60

Page 61: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

VHDL: Sumador / Restador en C2

Simulación del modelo

Al trabajar con un bit más en la salida, se previene el sobreflujo

10/09/2010 61

Page 62: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

VHDL: Sumadores/Restadores

De acuerdo con la representación de datos adoptada

Incluir el paquete que corresponde

Completar formato en forma adecuada

Si el tamaño de bus está acotado y se requiere detectar OF

Se debe agregar en la descripción del sumador

10/09/2010 62

Page 63: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

Circuitos combinacionales y memoria implícita

Las salidas sólo dependen de las entradas, no se permite que:

La señal que se está asignando intervenga en la asignación:

s <= a when sel = ‘1’ else b;s <= a when sel = ‘1’ else s;s <= a when s = ‘1’ else b;

COMBINACIONAL

SECUENCIAL

Existan lazos combinacionales

COMBINACIONAL SECUENCIAL

a <= b or c;e <= d and a;

a <= b or c;b <= d and a;

10/09/2010 63

Page 64: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

VHDL VHDL

DescripciDescripcióón de circuitos n de circuitos secuenciales sincrsecuenciales sincróónicosnicos

Page 65: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

Circuitos secuenciales sincrónicos

Las salidas dependen del estado interno del sistema y, dependiendo del modelo, de las entradas.

MOORE

Interviene la señal de reloj6510/09/2010

Page 66: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

Descripción de un elemento de memoria

library IEEE;use IEEE.STD_LOGIC.1164.ALL;entity FF isport ( entrada: in std_logic;

clk:in std_logic;salida: out std_logic);

end;architecture Behavioral of FF isbeginprocess (clk)beginif clk'event and clk = '1' then salida <= entrada ; end if;end process ;end;

10/09/2010 66

Page 67: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

Simulación de un FFD

El simulador adecúa las ondas, respetando

el sincronismo

10/09/2010 67

Page 68: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

El bloque process

process (clk)beginif clk'event and clk = '1‘then … ; end if;end process ;

En simulación, cada vez que cambia alguna de las señales

se ejecuta el bloque

Activación del bloque PROCESSLista de sensibilidad

Descripción del flanco activo de reloj

SIMULADOR:

El bloque es una sentencia concurrente

Las sentencias internas se ejecutan secuencialmente

10/09/2010 68

Page 69: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

El bloque process

Es una construcción de un mayor de abstracción

Su uso está ligado a un tipo de descripción “ALGORITMICA”

Permite otros elementos sintácticos

CondicionalesSelecciónBucles

Están ligados a una descripción de más alto nivel10/09/2010 69

Page 70: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

El bloque process

Sentencia condicional IF...THEN...ELSE

Esta estructura puede anidarse.if condición thensentencias

elsif condición thensentencias

elsesentencias

end if ;

Modela una selección jerárquica.

elsif y else son optativas. Si no se contemplan todas las posibilidades, se infiere

almacenamiento. 10/09/2010 70

Page 71: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

El bloque process

Sentencia condicional IF...THEN...ELSE

process ( a, b, c )beginif a > b thenp <= a;elsif a > c then p <= c;elsif (a = c and c = b) thenp <= a;else p <= ‘0’;end if ;end process ;

p < = b when a > b elsec when a > c elsea when (a = c and c = b) else‘0’ ;

Con asignación “concurrente”

La lista sensible debe incluir todas las señales cuyo cambio es importante.

10/09/2010 71

Page 72: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

El bloque process

case sel iswhen “10” = > s <= a;when “00” = > s <= b;when “01” => s <= c;when others = > s <= d;

end case ;

Sentencia de selección CASE

case expresión iswhen caso1 = >

instruccioneswhen caso2 = >

instrucciones

when others = >instrucciones

end case ;

La expresión de selección debe ser discreta.No puede haber casos duplicados.Se deben cubrir todas las opciones de selección.

10/09/2010 72

Page 73: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

Descripción de un registro de desplazamiento

library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;--Registro con reset sincrónico, carga paralela y --desplazamiento a la izquierda, prioridades en ese orden.

entity regis isport (

din: in STD_LOGIC_VECTOR (3 downto 0);clk: in STD_LOGIC;r, l, shl: in STD_LOGIC;sli: in STD_LOGIC;dout: out std_logic_vector (3 downto 0)

);end regis;

10/09/2010 73

Page 74: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

Registro de desplazamiento: Continuación

architecture register_arch of regis isbeginprocess (clk)variable bout : std_logic_vector (3 downto 0);begin

if ( clk'event and clk = '1') then if r = ‘1’ then bout := (others => ‘0’);elsif l = ‘1’ then bout := din;elsif shl ='1' then bout := bout (2 downto 0) & sli;end if;end if;dout <= bout;end process;end register_arch;

Flanco ascendente del reloj.

Todas las señales de control son sincrónicas

Operador de concatenación

Local al proceso

10/09/2010 74

Page 75: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

El bloque process y las variables

No tienen significado físico

Deben ser declaradas dentro del proceso y son locales a él.

Su asignación es inmediata pero secuencial, al estar en distintas sentencias en el proceso.

Deben tener un valor asignado antes de utilizarlas.

El orden de las sentencias es importante

a := b or c;d := e and a;

Page 76: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

Variables vs. Señales

Señales Variables

Sintaxis destino<= fuente destino:= fuente

Utilidad Modelan nodos físicos del circuito

Representan almacenamiento

local

Visibilidad Global (comunicación entre procesos)

Local (dentro del proceso)

Comportamiento Se actualizan al avanzar el tiempo (suspensión proceso)

Se actualizan inmediatamente

Page 77: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

Registro de desplazamiento: Continuación

10/09/2010 77

Page 78: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

Descripción de un contador binario

library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;-- Contador de 8 bits con reset asincrónico carga paralela y -- habilitación de cuenta, con prioridades en ese orden.-- La salida tc indica cuenta máxima.entity contador isport (

din: in STD_LOGIC_VECTOR (7 downto 0);clk: in STD_LOGIC;r, l, en: in STD_LOGIC;tc: out STD_LOGIC;cuenta: out std_logic_vector (7 downto 0)

);end contador;

10/09/2010 78

Page 79: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

Contador binario: Continuación

architecture contador_arch of contador issignal bout : std_logic_vector (7 downto 0);beginprocess (clk, r)beginif r = ‘1' then bout <= (others => '0');elsif ( clk'event and clk = '1') then if l = '1' then bout <= din;elsif en = '1' then bout <= bout +1;end if;end if; end process;cuenta <= bout;tc <= '1' when bout = “11111111” else '0';end contador_arch;

El reset es asincrónico

En la misma arquitectura coexisten distintos estilos de descripción

10/09/2010 79

Page 80: Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad 10/09/2010 4 ... Lenguajes de Descripción de Hardware (HDL) Permiten descripciones

Contador binario: Continuación

Esquemático inferido por el ambiente

80