PDF de programación - Capitulo I - Verificación de circuitos digitales

Imágen de pdf Capitulo I - Verificación de circuitos digitales

Capitulo I - Verificación de circuitos digitalesgráfica de visualizaciones

Publicado el 23 de Enero del 2019
612 visualizaciones desde el 23 de Enero del 2019
348,1 KB
37 paginas
Creado hace 11a (20/09/2012)
Apuntes de la asignatura Sistemas Digitales II

José Daniel Muñoz Frías

i

ii

© José Daniel Muñoz Frías.

Esta obra está bajo una licencia Reconocimiento – No comercial – Compartir bajo
la misma licencia 2.5 España de Creative Commons. Para ver una copia de esta
licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/es/ o envíe una
carta a Creative Commons, 171 Second Street, Suite 300, San Francisco, California
94105, USA.

Usted es libre de:

copiar, distribuir y comunicar públicamente la obra.
hacer obras derivadas.

Bajo las condiciones siguientes:

Reconocimiento. Debe reconocer los créditos de la obra de la manera espe-
cificada por el autor o el licenciador (pero no de una manera que sugiera que
tiene su apoyo o apoyan el uso que hace de su obra).
No comercial. No puede utilizar esta obra para fines comerciales.
Compartir bajo la misma licencia. Si altera o transforma esta obra, o genera
una obra derivada, sólo puede distribuir la obra generada bajo una licencia
idéntica a ésta.
Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la
licencia de esta obra.
Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del
titular de los derechos de autor.
Nada en esta licencia menoscaba o restringe los derechos morales del autor.

Edición: α. Septiembre 2012.

iii

A Manuela.

Índice general

Índice general

v

1 Verificación de circuitos digitales

1.1.
1.2.
1.3.
1.4.
1.5.

1
1
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
Verificación en el proceso de diseño
. . . . . . . . . . . . . . . . .
El testbench en VHDL . . . . . . . . . . . . . . . . . . . . . . . . .
2
Procedimientos y funciones en VHDL . . . . . . . . . . . . . . . . . 19
Acceso a archivos desde VHDL . . . . . . . . . . . . . . . . . . . . 24

Bibliografía

31

v

Capítulo 1

Verificación de circuitos digitales

1.1.

Introducción

La verificación de circuitos digitales consta de dos aspectos. Por un lado, el
fabricante del circuito ha de asegurarse que el circuito fabricado coincide con el que
le ha encargado el equipo de diseño, para lo cual realiza una serie de pruebas a
los circuitos fabricados para desechar los defectuosos. Por otro lado, el equipo de
diseño ha de asegurarse que el circuito diseñado cumple con las especificaciones
marcadas. Dicha verificación se realiza mediante simulación y es la que vamos a
estudiar en este capítulo.

1.2. Verificación en el proceso de diseño

Una vez descrito un circuito (o un bloque de éste), es necesario verificar que el
circuito descrito coincide con la especificación que nos han dado. Para ello es ne-
cesario realizar una simulación del mismo, aplicando una serie de estímulos en las
entradas que exciten al circuito de modo que podamos verificar su funcionamiento
al completo. En este caso, los fallos detectados han de guiarnos hacia la parte del
componente que falla. Nótese que no ocurre lo mismo en la verificación realizada
al final del proceso de fabricación, el la que la detección del fallo sirve simplemente
para desechar un circuito con un defecto de fabricación.

1.2.1. Generación de estímulos

Para generar los estímulos a aplicar en las entradas del circuito tenemos dos

alternativas:

Usar el lenguaje del simulador o alguna herramienta gráfica del mismo para
generarlos. La ventaja de esta aproximación es que suele ser relativamente
fácil de usar, sobre todo si es una herramienta gráfica y los circuitos son
simples. No obstante el principal inconveniente es su falta de portabilidad: si
cambiamos el simulador tenemos que volver a generar de nuevo los estímulos
para el nuevo simulador.

1

2

Verificación de circuitos digitales

Usar el lenguaje VHDL. La principal ventaja es que es independiente del si-
mulador. Por otro lado es muy potente, con lo que facilita la generación de
estímulos para circuitos complejos. El inconveniente es que es un poco más
difícil de usar, aunque si se sabe ya VHDL tampoco es para tanto.

1.2.2. Verificación de las salidas

Una vez generados los estímulos se puede simular el circuito para verificar si su
funcionamiento es el requerido por la especificación. Dicha verificación consiste en
ver si las salidas del circuito se comportan como deben. Para ello volvemos a tener
dos alternativas:

Comprobar a mano las salidas viendo las formas de onda generadas por el
simulador. Obviamente esto es un poco tedioso, sobre todo si el circuito es
complejo. Además, si la comprobación nos lleva bastante tiempo, será un
tiempo perdido cada vez que hagamos una pequeña modificación en el circuito
y tengamos que comprobar que no hemos estropeado nada. Por último, al ser
un proceso manual es muy propenso a errores, sobre todo cuando hayamos
hecho la simulación un montón de veces y nuestros ojos ya no estén muy
despiertos.
Dejar al simulador que compruebe las salidas. La ventaja obvia de esta al-
ternativa es que es más cómodo para nosotros. El problema es que necesario
escribir un código en VHDL que realice la comprobación de las salidas, lo cual
a veces es bastante complejo; incluso más que el circuito a verificar.

1.3. El testbench en VHDL

Un testbench o banco de pruebas, no es más que una descripción en VHDL en la
que se describe cómo varían las entradas del circuito a verificar, se instancia dicho
circuito como un componente usando VHDL estructural y opcionalmente (aunque
muy recomendado) se verifica que las salidas son las esperadas.

Al ser una descripción usada por el simulador, tanto la descripción de las entra-
das como la verificación de las salidas no tiene por qué ser sintetizable, por lo que
podemos usar todas la potencia del VHDL. Por otro lado, aunque parezca un poco
raro, el testbench no tiene ni entradas ni salidas, ya que las entradas las genera
internamente y las salidas las comprueba el mismo. En el caso de que hagamos una
comprobación manual de las salidas se podrían poner como salidas del testbench,
pero dado que en simulación tenemos acceso a todos los nodos del circuito es algo
que no se suele hacer. Por tanto, la estructura de un testbench es la siguiente:

library ieee;
use ieee. std_logic_1164 .all;

entity MiTestBench is
end MiTestBench ;

1 Verificación de circuitos digitales

3

architecture TestBench of MiTestBench is

-- Declaración de señales. Serán al menos las entradas y salidas
-- del circuito .
-- Declaración del componente a verificar .

begin

-- Instancia del componente a verificar .
-- Generación de estímulos y verificación de las salidas .

end TestBench ;

Afortunadamente algunas herramientas de diseño permiten crear esta estructu-
ra a partir del circuito. Por ejemplo la herramienta Quartus II lo realiza mediante la
opción “Processing : Start : Start Test Bench Template Writer”. No obstante, esto
es sólo una mínima parte del trabajo, pues lo complejo es generar los estímulos y
verificarlos, y eso no hay herramienta que lo haga aún.

Para ilustrar la creación de testbench lo mejor es ver una serie de ejemplos. Em-
pezaremos por los más sencillos en los que nos limitaremos a generar los estímulos
de entrada para terminar describiendo testbench que comprueban automáticamen-
te las salidas para decirnos si el circuito funciona correctamente.

1.3.1. Testbench para un comparador de 2 bits

En el siguiente listado de muestra la descripción de un comparador de 2 bits.

1 -- Comparador de 2 bits descrito en alto nivel
2
3 library ieee;
4 use ieee. std_logic_1164 .all;
5 use ieee. numeric_std .all;
6
7 entity Comparador2Bits is
8
9
10
11
12
13
14
15 end Comparador2Bits ;
16
17 architecture behavioral of Comparador2Bits is
18
19 begin
20
21

port (
a, b
a_ma_b : out std_logic ;
a_ig_b : out std_logic ;
a_me_b : out std_logic );

-- behavioral

a_ma_b <= ’1’ when unsigned (a) > unsigned (b) else

: in

std_logic_vector (1 downto 0);

-- Entradas
-- a mayor que b
-- a igual a b
-- a menor que b

4

Verificación de circuitos digitales

a_ig_b <= ’1’ when unsigned (a) = unsigned (b) else

a_me_b <= ’1’ when unsigned (a) < unsigned (b) else

22
23
24
25
26
27 end behavioral ;

’0’;

’0’;

’0’;

Si creamos una plantilla para el testbench con Quartus II se obtiene el siguiente

archivo:

Please refer to the

1 -- Copyright (C) 1991 -2012 Altera Corporation
2 -- Your use of Altera Corporation ’s design tools , logic functions
3 -- and other software and tools , and its AMPP partner logic
4 -- functions , and any output files from any of the foregoing
5 -- ( including device programming or simulation files), and any
6 -- associated documentation or information are expressly subject
7 -- to the terms and conditions of the Altera Program License
8 -- Subscription Agreement , Altera MegaCore Function License
9 -- Agreement , or other applicable license agreement , including ,
10 -- without limitation , that your use is for the sole purpose of
11 -- programming logic devices manufactured by Altera and sold by
12 -- Altera or its authorized distributors .
13 -- applicable agreement for further details .
14
15 -- ***************************************************************************
16 -- This file contains a Vhdl test bench template that is freely editable to
17 -- suit user ’s needs . Comments are provided in each section to help the user
18 -- fill out necessary details .
19 -- ***************************************************************************
20 -- Generated on "09/10/2012 11:44:44"
21
22 -- Vhdl Test Bench template for design
23 --
24 -- Simulation tool : ModelSim - Altera (VHDL)
25 --
26
27 library ieee;
28 use ieee. std_logic_1164 .all;
29
30 entity Comparador2Bits_vhd_tst is
31 end Comparador2Bits_vhd_tst ;
32 architecture Comparador2Bits_arch of Comparador2Bits_vhd_tst is
33 -- constants
34 -- signals
signal a
35

: std_logic_vector (1 downto 0);

:

Comparador2Bits

1 Verificación de circuitos digitales

5

port (

: in

std_logic_vector (1 downto 0)

end component ;

: std_logic_vector (1 downto 0);

i1 : Comparador4Bits

port map (

: in

std_logic_vector (1 downto 0);

signa
  • Links de descarga
http://lwp-l.com/pdf14954

Comentarios de: Capitulo I - Verificación de circuitos digitales (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad