vhdl para síntesis lógica y verificación de...

83
Tema I. VHDL para síntesis Lógica y verificación de Diseños. Roberto Gutiérrez Mazón 1

Upload: vanthuy

Post on 15-Sep-2018

225 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Tema I. VHDL para síntesis Lógica y verificación de Diseños.

Roberto Gutiérrez Mazón

1

Page 2: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Tema II. VHDL para síntesis Lógica y verificación de Diseños.

a. VHDL (recordatorio). b. Restricciones en las descripciones. Síntesis Lógica c. Acondicionamiento entradas asíncronas. d. Segmentación (pipeline). e. Tipos de Simulación. f. Lectura/escritura en Ficheros. g. Generación de Estímulos.

Roberto Gutiérrez Mazón

2

Page 3: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Sistema Multimedia Automóvil 3

Page 4: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Punto de Vista Diseñador de Sistemas

+++ Potencia Hardware (DSP,

uP,FPGAs)

Sistemas cada vez

más Complejos

Nuevas Metodologías

de diseño

? ? ? + =

4

Page 5: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Metodología Diseño Ideal

Arquitectura

Software

Hardware

Diseño Algoritmos Código C/C++

Diseño Algoritmos

Lenguaje Alto nivel Simulación

Simulación Compilación

Síntesis FPGA

µP

Independiente Tecnología

5

Page 6: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Registertransfer level

RTL

LogicSimulator

RTL functionalverification

LogicSynthesis

Gate-levelnetlist

LogicSimulator

MappingPacking

Place-and-Route

Gate-level functionalverification

Flujo de Diseño con VHDL

¡Independiente Tecnología!

6

Page 7: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

VHSIC Hardware Description Languaje

¤ VHDL permite realizar especificaciones textuales del Hardware utilizando una sintaxis similar a la de los lenguajes de programación de alto nivel.

7

Page 8: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Características del lenguaje VHDL

¨  Permite la descripción del Hardware con distintos niveles de abstracción (algorítmico, RTL, estructural, etc).

¨  Facilita la documentación de las especificaciones y la

verificación formal de las mismas. ¨  Facilita la reutilización de las descripciones en

distintos proyectos.

8

Page 9: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Estructura del Lenguaje VHDL

¨  El modelado del hardware en VHDL se realiza mediante la elaboración de unidades de código.

¨  Existen cinco tipos distintos de unidades de código: ¤  Unidades Primarias.

n  Declaración de Entidad. n  Declaración de Paquete. n  Declaración de Configuración.

¤  Unidades secundarias: n  Cuerpo de Arquitectura. n  Cuerpo de paquete.

¨  Cada unidad de código esta orientada a una determinada función dentro de la elaboración de un modelo VHDL.

9

Page 10: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Librerías

¨  Librerías más utilizadas: ¤  work: librería de usuario. Donde se almacenan todos los diseños .vhd y

ficheros auxiliares del compilador/simulador. Esta librería es visible por defecto. ¤  std: Librería de recursos disponible en VHDL. Dispone de declaraciones de tipos

de datos, entrada/salida a ficheros, etc. Esta librería es visible por defecto. ¤  ieee: Define un nuevo tipo de dato multi-nivel.

n  std_logic_1164: Define el tipo STD_LOGIC u STD_ULOGIC. n  std_logic_arith: Define los tipos SIGNED y UNSIGNED, operaciones aritméticas

y de comparación. Además dispone de múltiples funciones de conversión de tipos. n  std_logic_signed: Define el tipo de datos STD_LOGIC_VECTOR y realiza las

operaciones aritméticas CON SIGNO (Ca2). n  std_logic_unsigned: Define el tipo de datos STD_LOGIC_VECTOR y realiza las

operaciones aritméticas SIN SIGNO.

10

Page 11: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Declaración de Entidad

¨  La Declaración de Entidad modela el interfaz de los dispositivos. ¨  Cumple funciones análogas a las de los símbolos en los esquemas.

DECLARACION DE ENTIDAD:

NOMBRE Y PUERTOS

NOMBRE

PUERTOS

Circuito IN

OUT

INOUT

BUFFER

11

Page 12: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Declaración de Entidad

¨  Nombre del Dispositivo es una etiqueta de usuario que identifica el dispositivo hardware cuyo interfaz define. cont8bits, mux21, men16K, etc

¨  Para cada puerto del dispositivo hay que definir: ¤  Su nombre: Etiqueta de usuario. ¤  Su direccionalidad: IN, OUT, INOUT o BUFFER. ¤  Su tipo de datos.

¨  Los puertos de la declaración de entidad son objetos de tipo SEÑAL.

¨  Además, a diferencia de las señales “normales”, tienen direccionalidad.

12

Page 13: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Declaración de Arquitectura

¨  Modelado del funcionamiento de los dispositivos: Los dispositivos se modelan como sistemas que realizan un procesamiento de la información. CUERPOS DE ARQUITECTURA

ALGORITMO DE PROCESAMIENTO ENTRADAS SALIDAS

13

Page 14: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Estilos de Descripción del Hardware.

¨  Descripción Estructural (netlist) ¤  Equivalente a un esquemático.

¨  Descripción de Ruta de Datos (Data-flow) ¤ Descripción mixta función-

estructura.

¨  Descripción Comportamental ¤ Descripción Algorítmica.

RTL

Booleano

Bucles

Procesos

Estructural

Funcional

Behavioral(Algoritmo)

Puertas

Switch

14

Page 15: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Descripción de un dispositivo en VHDL: Declaración de Entidad + Cuerpo de Arquitectura

ENTITY ADD IS ……..

ARCHITECTURE

15

Page 16: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Conceptos Básicos

¨  No se distingue entre mayúsculas y minúsculas. ¨  Como en todos los lenguajes, tienen una serie de

palabras reservadas, que tienen una función determinada y no se pueden usar para otros propósitos.

¨  Comentarios: ¤  Se hacen con un par de guiones → “--” ¤  Solo existen comentarios de una sola linea. ¤ A veces contienen informacion para las herramientas CAD

(pragmas). Ej:

-- Esto es un comentario

-- Este es otro comentario.

-- pragma synthesis_on

16

Page 17: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Tipos de Datos

¨  Cada objeto del lenguaje ha de pertenecer a uno de los tipos de datos permitidos.

¨  Existen tipos de datos predefinidas por el lenguaje y tipos de datos que pueden ser definidos por el usuario.

¨  VHDL es un lenguaje fuertemente tipado, por lo que toda asignación se ha de hacer sobre un determinado tipo de datos.

¨  La conversión entre distintos tipos de datos no se hace de manera automática, sino que hay que implementar funciones para hacer la conversión.

17

Page 18: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Tipos de Datos

¨  Existen cuatro tipos de datos fundamentales en VHDL: ¤ Escalares: Son Objetos que solo pueden contener un

único valor en cada instante. ¤ Compuestos ¤ Ficheros ¤ Punteros

18

Page 19: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Tipos de Datos Pre-definidos VHDL

¨  El Lenguaje VHDL contiene una serie de tipos de datos pre-definidos, definidos en los standards IEEE 1076 e IEEE 1164.

¤  Paquete standard de la librería std: Define los tipos de datos BIT, BOOLEAN, INTEGER y REAL.

¤  Paquete std_logic_1164 de la librería ieee: Define el tipo de datos STD_LOGIC y STD_ULOGIC.

¤  Paquete std_logic_arith de la librería ieee: Define el tipo de datos SIGNED y UNSIGNED. Además define diferentes funciones de conversión de tipos. conv_integer(x), conv_unsigned(x,n), conv_std_log_vector(x,n), etc.

¤  Paquete std_logic_signed y std_logic_unsigned de la librería ieee: Define funciones que permiten operar con el tipo STD_LOGIC_VECTOR como si fuera un tipo de datos SIGNED y UNSIGNED. Define operaciones aritméticas, lógicas y funciones de conversión de datos.

19

Page 20: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Tipos de Datos predefinidos (hardware)

¨  STD_ULOGIC y STD_ULOGIC_VECTOR. Tipo de dato predefinido no resuelto, el cual puede tomar 9 valores lógicos. Este tipo de datos esta definido en el paquete std_logic_1164.

¨  Este tipo de datos se puede utilizar para modelar drivers activos (puertas logicas – Forcing 0/1), drivers resistivos (pull-up/pull-down – weak 0/1) y Alta impedancia (Z).

¨  Es un tipo de datos no resuelto, los conflictos a nivel de asignación no son resueltos automáticamente.

¨  type STD_ULOGIC_VECTOR is array (NATURAL range <>) of STD_ULOGIC;

--------------------------------------------------------------- -- logic state system (unresolved) -------------------------------------------------------------- type STD_ULOGIC is ( 'U', -- Uninitialized 'X', -- Forcing Unknown '0', -- Forcing 0 '1', -- Forcing 1 'Z', -- High Impedance 'W', -- Weak Unknown 'L', -- Weak 0 'H', -- Weak 1 '-' -- Don't care ); -------------------------------------------------------------

20

Page 21: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Tipos de Datos predefinidos (hardware)

¨  STD_LOGIC y STD_LOGIC_VECTOR. Subtipo de dato predefinido a partir del tipo STD_ULOGIC. Este tipo de datos esta definido en el paquete std_logic_1164.

¨  Es un tipo de datos resuelto, los conflictos a nivel de asignación son resueltos automáticamente. Únicamente utilizar a nivel de simulación.

subtype STD_LOGIC is resolved STD_ULOGIC; subtype STD_LOGIC_VECTOR is (resolved) STD_ULOGIC_VECTOR;

------------------------------------------------------------------- -- resolution function ------------------------------------------------------------------- constant resolution_table : stdlogic_table := ( -- --------------------------------------------------------- -- | U X 0 1 Z W L H - | | -- --------------------------------------------------------- ('U', 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U'), -- | U | ('U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X'), -- | X | ('U', 'X', '0', 'X', '0', '0', '0', '0', 'X'), -- | 0 | ('U', 'X', 'X', '1', '1', '1', '1', '1', 'X'), -- | 1 | ('U', 'X', '0', '1', 'Z', 'W', 'L', 'H', 'X'), -- | Z | ('U', 'X', '0', '1', 'W', 'W', 'W', 'W', 'X'), -- | W | ('U', 'X', '0', '1', 'L', 'W', 'L', 'W', 'X'), -- | L | ('U', 'X', '0', '1', 'H', 'W', 'W', 'H', 'X'), -- | H | ('U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X') -- | - | );

21

Page 22: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Tipos de Datos (Compuestos)

¨  Tipos Compuestos

Existen “dos” tipos de datos compuestos ¤  Arrays ¤  Registros

A diferencia de los tipos de datos escalares, los tipos de datos compuestos son aquéllos que contienen varios tipos de datos mas pequeños. Los objetos que pertenezcan a tipos de datos compuestos pueden ser manejados globalmente o individualmente sobre cada uno de los datos menores que contenga. Un tipo de datos compuesto puede estar a su vez formado por otros datos también compuestos.

22

Page 23: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Tipos de Objetos

¨  Un objeto es un contenedor de valores. En VHDL existen cuatro tipos distintos de objetos: constant (constantes), variable (variables), file (archivos) y signal (señales).

¨  Los tres primeros son similares a los Existentes en los HLLs; las señales son objetos que modelan nodos lógicos.

¨  Al igual que en los HLLs estructurados, antes de poder utilizar un objeto, es necesario declararlo.

¨  En la declaración hay que indicar el tipo de objeto y el tipo de dato que puede contener el objeto.

23

Page 24: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Asignación a señales

¨  Sintaxis:

identificador <= expresión; ¨  Cuando se realiza la asignación de una señal no se hace inmediatamente:

¤  Si se especifica un retardo, se realiza después de pasado ese tiempo. ¤  Si no se incluye, se realiza después de suspenderse el proceso.

¨  Una sentencia de asignación de valor a señal PROYECTA una TRANSACCION sobre el valor de la señal.

¨  Si se realizan dos asignaciones sobre una misma señal en el mismo instante de tiempo la ultima es la que se proyecta, descartando las anteriores (diferente en asignaciones concurrentes).

24

Page 25: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Asignación a variables

¨  Sintaxis:

identificador := expresión; ¨  Cuando se realiza la asignación de una variable, su valor cambia

instantáneamente y no se guarda información sobre los valores que dicha variable tuvo anteriormente.

¨  La expresión ha de devolver un valor del mismo tipo que el tipo de la variable sobre la que se realiza la asignación.

¨  Las variables solo se utilizan en partes secuénciales (procesos, funciones y procedimientos), y son locales.

¨  No se pueden incluir retardos en las asignaciones de variable. ¨  Ejemplo:

signal sig : integer;

variable var : integer;

var := sig + 1;

25

Page 26: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Modelado Concurrente Vs

Modelado Secuencial

¨  Combinacional Vs Secuencial: ¤  Por definición, la Lógica

combinacional es aquella en la cual la salida únicamente del valor actual de las entradas.

¤  Por otro lado, la lógica secuencial, es aquella que depende de valores anteriores.

¨  Concurrente Vs Secuencial ¤  El lenguaje VHDL es un lenguaje que

permite el modelar un funcionamiento paralelo (concurrente).

¤  Utilización de instrucciones CONCURRENTES para el modelado de lógica combinacional. (WHEN,GENERATE;BLOCK, XOR,+,SLL,etc)

¤  Utilización de instrucciones secuenciales para el modelado de lógica SECUENCIAL. (PROCESS,FUNCTIONS,PROCEDURES).

26

Page 27: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Sentencias concurrentes

¨  Las sentencias concurrentes se ejecutan continuamente, en contra de las sentencias secuénciales que se ejecutan una después de la otra.

¨  Se utilizan en los cuerpos de la arquitectura. ¨  Por lo tanto, da igual en que orden se pongan las sentencias

concurrentes. De hecho no sabemos el orden va a ejecutar el simulador dichas sentencias concurrentes.

¨  Las sentencias concurrentes son: - Procesos

- Bloques

- Llamadas a procedimientos concurrentes

- Asignaciones de señal

- Instanciación de componentes

- Sentencias “generate”

27

Page 28: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Sentencias concurrentes

WHEN ¨  WHEN/ELSE

asignacion WHEN condicion ELSE

asignacion WHEN condicion ELSE

......;

¨  WITH/SELECT/WHEN WITH identificador SELECT

asignacion WHEN condicion ELSE

asignacion WHEN condicion ELSE

......;

mux_sal<= a WHEN sel=“00” ELSE b WHEN sel=“01” ELSE c WHEN sel=“10” ELSE d;

WITH sel SELECT mux_sal <= a WHEN “00”,

b WHEN “01”, c WHEN “10”, d WHEN OTHERS;

28

Page 29: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Sentencias secuenciales

Procesos ¨  Un proceso contiene una serie de sentencias que se ejecutan

secuencialmente.

¨  Se utilizan en descripciones RTL y comportamentales.

¨  Su sintaxis es la siguiente: etiqueta: PROCESS (lista sensibilidad) [zona declaración]

VARIABLE nombre : tipo; BEGIN ......

instrucciones secuenciales ......

END PROCESS etiqueta;

29

Page 30: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Sentencias secuenciales

Procesos

PROCESS BEGIN …… …… END PROCESS;

VARIABLES CONSTANTES

A SEÑALES A VARIABLES

IF, CASE

FOR, WHILE,

REPREAT, LOOP

DECLARACIONES

SENTENCIAS DE ASIGNACION

SENTENCIAS DE CONTROL

BUCLES

30

Page 31: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Sentencias secuenciales

Sentencia if

¨  Los posibles formatos de la sentencia if son:

31

Page 32: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Sentencias secuénciales

Sentencia case ¨  El formato de la sentencia CASE es:

32

Page 33: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Bucles

¨  Los posibles formatos de los bucles son:

BUCLES FOR Y WHILE BUCLE INFINITO

Sentencia exit salir del bucle.

Sentencia return para pasar a la próxima iteración.

33

Sentencias secuénciales

Page 34: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Tema II. VHDL para síntesis Lógica y verificación de Diseños.

a. VHDL (recordatorio). b. Restricciones en las descripciones. Síntesis Lógica c. Acondicionamiento entradas asíncronas. d. Segmentación (pipeline). e. Tipos de Simulación. f. Lectura/escritura en Ficheros. g. Generación de Estímulos.

Roberto Gutiérrez Mazón

34

Page 35: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Registertransfer level

RTL

LogicSimulator

RTL functionalverification

LogicSynthesis

Gate-levelnetlist

LogicSimulator

MappingPacking

Place-and-Route

Gate-level functionalverification

¡Independiente Tecnología!

35

Restricciones en las descripciones VHDL

Page 36: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Restricciones en las descripciones VHDL

VHDL HERRAMIENTAS

SIMULACION SINTESIS

• Permite asegurar el funcionamiento de un circuito antes de la realización, en diferentes situaciones.

• Acepta todas las características del lenguajes (ideal para especificar o prototipar).

• Permite comprobar el funcionamiento en etapas posteriores al diseño.

• Genera un circuito Hardware con el funcionamiento especificado.

• Soporta solo un subconjunto del lenguaje.

• La calidad del resultado depende del estilo de descripción.

• Síntesis lógica y síntesis arquitectural.

36

Page 37: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

¨  La síntesis lógica permite implementar automáticamente circuitos digitales a partir de descripciones con lenguajes HDL.

¨  Los sintetizadores exigen que las descripciones estén realizadas con un determinado nivel de abstracción, llamado RTL.

¨  En el nivel RTL hay que especificar “explícitamente” el comportamiento de la lógica combinacional, y las transiciones de la lógica secuencial.

¨  El comportamiento del sintetizador se puede controlar mediante atributos y restricciones.

Register transfer level

RTL

LogicSimulator

RTL functionalverification

LogicSynthesis

Gate-level netlist

LogicSimulator

MappingPacking

Place-and-Route

Gate-level functionalverification

Modelo RTL

Flujo Diseño HDL

37

Restricciones en las descripciones VHDL

Page 38: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

¨  No todos los Sintetizadores permiten las misma construcciones. Consultar los manuales.

¨  Con un poco de experiencia con el sintetizador se pueden realizar descripciones que sean directamente sintetizables.

¨  Las Descripciones RTL son independientes de la tecnología sobre la que se implementa el circuito.

¨  Las descripciones RTL solo describen la funcionalidad del circuito, con lo que no se incluye información sobre los retardos del circuito. Estos dependerán de la tecnología utilizada.

38

Restricciones en las descripciones VHDL

Page 39: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

¨  En las Descripciones RTL sintetizables se pueden utilizar tanto sentencias secuenciales como concurrentes.

¨  Cada asignación de señal, proceso o instanciación de componente hace que el sintetizador genere un bloque de lógica para ello.

¨  Cada señal o variable se implementa mediante un cable.

¨  El sintetizador es capaz de realizar distintos tipos de optimizaciones sobre el código, dependiendo de las restricciones (constraints) y atributos que se apliquen en la sintesis.

Definición de Constraints

Definición de Atributos

39

Restricciones en las descripciones VHDL

Page 40: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

¨  Los tipos de datos mas utilizados en síntesis son los de las librerías de Synopsis: std_logic, std_logic_vector, signed y unsigned.

¨  También se utilizan los tipos bit y bit_vector, así como tipos de datos enumerados definidos por el usuario.

¨  El tipo de datos integer también se puede utilizar, pero se suele restringir el rango (sino se suelen utilizar 32 bits).

¨  Para el resto de tipos de datos debemos consultar el manual de sintetizador

40

Restricciones en las descripciones VHDL

Page 41: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Introducción

¨  Los circuitos combinacionales son aquellos cuyas salida son una función del valor actual de las entradas.

¨  No tienen reloj ni guardan información sobre los estados anteriores.

¨  En VHDL se pueden implementar tanto con sentencias concurrentes (recomendable), como dentro de un proceso.

41

Restricciones en las descripciones VHDL

Page 42: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Sentencias concurrentes

¨  La lógica combinacional se implementa mediante asignaciones de señal.

¨  Las asignaciones pueden ser directas, condicionales o de selección.

¨  No importa el orden en que se realicen las asignaciones, ya que son concurrentes.

¨  Si sobre una misma señal hay varias asignaciones, solo una de ellas ha de asignar un valor fuerte, el resto tienen que estar en alta impedancia.

Asignaciones señal

42

Restricciones en las descripciones VHDL

Page 43: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Asignación condicional

Asignación selección

43

Restricciones en las descripciones VHDL

Page 44: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Sentencias Secuenciales

¨  Se puede crear lógica combinacional en un proceso, pero dicho proceso ha de activarse cada vez que cambie alguna de las entradas de dicha lógica combinacional.

¨  En una señal combinacional hay que especificar su valor para todas las opciones. Si no se hace así, el sintetizador incluirá un latch, para mantener su valor.

44

Restricciones en las descripciones VHDL

Page 45: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Buffers Tri-estado

¨  Se suelen escribir en sentencias concurrentes:

¨  Los puertos de entrada/salida se implementan con buffers tri-estado:

45

Restricciones en las descripciones VHDL

Page 46: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Introducción

¨  Los circuitos secuenciales son capaces de almacenar valores.

¨  Los flip-flops mantienen el valor de su salida hasta que se produce un determinado flanco en su entrada de reloj. Son activos por flanco.

¨  Los latches mantienen su valor mientras una de sus entradas tenga un nivel. Si esa entrada tiene otro nivel se comporta de modo transparente. Son activos por nivel.

46

Restricciones en las descripciones VHDL

Page 47: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Flip-flop D flanco subida y reset asíncrono.

Flip-flop D flanco subida

latch D y reset asíncrono.

latch D

47

Restricciones en las descripciones VHDL

Page 48: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Modelado señal reloj.

¨  Las herramientas de síntesis generalmente no son capaces de realizar asignaciones en ambas transiciones de reloj. NO SINTESIS

¨  El atributo EVENT debe de estar relacionado con una condición de test. NO SINTESIS

¨  Si una señal aparece en la lista de sensibilidad de un PROCESS, pero no es usada en él, la herramienta de síntesis la ignorará.

PROCESS(clk)

BEGIN

IF clk’event and clk=‘1’ THEN

COUNTER<=COUNTER + 1;

ELSIF clk’event and clk=‘0’ THEN

COUNTER<=COUNTER - 1;

END IF;

END PROCESS;

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

PROCESS(clk)

BEGIN

IF clk’event THEN

COUNTER<=COUNTER + 1;

END IF;

END PROCESS;

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

PROCESS(clk)

BEGIN

COUNTER<=COUNTER + 1;

END PROCESS;

48

Restricciones en las descripciones VHDL

Page 49: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Las variables se actualizan inmediatamente. Las señales NO. 49

Restricciones en las descripciones VHDL

Page 50: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Restricciones en las descripciones VHDL 50

Page 51: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Restricciones en las descripciones VHDL

if-then-else case

51

if SEL = “00“ then Y <= A;elsif SEL = “01“ then Y <= B;elsif SEL = “10“ then Y <= C;else Y <= D;end if;

AB

C

D2:1 MUX

2:1 MUX2:1 MUX

SEL == 00

SEL == 01

SEL == 10

Y

case SEL is when “00“=> Y <= A;when “01“=> Y <= B;when “10“=> Y <= C;when others => Y = D;end case;

BA

4:1 MUX

SEL

CD

Y

00

01

10

11

Page 52: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Restricciones en las descripciones VHDL

¨  NO cambiar el valor de una señal en dos procesos, porque dependerá su valor de qué proceso se ejecute antes. La herramienta de síntesis no sintetizará dicha descripción.

¨  NO inicializar variables o señales en la propia declaración (el sintetizador suele omitirlas). Hacerlo cuando se realice el reset. Las salida combinacionales no hace falta inicializarlas.

¨  Si a un objeto de tipo std_logic se le asigna el valor de ‘X’, el sintetizador interpretará que puede asignarle cualquier valor. La simulación post síntesis diferirá de la funcional.

¨  Si dentro de un proceso se hacen dos asignaciones sobre una misma señal en el mismo instante de tiempo, se programará la ultima asignación. Ello permite asignar valores por defecto a las señales, evitando que se infieran latches.

¨  NO utilizar buffers tri-estado internamente, unicamenete en los bloques I/O.

52

Page 53: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Restricciones en las descripciones VHDL

¨  Realizar un diseño síncrono disminuye riesgos de un posterior mal funcionamiento. Evitar asincronismos; tanto el reset como el reloj tienen que ser iguales para todos los registros.

¨  Si se quieren relojes de distinta frecuencia, se deberán de generar internamente con divisores y aplicarlos en las entradas de habilitación de los distintos bloques.

¨  Intentar evitar latches, ya que pueden producir problemas temporales y no todas las FPGAs disponen de ellos.

UN SINTETIZADOR SOLO PERMITIRÁ DESCRIPCIONES CUYO COMPORTAMIENTO SE

PUEDA IMPLEMENTAR EN HARDWARE DIGITAL.

53

Page 54: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Tema II. VHDL para síntesis Lógica y verificación de Diseños.

a. VHDL (recordatorio). b. Restricciones en las descripciones. Síntesis Lógica c. Acondicionamiento entradas asíncronas. d. Segmentación (pipeline). e. Tipos de Simulación. f. Lectura/escritura en Ficheros. g. Generación de Estímulos.

Roberto Gutiérrez Mazón

54

Page 55: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Acondicionamiento entradas asíncronas.

¨  Entradas Asíncronas: Necesidad

¤  Los sistemas digitales de todos los tipos deben tratar inevitablemente con señales de entrada asíncronas con el reloj del sistema

¤  Las entradas asíncronas son típicamente solicitudes de servicio o flags de estatus. Tales entradas normalmente cambian en forma lenta comparada con la frecuencia del reloj del sistema y no necesitan reconocerse durante la pulsación particular de reloj. Si una transición se pierde en una pulsación de reloj, siempre puede detectarse en la siguiente.

¤  Es esencial que las entradas asíncronas sean sincronizadas en un solo lugar del sistema.

55

Page 56: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Acondicionamiento entradas asíncronas.

¨  Circuito acondicionador

56

Page 57: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Tema II. VHDL para síntesis Lógica y verificación de Diseños.

a. VHDL (recordatorio). b. Restricciones en las descripciones. Síntesis Lógica c. Acondicionamiento entradas asíncronas. d. Segmentación (pipeline). e. Tipos de Simulación. f. Lectura/escritura en Ficheros. g. Generación de Estímulos.

Roberto Gutiérrez Mazón

57

Page 58: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Segmentación (pipeline)

¨  Temporización ¤  En general las herramientas de análisis temporal de los fabricantes de

PLDs informan de que márgenes disponemos a una determinada frecuencia n  Más habitual es el análisis sobre el margen de activación. n  Lo suelen llamar Slack = tclk – tffpd(max) – tcomb(max) – tsu ± tdesfase

n  Si el slack es negativo el diseño no cumple las especificaciones temporales.

58

Page 59: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Segmentación (pipeline)

¨  Segmentación (pipeline).

¤  La segmentación o pipeline es una estrategia de control para aumentar la velocidad de proceso de una determinada arquitectura digital.

¤  Consiste en introducir registros que permiten dividir el proceso en tramos cuya ejecución se solapa en el tiempo. El tiempo de latencia es lo que tarda el pipeline en llenarse.

¤  Inconvenientes: n  El retardo de las distintas etapas no es

similar, velocidad limitada a la del bloque mas pequeño.

n  Debe estudiarse si el retardo de las etapas es comparable con el del registro.

n  Si la secuencia con que llegan los datos no es regular se pierde velocidad.

59

Data In

CombinationalLogic

CombinationalLogic

CombinationalLogic

etc.

Clock

Data In

Registers Registers RegistersCombinationalLogic

CombinationalLogic

etc.

Circuito sin segmentar

Circuito segmentado

Page 60: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Segmentación (pipeline)

¨  Compartición de recursos:

¤  La compartición de recursos es una técnica de optimización que nos permite utilizar un único bloque para implementar diferentes operadores. Si no compartimos operadores, cada bloque se realizará utilizando su propia lógica.

¤  Si compartimos operadores obtendremos una ocupación de área menor a costa de un rendimiento menor.

60

if (B > C) then Y = A + B; else Y = A + C;end if;

A

+

>

B

C Y

>C

B

+

+A

Y

ResourceSharing = ON

ResourceSharing = OFF

Total LUTs =Clock frequency =

3287.7 MHz

Total LUTs =Clock frequency =

64133.3 MHz (+52% !)

Page 61: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Tema II. VHDL para síntesis Lógica y verificación de Diseños.

a. VHDL (recordatorio). b. Restricciones en las descripciones. Síntesis Lógica c. Acondicionamiento entradas asíncronas. d. Segmentación (pipeline). e. Tipos de Simulación. TestBench f. Lectura/escritura en Ficheros. g. Generación de Estímulos.

Roberto Gutiérrez Mazón

61

Page 62: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Registertransfer level

RTL

LogicSimulator

RTL functionalverification

LogicSynthesis

Gate-levelnetlist

LogicSimulator

MappingPacking

Place-and-Route

Gate-level functionalverification

¡Independiente Tecnología!

62

TestBench

Page 63: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

¨  Verificación de un diseño por medio de simulaciones. ¨  Realización de un modelo testbench.

¤  Cuerpo de arquitectura que incluya una instancia del Dispositivo bajo test (DUT).

¤  Generación de secuencias de valores para aplicarlos a las entradas. ¤  Monitorizar los valores obtenidos a la salida.

n  Mediante la utilización de un simulador. n  Mediante un proceso que verifica el correcto funcionamiento.

63

TestBench

Process Generación estímulos entrada.

Design Under Test (DUT)

Verificación salida

Page 64: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

¨  Hay cuatro tipos de TestBench: ¤  Tipo I – Simulación funcional manual. Los retardos internos del DUT no están modelados y

la salida es verificada manualmente (inspección visual del simulador).

¤  Tipo II – Simulación temporal Manual. Los retardos internos del DUT son tenidos en cuenta y la salida es verificada manualmente.

¤  Tipo III – Simulación automatizada funcional. Los retardos internos del DUT no están modelados y la salida es verificada por el simulador comparando las salidas del DUT con un fichero o modelo ideal.

¤  Tipo IV – Simulación automatizada temporal. Los retardos internos del DUT son tenidos en cuenta y la salida es verificada por el simulador comparando las salidas del DUT con un fichero o modelo ideal. Tipo de simulación ideal para la verificación un dispositivo.

64

TestBench

Page 65: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

65

TestBench

entity test_bench is end entity test_bench;

architecture test_reg4 of test_bench is signal d0, d1, d2, d3, en, clk, q0, q1, q2, q3 : bit;

begin dut : entity work.reg4(behav) port map ( d0, d1, d2, d3, en, clk, q0, q1, q2, q3 ); stimulus : process is begin d0 <= ’1’; d1 <= ’1’; d2 <= ’1’; d3 <= ’1’; wait for 20 ns; en <= ’0’; clk <= ’0’; wait for 20 ns; en <= ’1’; wait for 20 ns; clk <= ’1’; wait for 20 ns; d0 <= ’0’; d1 <= ’0’; d2 <= ’0’; d3 <= ’0’; wait for 20 ns; en <= ’0’; wait for 20 ns; … wait; end process stimulus;

end architecture test_reg4;

Page 66: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

66

TestBench

Process Generación Estímulos

entrada

Design Under Test (DUT)

Process Comparación

salidas actuales

vs. Salidas

esperadas

Diseño Correcto/Incorrecto

Si/No Fichero

Vectores test

Page 67: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

67

TestBench

Architecture verif of test_bench is signal d0, d1, d2, d3, en, clk : bit; signal q0a, q1a, q2a, q3a, q0b, q1b, q2b, q3b : bit;

begin dut_a : entity work.reg4(struct) port map ( d0, d1, d2, d3, en, clk, q0a, q1a, q2a, q3a ); dut_b : entity work.reg4(behav) port map ( d0, d1, d2, d3, en, clk, q0b, q1b, q2b, q3b ); stimulus : process is begin d0 <= ’1’; d1 <= ’1’; d2 <= ’1’; d3 <= ’1’; wait for 20 ns; en <= ’0’; clk <= ’0’; wait for 20 ns; en <= ’1’; wait for 20 ns; clk <= ’1’; wait for 20 ns; … wait; end process stimulus; ...

Generación estímulos

… verify : process is begin wait for 10 ns; assert q0a = q0b and q1a = q1b and q2a = q2b and q3a = q3b report ”implementations have different outputs” severity error; wait on d0, d1, d2, d3, en, clk; end process verify;

end architecture regression;

Verificación Modelo

Page 68: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Tema II. VHDL para síntesis Lógica y verificación de Diseños.

a. VHDL (recordatorio). b. Restricciones en las descripciones. Síntesis Lógica c. Acondicionamiento entradas asíncronas. d. Segmentación (pipeline). e. Tipos de Simulación. f. Lectura/escritura en Ficheros. g. Generación de Estímulos.

Roberto Gutiérrez Mazón

68

Page 69: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Lectura/escritura en Fichero 69

Page 70: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

¨  Los objetos de este tipo representan ficheros. ¨  La sintaxis de su declaración es:

type nombre_fichero is file of nombre_del_tipo;

=> Ejemplo

type VECTORES is file of bit_vector;

¨  Operaciones que pueden realizarse con un fichero: abrirlo, cerrarlo, leerlo, escribirlo o comprobar si se ha llegado al final del mismo

¨  Estas operaciones se realizan a través de ciertos procedimientos y funciones que están declarados implícitamente para el tipo fichero

70

Lectura/escritura en Fichero

Page 71: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

¨  El paquete TEXTIO, que está incluido en la librería STD, contiene las declaraciones básicas para trabajar con ficheros de texto

¨  En TEXTIO están declarados los tipos: TEXT y LINE:

type LINE is access string;

type TEXT is file ft/'string;

¨  Utilizando estos tipos se puede declarar un fichero de texto:

file objeto fichero: TEXT is in/out "nombrefichero.extensión";

¨  Los datos en los ficheros de texto están organizados en líneas. Cada línea puede contener un número de elementos variable.

71

Lectura/escritura en Fichero

Page 72: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

¨  Para leer los datos de un fichero de texto, primero hay que realizar una llamada al procedimiento READLINE, con el que se lee una línea entera. Después, hay que realizar un número de llamadas determinado al procedimiento READ para leer los elementos de la línea

¨  La escritura de un fichero se realiza formando líneas con el procedimiento WRITE, y después escribiendo la línea entera en el fichero mediante el procedimiento WRITELINE

¨  Estos procedimientos están declarados en el paquete TEXTIO para los tipos predefinidos en VHDL.

72

Lectura/escritura en Fichero

Page 73: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

¨  => Ejemplo: Lectura de fichero sincronizada con señal de reloj

¨  El fichero vectores.txt contiene los siguientes valores:

001

010

011

100

73

Lectura/escritura en Fichero

Page 74: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

¨  El paquete std_logic_textio

¨  contiene dichos procedimientos declarados para los tipos std_logic y std_logic_vector

74

Lectura/escritura en Fichero

Page 75: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

¨  => Ejemplo: Lectura de datos de un fichero y conversión a formato serie

¨  El fichero datos.txt contiene los siguientes valores:

01010101

10101010

00110011

11001100

00001111

11110000

¨  Formato de salida:

75

Lectura/escritura en Fichero

Page 76: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

76

Lectura/escritura en Fichero

Page 77: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

¨  => Ejemplo: Entrada de fichero con elementos de distinto tipo en la misma línea

¨  El fichero dif_datos.txt contiene los siguientes elementos:

00 0 CERO

01 1 UNO

10 2 DOS

11 3 TRES

77

Lectura/escritura en Fichero

Page 78: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

¨  Formas de onda resultantes de la simulación del ejemplo:

78

¨  Durante la simulación aparecen los siguientes mensajes en la consola:

Lectura/escritura en Fichero

Simulator is doing circuit initialization process. at 0 ns: Note: (/lectura_file/). Finished circuit initialization process. at 100.000 us: Note: CERO (/lectura_file/). at 200.000 us: Note: UNO (/lectura_file/). at 300.000 us: Note: DOS (/lectura_file/). at 400.000 us: Note: TRES (/lectura_file/).

Page 79: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

79

Lectura/escritura en Fichero

Page 80: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Ejemplo: Banco de pruebas de un Full-Adder

El fichero v_FA_in.txt contiene

los siguientes valores: 000 001 010 011 100 101 110 111

80

Al ejecutar el banco de pruebas se obtiene el fichero v_FA_out.txt con el siguiente contenido:

Lectura/escritura en Fichero

Vector numero 1 : 000 ---> 00 Vector numero 2 : 001 ---> 01 Vector numero 3 : 010 ---> 01 Vector numero 4 : 011 ---> 10 Vector numero 5 : 100 ---> 01 Vector numero 6 : 001 ---> 10 Vector numero 7 : 110 ---> 10 Vector numero 8 : 111 ---> 11

Page 81: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

Tema II. VHDL para síntesis Lógica y verificación de Diseños.

a. VHDL (recordatorio). b. Restricciones en las descripciones. Síntesis Lógica c. Acondicionamiento entradas asíncronas. d. Segmentación (pipeline). e. Tipos de Simulación. f. Lectura/escritura en Ficheros. g. Generación de Estímulos.

Roberto Gutiérrez Mazón

81

Page 82: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

¨  La generación de estímulos es una parte importante de los TestBench. Para ello el lenguaje VHDL dispone de una serie de instrucciones: AFTER, WAIT FOR, NOW, ‘LAST_EVENT , etc.

¨  La instrucción NOW representa el tiempo de simulación actual. Puede ser importante verificar eventos en tiempos particulares de simulación.

¨  El atributo obj‘LAST_EVENT nos devuelve el tiempo transcurrido desde que se dio un evento en ese objeto.

¨  La sentencia wait for suspende la ejecución hasta que transcurra un tiempo de simulación igual al especificado.

82

Generación Estímulos

Page 83: VHDL para síntesis Lógica y verificación de Diseños.umh1759.edu.umh.es/wp-content/uploads/sites/783/2013/02/Tema-1.pdf · Tema II. VHDL para síntesis Lógica y verificación

83

Generación Estímulos