SlideShare una empresa de Scribd logo
1 de 134
Descargar para leer sin conexión
1
European
Training Institute
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
Introducción al Lenguaje deIntroducción al Lenguaje de
Descripción Hardware VHDLDescripción Hardware VHDL
SergioSergio LopezLopez--BuedoBuedo
sergio.lopezsergio.lopez--buedo@uam.esbuedo@uam.es
2
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
2
Lenguaje de Descripción Hardware VHDL
Introducción
La entidad y la arquitectura
Tipos de datos
Los procesos
Circuitos combinacionales
Circuitos secuenciales
Máquinas de estados
Triestados
Diseño jerárquico
Estilos de diseño
Verificación con testbenches
VHDLVHDL
3
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
3
Lenguaje de Descripción Hardware VHDL
IntroducciónIntroducción
La entidad y la arquitectura
Tipos de datos
Los procesos
Circuitos combinacionales
Circuitos secuenciales
Máquinas de estados
Triestados
Diseño jerárquico
Estilos de diseño
Verificación con testbenches
VHDLVHDL
4
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
4
¿Para qué sirven los HDLs?
Los lenguajes de descripción HW
sirven para modelar circuitos,
PARA EXPRESAR IDEAS
if A='1' and B='1'
then S<='1';
else S<='0';
end if;
Los modelos se pueden simular para
comprobar que se corresponden con la
funcionalidad deseada
O se pueden sintetizar para
crear un circuito que
funciona como el modelo
A
B
S
A
B
S
0 ns 10 ns 20 ns
5
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
5
Los HDLs cuando el circuito ya existe
Se puede crear un
modelo de un circuito
que ya exista, que ya
esté implementado
if A='1' and B='1'
then S<='1' after 5 ns;
else S<='0' after 4 ns;
end if;
En este caso el objetivo es simular el circuito
para comprobar que su funcionalidad se ajusta
a las especificaciones iniciales
A
B
S
0 ns 10 ns 20 ns
Simulación
Post-Layout
6
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
6
Los HDLs como documentación
Los modelos de los circuitos si
están bien comentados sirven
como documentación
Los HDLs se pueden utilizar
también para crear bancos de
pruebas, o sea,
para crear estímulos y ver
resultados durante la simulación
Utilizar HDLs
para hacer las
especificaciones
La mejor doc es
el código fuente
7
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
7
HDLs: estado actual y alternativas
• En la actualidad, los esquemáticos no son una alternativa
realista en ningún proyecto
• Ejemplo: GeForce4, 65 millones de transistores y 800.000
líneas de código Verilog
• La alternativa estándar es usar un HDL
– Verilog: Costa Oeste, ASICs, menos verboso, más parecido a C,
menos expresivo
– VHDL: Costa Este y Europa, FPGAs, más verboso, más parecido a
PASCAL y ADA, más expresivo
• El diseño se sintetiza a partir de un HDL, pero gran parte del
diseño y la verificación se realiza con lenguajes estándares
– C y Matlab
• VHDL es el estándar para FPGAs en proyectos industriales de
moderada complejidad en España
8
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
8
VHDL: orígenes e historia
• VHDL surge a principios de los '80 de un proyecto DARPA
(Departamento de Defensa de los EE.UU.) llamado VHSIC –
Very High Speed Integrated Circuits
• VHDL aparece como una manera de describir circuitos
integrados
– La crisis del ciclo de vida del HW: cada día los circuitos integrados
eran más complicados, y el coste de reponerlos cada vez era
mayor, porque no estaban correctamente documentados. VHDL
nació como una manera estándar de documentar los circuitos
– Al mismo tiempo, se vio que la expresividad de VHDL permitiría
reducir el tiempo de diseño de los circuitos, porque se podrían
crear directamente de su descripción: utilidad de la síntesis
• En 1987 el trabajo fue cedido al IEEE, y a partir de ese
momento es un estándar abierto.
9
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
9
VHDL: Evolución
• 1980: El departamento de defensa
de los EEUU funda el proyecto para
crear un HDL estándar dentro del
programa VHSIC
• 1981: Woods Hole Workshop,
reunión inicial entre el Gobierno,
Universidades e Industria
• 1983: Se concedió a Intermetrics,
IBM y Texas Instruments el contrato
para desarrollar VHDL
• 1985: Versión 7.2 de dominio
público.
• 1987: El IEEE lo ratifica como su
estándar 1076 (VHDL-87)
• 1993: El lenguaje VHDL fue
revisado y ampliado, pasando a ser
estándar 1076 ‘93 (VHDL-93)
• 2000: Última modificación de VHDL
10
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
10
¿Y en el futuro?
• Los lenguajes de descripción de hardware tienen también
limitaciones:
– Metodología de diseño nueva, exige un cambio de mentalidad con
respecto al SW
– No permiten reusar código SW para HW
– La decisión HW/SW se hace debe hacer antes de la codificación
– La simulación es lenta, siempre hay que recurrir a una simulación
algorítmica usando lenguajes SW
• Como respuesta a esto, hay varias iniciativas para describir HW
usando lenguajes de alto nivel, tipo SW
– Handel-C, System-C
– Forge (Java)
– Superlog
• VHDL es un lenguaje de presente, en el futuro ya se verá...
11
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
11
Lenguaje de Descripción Hardware VHDL
Introducción
La entidad y la arquitecturaLa entidad y la arquitectura
Tipos de datos
Los procesos
Circuitos combinacionales
Circuitos secuenciales
Máquinas de estados
Triestados
Diseño jerárquico
Estilos de diseño
Verificación con testbenches
VHDLVHDL
12
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
12
Entidad y Arquitectura: 1er nivel de abstracción
Abstracción: caja negra
Interfaz: entradas y salidas
Entidad y arquitectura
• Una unidad hardware se visualiza
como una “caja negra”
– El interfaz de la caja negra esta
completamente definida.
– El interior esta oculto.
• En VHDL la caja negra se
denomina entidad
– La ENTITY describe la E/S del
diseño
• Para describir su funcionamiento
se asocia una implementación
que se denomina arquitectura
– La ARCHITECTURE describe el
contenido del diseño.
rst
d[7:0]
clk
q[7:0]
co
13
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
13
PORTS: Puertos de una entidad
Ports = Canales de Comunicación
Cada una de las posibles conexiones se
denomina un PORT y consta de:
• Un nombre, que debe ser único dentro
de la entidad.
• Una lista de propiedades, como:
– la dirección del flujo de datos,
entrada, salida, bidireccional y se
conoce como MODO del puerto.
– los valores que puede tomar el
puerto: '0’, '1' o (‘Z’), etc.,los
valores posibles dependen de lo
que se denomina TIPO de señal.
• Los puertos son una clase especial de
señales que adicionalmente al tipo de
señal añade el modo
Interfaz de dispositivo
Ports: entradas y salidas
rst
d[7:0]
clk
q[7:0]
co
14
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
14
PORTS: Modos de un puerto
Modo de los puertos
Indican la dirección y si el puerto puede
leerse o escribirse dentro de la entidad
• IN Una señal que entra en la entidad y
no sale. La señal puede ser leída pero no
escrita.
• OUT Una señal que sale fuera de la
señal y no es usada internamente. La
señal no puede ser leída dentro de la
entidad.
• BUFFER Una señal que sale de la
entidad y también es realimentada dentro
de la entidad.
• INOUT Una señal que es bidireccional,
entrada/salida de la entidad.
15
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
15
VHDL: Declaración de entidad
La declaración VHDL de la caja negra:
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY mi_componente IS PORT (
clk, rst: IN std_logic;
d: IN std_logic_vector(7 DOWNTO 0);
q: OUT std_logic_vector(7 DOWNTO 0);
co: OUT std_logic);
END mi_componente;
mi_componente
rst
d[7:0]
clk
q[7:0]
co
MODO
TIPO
16
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
16
Estructura de un diseño VHDL
declaraciones de puertos
parte declarativa
de la arquitectura
cuerpo de la arquitectura nombre de la
arquitectura
nombre de la
entidad
17
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
17
Resumen: Entidad y Arquitecturas
• La entidad se utiliza para hacer una descripción "caja negra" del
diseño, sólo se detalla su interfaz
• Los contenidos del circuito se modelan dentro de la arquitectura
• Una entidad puede tener varias arquitecturas
– Por ejemplo, la descripción de comportamiento que ha hecho el
diseñador y el modelo post-layout obtenido después de
implementar el chip
18
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
18
Lenguaje de Descripción Hardware VHDL
Introducción
La entidad y la arquitectura
Tipos de datosTipos de datos
Los procesos
Circuitos combinacionales
Circuitos secuenciales
Máquinas de estados
Triestados
Diseño jerárquico
Estilos de diseño
Verificación con testbenches
VHDLVHDL
19
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
19
Tipos de datos básicos
• TIPO es la definición de los valores
posibles que puede tomar un objeto
• VHDL es un lenguaje fuertemente
tipado:
– A los objetos se les asigna siempre
un tipo cuando se declaran
– Las asignación sólo pueden hacerse
entre objetos del mismo tipo
• Los tipos predefinidos son:
– Escalares: integer
floating point
enumerated
physical
– Compuestos: array
record
– Punteros: access
– Archivos: file
tipos
file access
escalares
compuestos
enumerados
real
entero
físico
record
array
20
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
20
Tipos básicos predefinidos
Tipos IEEETipos IEEE--10761076
• BIT: sólo puede tomar los valores de '0' o '1’. Para modelar
señales digitales
• BIT_VECTOR: un array unidimensional (vector) de bits. Para
modelar buses
• INTEGER: tipo entero
– usado como valor índice en lazos, constantes o valores genéricos
• BOOLEAN: tipo lógico
– Puede tomar como valores ‘TRUE’ o ‘FALSE’
• REAL: tipo para números en coma flotante
• ENUMERATED: Enumeración
– Conjunto de valores definido por el usuario
– Por ejemplo: TYPE estados IS (inicio, lento, rapido)
21
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
21
Tipo STD_LOGIC
• Los dos valores del tipo bit se quedan cortos para modelar
todos los estados de una señal digital en la realidad
• El paquete IEEE.standard_logic_1164 define el tipo std_logic,
que representa todos los posibles estados de una señal real:
U No inicializado, valor por defecto.
X Desconocido fuerte, salida con múltiples fuentes en corto
0 Salida de una puerta con nivel lógico bajo
1 Salida de una puerta con nivel lógico alto
Z Alta Impedancia
W Desconocido débil, terminación de bus
L 0 débil, resistencia de pull-down
H 1 débil, resistencia de pull-up
– No importa, usado como comodín para síntesis
22
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
22
Tipo STD_LOGIC (2)
• Para describir buses se utiliza el tipo std_logic_vector, que es
un array de std_logic
• Los tipos std_logic y std_logic_vector son los estándares
industriales.
• Todos los valores son validos en un simulador VHDL, sin
embargo solo: ‘0’, ‘1’, ‘Z’, ‘L’, ‘H’ y ‘–’ se reconocen para la
síntesis.
• En el paquete IEEE.std_logic_1164 aparecen otros dos tipos:
std_ulogic y std_ulogic_vector. Son los mismos, pero sin haber
pasado por la función de resolución
– Esta función decide cuál debe ser el valor de la señal cuando tiene
dos fuentes que le asignan valores distintos
– Por ejemplo, si una fuente asigna un ‘1’ y la otra una ‘L’, la función
de resolución dice que la señal se queda a ‘1’
23
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
23
Utilizando los tipos: señales en VHDL
• El objeto básico en VHDL es la señal, que se utiliza para
modelar los hilos del circuito
• Puesto que modela nodos físicos, incluye información de tiempo
– No sólo contiene unos valores ('0', '1', 'Z', etc...) sino también el
tiempo en el que se toman estos valores
• Se declaran antes del begin de la arquitectura (en la parte
declarativa):
• Pueden tener un valor inicial (no soportado en síntesis)
• Para asignar valores a una señal se utiliza <=
ARCHITECTURE uam OF prueba IS
SIGNAL s1 : STD_LOGIC;
SIGNAL s2 : INTEGER;
BEGIN
SIGNAL a : STD_LOGIC := '0';
24
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
24
Utilizando los tipos: constantes y variables
• Como en cualquier otro lenguaje, en VHDL se pueden utilizar
constantes
• Se declaran también en la parte declarativa, antes del begin
• Las constantes pueden ser de cualquier tipo
• El tercer objeto posible en VHDL son las variables:
– Sólo almacenan valores, no entienden de tiempo
– Visibilidad limitada, sólo dentro de un proceso y no en toda la
arquitectura (a diferencia de las señales y constantes)
– Se les asignan valores empleando :=
ARCHITECTURE uam OF prueba IS
CONSTANT c1 : STD_LOGIC := '0';
CONSTANT c2 : TIME := 10 ns;
CONSTANT c3 : INTEGER := 5;
BEGIN
25
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
25
Usando arrays para crear buses
• Los vectores se pueden definir tanto en rangos ascendentes
como descendentes:
Produce como resultado:
• Una manera rápida y eficiente de asignar valores a vectores
son los aggregates:
SIGNAL a: STD_LOGIC_VECTOR(0 TO 3); -- i.e. rango ascendente
SIGNAL b: STD_LOGIC_VECTOR(3 DOWNTO 0); -- i.e. rango descendente
a <= "0101";
b <= "0101";
a(0) = '0'; a(1) = '1'; a(2) = '0'; a(3) = '1';
b(0) = '1'; b(1) = '0'; b(2) = '1'; b(3) = '0';
a <= (0 => '0‘, 1 => c and d, others=> ‘Z‘);
26
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
26
Asignación de señales en buses
Flexibilidad en la asignación de valores de busesFlexibilidad en la asignación de valores de buses
SIGNAL tmp: STD_LOGIC_VECTOR(7 downto 0);
• Todos los bits: tmp <= "10100011";
tmp <= x"A3"; -- VHDL’93
• Un solo bit: tmp(7) <= '1';
• Un rango de bits: tmp(7 downto 4) <= "1010";
• Notación:
– 1 bit : comilla simple (')
– multiples bits: comilla doble (")
27
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
27
Como definir nuevos tipos (y usarlos)
• VHDL permite definir nuevos tipos, bien a partir de tipos
enumerados, o como subconjunto de tipos ya existentes, o tipos
multidimensionales
• Las definiciones de tipos se deben hacer en la parte declarativa
de la arquitectura
• Definir un tipo como una enumeración:
• Definir un tipo bidimensional:
TYPE estados IS (inactivo, operando, finalizar);
SIGNAL mi_maquina : estados;
TYPE memoria IS ARRAY (1024 downto 0) OF
std_logic_vector(7 downto 0);
SIGNAL mi_memoria : memoria;
28
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
28
Operadores definidos en VHDL
• Lógicos
and
or, nor
xor, xnor
• Relacionales
= igual
/= distinto
< menor
<= menor o igual
> mayor
>= mayor o igual
• Misceláneos
abs valor absoluto
** exponenciación
not negación (unario)
• Adición
+ suma
– resta
& concatenación de vectores
• Multiplicativos
* multiplicación
/ división
rem resto
mod módulo
• Signo (unarios)
+, –
• Desplazamiento (bit_vector)
sll, srl
sla, sra
rol, ror
29
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
29
Más sobre operadores
• No todos los operadores están definidos para todos los tipos
• En particular, para los std_logic habrá que obtenerlos de las
librerías estándar:
– std_logic_signed
– std_logic_unsigned
– std_logic_arith
• El operador de concatenación se utiliza muy a menudo
• Los operadores de desplazamiento básicos sólo funcionan con
bit_vector. Es mucho mejor usar concatenación con std_logic
signal a: std_logic_vector( 3 downto 0);
signal b: std_logic_vector( 3 downto 0);
signal c: std_logic_vector( 7 downto 0);
a <= "0011";
b <= "1010";
c <= a & b; -- c ="00111010"
30
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
30
Acerca de las librerías en VHDL
• Librerías clásicas (y anticuadas):
– std_logic_signed
– std_logic_unsigned
– std_logic_arith
• Las librerías signed y unsigned se deben emplean cuando se
quiere que los std_logic_vector estén respectivamente en
complemento a 2 o en binario natural
– Aquí está el CONV_INTEGER
• La librería arith es más completa, y utiliza mayormente los tipos
signed o unsigned (derivados de std_logic_vector)
– Aquí está CON_STD_LOGIC_VECTOR
• Tendencia actual del IEEE: emplear la librería numeric_std
– Pensada para trabajar con los tipos signed y unsigned
– TO_INTEGER, TO_SIGNED, TO_UNSIGNED
31
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
31
Lenguaje de Descripción Hardware VHDL
Introducción
La entidad y la arquitectura
Tipos de datos
Los procesosLos procesos
Circuitos combinacionales
Circuitos secuenciales
Máquinas de estados
Triestados
Diseño jerárquico
Estilos de diseño
Verificación con testbenches
VHDLVHDL
32
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
32
Entrando en detalle en la arquitectura
architecture UAM of EJEMPLO is
begin
end architecture UAM;
Parte declarativa: aquí se
definen los subtipos y las
señales que vamos a usar
En el cuerpo de la arquitectura
se modela el comportamiento
del circuito con asignaciones,
instanciaciones y PROCESOS
33
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
33
El proceso: el elemento de diseño principal
• Un proceso describe el comportamiento de un circuito
– Cuyo estado puede variar cuando cambian ciertas señales
– Utilizando construcciones muy expresivas: if..then..else, case,
bucles for y while, etc…
– Y que además puede declarar variables, procedimientos, etc...
process(lista de señales)
...
parte declarativa (variables, procedimientos, tipos, etc…)
...
begin
...
instrucciones que describen el comportamiento
...
end process;
34
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
34
La lista de sensibilidad tiene las
señales A, B porque cualquier
cambio en las entradas puede
variar el estado de la puerta
Ejemplo: Descripción de una puerta AND
process(A,B)
begin
if A='1' and B='1' then
S <= '1';
else
S <= '0';
end if;
end process;
A
B
S
Se usa un if..then..else
para describir la puerta
El proceso
no declara
nada
35
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
35
El problema de la concurrencia del HW
El HW es inherentemente concurrente,
los circuitos coexisten físicamente en el tiempo
Este HW no se puede modelar
en un lenguaje secuencial
como C:
S = A & B;
Q = C | D;
Ambas puertas funcionan al
mismo tiempo, ¡no una antes
de la otra!
El chip tiene dos puertas que
funcionan simultáneamente
A
B
S
C
D
Q
36
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
36
Concurrencia: Una posible solución
• La solución al problema anterior es que aunque la ejecución
sea secuencial, las instrucciones no tarden ningún tiempo
en ejecutarse:
• De esta manera la aunque una instrucción se ejecuta después
de la otra, como las dos se evalúan en el mismo instante, desde
el punto de vista de la modelización del circuito ambas puertas
están funcionando simultáneamente
• Esta es la solución por la que opta VHDL (y Verilog)
A
B
S
C
D
Q
S <= A and B;
Q <= C or D;
37
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
37
Necesidad de la concurrencia
• Sin embargo, esta solución ya no vale con este circuito:
• ¿Por qué? No hay que olvidar que se trata de modelizar
circuitos reales, no virtuales, y las señales necesitan que
transcurra el tiempo para tomar un valor:
A
B
C
S
Q
S <= A and B;
Q <= S or C;
!Q no toma el
valor correcto
porque no se da
tiempo para que
se actualize S!
38
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
38
La solución de VHDL
• VHDL (y en general, todos los HDLs) solucionan este problema
dando soporte explicito a la concurrencia
• En VHDL, una arquitectura puede tener tantos procesos como
queramos, y todos se ejecutan concurrentemente
architecture ...
...
begin
process(...)
...
end process;
process(...)
...
end process;
end ...;
Los procesos se ejecutan
concurrentemente
39
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
39
Dos procesos en paralelo como solución
architecture uam of ejemplo is
...
begin
process(A,B)
begin
if A='1' and B='1' then
S <= '1';
else
S <= '0';
end if;
end process;
process(C,S)
begin
if C='1' then
Q <= '1';
else
Q <= S;
end if;
end process;
end uam;
A
B
C
S
Q
40
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
40
Procesos: Recapitulando
• Los procesos se disparan (su código se ejecuta) cuando cambia
alguna de las señales en su lista de sensibilidad
• Las instrucciones dentro del proceso se ejecutan
secuencialmente, una detrás de otra, pero sin dar lugar a que
avance el tiempo durante su ejecución
• El tiempo sólo avanza cuando se llega al final del proceso
• Las señales modelan hilos del circuito, y como tales, sólo
pueden cambiar de valor si se deja que avance el tiempo
• Una arquitectura puede tener tantos procesos como queramos,
y todos se van a ejecutar en paralelo
• Esta es la manera que tiene VHDL de expresar la concurrencia
inherente al hardware
41
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
41
Instrucciones en procesos: IF..THEN..ELSE
IF condicion_1 THEN
...
secuencia de instrucciones 1
...
ELSIF condicion_2 THEN
...
secuencia de instrucciones 2
...
ELSIF condicion_3 THEN
...
secuencia de instrucciones 1
...
ELSE
...
instrucciones por defecto
...
END IF;
architecture example of thermostat is
begin
ctrl : process (desired_temp, actual_temp) is
begin
if actual_temp < desired_temp - 2 then
heater_on <= true;
elsif actual_temp > desired_temp + 2 then
heater_on <= false;
end if;
end process ctrl;
end architecture example;
Ejemplo: Un termostato
(Ashenden Fig. 3-1)
42
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
42
Instrucciones en procesos: CASE
CASE expresion IS
WHEN caso_1 =>
...
secuencia de instrucciones 1
...
WHEN caso_2 =>
...
secuencia de instrucciones 2
...
WHEN OTHERS =>
...
instrucciones por defecto
...
END CASE;
architecture uam of alu is
begin
alu : process (op1, op2, cmd) is
begin
case cmd is
when "00" =>
res <= op1 + op2;
when "01" =>
res <= op1 – op2;
when "10" =>
res <= op1 and op2;
when "11" =>
res <= op1 or op2;
when others =>
res <= "XXXXXXXX";
end case;
end process alu;
end architecture uam;
Ejemplo: Una ALU sencilla
43
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
43
Instrucciones en procesos: Bucle FOR
[etiqueta] FOR identificador IN rango LOOP
...
instrucciones secuenciales
...
END LOOP [etiqueta];
architecture uam of decoder is
begin
decod : process (a) is
begin
for i in 0 to 7 loop
if i = CONV_INTEGER(a) then
q(i) <= '1';
else
q(i) <= '0';
end if;
end loop;
end process decod;
end architecture uam;
Ejemplo:
Decodificador de 3 a 8
Dentro del proceso
no avanza el tiempo,
por lo que el bucle
se paraleliza
44
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
44
Instrucciones en procesos: Bucle WHILE
[etiqueta] WHILE condicion LOOP
...
instrucciones secuenciales
...
END LOOP [etiqueta];
busca: process(valor)
variable pos : integer;
begin
encontrado <= '0'; pos := 0;
while valor /= tabla(pos) loop
pos := pos + 1;
if pos = 100 then exit;
end if;
end loop;
if pos < 100 then
encontrado <= '1';
end if;
end process;
Ejemplo:
Búsqueda en una tabla
Aquí también se
paraleliza el bucle
45
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
45
Bucles con next y exit
• En VHDL se pueden crear bucles infinitos
• Todos los bucles pueden tener una condición de salida
• Con la instrucción next termina inmediatamente la iteración
actual y se pasa a la siguiente
[etiqueta] LOOP
...
instrucciones secuenciales
...
END LOOP [etiqueta];
exit [etiqueta] [when condicion];
next [etiqueta] [when condicion];
46
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
46
Procesos: Dos opciones de funcionamiento
process(lista de señales)
...
begin
...
instrucciones secuenciales
...
end process;
process
...
begin
...
instrucciones secuenciales
...
wait...
...
instrucciones secuenciales
...
end process;
El proceso se
dispara cuando
cambia alguna de
estas señales
El proceso se dispara
inmediatamenteLas instrucciones se
ejecutan hasta que
se llega al wait, y en
ese punto se
suspende el proceso
Cuando se deja de
cumplir la condición
de espera, la
ejecución continúa
Al llegar al final, se
empieza otra vez
por el principio
Las instrucciones
se ejecutan hasta
que se llega al
final, y entonces
se suspende el
proceso
47
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
47
Distintas claúsulas wait
• Esperar a que ocurra una condición:
• Esperar a que cambie alguna de las señales de una lista:
• Esperar un cierto tiempo:
• Esperar indefinidamente (matar el proceso):
wait until a='1' and b='0';
wait on a, b, clk;
wait 100 ns;
wait;
48
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
48
Asignación de valores a señales
• No olvidar...
Las asignaciones a señales dentro de procesosLas asignaciones a señales dentro de procesos
sólo se ejecutan cuando se suspende el procesosólo se ejecutan cuando se suspende el proceso
• No es un dogma de fe, tiene su explicación...
– Las señales modelan conexiones físicas, y por tanto, no sólo
deben tener en cuenta el valor, sino también el tiempo
– Para que un cable cambie de valor hace falta que el tiempo avance
– De la misma forma, para que una señal cambie de valor hace falta
que el tiempo avance
– El tiempo sólo avanza cuando se suspende el proceso
49
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
49
Las variables
• A la hora de modelar un circuito nos puede venir bien un tener
un objeto cuyo valor se actualice inmediatamente
– sin tener que esperar a que avance el tiempo, como en las señales
• La solución son las variables
– Las variables se declaran dentro de los procesos
– Sólo se ven dentro del proceso que las ha declarado
– Toman el valor inmediatamente, son independientes del tiempo
process(a,b,c)
...
variable v : std_logic;
...
begin
...
v := a and b or c;
...
end process;
50
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
50
Solución con variables
A
B
C
S
Q
architecture uam of ejemplo is
...
begin
process(A,B,C)
variable S : std_logic;
begin
S := A and B;
if C='1' then
Q <= '1';
else
Q <= S;
end if;
end process;
end uam;
El problema de la actualización
de la señal S tiene muy fácil
solución con una variable
51
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
51
se actualizan
inmediatamente
se actualizan cuando
avanza el tiempo (se
suspende el proceso)
Comportamiento
local
(dentro del proceso)
global
(comunicación entre
procesos)
Visibilidad
representan
almacenamiento local
modelan nodos físicos
del circuito
Utilidad
destino := fuentedestino <= fuenteSintaxis
VariablesSeñales
Semántica de variables y señales
52
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
52
Lenguaje de Descripción Hardware VHDL
Introducción
La entidad y la arquitectura
Tipos de datos
Los procesos
CircuitosCircuitos combinacionalescombinacionales
Circuitos secuenciales
Máquinas de estados
Triestados
Diseño jerárquico
Estilos de diseño
Verificación con testbenches
VHDLVHDL
53
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
53
Modelar lógica combinacional con procesos
architecture uam of mux is
begin
process(a,b,sel)
begin
if sel='1' then
y <= a;
else
y <= b;
end if;
end process;
end uam;
Todas las entradas
deben estar en la
lista de sensibilidad
Se debe asignar
siempre (en
todos los casos)
a la salida un
valor
54
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
54
El problema de la memoria implícita
• CAUSA
– las señales en VHDL tienen un estado actual y un estado futuro
• EFECTOS
– En un proceso, si el valor futuro de una señal no puede ser
determinado, se mantiene el valor actual.
– Se sintetiza un latch para mantener su estado actual
• VENTAJAS
– Simplifica la creacion de elementos de memoria
• DESVENTAJAS
– Pueden generarse latches no deseados,p.ej. cuando todas las
opciones de una sentencia condicional no están especificadas
55
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
55
Un ejemplo correcto
architecture example of thermostat is
begin
ctrl : process (desired_temp, actual_temp) is
begin
if actual_temp < desired_temp - 2 then
heater_on <= true;
elsif actual_temp > desired_temp + 2 then
heater_on <= false;
end if;
end process ctrl;
end architecture example;
Se genera unSe genera un latchlatch para la señalpara la señal heater_onheater_on
porque no se actualiza en todos los casosporque no se actualiza en todos los casos
56
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
56
Un problema con la memoria implícita
• Diseñar un circuito de acuerdo a esta tabla de verdad
• Solución es incorrecta, por no poner el caso "11" no significa
"don't care", simplemente está guardando el valor anterior, está
generando un latch
process (a)
begin
case a is
when "00" =>
res <= '1';
when "01" =>
res <= '1';
when "10" =>
res <= '0';
when others =>
null;
end process;
don't care11
010
101
100
SA
57
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
57
Reglas para evitar la memoria implícita
• Para evitar la generación de latches no deseados
– Se deber terminar la instrucción IF...THEN...ELSE... con la cláusula
ELSE
– Especificar todas las alternativas en un CASE, definiendo cada
alternativa individualmente, o mejor terminando la sentencia CASE
con la cláusula WHEN OTHERS... Por ejemplo,
CASE decode IS
WHEN "100" => key <= first;
WHEN "010" => key <= second;
WHEN "001" => key <= third;
WHEN OTHERS => key <= none;
END CASE;
58
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
58
Asignaciones concurrentes
• Las asignaciones concurrentes son asignaciones de valores a
señales, fuera de proceso, que permiten modelar de una
manera muy compacta lógica combinacional
– Funcionan como procesos (son procesos implícitos) y se ejecutan
concurrentemente con el resto de procesos y asignaciones
• Hay tres tipos
– Asignaciones simples
– Asignaciones condicionales
– Asignaciones con selección
s <= (a and b) + c;
s <= a when c='1' else b;
with a+b select
s <= d when "0000",
e when "1010",
'0' when others;
59
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
59
Asignaciones concurrentes simples
• A una señal se le asigna un valor que proviene de una
expresión, que puede ser tan compleja como queramos
• Esta expresión es completamente equivalente a este proceso:
• Se pueden utilizar todos los operadores que queramos, tanto
los predefinidos como los que importemos de las librerías
s <= ((a + b) * c) and d;
process(a,b,c,d)
begin
s <= ((a + b) * c) and d;
end process;
60
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
60
Asignaciones concurrentes condicionales
• A la señal se le asigna valores dependiendo de si se cumplen
las condiciones que se van evaluando:
• Por su ejecución en cascada es similar al IF..THEN..ELSE
• Pueden generarse problemas de memoria implícita si no se
pone el último else
architecture uam of coder is
begin
s <= "111" when a(7)='1' else
"110" when a(6)='1' else
"101" when a(5)='1' else
"100" when a(4)='1' else
"011" when a(3)='1' else
"010" when a(2)='1' else
"001" when a(1)='1' else
"000";
end architecture uam;
61
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
61
Asignaciones concurrentes con selección
• Se le asigna un valor a una señal dependiendo del valor que
tome una expresión:
• Por su ejecución en paralelo (balanceada) es similar a un CASE
• Se pueden dar problemas de memoria implícita si no se pone el
último when others
architecture uam of decod is
begin
with a sel
s <= "00000001" when "000",
"00000010" when "001",
"00000100" when "010",
"00001000" when "011",
"00010000" when "100",
"00100000" when "101",
"01000000" when "110",
"10000000" when others;
end architecture uam;
62
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
62
Lenguaje de Descripción Hardware VHDL
Introducción
La entidad y la arquitectura
Tipos de datos
Los procesos
Circuitos combinacionales
CircuitosCircuitos secuencialessecuenciales
Máquinas de estados
Triestados
Diseño jerárquico
Estilos de diseño
Verificación con testbenches
VHDLVHDL
63
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
63
El fundamento: Modelo del flip-flop D
process (clk)
begin
if clk'event and clk='1' then
q <= d;
end if;
end process;
proceso sensible
al reloj
cambia el reloj y
es ahora 1 ...
hay un flanco de
subida
también vale
rising_edge(clk)
no hay else,
queremos
inferir memoria
64
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
64
Flip-flop con reset asíncrono y clock enable
• Otro circuito fundamental.
• El reset debe estar en la lista de sensibilidad porque es
asíncrono, tiene efecto independientemente del reloj.
• En los circuitos secuenciales, la lista de sensibilidad debe estar
compuesta como mucho por el reloj y el reset (si es asíncrono).
process (clk,rst)
begin
if rst='1' then
q <= '0';
elsif clk'event and clk='1' then
if ce='1' then
q <= d;
end if;
end if;
end process;
65
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
65
El axioma del diseño síncrono
CLK
El reloj es único y está en todos losEl reloj es único y está en todos los flipflip--flopsflops del diseñodel diseño
• No se pueden usar dos relojes en el sistema
• Todas las señales asíncronas se deben muestrear (pasar por un flip-flop D)
nada más entrar al sistema
• No se deben poner puertas en el reloj, si se necesita deshabilitar la carga
de un flip-flop utilizar la habilitación de reloj
66
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
66
Ejemplo: Un contador de 8 bits
process(clk,rst)
variable q_temp : std_logic_vector(7 downto 0);
begin
if rst='1' then
q_temp := (others => '0');
elsif rising_edge(clk) then
if ce='1' then
if up='1' then
q_temp := q_temp + 1;
else
q_temp := q_temp - 1;
end if;
end if;
end if;
q <= q_temp;
end process;
67
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
67
Ejemplo: Un registro de desplazamiento
process(rst,clk)
begin
if rst='1' then
dout <= "00000000";
elsif rising_edge(clk) then
if ce='1' then
if load='1' then
dout <= din;
else
dout <= dout(6 downto 0) & sin;
end if;
end if;
end if;
end process;
68
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
68
Metodología: Diseño circuitos secuenciales
Lógica
Comb.
EstFuturo Estado
registro
69
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
69
Metodología: Diseño circuitos secuenciales
Maquinas de estados: FSM
Utilización de subtipos:
Definicion de Estados
Tres Bloques Funcionales
Lógica combinacional:
Decision de cambio de
estado
Registros: Mantienen el
estado.
Logica combinacional de
definición de salidas
architecture uam of ejemplo is
type t_estado is (E0, E1, E2, E3);
signal Estado, EstFuturo : t_estado;
signal in1, in2, in3 : std_logic;
signal out1, out2 : std_logic;
signal CK, reset : std_logic;
...
70
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
70
Metodología: Diseño circuitos secuenciales
Maquinas de estados: FSM
Utilización de subtipos:
Definicion de Estados
Tres Bloques Funcionales
Lógica combinacional:
Decision de cambio de
estado
Registros: Mantienen el
estado.
Logica combinacional de
definición de salidas
begin
comb: process (Estado, in1, in2, in3)
begin
case Estado is
when E0 => out1 <= '0';
out2 <= '0';
EstFuturo <= E1;
when E1 => out1 <= '1';
if in1 = '1' then
EstFuturo <= E2;
else
EstFuturo <= E1;
end if;
when E2 =>
...
when E3 =>
...
end case;
end process comb;
71
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
71
Metodología: Diseño circuitos secuenciales
Maquinas de estados: FSM
Utilización de subtipos:
Definicion de Estados
Tres Bloques Funcionales
Lógica combinacional:
Decision de cambio de
estado
Registros: Mantienen el
estado.
Logica combinacional de
definición de salidas
registro: process
begin
wait until reset='1' or rising_edge(CK);
if reset='1' then
Estado <= E0;
else
Estado <= EstFuturo;
end if;
end process registro;
end architecture uam;
72
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
72
Lenguaje de Descripción Hardware VHDL
Introducción
La entidad y la arquitectura
Tipos de datos
Los procesos
Circuitos combinacionales
Circuitos secuenciales
Máquinas de estadosMáquinas de estados
Triestados
Diseño jerárquico
Estilos de diseño
Verificación con testbenches
VHDLVHDL
73
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
73
FSM: Maquinas de Moore
• FSM MOORE: Una maquina de estados en la que las salidas
cambian solo cuando cambia el estado
• Las posibles implementaciones son:
– Asignación arbitraria del valor de los estados
• Las salidas se decodifican a partir de los estados
1. Decodificación combinacional.
2. Decodificación registrada.
– Asignación específica de los valores de estado
• Las salidas pueden ser codificadas directamente en los estados
• Codificación one-hot
74
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
74
Implementación de una FSM de Moore (1)
• Salidas decodificadas a partir del valor de los estados.
1. Decodificación Combinacional
• Las salidas se decodifican a partir del estado actual
• Salidas = función(estado_actual)
Entradas
SalidasRegistros
de estado
Lógica
de salida
Lógica
estado sig.
75
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
75
Implementación de una FSM Moore (2)
• Salidas decodificadas a partir del valor de los estados.
2. Decodificación con salidas registradas
• La decodificación de las salidas se realiza en paralelo con la
decodificación del siguiente estado.
• Salidas = función(estado_anterior, entradas)
Entradas
Salidas
Registros
de estado
Lógica
de salida
Lógica
estado sig.
Estado actual
Registros
de salida
76
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
76
Estado Salida 1 Salida 2 Codif. Estados
s1 0 0 00
s2 1 0 01
s3 0 1 10
Implementación de una FSM Moore (3)
• Salidas codificadas en los bits de los estados
Nota: Los dos bits del estado son utilizados como salida
Entradas
SalidasRegistros
de estado
Lógica
estado sig.
77
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
77
Ejemplo: Generador de “wait states”
• Diagrama de Estados:
RESET
(async)
IDLE
00
REQ
ACK
10
RETRY
01
REQ
PWAIT
PWAIT
retry_out='1'
ack_out='1'
78
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
78
Ejemplo: Declaración de la entidad
• La declaración de la entidad es la misma para todas las
implementaciones:
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY maq IS PORT (
clock, reset: IN std_logic;
req, pwait: IN std_logic;
retry_out, ack_out: OUT std_logic);
END maq;
79
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
79
Ejemplo: Solución 1
• Salidas combinacionales decodificadas a partir de los estados
ARCHITECTURE archmoore1 OF maq IS
TYPE fsm_states IS (idle, retry, ack);
SIGNAL wait_gen : fsm_states;
BEGIN
fsm: PROCESS (clock, reset)
BEGIN
IF reset = '1' THEN
wait_gen <= idle; -- asynchronous reset
ELSIF clock'EVENT AND clock = '1' THEN
CASE wait_gen IS
WHEN idle => IF req = '0'THEN wait_gen <= retry;
ELSE wait_gen <= idle;
END IF;
80
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
80
Ejemplo: Solución 1 (cont.)
WHEN retry => IF pwait='1' THEN wait_gen <= ack;
ELSE wait_gen <= retry;
END IF;
WHEN ack => wait_gen <= idle;
WHEN OTHERS => wait_gen <= idle;
END CASE;
END IF;
END PROCESS fsm;
retry_out <= '1' WHEN (wait_gen = retry) ELSE '0';
ack_out <= '1' WHEN (wait_gen = ack) ELSE '0';
END archmoore1;
81
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
81
Ejemplo: Solucion 2
• Salidas registradas decodificadas desde el valor de los estados
ARCHITECTURE archmoore2 OF maq IS
TYPE fsm_states IS (idle, retry, ack);
SIGNAL wait_gen: fsm_states;
BEGIN
fsm: PROCESS (clock, reset)
BEGIN
IF reset = '1' THEN
wait_gen <= idle;
retry_out <= '0';
ack_out <= '0';
ELSIF clock'EVENT AND clock = '1' THEN
retry_out <= '0'; -- asignacion por defecto
82
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
82
Ejemplo: Solución 2 (cont.)
CASE wait_gen IS
WHEN idle => IF req = '0' THEN wait_gen <= retry;
retry_out <= '1';
ack_out <= '0';
ELSE wait_gen <= idle;
ack_out <= '0';
END IF;
WHEN retry => IF pwait = '1' THEN wait_gen <= ack;
ack_out <= '1';
ELSE wait_gen <= retry;
retry_out <= '1';
ack_out <= '0';
END IF;
WHEN ack => wait_gen <= idle;
ack_out <= '0';
WHEN OTHERS => wait_gen <= idle;
ack_out <= '0'; -- para evitar latch
END CASE;
END IF;
END PROCESS fsm;
END archmoore2;
83
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
83
Ejemplo: Solución 3
• Salidas codificadas en el valor de los estados
ARCHITECTURE archmoore3 OF maq IS
SIGNAL wait_gen: std_logic_vector(1 DOWNTO 0);
CONSTANT idle: std_logic_vector(1 DOWNTO 0) := "00";
CONSTANT retry: std_logic_vector(1 DOWNTO 0) := "01";
CONSTANT ack: std_logic_vector(1 DOWNTO 0) := "10";
BEGIN
fsm: PROCESS (clock, reset)
BEGIN
IF reset = '1' THEN
wait_gen <= idle;
ELSIF clock'EVENT AND clock = '1' THEN
84
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
84
Ejemplo: Solución 3 (cont.)
CASE wait_gen IS
WHEN idle => IF req = '0' THEN wait_gen <= retry;
ELSE wait_gen <= idle;
END IF;
WHEN retry => IF pwait = '1' THEN wait_gen <= ack;
ELSE wait_gen <= retry;
END IF;
WHEN ack => wait_gen <= idle;
WHEN OTHERS => wait_gen <= idle;
END CASE;
END IF;
END PROCESS fsm;
retry_out <= wait_gen(0);
ack_out <= wait_gen(1);
END archmoore3;
85
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
85
FSM: Codificación One-hot
• Un estado por flip-flop
– En FPGAs
• reduce la lógica de cálculo de estado siguiente
• y por tanto, menos profundidad de lógica
• permitiendo máquinas muy rápidas (>100MHz)
– En CPLDs
• reduce el número de términos producto
• eliminando, si los hubiera, expasiones de productos, y mejorando por
tanto la velocidad
• pero usa muchas más macroceldas, y el beneficio nunca es tan
evidente como en FPGAs
86
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
86
Ejemplo: Solución One-hot
ARCHITECTURE archmoore4 OF maq IS
TYPE fsm_states IS (idle, retry, ack);
ATTRIBUTE enum_encoding: string;
ATTRIBUTE enum_encoding OF fsm_states : TYPE IS ”001 010 100”;
SIGNAL wait_gen: fsm_states;
BEGIN
fsm: PROCESS (clock, reset)
BEGIN
IF reset = '1' THEN
wait_gen <= idle;
ELSIF clock'EVENT AND clock = '1' THEN
CASE wait_gen IS
WHEN idle => IF req = '0' THEN wait_gen <= retry;
ELSE wait_gen <= idle;
END IF;
87
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
87
Ejemplo: Solución One-hot (cont.)
WHEN retry => IF pwait = '1' THEN wait_gen <= ack;
ELSE wait_gen <= retry;
END IF;
WHEN ack => wait_gen <= idle;
WHEN OTHERS => wait_gen <= idle;
END CASE;
END IF;
END PROCESS fsm;
-- Decodificacion de salidas
retry_out <= '1' WHEN (wait_gen = retry) ELSE '0';
ack_out <= '1' WHEN (wait_gen = ack) ELSE '0';
END archmoore4;
88
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
88
Resumen FSM Moore
• Salidas decodificadas de los bits de estado
– Mayor flexibilidad en el proceso de diseño
– Utilizando tipos enumerados se permite que la asignación de los
estados se realice durante la compilación.
• Salidas codificadas en los bits de estado
– Asignación manual del valor de los estados
– La salida se obtiene directamente de los registros
– Se reduce le número de registros
– Lógica adicional más compleja
• Codificación One-Hot
– Logica de siguiente estado mas sencilla
– Mejora la velocidad
– Necesita mas registros
89
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
89
FSM de Mealy
• Las salidas cambian por un cambio de estado o por un cambio
en el valor de las entradas
– Hay que tener mucho cuidado con las entradas asíncronas
Entradas Salidas
Registros
de estado
Lógica
90
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
90
Ejemplo: generador de “wait states”
• Diagrama de estados:
X1/10
RESET
(async)
IDLE RETRY0X/01
X0/01
REQ PWAIT / ACK RETRY_OUT
1X/00
91
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
91
ARCHITECTURE archmealy1 OF maq IS
TYPE fsm_states IS (idle, retry);
SIGNAL wait_gen: fsm_states;
BEGIN
fsm: PROCESS (clock, reset)
BEGIN
IF reset = '1' THEN
wait_gen <= idle;
ELSIF clock'EVENT AND clock = '1' THEN
CASE wait_gen IS
WHEN idle => IF req = '0' THEN wait_gen <= retry;
ELSE wait_gen <= idle;
END IF;
WHEN retry => IF pwait = '1' THEN wait_gen <= idle;
ELSE wait_gen <= retry;
END IF;
WHEN OTHERS => wait_gen <= idle;
END CASE;
END IF;
END PROCESS fsm;
retry_out <= '1' WHEN (wait_gen = retry AND pwait='0') OR
(wait_gen = idle AND req='0') ELSE '0';
ack_out <= '1' WHEN (wait_gen = retry AND pwait='1') ELSE '0';
END archmealy1;
Ejemplo: Solución
92
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
92
Lenguaje de Descripción Hardware VHDL
Introducción
La entidad y la arquitectura
Tipos de datos
Los procesos
Circuitos combinacionales
Circuitos secuenciales
Máquinas de estados
TriestadosTriestados
Diseño jerárquico
Estilos de diseño
Verificación con testbenches
VHDLVHDL
93
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
93
Concepto de driver de una señal
• El driver es el elemento que da valores a una señal
• Para cada señal que se le asigna un valor dentro de un proceso
se crea un driver para esa señal
– Independientemente de cuantas veces se le asigne un valor a la
señal, se crea un único driver por proceso
– Tanto para procesos explícitos como implícitos
– Cuando hay múltiples drivers se usa la función de resolución
PROCESS(in1)
BEGIN
senal <= in1;
END PROCESS;
senal <= in2;
in1
senal
in2
94
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
94
Inferencia de triestado
• Cuando se quiere que un driver de una señal se quede en alta
impedancia, se le asigna a la señal el valor 'Z'
– Sólo vale si para el tipo std_logic
• Igual que ocurre en la realidad, el estado de la señal lo fijará el driver
que no esté en alta impedancia
senal <= in1 WHEN
ena='1' ELSE 'Z';
PROCESS(in1)
BEGIN
senal <= '0';
END PROCESS;
in1
senal = '0'
'0'
'0'
'0'
'Z'
95
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
95
Ejemplos de inferencia de buffers triestado
• Con asignación condicional:
• Con un proceso:
PROCESS (ena_a, a)
BEGIN
IF (sel_a = '0') THEN
t <= a;
ELSE t <= 'Z';
END PROCESS;
a_out <= a WHEN enable_a='1' ELSE 'Z';
b_out <= b WHEN enable_b='1' ELSE 'Z';
96
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
96
Señales bidireccionales
• En este caso la señal tiene drivers externos, fuera de la entidad
x
yfb
y
oe
ENTITY bufoe IS PORT (
x: IN std_logic;
oe: IN std_logic;
y: INOUT std_logic;
yfb: OUT std_logic);
END bufoe;
ARCHITECTURE simple OF bufoe IS
BEGIN
y <= x WHEN oe='1' ELSE 'Z';
yfb <= y;
END simple;
97
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
97
Ejemplo con señales bidireccionales
DATA
CLOCK
REG
OE
LOAD
88
ENTITY ejbidir IS PORT (
load,clock,oe: IN std_logic;
data: INOUT std_logic);
END ejbidir;
ARCHITECTURE simple OF ejbidir IS
SIGNAL reg: std_logic_vector(7 downto 0);
BEGIN
data<=reg WHEN oe='1' ELSE "ZZZZZZZZZ";
PROCESS(clk) BEGIN
IF rising_edge(clk) THEN reg<=data;
END IF;
END PROCESS;
END simple;
98
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
98
Lenguaje de Descripción Hardware VHDL
Introducción
La entidad y la arquitectura
Tipos de datos
Los procesos
Circuitos combinacionales
Circuitos secuenciales
Máquinas de estados
Triestados
Diseño jerárquicoDiseño jerárquico
Estilos de diseño
Verificación con testbenches
VHDLVHDL
99
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
99
Diseño jerárquico
• Componentes pequeños son
utilizados como elementos
de otros más grandes
• Es fundamental para la
reutilización de código
• Permite mezclar
componentes creados con
distintos métodos de diseño:
– Esquemáticos
– VHDL, verilog
• Genera diseños más legibles
y más portables
• Necesario para estrategias
de diseño top-bottom o
bottom-up
top.vhd
a.vhd
a1.vhd
a2.vhd
b.vhd c.vhd
100
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
100
Árbol de jerarquías
• Cada componente de la jerarquía es un archivo VHDL, con:
– Entidad
– Arquitectura
top.vhd
COMPONENTE SUPERIOR
( TOP )
COMPONENTES INFERIORES
c.vhdb.vhda.vhd
a2.vhda1.vhd
101
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
101
Cómo instanciar un componente
ENTITY top IS PORT
( ... )
END top;
ARCHITECTURE jerarquica OF top IS
signal s1,s2 : std_logic;
begin
end top
COMPONENT a PORT
( entrada IN std_logic;
salida OUT std_logic );
END COMPONENT;
u1: a PORT MAP
(entrada=>s1, salida=>s2);
102
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
102
Declaración de Componentes
• Antes de poder usar un componente, se debe declarar
– Especificar sus puertos (PORT)
– Especificar parámetros (GENERIC)
• Una vez instanciado el componente, los puertos de la instancia
se conectan a las señales del circuito usando PORT MAP
• Los parámetros se especifican usando GENERIC MAP
• La declaración de los componentes se puede hacer en un
package
– Para declarar el componente, sólo habrá que importar el package
– Opción interesante: la declaración de los componentes no aporta
nada al lector del código
103
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
103
Ejemplo de diseño jerárquico: top-level
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY toplevel IS PORT (s: IN std_logic;
p, q, r: IN std_logic_vector(2 DOWNTO 0);
t: OUT std_logic_vector(2 DOWNTO 0));
END toplevel;
USE WORK.mymuxpkg.ALL;
ARCHITECTURE archtoplevel OF toplevel IS
SIGNAL i: std_logic_vector(2 DOWNTO 0);
BEGIN
m0: mux2to1 PORT MAP (a=>i(2), b=>r(0), sel=>s, c=>t(0));
m1: mux2to1 PORT MAP (c=>t(1), b=>r(1), a=>i(1), sel=>s);
m2: mux2to1 PORT MAP (i(0), r(2), s, t(2));
i <= p AND NOT q;
END archtoplevel; Asociación posicional
Asociación por nombre
Declaración del componente en un package
104
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
104
Ejemplo de diseño jerárquico:
componente inferior
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY mux2to1 IS PORT (
a, b, sel: IN std_logic;
c: OUT std_logic);
END mux2to1;
ARCHITECTURE archmux2to1 OF mux2to1 IS
BEGIN
c <= (a AND NOT sel) OR (b AND sel);
END archmux2to1;
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
PACKAGE mymuxpkg IS
COMPONENT mux2to1 PORT (
a, b, sel: IN std_logic;
c: OUT std_logic);
END COMPONENT;
END mymuxpkg;
Creación del package
Mismos puertos
Descripción del componente
de nivel inferior
105
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
105
¿Qué son los packages (paquetes)?
• Es el mecanismo que tiene VHDL para guardar construcciones
que se van a reutilizar en varios diseños
– Declaraciones de componentes, subprogramas, constantes...
• Consta de dos partes:
– Declaración del paquete
• Declaraciones de señales y constantes
• Declaraciones de componentes
• Definiciones de tipos
• Declaraciones de subprogramas
– Cuerpo del paquete
• Cuerpo de los subprogramas
• Cualquier otra declaración que se desea que permanezca privada al
paquete
• Los paquetes se agrupan en librerías
106
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
106
Lenguaje de Descripción Hardware VHDL
Introducción
La entidad y la arquitectura
Tipos de datos
Los procesos
Circuitos combinacionales
Circuitos secuenciales
Máquinas de estados
Triestados
Diseño jerárquico
Estilos de diseñoEstilos de diseño
Verificación con testbenches
VHDLVHDL
107
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
107
Estilos de arquitecturas
• Arquitectura estructural
• Arquitectura RTL
• Arquitectura comportamental
108
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
108
Estilos de descripción: Estructural
• Una unidad de alto nivel se divide en
unidades de más bajo nivel.
• Descripción que contiene los sub-
componentes y las conexiones entre
los mismos.
109
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
109
Estilos de descripción: Comportamiento
• Nivel abstracto de descripción, usando la expresividad de las
construcciones de VHDL
• Definición de QUE HACE el modelo y NO COMO LO HACE.
• Es sintetizable siempre que sea RTL
• Cuando se utilizan ecuaciones lógicas (asignaciones
concurrentes) se denomina dataflow
110
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
110
Estilos de descripción: RTL
RTL:RTL: RegisterRegister TransferTransfer LevelLevel
• Descripción de comportamiento teniendo en cuenta el flujo de
datos entre registros y bloques funcionales
• Tiene en cuenta el ciclo de reloj
• Independiente de la tecnología
• Definición del sistema en términos de:
– registros
– lógica combinacional
– operaciones
111
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
111
Estilos de descripción: Algorítmico
• Descripción de comportamiento completamente independiente
del hardware, sin especificar ni relojes ni separando entre
bloques combinacionales y secuenciales
• Equivalente a un modelo que se podría crear en cualquier otro
lenguaje de alto nivel, por ejemplo C
• Sólo es útil para simulación
instruccion := memoria(PC);
opcode := instruccion (31 downto 28)
rs1 := instruccion(27 downto 24); rs2 := instruccion(23 downto 20);
rd := instruccion(19 downto 16); offset := instruccion(15 downto 0);
case opcode is
when load => rd := memoria(rs1 + offset);
when store => memoria(rs + offset) <= rd;
when add => rd := rs1 + rs2;
...
112
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
112
Niveles de abstracción
VHDL permite describir circuitos electrónicos a
distintos niveles de abstracción
• Algorítmico:
– Un algoritmo puro consiste en un conjunto de
instrucciones ejecutadas secuencialmente que
realizan una tarea.
– No se detallan relojes o retrasos
– No sintetizable (o sintetizable en casos limitados)
• RTL
– Es la entrada para la síntesis.
– Las operaciones se realizan en un ciclo de reloj
especifico.
– No se detallan retrasos.
• Nivel de puerta
– Es la salida de la síntesis
– Netlist de puertas e instanciaciones de una librería
tecnológica
– Se incluye información de retraso para cada puerta
113
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
113
Lenguaje de Descripción Hardware VHDL
Introducción
La entidad y la arquitectura
Tipos de datos
Los procesos
Circuitos combinacionales
Circuitos secuenciales
Máquinas de estados
Triestados
Diseño jerárquico
Estilos de diseño
Verificación conVerificación con testbenchestestbenches
VHDLVHDL
114
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
114
Pasos de la simulación
librerías de trabajo
ElaboraciónElaboración
SimulaciónSimulación
AnálisisAnálisis
Archivos VHDLArchivos VHDL
115
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
115
Verificación con testbenches
• Un diseño sin verificación no está completo
– Hay muchas maneras de verificar, pero la más utilizada es el
banco de pruebas, testbench
• Simular básicamente es:
– Generar estímulos
– Observar los resultados
• Un testbench es un código VHDL que automatiza estas dos
operaciones
• Los testbenches no se sintetizan
– Se puede utilizar un VHDL algorítmico
– Usualmente con algoritmos secuenciales Aprovechar
la potencia
de VHDL
116
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
116
Como hacer un testbench
1. Instanciar el diseño que
vamos a verificar
– El testbench será el nuevo
top-level
– Será una entidad sin ports
2. Escribir el código que:
– Genera los estímulos
– Observa los resultados
– Informa al usuario
diseño.vhd
resultados
estímulos
testbench.vhd
117
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
117
Instanciando la unidad bajo test (UUT)
Descripción de la UUT
ENTITY
ARCHITECTURE
Entidad sin
puertos
Declaración del
componente
Instanciación del
componente
Configuración del
componente
Testbench
ARCHITECTURE
CONFIGURATION
ENTITY test IS
END test;
COMPONENT
UUT: … PORT
PROCESS Procesos de
simulación
118
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
118
Generando estímulos
• Dar valores a las señales que van hacia las entradas de la UUT
– En síntesis no tiene sentido el tiempo
– En los testbenches el tiempo es la principal magnitud
• Asignación concurrente
• Asignación secuencial
senal <= '1',
'0' AFTER 20 ns,
'1' AFTER 30 ns;
senal <= '1';
WAIT FOR 20 ns;
senal <= '0';
WAIT FOR 30 ns;
senal <= '1';
119
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
119
Observando señales con assert
• Assert se usa para comprobar si se cumple una condición
– Equivalente a IF (not condición)
• Sintaxis
• Tras REPORT se añade una cadena de texto, que se muestra
si no se cumple la condición
• SEVERITY puede tener cuatro niveles
– NOTE
– WARNING
– ERROR (nivel por defecto si no se incluye SEVERITY)
– FAILURE
ASSERT condicion REPORT string SEVERITY nivel;
120
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
120
Características adicionales de assert
• El simulador puede configurarse para indicar a partir de qué
nivel de error se parará la simulación
• Se pueden mostrar en el REPORT valores de señales:
• Se utiliza el atributo predefinido de VHDL 'image, que pasa de
cualquier valor, del tipo que sea, a una representación en forma
de string
• Generalmente se usa dentro de procesos (instrucción
secuencial), pero también se puede usar como concurrente
– Se chequea la condición continuamente, y en el momento en que
deja de cumplirse, se escribe el mensaje
ASSERT q=d
REPORT "Valor erroneo: " & std_logic'image(q);
SEVERITY nivel;
121
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
121
Algoritmo básico para los testbenches
• Algoritmo elemental de verificación:
– Dar valores a las señales de entrada a la UUT
– Esperar con WAIT FOR
– Comprobar los resultados con ASSERT
– Volver a dar valores a las señales de entrada a la UUT
– y repetir…
señal <= valor ASSERT
(resultado=esperado)
ASSERT
(resultado=esperado)
WAIT FORWAIT FOR
122
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
122
Ejemplo de código
ARCHITECTURE tb_arch OF dff_tb IS
COMPONENT dff PORT (...) END COMPONENT;
SIGNAL d, c, q : std_logic;
BEGIN
UUT : dff PORT MAP (d => d, c => c, q => q );
PROCESS
BEGIN
c <= '0'; d <= '0';
WAIT FOR 10 ns;
c <= '1';
WAIT FOR 10 ns;
ASSERT q=d REPORT "falla" SEVERITY FAILURE;
END PROCESS;
END tb_arch;
123
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
123
Testbenches avanzados
• Se pueden dar valores dependiendo de los resultados
• Usar los bucles para hacer pruebas sistemáticas
FOR i IN 0 TO 255 LOOP
FOR j IN 0 TO 255 LOOP
sumando1 <= i;
sumando2 <= j;
WAIT FOR 10 ns;
ASSERT suma=(i+j) REPORT "ha fallado la suma";
END LOOP;
END LOOP;
senal <= '0'; WAIT FOR 10 ns;
IF senal/='0' THEN
REPORT "Intento otra vez"; senal <= '0';
ELSE
REPORT "Ahora pruebo con uno"; senal <= '1';
END IF;
WAIT FOR 10 ns;
124
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
124
Procedimientos
• VHDL permite definir procedimientos (subrutinas)
• La clase de los parámetros puede ser:
– VARIABLE, CONSTANT, SIGNAL
• Y la dirección:
– IN, INOUT, OUT
• Los procedimientos se pueden declarar en la arquitectura o en un
proceso, y se llaman desde un proceso o concurrentemente
PROCEDURE nombre (clase parametro : dir tipo, ...) IS
{declaraciones}
BEGIN
{instrucciones secuenciales}
END PROCEDURE nombre;
Interesante para encapsular tareas repetitivas en la simulaciónInteresante para encapsular tareas repetitivas en la simulación
125
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
125
Ejemplo de código
ARCHITECTURE tb_arch OF dff_tb IS
(...)
PROCEDURE send_clock_edge(SIGNAL c : out std_logic) IS
BEGIN
c <= '0'; WAIT FOR 10 ns;
c <= '1'; WAIT FOR 10 ns;
END PROCEDURE send_clock_edge;
BEGIN
UUT : dff PORT MAP (d => d, c => c, q => q );
PROCESS
BEGIN
c <= '0'; d <= '0';
send_clock_edge(c);
ASSERT q=d REPORT "falla" SEVERITY FAILURE;
END PROCESS;
END tb_arch;
126
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
126
Acceso a archivos
• La simulaciones más potentes trabajan sobre archivos
• Ejemplos:
– Simulación de un multiplicador que escribe los resultados en un
archivo de texto
– Testbench para un microprocesador que lee un programa en
ensamblador de un archivo, lo ensambla y lo ejecuta
• Acceso básico: paquete std.textio
– Archivos de texto
– Acceso línea a línea: READLINE, WRITELINE
– Dentro de una línea, los campos se procesan con READ y WRITE
• Acceso específico para std_logic: ieee.std_logic_textio
127
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
127
Instrucciones para acceder a archivos
• Especificar el archivo
• Leer una línea
• Leer un campo de una línea
• Escribir
FILE archivo_estimulos : text IS IN "STIM.TXT";
VARIABLE linea : line;
...
readline(archivo_estimulos, linea);
VARIABLE opcode : string(2 downto 0);
...
read (linea, opcode);
write(linea, resultado);
writeline(archivo_resultados, linea);
128
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
128
Configuración
Una configuración es una unidad de
diseño:
• Que se usa para realizar asociaciones
dentro de los modelos
Asociar entidad con arquitectura.
En la instanciación de un componente
asociarlo a una entidad y su arquitectura.
• Muy utilizada en entornos de simulación
Proporciona una manera rápida y flexible de
probar distintas alternativas del diseño
• Limitada o no soportada en entornos de
síntesis.
Aplicandolo a un componente particular:
FOR instance_name : comp_name USE ...;
Aplicandolo a todas las instancias:
FOR ALL: comp_1 USE ENTITY
WORK.entity_name(architecture_name);
129
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
129
Configuración: Ejemplo
Ejemplo: SumadorEjemplo: Sumador
A
B
Carry_in Carry_out
Full_adder
ABAB
A
B
Carry_out
U0:
Half_adder
Half_adder
U1:
Temp_sum
Temp_carry_1
CONFIGURATION a_config OF Full_adder IS
FOR structural
FOR all: Half_adder
USE ENTITY work.Half_adder(algorithmic);
END FOR;
FOR U2: or_gate
USE ENTITY work.or_gate(behavioral);
END FOR;
END FOR;
END a_config;Ejemplo del Suma
CONFIGURATION a_config OF Full_adder IS
FOR structural
FOR all: Half_adder
USE ENTITY work.Half_adder(algorithmic);
END FOR;
FOR U2: or_gate
USE ENTITY work.or_gate(behavioral);
END FOR;
END FOR;
END a_config;Ejemplo del Suma
U2
Carry_in
130
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
130
Verificación de un diseño escrito en VHDL
1. Simulación funcional
• RTL / behavioral sintetizable
• Emplea construcciones estándar VHDL
• Sin tiempos
2. Simulación post-síntesis
• Estructural
• Librería de síntesis, elementos básicos de diseño para la FPGA
• Sin tiempos
3. Simulación post-map, post-layout
• Estructural
• Librería de Xilinx, elementos reales de la FPGA
• Con tiempos si se carga el archivo SDF
131
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
131
Simulaciones en el flujo de diseño de FPGAs
SíntesisSíntesis
Traducir la netlistTraducir la netlist
MAPMAP
Place & RoutePlace & Route
BitstreamBitstream
Simulación post-síntesis
Simulación post-layout
132
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
132
Testbench para un diseño VHDL
• El testbench debe ser el mismo para las tres simulaciones
• Las tres simulaciones se asociarán con tres configuraciones, se
pondrá como top-level la configuración que nos interese en
cada momento
CONFIGURATION funcional_OF dfftb IS
FOR dfftbarch
FOR uut:dff USE ENTITY WORK.dff(behavioral);
END FOR;
END FOR;
END funcional;
CONFIGURATION postlayout_OF dfftb IS
FOR dfftbarch
FOR uut:dff USE ENTITY WORK.dff(structure);
END FOR;
END FOR;
END postlayout;
FUNCIONALFUNCIONAL
POSTPOST--LAYOUTLAYOUT
133
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
133
Modelo post-layout
• Una vez implementado el diseño, se crea un modelo post-layout
de la FPGA mediante ngd2vhdl
– time_sim.vhd
• El modelo usa la librería SIMPRIM
• Los tiempos se anotan en un archivo SDF separado
– time_sim.sdf
• Todo la FPGA está modelada en estos dos archivos
• El simulador puede no cargar el fichero SDF
– Primera simulación, rápida, ver si el comportamiento es correcto
– Segunda simulación, detallada, ver si los tiempos se respetan
• Pueden aparecer en la entidad los nodos GSR/GTS (opcional)
– Se puede arreglar reconfigurando los ports en CONFIGURATION
134
Lenguaje de Descripción Hardware VHDL Univ. Autónoma
de Madrid
European
Training Institute
134
Lenguaje de Descripción Hardware VHDL
Introducción
La entidad y la arquitectura
Tipos de datos
Los procesos
Circuitos combinacionales
Circuitos secuenciales
Máquinas de estados
Triestados
Diseño jerárquico
Estilos de diseño
Verificación con testbenches
VHDLVHDL

Más contenido relacionado

La actualidad más candente

Presentación de fisica 2 POR PARALAFAKYOU PARA INGENIERIA
Presentación de fisica 2 POR PARALAFAKYOU PARA INGENIERIAPresentación de fisica 2 POR PARALAFAKYOU PARA INGENIERIA
Presentación de fisica 2 POR PARALAFAKYOU PARA INGENIERIAParalafakyou Mens
 
Amplificadores clase B clase 11ª
Amplificadores clase B clase 11ªAmplificadores clase B clase 11ª
Amplificadores clase B clase 11ªManuelGmoJaramillo
 
Potencial electrico clase 7
Potencial electrico clase 7Potencial electrico clase 7
Potencial electrico clase 7Tensor
 
Pruebas de usabilidad en elos equipos medicos
Pruebas de usabilidad en elos equipos medicos Pruebas de usabilidad en elos equipos medicos
Pruebas de usabilidad en elos equipos medicos Gregorio Añez Vargas
 
Bases de Circuitos Eléctricos
Bases de Circuitos EléctricosBases de Circuitos Eléctricos
Bases de Circuitos Eléctricosingcjmc
 
Amplificador en Base Comun y Colector Comun
Amplificador en Base Comun y Colector ComunAmplificador en Base Comun y Colector Comun
Amplificador en Base Comun y Colector Comuniscped
 
Problemario circuitos 2
Problemario circuitos 2Problemario circuitos 2
Problemario circuitos 2Abril Bello
 
Electronica analisis a pequeña señal fet
Electronica  analisis a pequeña señal fetElectronica  analisis a pequeña señal fet
Electronica analisis a pequeña señal fetVelmuz Buzz
 
Capacitadores en serie y en paralelo
Capacitadores en serie y en paraleloCapacitadores en serie y en paralelo
Capacitadores en serie y en paraleloCasandra Palomo
 
Practica 11 final....
Practica 11 final....Practica 11 final....
Practica 11 final....Israel Chala
 
CAPACITORES: Física C-ESPOL
CAPACITORES: Física C-ESPOLCAPACITORES: Física C-ESPOL
CAPACITORES: Física C-ESPOLESPOL
 
Modulo 1 - Proteus
Modulo 1 - ProteusModulo 1 - Proteus
Modulo 1 - ProteusRaniellys
 
Física ll proyecto
Física ll proyecto Física ll proyecto
Física ll proyecto Camilo Perez
 
Proyecto de lab. Circuitos Electrónicos II UNSAAC(watner ochoa nuñez 171174)
Proyecto de lab. Circuitos Electrónicos II UNSAAC(watner ochoa nuñez 171174)Proyecto de lab. Circuitos Electrónicos II UNSAAC(watner ochoa nuñez 171174)
Proyecto de lab. Circuitos Electrónicos II UNSAAC(watner ochoa nuñez 171174)Watner Ochoa Núñez
 

La actualidad más candente (20)

Inductancia
InductanciaInductancia
Inductancia
 
Presentación de fisica 2 POR PARALAFAKYOU PARA INGENIERIA
Presentación de fisica 2 POR PARALAFAKYOU PARA INGENIERIAPresentación de fisica 2 POR PARALAFAKYOU PARA INGENIERIA
Presentación de fisica 2 POR PARALAFAKYOU PARA INGENIERIA
 
Amplificadores clase B clase 11ª
Amplificadores clase B clase 11ªAmplificadores clase B clase 11ª
Amplificadores clase B clase 11ª
 
Ley de lorentz
Ley de lorentzLey de lorentz
Ley de lorentz
 
Potencial electrico clase 7
Potencial electrico clase 7Potencial electrico clase 7
Potencial electrico clase 7
 
Pruebas de usabilidad en elos equipos medicos
Pruebas de usabilidad en elos equipos medicos Pruebas de usabilidad en elos equipos medicos
Pruebas de usabilidad en elos equipos medicos
 
7_vhdl.pdf
7_vhdl.pdf7_vhdl.pdf
7_vhdl.pdf
 
Bases de Circuitos Eléctricos
Bases de Circuitos EléctricosBases de Circuitos Eléctricos
Bases de Circuitos Eléctricos
 
Amplificador en Base Comun y Colector Comun
Amplificador en Base Comun y Colector ComunAmplificador en Base Comun y Colector Comun
Amplificador en Base Comun y Colector Comun
 
Problemario circuitos 2
Problemario circuitos 2Problemario circuitos 2
Problemario circuitos 2
 
2.4. Compuertas AND - OR con Diodos
2.4. Compuertas AND - OR con Diodos2.4. Compuertas AND - OR con Diodos
2.4. Compuertas AND - OR con Diodos
 
Electronica analisis a pequeña señal fet
Electronica  analisis a pequeña señal fetElectronica  analisis a pequeña señal fet
Electronica analisis a pequeña señal fet
 
Pspice fuentes dependientes
 Pspice fuentes dependientes Pspice fuentes dependientes
Pspice fuentes dependientes
 
Capacitadores en serie y en paralelo
Capacitadores en serie y en paraleloCapacitadores en serie y en paralelo
Capacitadores en serie y en paralelo
 
Practica 11 final....
Practica 11 final....Practica 11 final....
Practica 11 final....
 
CAPACITORES: Física C-ESPOL
CAPACITORES: Física C-ESPOLCAPACITORES: Física C-ESPOL
CAPACITORES: Física C-ESPOL
 
Modulo 1 - Proteus
Modulo 1 - ProteusModulo 1 - Proteus
Modulo 1 - Proteus
 
Física ll proyecto
Física ll proyecto Física ll proyecto
Física ll proyecto
 
Proyecto de lab. Circuitos Electrónicos II UNSAAC(watner ochoa nuñez 171174)
Proyecto de lab. Circuitos Electrónicos II UNSAAC(watner ochoa nuñez 171174)Proyecto de lab. Circuitos Electrónicos II UNSAAC(watner ochoa nuñez 171174)
Proyecto de lab. Circuitos Electrónicos II UNSAAC(watner ochoa nuñez 171174)
 
1 ejerc circmagnetico
1 ejerc circmagnetico1 ejerc circmagnetico
1 ejerc circmagnetico
 

Similar a Electrónica digital: introducción al lenguaje de descripción hardware VHDL

Electrónica digital: Introducción a la programación VHDL
Electrónica digital: Introducción a la programación VHDLElectrónica digital: Introducción a la programación VHDL
Electrónica digital: Introducción a la programación VHDLSANTIAGO PABLO ALBERTO
 
Electrónica digital: lógica programable VHDL parte 2
Electrónica digital: lógica programable VHDL parte 2Electrónica digital: lógica programable VHDL parte 2
Electrónica digital: lógica programable VHDL parte 2SANTIAGO PABLO ALBERTO
 
Conceptos basicos de_vhdl
Conceptos basicos de_vhdlConceptos basicos de_vhdl
Conceptos basicos de_vhdlAngie Cardenas
 
Electrónica digital: Lógica programable VHDL
Electrónica digital: Lógica programable VHDL Electrónica digital: Lógica programable VHDL
Electrónica digital: Lógica programable VHDL SANTIAGO PABLO ALBERTO
 
Cap iv.-lógica-programable-ing.-alcides-araujo-pacheco
Cap iv.-lógica-programable-ing.-alcides-araujo-pachecoCap iv.-lógica-programable-ing.-alcides-araujo-pacheco
Cap iv.-lógica-programable-ing.-alcides-araujo-pachecoRafael Cobos
 
Introduccción a VHDL por https://vhdl.es
Introduccción a VHDL por https://vhdl.esIntroduccción a VHDL por https://vhdl.es
Introduccción a VHDL por https://vhdl.esJavier Castillo
 
APLICACIONES DE LA TARJETA XILINX 2S200E
APLICACIONES DE LA TARJETA XILINX 2S200EAPLICACIONES DE LA TARJETA XILINX 2S200E
APLICACIONES DE LA TARJETA XILINX 2S200ERafael Garcia
 
Practica con el ISE de Xilinx
Practica con el ISE de XilinxPractica con el ISE de Xilinx
Practica con el ISE de XilinxDiego Fernando
 
Electrónica digital: Lenguaje descripción de hardware VHDL
Electrónica digital: Lenguaje descripción de hardware VHDLElectrónica digital: Lenguaje descripción de hardware VHDL
Electrónica digital: Lenguaje descripción de hardware VHDLSANTIAGO PABLO ALBERTO
 
[Arqui1]practica2 200815555
[Arqui1]practica2 200815555[Arqui1]practica2 200815555
[Arqui1]practica2 200815555AnGeo Gomez
 

Similar a Electrónica digital: introducción al lenguaje de descripción hardware VHDL (20)

Unidad3
Unidad3Unidad3
Unidad3
 
Electrónica digital: Introducción a la programación VHDL
Electrónica digital: Introducción a la programación VHDLElectrónica digital: Introducción a la programación VHDL
Electrónica digital: Introducción a la programación VHDL
 
Electrónica digital: lógica programable VHDL parte 2
Electrónica digital: lógica programable VHDL parte 2Electrónica digital: lógica programable VHDL parte 2
Electrónica digital: lógica programable VHDL parte 2
 
intro_VHDL.pdf
intro_VHDL.pdfintro_VHDL.pdf
intro_VHDL.pdf
 
Intro vhdl
Intro vhdlIntro vhdl
Intro vhdl
 
Conceptos basicos de_vhdl
Conceptos basicos de_vhdlConceptos basicos de_vhdl
Conceptos basicos de_vhdl
 
Electrónica digital: Lógica programable VHDL
Electrónica digital: Lógica programable VHDL Electrónica digital: Lógica programable VHDL
Electrónica digital: Lógica programable VHDL
 
4.v h d l
4.v h d l4.v h d l
4.v h d l
 
Cap iv.-lógica-programable-ing.-alcides-araujo-pacheco
Cap iv.-lógica-programable-ing.-alcides-araujo-pachecoCap iv.-lógica-programable-ing.-alcides-araujo-pacheco
Cap iv.-lógica-programable-ing.-alcides-araujo-pacheco
 
Introduccción a VHDL por https://vhdl.es
Introduccción a VHDL por https://vhdl.esIntroduccción a VHDL por https://vhdl.es
Introduccción a VHDL por https://vhdl.es
 
Electrónica digital: Apuntes de VHDL
Electrónica digital: Apuntes de VHDLElectrónica digital: Apuntes de VHDL
Electrónica digital: Apuntes de VHDL
 
IDLconVHDL2010.pdf
IDLconVHDL2010.pdfIDLconVHDL2010.pdf
IDLconVHDL2010.pdf
 
APLICACIONES DE LA TARJETA XILINX 2S200E
APLICACIONES DE LA TARJETA XILINX 2S200EAPLICACIONES DE LA TARJETA XILINX 2S200E
APLICACIONES DE LA TARJETA XILINX 2S200E
 
Practica con el ISE de Xilinx
Practica con el ISE de XilinxPractica con el ISE de Xilinx
Practica con el ISE de Xilinx
 
VHDL_2.pdf
VHDL_2.pdfVHDL_2.pdf
VHDL_2.pdf
 
Electrónica digital: Lenguaje descripción de hardware VHDL
Electrónica digital: Lenguaje descripción de hardware VHDLElectrónica digital: Lenguaje descripción de hardware VHDL
Electrónica digital: Lenguaje descripción de hardware VHDL
 
Curso de vhdl
Curso de vhdl Curso de vhdl
Curso de vhdl
 
[Arqui1]practica2 200815555
[Arqui1]practica2 200815555[Arqui1]practica2 200815555
[Arqui1]practica2 200815555
 
Exposicion
ExposicionExposicion
Exposicion
 
Vhd(sistemas digitales ii trabajo)
Vhd(sistemas digitales ii trabajo)Vhd(sistemas digitales ii trabajo)
Vhd(sistemas digitales ii trabajo)
 

Más de SANTIAGO PABLO ALBERTO

Manual de teoría y practica electroneumática avanzada
Manual de teoría y practica electroneumática avanzadaManual de teoría y practica electroneumática avanzada
Manual de teoría y practica electroneumática avanzadaSANTIAGO PABLO ALBERTO
 
Programacion de PLC basado en Rslogix 500 por Roni Domínguez
Programacion de PLC basado en Rslogix 500 por Roni Domínguez Programacion de PLC basado en Rslogix 500 por Roni Domínguez
Programacion de PLC basado en Rslogix 500 por Roni Domínguez SANTIAGO PABLO ALBERTO
 
Programación de microcontroladores PIC en C con Fabio Pereira
Programación de microcontroladores PIC en  C con Fabio PereiraProgramación de microcontroladores PIC en  C con Fabio Pereira
Programación de microcontroladores PIC en C con Fabio PereiraSANTIAGO PABLO ALBERTO
 
Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...
Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...
Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...SANTIAGO PABLO ALBERTO
 
Programación de autómatas PLC OMRON CJ/CP1
Programación de  autómatas PLC OMRON CJ/CP1Programación de  autómatas PLC OMRON CJ/CP1
Programación de autómatas PLC OMRON CJ/CP1SANTIAGO PABLO ALBERTO
 
Manual del sistema del controlador programable S7-200 SMART
Manual del sistema del controlador programable S7-200 SMARTManual del sistema del controlador programable S7-200 SMART
Manual del sistema del controlador programable S7-200 SMARTSANTIAGO PABLO ALBERTO
 
PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...
PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...
PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...SANTIAGO PABLO ALBERTO
 
PLC y Electroneumática: Electricidad y Automatismo eléctrico por Luis Miguel...
PLC y Electroneumática: Electricidad y Automatismo eléctrico por  Luis Miguel...PLC y Electroneumática: Electricidad y Automatismo eléctrico por  Luis Miguel...
PLC y Electroneumática: Electricidad y Automatismo eléctrico por Luis Miguel...SANTIAGO PABLO ALBERTO
 
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...SANTIAGO PABLO ALBERTO
 
PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...
PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...
PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...SANTIAGO PABLO ALBERTO
 
Electrónica digital: Introducción a la Lógica Digital - Teoría, Problemas y ...
Electrónica digital:  Introducción a la Lógica Digital - Teoría, Problemas y ...Electrónica digital:  Introducción a la Lógica Digital - Teoría, Problemas y ...
Electrónica digital: Introducción a la Lógica Digital - Teoría, Problemas y ...SANTIAGO PABLO ALBERTO
 

Más de SANTIAGO PABLO ALBERTO (20)

secuencia electroneumática parte 1
secuencia electroneumática parte 1secuencia electroneumática parte 1
secuencia electroneumática parte 1
 
secuencia electroneumática parte 2
secuencia electroneumática parte 2secuencia electroneumática parte 2
secuencia electroneumática parte 2
 
Manual de teoría y practica electroneumática avanzada
Manual de teoría y practica electroneumática avanzadaManual de teoría y practica electroneumática avanzada
Manual de teoría y practica electroneumática avanzada
 
Programacion de PLC basado en Rslogix 500 por Roni Domínguez
Programacion de PLC basado en Rslogix 500 por Roni Domínguez Programacion de PLC basado en Rslogix 500 por Roni Domínguez
Programacion de PLC basado en Rslogix 500 por Roni Domínguez
 
Programación de microcontroladores PIC en C con Fabio Pereira
Programación de microcontroladores PIC en  C con Fabio PereiraProgramación de microcontroladores PIC en  C con Fabio Pereira
Programación de microcontroladores PIC en C con Fabio Pereira
 
Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...
Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...
Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...
 
Arduino: Arduino de cero a experto
Arduino: Arduino de cero a expertoArduino: Arduino de cero a experto
Arduino: Arduino de cero a experto
 
Fisica I
Fisica IFisica I
Fisica I
 
Quimica.pdf
Quimica.pdfQuimica.pdf
Quimica.pdf
 
Manual básico PLC OMRON
Manual básico PLC OMRON Manual básico PLC OMRON
Manual básico PLC OMRON
 
Programación de autómatas PLC OMRON CJ/CP1
Programación de  autómatas PLC OMRON CJ/CP1Programación de  autómatas PLC OMRON CJ/CP1
Programación de autómatas PLC OMRON CJ/CP1
 
Manual del sistema del controlador programable S7-200 SMART
Manual del sistema del controlador programable S7-200 SMARTManual del sistema del controlador programable S7-200 SMART
Manual del sistema del controlador programable S7-200 SMART
 
Catálogo de PLC S7-200 SMART
Catálogo de PLC S7-200 SMART Catálogo de PLC S7-200 SMART
Catálogo de PLC S7-200 SMART
 
PLC: Automatismos industriales
PLC: Automatismos industrialesPLC: Automatismos industriales
PLC: Automatismos industriales
 
PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...
PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...
PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...
 
PLC y Electroneumática: Electricidad y Automatismo eléctrico por Luis Miguel...
PLC y Electroneumática: Electricidad y Automatismo eléctrico por  Luis Miguel...PLC y Electroneumática: Electricidad y Automatismo eléctrico por  Luis Miguel...
PLC y Electroneumática: Electricidad y Automatismo eléctrico por Luis Miguel...
 
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...
 
PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...
PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...
PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...
 
PLC: Motor Dahlander
PLC: Motor DahlanderPLC: Motor Dahlander
PLC: Motor Dahlander
 
Electrónica digital: Introducción a la Lógica Digital - Teoría, Problemas y ...
Electrónica digital:  Introducción a la Lógica Digital - Teoría, Problemas y ...Electrónica digital:  Introducción a la Lógica Digital - Teoría, Problemas y ...
Electrónica digital: Introducción a la Lógica Digital - Teoría, Problemas y ...
 

Último

introducción a las comunicaciones satelitales
introducción a las comunicaciones satelitalesintroducción a las comunicaciones satelitales
introducción a las comunicaciones satelitalesgovovo2388
 
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZgustavoiashalom
 
tema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdftema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdfvictoralejandroayala2
 
Comite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxComite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxClaudiaPerez86192
 
Elaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfElaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfKEVINYOICIAQUINOSORI
 
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaXimenaFallaLecca1
 
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.pptoscarvielma45
 
CLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptxCLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptxbingoscarlet
 
Ejemplos de cadenas de Markov - Ejercicios
Ejemplos de cadenas de Markov - EjerciciosEjemplos de cadenas de Markov - Ejercicios
Ejemplos de cadenas de Markov - EjerciciosMARGARITAMARIAFERNAN1
 
Quimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdfQuimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdfs7yl3dr4g0n01
 
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfLA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfbcondort
 
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERASDOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERASPersonalJesusGranPod
 
UNIDAD 3 ELECTRODOS.pptx para biopotenciales
UNIDAD 3 ELECTRODOS.pptx para biopotencialesUNIDAD 3 ELECTRODOS.pptx para biopotenciales
UNIDAD 3 ELECTRODOS.pptx para biopotencialesElianaCceresTorrico
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfedsonzav8
 
Maquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdfMaquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdfdanielJAlejosC
 
aCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.pptaCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.pptCRISTOFERSERGIOCANAL
 
osciloscopios Mediciones Electricas ingenieria.pdf
osciloscopios Mediciones Electricas ingenieria.pdfosciloscopios Mediciones Electricas ingenieria.pdf
osciloscopios Mediciones Electricas ingenieria.pdfIvanRetambay
 
Controladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y VentajasControladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y Ventajasjuanprv
 
Falla de san andres y el gran cañon : enfoque integral
Falla de san andres y el gran cañon : enfoque integralFalla de san andres y el gran cañon : enfoque integral
Falla de san andres y el gran cañon : enfoque integralsantirangelcor
 
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptxCALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptxCarlosGabriel96
 

Último (20)

introducción a las comunicaciones satelitales
introducción a las comunicaciones satelitalesintroducción a las comunicaciones satelitales
introducción a las comunicaciones satelitales
 
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
 
tema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdftema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdf
 
Comite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxComite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptx
 
Elaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfElaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdf
 
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
 
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
 
CLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptxCLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptx
 
Ejemplos de cadenas de Markov - Ejercicios
Ejemplos de cadenas de Markov - EjerciciosEjemplos de cadenas de Markov - Ejercicios
Ejemplos de cadenas de Markov - Ejercicios
 
Quimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdfQuimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdf
 
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfLA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
 
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERASDOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
 
UNIDAD 3 ELECTRODOS.pptx para biopotenciales
UNIDAD 3 ELECTRODOS.pptx para biopotencialesUNIDAD 3 ELECTRODOS.pptx para biopotenciales
UNIDAD 3 ELECTRODOS.pptx para biopotenciales
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdf
 
Maquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdfMaquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdf
 
aCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.pptaCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.ppt
 
osciloscopios Mediciones Electricas ingenieria.pdf
osciloscopios Mediciones Electricas ingenieria.pdfosciloscopios Mediciones Electricas ingenieria.pdf
osciloscopios Mediciones Electricas ingenieria.pdf
 
Controladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y VentajasControladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y Ventajas
 
Falla de san andres y el gran cañon : enfoque integral
Falla de san andres y el gran cañon : enfoque integralFalla de san andres y el gran cañon : enfoque integral
Falla de san andres y el gran cañon : enfoque integral
 
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptxCALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
 

Electrónica digital: introducción al lenguaje de descripción hardware VHDL

  • 1. 1 European Training Institute Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid Introducción al Lenguaje deIntroducción al Lenguaje de Descripción Hardware VHDLDescripción Hardware VHDL SergioSergio LopezLopez--BuedoBuedo sergio.lopezsergio.lopez--buedo@uam.esbuedo@uam.es
  • 2. 2 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 2 Lenguaje de Descripción Hardware VHDL Introducción La entidad y la arquitectura Tipos de datos Los procesos Circuitos combinacionales Circuitos secuenciales Máquinas de estados Triestados Diseño jerárquico Estilos de diseño Verificación con testbenches VHDLVHDL
  • 3. 3 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 3 Lenguaje de Descripción Hardware VHDL IntroducciónIntroducción La entidad y la arquitectura Tipos de datos Los procesos Circuitos combinacionales Circuitos secuenciales Máquinas de estados Triestados Diseño jerárquico Estilos de diseño Verificación con testbenches VHDLVHDL
  • 4. 4 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 4 ¿Para qué sirven los HDLs? Los lenguajes de descripción HW sirven para modelar circuitos, PARA EXPRESAR IDEAS if A='1' and B='1' then S<='1'; else S<='0'; end if; Los modelos se pueden simular para comprobar que se corresponden con la funcionalidad deseada O se pueden sintetizar para crear un circuito que funciona como el modelo A B S A B S 0 ns 10 ns 20 ns
  • 5. 5 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 5 Los HDLs cuando el circuito ya existe Se puede crear un modelo de un circuito que ya exista, que ya esté implementado if A='1' and B='1' then S<='1' after 5 ns; else S<='0' after 4 ns; end if; En este caso el objetivo es simular el circuito para comprobar que su funcionalidad se ajusta a las especificaciones iniciales A B S 0 ns 10 ns 20 ns Simulación Post-Layout
  • 6. 6 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 6 Los HDLs como documentación Los modelos de los circuitos si están bien comentados sirven como documentación Los HDLs se pueden utilizar también para crear bancos de pruebas, o sea, para crear estímulos y ver resultados durante la simulación Utilizar HDLs para hacer las especificaciones La mejor doc es el código fuente
  • 7. 7 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 7 HDLs: estado actual y alternativas • En la actualidad, los esquemáticos no son una alternativa realista en ningún proyecto • Ejemplo: GeForce4, 65 millones de transistores y 800.000 líneas de código Verilog • La alternativa estándar es usar un HDL – Verilog: Costa Oeste, ASICs, menos verboso, más parecido a C, menos expresivo – VHDL: Costa Este y Europa, FPGAs, más verboso, más parecido a PASCAL y ADA, más expresivo • El diseño se sintetiza a partir de un HDL, pero gran parte del diseño y la verificación se realiza con lenguajes estándares – C y Matlab • VHDL es el estándar para FPGAs en proyectos industriales de moderada complejidad en España
  • 8. 8 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 8 VHDL: orígenes e historia • VHDL surge a principios de los '80 de un proyecto DARPA (Departamento de Defensa de los EE.UU.) llamado VHSIC – Very High Speed Integrated Circuits • VHDL aparece como una manera de describir circuitos integrados – La crisis del ciclo de vida del HW: cada día los circuitos integrados eran más complicados, y el coste de reponerlos cada vez era mayor, porque no estaban correctamente documentados. VHDL nació como una manera estándar de documentar los circuitos – Al mismo tiempo, se vio que la expresividad de VHDL permitiría reducir el tiempo de diseño de los circuitos, porque se podrían crear directamente de su descripción: utilidad de la síntesis • En 1987 el trabajo fue cedido al IEEE, y a partir de ese momento es un estándar abierto.
  • 9. 9 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 9 VHDL: Evolución • 1980: El departamento de defensa de los EEUU funda el proyecto para crear un HDL estándar dentro del programa VHSIC • 1981: Woods Hole Workshop, reunión inicial entre el Gobierno, Universidades e Industria • 1983: Se concedió a Intermetrics, IBM y Texas Instruments el contrato para desarrollar VHDL • 1985: Versión 7.2 de dominio público. • 1987: El IEEE lo ratifica como su estándar 1076 (VHDL-87) • 1993: El lenguaje VHDL fue revisado y ampliado, pasando a ser estándar 1076 ‘93 (VHDL-93) • 2000: Última modificación de VHDL
  • 10. 10 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 10 ¿Y en el futuro? • Los lenguajes de descripción de hardware tienen también limitaciones: – Metodología de diseño nueva, exige un cambio de mentalidad con respecto al SW – No permiten reusar código SW para HW – La decisión HW/SW se hace debe hacer antes de la codificación – La simulación es lenta, siempre hay que recurrir a una simulación algorítmica usando lenguajes SW • Como respuesta a esto, hay varias iniciativas para describir HW usando lenguajes de alto nivel, tipo SW – Handel-C, System-C – Forge (Java) – Superlog • VHDL es un lenguaje de presente, en el futuro ya se verá...
  • 11. 11 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 11 Lenguaje de Descripción Hardware VHDL Introducción La entidad y la arquitecturaLa entidad y la arquitectura Tipos de datos Los procesos Circuitos combinacionales Circuitos secuenciales Máquinas de estados Triestados Diseño jerárquico Estilos de diseño Verificación con testbenches VHDLVHDL
  • 12. 12 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 12 Entidad y Arquitectura: 1er nivel de abstracción Abstracción: caja negra Interfaz: entradas y salidas Entidad y arquitectura • Una unidad hardware se visualiza como una “caja negra” – El interfaz de la caja negra esta completamente definida. – El interior esta oculto. • En VHDL la caja negra se denomina entidad – La ENTITY describe la E/S del diseño • Para describir su funcionamiento se asocia una implementación que se denomina arquitectura – La ARCHITECTURE describe el contenido del diseño. rst d[7:0] clk q[7:0] co
  • 13. 13 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 13 PORTS: Puertos de una entidad Ports = Canales de Comunicación Cada una de las posibles conexiones se denomina un PORT y consta de: • Un nombre, que debe ser único dentro de la entidad. • Una lista de propiedades, como: – la dirección del flujo de datos, entrada, salida, bidireccional y se conoce como MODO del puerto. – los valores que puede tomar el puerto: '0’, '1' o (‘Z’), etc.,los valores posibles dependen de lo que se denomina TIPO de señal. • Los puertos son una clase especial de señales que adicionalmente al tipo de señal añade el modo Interfaz de dispositivo Ports: entradas y salidas rst d[7:0] clk q[7:0] co
  • 14. 14 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 14 PORTS: Modos de un puerto Modo de los puertos Indican la dirección y si el puerto puede leerse o escribirse dentro de la entidad • IN Una señal que entra en la entidad y no sale. La señal puede ser leída pero no escrita. • OUT Una señal que sale fuera de la señal y no es usada internamente. La señal no puede ser leída dentro de la entidad. • BUFFER Una señal que sale de la entidad y también es realimentada dentro de la entidad. • INOUT Una señal que es bidireccional, entrada/salida de la entidad.
  • 15. 15 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 15 VHDL: Declaración de entidad La declaración VHDL de la caja negra: LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY mi_componente IS PORT ( clk, rst: IN std_logic; d: IN std_logic_vector(7 DOWNTO 0); q: OUT std_logic_vector(7 DOWNTO 0); co: OUT std_logic); END mi_componente; mi_componente rst d[7:0] clk q[7:0] co MODO TIPO
  • 16. 16 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 16 Estructura de un diseño VHDL declaraciones de puertos parte declarativa de la arquitectura cuerpo de la arquitectura nombre de la arquitectura nombre de la entidad
  • 17. 17 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 17 Resumen: Entidad y Arquitecturas • La entidad se utiliza para hacer una descripción "caja negra" del diseño, sólo se detalla su interfaz • Los contenidos del circuito se modelan dentro de la arquitectura • Una entidad puede tener varias arquitecturas – Por ejemplo, la descripción de comportamiento que ha hecho el diseñador y el modelo post-layout obtenido después de implementar el chip
  • 18. 18 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 18 Lenguaje de Descripción Hardware VHDL Introducción La entidad y la arquitectura Tipos de datosTipos de datos Los procesos Circuitos combinacionales Circuitos secuenciales Máquinas de estados Triestados Diseño jerárquico Estilos de diseño Verificación con testbenches VHDLVHDL
  • 19. 19 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 19 Tipos de datos básicos • TIPO es la definición de los valores posibles que puede tomar un objeto • VHDL es un lenguaje fuertemente tipado: – A los objetos se les asigna siempre un tipo cuando se declaran – Las asignación sólo pueden hacerse entre objetos del mismo tipo • Los tipos predefinidos son: – Escalares: integer floating point enumerated physical – Compuestos: array record – Punteros: access – Archivos: file tipos file access escalares compuestos enumerados real entero físico record array
  • 20. 20 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 20 Tipos básicos predefinidos Tipos IEEETipos IEEE--10761076 • BIT: sólo puede tomar los valores de '0' o '1’. Para modelar señales digitales • BIT_VECTOR: un array unidimensional (vector) de bits. Para modelar buses • INTEGER: tipo entero – usado como valor índice en lazos, constantes o valores genéricos • BOOLEAN: tipo lógico – Puede tomar como valores ‘TRUE’ o ‘FALSE’ • REAL: tipo para números en coma flotante • ENUMERATED: Enumeración – Conjunto de valores definido por el usuario – Por ejemplo: TYPE estados IS (inicio, lento, rapido)
  • 21. 21 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 21 Tipo STD_LOGIC • Los dos valores del tipo bit se quedan cortos para modelar todos los estados de una señal digital en la realidad • El paquete IEEE.standard_logic_1164 define el tipo std_logic, que representa todos los posibles estados de una señal real: U No inicializado, valor por defecto. X Desconocido fuerte, salida con múltiples fuentes en corto 0 Salida de una puerta con nivel lógico bajo 1 Salida de una puerta con nivel lógico alto Z Alta Impedancia W Desconocido débil, terminación de bus L 0 débil, resistencia de pull-down H 1 débil, resistencia de pull-up – No importa, usado como comodín para síntesis
  • 22. 22 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 22 Tipo STD_LOGIC (2) • Para describir buses se utiliza el tipo std_logic_vector, que es un array de std_logic • Los tipos std_logic y std_logic_vector son los estándares industriales. • Todos los valores son validos en un simulador VHDL, sin embargo solo: ‘0’, ‘1’, ‘Z’, ‘L’, ‘H’ y ‘–’ se reconocen para la síntesis. • En el paquete IEEE.std_logic_1164 aparecen otros dos tipos: std_ulogic y std_ulogic_vector. Son los mismos, pero sin haber pasado por la función de resolución – Esta función decide cuál debe ser el valor de la señal cuando tiene dos fuentes que le asignan valores distintos – Por ejemplo, si una fuente asigna un ‘1’ y la otra una ‘L’, la función de resolución dice que la señal se queda a ‘1’
  • 23. 23 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 23 Utilizando los tipos: señales en VHDL • El objeto básico en VHDL es la señal, que se utiliza para modelar los hilos del circuito • Puesto que modela nodos físicos, incluye información de tiempo – No sólo contiene unos valores ('0', '1', 'Z', etc...) sino también el tiempo en el que se toman estos valores • Se declaran antes del begin de la arquitectura (en la parte declarativa): • Pueden tener un valor inicial (no soportado en síntesis) • Para asignar valores a una señal se utiliza <= ARCHITECTURE uam OF prueba IS SIGNAL s1 : STD_LOGIC; SIGNAL s2 : INTEGER; BEGIN SIGNAL a : STD_LOGIC := '0';
  • 24. 24 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 24 Utilizando los tipos: constantes y variables • Como en cualquier otro lenguaje, en VHDL se pueden utilizar constantes • Se declaran también en la parte declarativa, antes del begin • Las constantes pueden ser de cualquier tipo • El tercer objeto posible en VHDL son las variables: – Sólo almacenan valores, no entienden de tiempo – Visibilidad limitada, sólo dentro de un proceso y no en toda la arquitectura (a diferencia de las señales y constantes) – Se les asignan valores empleando := ARCHITECTURE uam OF prueba IS CONSTANT c1 : STD_LOGIC := '0'; CONSTANT c2 : TIME := 10 ns; CONSTANT c3 : INTEGER := 5; BEGIN
  • 25. 25 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 25 Usando arrays para crear buses • Los vectores se pueden definir tanto en rangos ascendentes como descendentes: Produce como resultado: • Una manera rápida y eficiente de asignar valores a vectores son los aggregates: SIGNAL a: STD_LOGIC_VECTOR(0 TO 3); -- i.e. rango ascendente SIGNAL b: STD_LOGIC_VECTOR(3 DOWNTO 0); -- i.e. rango descendente a <= "0101"; b <= "0101"; a(0) = '0'; a(1) = '1'; a(2) = '0'; a(3) = '1'; b(0) = '1'; b(1) = '0'; b(2) = '1'; b(3) = '0'; a <= (0 => '0‘, 1 => c and d, others=> ‘Z‘);
  • 26. 26 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 26 Asignación de señales en buses Flexibilidad en la asignación de valores de busesFlexibilidad en la asignación de valores de buses SIGNAL tmp: STD_LOGIC_VECTOR(7 downto 0); • Todos los bits: tmp <= "10100011"; tmp <= x"A3"; -- VHDL’93 • Un solo bit: tmp(7) <= '1'; • Un rango de bits: tmp(7 downto 4) <= "1010"; • Notación: – 1 bit : comilla simple (') – multiples bits: comilla doble (")
  • 27. 27 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 27 Como definir nuevos tipos (y usarlos) • VHDL permite definir nuevos tipos, bien a partir de tipos enumerados, o como subconjunto de tipos ya existentes, o tipos multidimensionales • Las definiciones de tipos se deben hacer en la parte declarativa de la arquitectura • Definir un tipo como una enumeración: • Definir un tipo bidimensional: TYPE estados IS (inactivo, operando, finalizar); SIGNAL mi_maquina : estados; TYPE memoria IS ARRAY (1024 downto 0) OF std_logic_vector(7 downto 0); SIGNAL mi_memoria : memoria;
  • 28. 28 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 28 Operadores definidos en VHDL • Lógicos and or, nor xor, xnor • Relacionales = igual /= distinto < menor <= menor o igual > mayor >= mayor o igual • Misceláneos abs valor absoluto ** exponenciación not negación (unario) • Adición + suma – resta & concatenación de vectores • Multiplicativos * multiplicación / división rem resto mod módulo • Signo (unarios) +, – • Desplazamiento (bit_vector) sll, srl sla, sra rol, ror
  • 29. 29 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 29 Más sobre operadores • No todos los operadores están definidos para todos los tipos • En particular, para los std_logic habrá que obtenerlos de las librerías estándar: – std_logic_signed – std_logic_unsigned – std_logic_arith • El operador de concatenación se utiliza muy a menudo • Los operadores de desplazamiento básicos sólo funcionan con bit_vector. Es mucho mejor usar concatenación con std_logic signal a: std_logic_vector( 3 downto 0); signal b: std_logic_vector( 3 downto 0); signal c: std_logic_vector( 7 downto 0); a <= "0011"; b <= "1010"; c <= a & b; -- c ="00111010"
  • 30. 30 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 30 Acerca de las librerías en VHDL • Librerías clásicas (y anticuadas): – std_logic_signed – std_logic_unsigned – std_logic_arith • Las librerías signed y unsigned se deben emplean cuando se quiere que los std_logic_vector estén respectivamente en complemento a 2 o en binario natural – Aquí está el CONV_INTEGER • La librería arith es más completa, y utiliza mayormente los tipos signed o unsigned (derivados de std_logic_vector) – Aquí está CON_STD_LOGIC_VECTOR • Tendencia actual del IEEE: emplear la librería numeric_std – Pensada para trabajar con los tipos signed y unsigned – TO_INTEGER, TO_SIGNED, TO_UNSIGNED
  • 31. 31 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 31 Lenguaje de Descripción Hardware VHDL Introducción La entidad y la arquitectura Tipos de datos Los procesosLos procesos Circuitos combinacionales Circuitos secuenciales Máquinas de estados Triestados Diseño jerárquico Estilos de diseño Verificación con testbenches VHDLVHDL
  • 32. 32 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 32 Entrando en detalle en la arquitectura architecture UAM of EJEMPLO is begin end architecture UAM; Parte declarativa: aquí se definen los subtipos y las señales que vamos a usar En el cuerpo de la arquitectura se modela el comportamiento del circuito con asignaciones, instanciaciones y PROCESOS
  • 33. 33 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 33 El proceso: el elemento de diseño principal • Un proceso describe el comportamiento de un circuito – Cuyo estado puede variar cuando cambian ciertas señales – Utilizando construcciones muy expresivas: if..then..else, case, bucles for y while, etc… – Y que además puede declarar variables, procedimientos, etc... process(lista de señales) ... parte declarativa (variables, procedimientos, tipos, etc…) ... begin ... instrucciones que describen el comportamiento ... end process;
  • 34. 34 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 34 La lista de sensibilidad tiene las señales A, B porque cualquier cambio en las entradas puede variar el estado de la puerta Ejemplo: Descripción de una puerta AND process(A,B) begin if A='1' and B='1' then S <= '1'; else S <= '0'; end if; end process; A B S Se usa un if..then..else para describir la puerta El proceso no declara nada
  • 35. 35 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 35 El problema de la concurrencia del HW El HW es inherentemente concurrente, los circuitos coexisten físicamente en el tiempo Este HW no se puede modelar en un lenguaje secuencial como C: S = A & B; Q = C | D; Ambas puertas funcionan al mismo tiempo, ¡no una antes de la otra! El chip tiene dos puertas que funcionan simultáneamente A B S C D Q
  • 36. 36 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 36 Concurrencia: Una posible solución • La solución al problema anterior es que aunque la ejecución sea secuencial, las instrucciones no tarden ningún tiempo en ejecutarse: • De esta manera la aunque una instrucción se ejecuta después de la otra, como las dos se evalúan en el mismo instante, desde el punto de vista de la modelización del circuito ambas puertas están funcionando simultáneamente • Esta es la solución por la que opta VHDL (y Verilog) A B S C D Q S <= A and B; Q <= C or D;
  • 37. 37 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 37 Necesidad de la concurrencia • Sin embargo, esta solución ya no vale con este circuito: • ¿Por qué? No hay que olvidar que se trata de modelizar circuitos reales, no virtuales, y las señales necesitan que transcurra el tiempo para tomar un valor: A B C S Q S <= A and B; Q <= S or C; !Q no toma el valor correcto porque no se da tiempo para que se actualize S!
  • 38. 38 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 38 La solución de VHDL • VHDL (y en general, todos los HDLs) solucionan este problema dando soporte explicito a la concurrencia • En VHDL, una arquitectura puede tener tantos procesos como queramos, y todos se ejecutan concurrentemente architecture ... ... begin process(...) ... end process; process(...) ... end process; end ...; Los procesos se ejecutan concurrentemente
  • 39. 39 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 39 Dos procesos en paralelo como solución architecture uam of ejemplo is ... begin process(A,B) begin if A='1' and B='1' then S <= '1'; else S <= '0'; end if; end process; process(C,S) begin if C='1' then Q <= '1'; else Q <= S; end if; end process; end uam; A B C S Q
  • 40. 40 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 40 Procesos: Recapitulando • Los procesos se disparan (su código se ejecuta) cuando cambia alguna de las señales en su lista de sensibilidad • Las instrucciones dentro del proceso se ejecutan secuencialmente, una detrás de otra, pero sin dar lugar a que avance el tiempo durante su ejecución • El tiempo sólo avanza cuando se llega al final del proceso • Las señales modelan hilos del circuito, y como tales, sólo pueden cambiar de valor si se deja que avance el tiempo • Una arquitectura puede tener tantos procesos como queramos, y todos se van a ejecutar en paralelo • Esta es la manera que tiene VHDL de expresar la concurrencia inherente al hardware
  • 41. 41 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 41 Instrucciones en procesos: IF..THEN..ELSE IF condicion_1 THEN ... secuencia de instrucciones 1 ... ELSIF condicion_2 THEN ... secuencia de instrucciones 2 ... ELSIF condicion_3 THEN ... secuencia de instrucciones 1 ... ELSE ... instrucciones por defecto ... END IF; architecture example of thermostat is begin ctrl : process (desired_temp, actual_temp) is begin if actual_temp < desired_temp - 2 then heater_on <= true; elsif actual_temp > desired_temp + 2 then heater_on <= false; end if; end process ctrl; end architecture example; Ejemplo: Un termostato (Ashenden Fig. 3-1)
  • 42. 42 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 42 Instrucciones en procesos: CASE CASE expresion IS WHEN caso_1 => ... secuencia de instrucciones 1 ... WHEN caso_2 => ... secuencia de instrucciones 2 ... WHEN OTHERS => ... instrucciones por defecto ... END CASE; architecture uam of alu is begin alu : process (op1, op2, cmd) is begin case cmd is when "00" => res <= op1 + op2; when "01" => res <= op1 – op2; when "10" => res <= op1 and op2; when "11" => res <= op1 or op2; when others => res <= "XXXXXXXX"; end case; end process alu; end architecture uam; Ejemplo: Una ALU sencilla
  • 43. 43 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 43 Instrucciones en procesos: Bucle FOR [etiqueta] FOR identificador IN rango LOOP ... instrucciones secuenciales ... END LOOP [etiqueta]; architecture uam of decoder is begin decod : process (a) is begin for i in 0 to 7 loop if i = CONV_INTEGER(a) then q(i) <= '1'; else q(i) <= '0'; end if; end loop; end process decod; end architecture uam; Ejemplo: Decodificador de 3 a 8 Dentro del proceso no avanza el tiempo, por lo que el bucle se paraleliza
  • 44. 44 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 44 Instrucciones en procesos: Bucle WHILE [etiqueta] WHILE condicion LOOP ... instrucciones secuenciales ... END LOOP [etiqueta]; busca: process(valor) variable pos : integer; begin encontrado <= '0'; pos := 0; while valor /= tabla(pos) loop pos := pos + 1; if pos = 100 then exit; end if; end loop; if pos < 100 then encontrado <= '1'; end if; end process; Ejemplo: Búsqueda en una tabla Aquí también se paraleliza el bucle
  • 45. 45 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 45 Bucles con next y exit • En VHDL se pueden crear bucles infinitos • Todos los bucles pueden tener una condición de salida • Con la instrucción next termina inmediatamente la iteración actual y se pasa a la siguiente [etiqueta] LOOP ... instrucciones secuenciales ... END LOOP [etiqueta]; exit [etiqueta] [when condicion]; next [etiqueta] [when condicion];
  • 46. 46 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 46 Procesos: Dos opciones de funcionamiento process(lista de señales) ... begin ... instrucciones secuenciales ... end process; process ... begin ... instrucciones secuenciales ... wait... ... instrucciones secuenciales ... end process; El proceso se dispara cuando cambia alguna de estas señales El proceso se dispara inmediatamenteLas instrucciones se ejecutan hasta que se llega al wait, y en ese punto se suspende el proceso Cuando se deja de cumplir la condición de espera, la ejecución continúa Al llegar al final, se empieza otra vez por el principio Las instrucciones se ejecutan hasta que se llega al final, y entonces se suspende el proceso
  • 47. 47 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 47 Distintas claúsulas wait • Esperar a que ocurra una condición: • Esperar a que cambie alguna de las señales de una lista: • Esperar un cierto tiempo: • Esperar indefinidamente (matar el proceso): wait until a='1' and b='0'; wait on a, b, clk; wait 100 ns; wait;
  • 48. 48 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 48 Asignación de valores a señales • No olvidar... Las asignaciones a señales dentro de procesosLas asignaciones a señales dentro de procesos sólo se ejecutan cuando se suspende el procesosólo se ejecutan cuando se suspende el proceso • No es un dogma de fe, tiene su explicación... – Las señales modelan conexiones físicas, y por tanto, no sólo deben tener en cuenta el valor, sino también el tiempo – Para que un cable cambie de valor hace falta que el tiempo avance – De la misma forma, para que una señal cambie de valor hace falta que el tiempo avance – El tiempo sólo avanza cuando se suspende el proceso
  • 49. 49 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 49 Las variables • A la hora de modelar un circuito nos puede venir bien un tener un objeto cuyo valor se actualice inmediatamente – sin tener que esperar a que avance el tiempo, como en las señales • La solución son las variables – Las variables se declaran dentro de los procesos – Sólo se ven dentro del proceso que las ha declarado – Toman el valor inmediatamente, son independientes del tiempo process(a,b,c) ... variable v : std_logic; ... begin ... v := a and b or c; ... end process;
  • 50. 50 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 50 Solución con variables A B C S Q architecture uam of ejemplo is ... begin process(A,B,C) variable S : std_logic; begin S := A and B; if C='1' then Q <= '1'; else Q <= S; end if; end process; end uam; El problema de la actualización de la señal S tiene muy fácil solución con una variable
  • 51. 51 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 51 se actualizan inmediatamente se actualizan cuando avanza el tiempo (se suspende el proceso) Comportamiento local (dentro del proceso) global (comunicación entre procesos) Visibilidad representan almacenamiento local modelan nodos físicos del circuito Utilidad destino := fuentedestino <= fuenteSintaxis VariablesSeñales Semántica de variables y señales
  • 52. 52 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 52 Lenguaje de Descripción Hardware VHDL Introducción La entidad y la arquitectura Tipos de datos Los procesos CircuitosCircuitos combinacionalescombinacionales Circuitos secuenciales Máquinas de estados Triestados Diseño jerárquico Estilos de diseño Verificación con testbenches VHDLVHDL
  • 53. 53 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 53 Modelar lógica combinacional con procesos architecture uam of mux is begin process(a,b,sel) begin if sel='1' then y <= a; else y <= b; end if; end process; end uam; Todas las entradas deben estar en la lista de sensibilidad Se debe asignar siempre (en todos los casos) a la salida un valor
  • 54. 54 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 54 El problema de la memoria implícita • CAUSA – las señales en VHDL tienen un estado actual y un estado futuro • EFECTOS – En un proceso, si el valor futuro de una señal no puede ser determinado, se mantiene el valor actual. – Se sintetiza un latch para mantener su estado actual • VENTAJAS – Simplifica la creacion de elementos de memoria • DESVENTAJAS – Pueden generarse latches no deseados,p.ej. cuando todas las opciones de una sentencia condicional no están especificadas
  • 55. 55 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 55 Un ejemplo correcto architecture example of thermostat is begin ctrl : process (desired_temp, actual_temp) is begin if actual_temp < desired_temp - 2 then heater_on <= true; elsif actual_temp > desired_temp + 2 then heater_on <= false; end if; end process ctrl; end architecture example; Se genera unSe genera un latchlatch para la señalpara la señal heater_onheater_on porque no se actualiza en todos los casosporque no se actualiza en todos los casos
  • 56. 56 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 56 Un problema con la memoria implícita • Diseñar un circuito de acuerdo a esta tabla de verdad • Solución es incorrecta, por no poner el caso "11" no significa "don't care", simplemente está guardando el valor anterior, está generando un latch process (a) begin case a is when "00" => res <= '1'; when "01" => res <= '1'; when "10" => res <= '0'; when others => null; end process; don't care11 010 101 100 SA
  • 57. 57 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 57 Reglas para evitar la memoria implícita • Para evitar la generación de latches no deseados – Se deber terminar la instrucción IF...THEN...ELSE... con la cláusula ELSE – Especificar todas las alternativas en un CASE, definiendo cada alternativa individualmente, o mejor terminando la sentencia CASE con la cláusula WHEN OTHERS... Por ejemplo, CASE decode IS WHEN "100" => key <= first; WHEN "010" => key <= second; WHEN "001" => key <= third; WHEN OTHERS => key <= none; END CASE;
  • 58. 58 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 58 Asignaciones concurrentes • Las asignaciones concurrentes son asignaciones de valores a señales, fuera de proceso, que permiten modelar de una manera muy compacta lógica combinacional – Funcionan como procesos (son procesos implícitos) y se ejecutan concurrentemente con el resto de procesos y asignaciones • Hay tres tipos – Asignaciones simples – Asignaciones condicionales – Asignaciones con selección s <= (a and b) + c; s <= a when c='1' else b; with a+b select s <= d when "0000", e when "1010", '0' when others;
  • 59. 59 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 59 Asignaciones concurrentes simples • A una señal se le asigna un valor que proviene de una expresión, que puede ser tan compleja como queramos • Esta expresión es completamente equivalente a este proceso: • Se pueden utilizar todos los operadores que queramos, tanto los predefinidos como los que importemos de las librerías s <= ((a + b) * c) and d; process(a,b,c,d) begin s <= ((a + b) * c) and d; end process;
  • 60. 60 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 60 Asignaciones concurrentes condicionales • A la señal se le asigna valores dependiendo de si se cumplen las condiciones que se van evaluando: • Por su ejecución en cascada es similar al IF..THEN..ELSE • Pueden generarse problemas de memoria implícita si no se pone el último else architecture uam of coder is begin s <= "111" when a(7)='1' else "110" when a(6)='1' else "101" when a(5)='1' else "100" when a(4)='1' else "011" when a(3)='1' else "010" when a(2)='1' else "001" when a(1)='1' else "000"; end architecture uam;
  • 61. 61 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 61 Asignaciones concurrentes con selección • Se le asigna un valor a una señal dependiendo del valor que tome una expresión: • Por su ejecución en paralelo (balanceada) es similar a un CASE • Se pueden dar problemas de memoria implícita si no se pone el último when others architecture uam of decod is begin with a sel s <= "00000001" when "000", "00000010" when "001", "00000100" when "010", "00001000" when "011", "00010000" when "100", "00100000" when "101", "01000000" when "110", "10000000" when others; end architecture uam;
  • 62. 62 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 62 Lenguaje de Descripción Hardware VHDL Introducción La entidad y la arquitectura Tipos de datos Los procesos Circuitos combinacionales CircuitosCircuitos secuencialessecuenciales Máquinas de estados Triestados Diseño jerárquico Estilos de diseño Verificación con testbenches VHDLVHDL
  • 63. 63 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 63 El fundamento: Modelo del flip-flop D process (clk) begin if clk'event and clk='1' then q <= d; end if; end process; proceso sensible al reloj cambia el reloj y es ahora 1 ... hay un flanco de subida también vale rising_edge(clk) no hay else, queremos inferir memoria
  • 64. 64 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 64 Flip-flop con reset asíncrono y clock enable • Otro circuito fundamental. • El reset debe estar en la lista de sensibilidad porque es asíncrono, tiene efecto independientemente del reloj. • En los circuitos secuenciales, la lista de sensibilidad debe estar compuesta como mucho por el reloj y el reset (si es asíncrono). process (clk,rst) begin if rst='1' then q <= '0'; elsif clk'event and clk='1' then if ce='1' then q <= d; end if; end if; end process;
  • 65. 65 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 65 El axioma del diseño síncrono CLK El reloj es único y está en todos losEl reloj es único y está en todos los flipflip--flopsflops del diseñodel diseño • No se pueden usar dos relojes en el sistema • Todas las señales asíncronas se deben muestrear (pasar por un flip-flop D) nada más entrar al sistema • No se deben poner puertas en el reloj, si se necesita deshabilitar la carga de un flip-flop utilizar la habilitación de reloj
  • 66. 66 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 66 Ejemplo: Un contador de 8 bits process(clk,rst) variable q_temp : std_logic_vector(7 downto 0); begin if rst='1' then q_temp := (others => '0'); elsif rising_edge(clk) then if ce='1' then if up='1' then q_temp := q_temp + 1; else q_temp := q_temp - 1; end if; end if; end if; q <= q_temp; end process;
  • 67. 67 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 67 Ejemplo: Un registro de desplazamiento process(rst,clk) begin if rst='1' then dout <= "00000000"; elsif rising_edge(clk) then if ce='1' then if load='1' then dout <= din; else dout <= dout(6 downto 0) & sin; end if; end if; end if; end process;
  • 68. 68 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 68 Metodología: Diseño circuitos secuenciales Lógica Comb. EstFuturo Estado registro
  • 69. 69 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 69 Metodología: Diseño circuitos secuenciales Maquinas de estados: FSM Utilización de subtipos: Definicion de Estados Tres Bloques Funcionales Lógica combinacional: Decision de cambio de estado Registros: Mantienen el estado. Logica combinacional de definición de salidas architecture uam of ejemplo is type t_estado is (E0, E1, E2, E3); signal Estado, EstFuturo : t_estado; signal in1, in2, in3 : std_logic; signal out1, out2 : std_logic; signal CK, reset : std_logic; ...
  • 70. 70 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 70 Metodología: Diseño circuitos secuenciales Maquinas de estados: FSM Utilización de subtipos: Definicion de Estados Tres Bloques Funcionales Lógica combinacional: Decision de cambio de estado Registros: Mantienen el estado. Logica combinacional de definición de salidas begin comb: process (Estado, in1, in2, in3) begin case Estado is when E0 => out1 <= '0'; out2 <= '0'; EstFuturo <= E1; when E1 => out1 <= '1'; if in1 = '1' then EstFuturo <= E2; else EstFuturo <= E1; end if; when E2 => ... when E3 => ... end case; end process comb;
  • 71. 71 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 71 Metodología: Diseño circuitos secuenciales Maquinas de estados: FSM Utilización de subtipos: Definicion de Estados Tres Bloques Funcionales Lógica combinacional: Decision de cambio de estado Registros: Mantienen el estado. Logica combinacional de definición de salidas registro: process begin wait until reset='1' or rising_edge(CK); if reset='1' then Estado <= E0; else Estado <= EstFuturo; end if; end process registro; end architecture uam;
  • 72. 72 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 72 Lenguaje de Descripción Hardware VHDL Introducción La entidad y la arquitectura Tipos de datos Los procesos Circuitos combinacionales Circuitos secuenciales Máquinas de estadosMáquinas de estados Triestados Diseño jerárquico Estilos de diseño Verificación con testbenches VHDLVHDL
  • 73. 73 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 73 FSM: Maquinas de Moore • FSM MOORE: Una maquina de estados en la que las salidas cambian solo cuando cambia el estado • Las posibles implementaciones son: – Asignación arbitraria del valor de los estados • Las salidas se decodifican a partir de los estados 1. Decodificación combinacional. 2. Decodificación registrada. – Asignación específica de los valores de estado • Las salidas pueden ser codificadas directamente en los estados • Codificación one-hot
  • 74. 74 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 74 Implementación de una FSM de Moore (1) • Salidas decodificadas a partir del valor de los estados. 1. Decodificación Combinacional • Las salidas se decodifican a partir del estado actual • Salidas = función(estado_actual) Entradas SalidasRegistros de estado Lógica de salida Lógica estado sig.
  • 75. 75 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 75 Implementación de una FSM Moore (2) • Salidas decodificadas a partir del valor de los estados. 2. Decodificación con salidas registradas • La decodificación de las salidas se realiza en paralelo con la decodificación del siguiente estado. • Salidas = función(estado_anterior, entradas) Entradas Salidas Registros de estado Lógica de salida Lógica estado sig. Estado actual Registros de salida
  • 76. 76 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 76 Estado Salida 1 Salida 2 Codif. Estados s1 0 0 00 s2 1 0 01 s3 0 1 10 Implementación de una FSM Moore (3) • Salidas codificadas en los bits de los estados Nota: Los dos bits del estado son utilizados como salida Entradas SalidasRegistros de estado Lógica estado sig.
  • 77. 77 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 77 Ejemplo: Generador de “wait states” • Diagrama de Estados: RESET (async) IDLE 00 REQ ACK 10 RETRY 01 REQ PWAIT PWAIT retry_out='1' ack_out='1'
  • 78. 78 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 78 Ejemplo: Declaración de la entidad • La declaración de la entidad es la misma para todas las implementaciones: LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY maq IS PORT ( clock, reset: IN std_logic; req, pwait: IN std_logic; retry_out, ack_out: OUT std_logic); END maq;
  • 79. 79 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 79 Ejemplo: Solución 1 • Salidas combinacionales decodificadas a partir de los estados ARCHITECTURE archmoore1 OF maq IS TYPE fsm_states IS (idle, retry, ack); SIGNAL wait_gen : fsm_states; BEGIN fsm: PROCESS (clock, reset) BEGIN IF reset = '1' THEN wait_gen <= idle; -- asynchronous reset ELSIF clock'EVENT AND clock = '1' THEN CASE wait_gen IS WHEN idle => IF req = '0'THEN wait_gen <= retry; ELSE wait_gen <= idle; END IF;
  • 80. 80 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 80 Ejemplo: Solución 1 (cont.) WHEN retry => IF pwait='1' THEN wait_gen <= ack; ELSE wait_gen <= retry; END IF; WHEN ack => wait_gen <= idle; WHEN OTHERS => wait_gen <= idle; END CASE; END IF; END PROCESS fsm; retry_out <= '1' WHEN (wait_gen = retry) ELSE '0'; ack_out <= '1' WHEN (wait_gen = ack) ELSE '0'; END archmoore1;
  • 81. 81 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 81 Ejemplo: Solucion 2 • Salidas registradas decodificadas desde el valor de los estados ARCHITECTURE archmoore2 OF maq IS TYPE fsm_states IS (idle, retry, ack); SIGNAL wait_gen: fsm_states; BEGIN fsm: PROCESS (clock, reset) BEGIN IF reset = '1' THEN wait_gen <= idle; retry_out <= '0'; ack_out <= '0'; ELSIF clock'EVENT AND clock = '1' THEN retry_out <= '0'; -- asignacion por defecto
  • 82. 82 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 82 Ejemplo: Solución 2 (cont.) CASE wait_gen IS WHEN idle => IF req = '0' THEN wait_gen <= retry; retry_out <= '1'; ack_out <= '0'; ELSE wait_gen <= idle; ack_out <= '0'; END IF; WHEN retry => IF pwait = '1' THEN wait_gen <= ack; ack_out <= '1'; ELSE wait_gen <= retry; retry_out <= '1'; ack_out <= '0'; END IF; WHEN ack => wait_gen <= idle; ack_out <= '0'; WHEN OTHERS => wait_gen <= idle; ack_out <= '0'; -- para evitar latch END CASE; END IF; END PROCESS fsm; END archmoore2;
  • 83. 83 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 83 Ejemplo: Solución 3 • Salidas codificadas en el valor de los estados ARCHITECTURE archmoore3 OF maq IS SIGNAL wait_gen: std_logic_vector(1 DOWNTO 0); CONSTANT idle: std_logic_vector(1 DOWNTO 0) := "00"; CONSTANT retry: std_logic_vector(1 DOWNTO 0) := "01"; CONSTANT ack: std_logic_vector(1 DOWNTO 0) := "10"; BEGIN fsm: PROCESS (clock, reset) BEGIN IF reset = '1' THEN wait_gen <= idle; ELSIF clock'EVENT AND clock = '1' THEN
  • 84. 84 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 84 Ejemplo: Solución 3 (cont.) CASE wait_gen IS WHEN idle => IF req = '0' THEN wait_gen <= retry; ELSE wait_gen <= idle; END IF; WHEN retry => IF pwait = '1' THEN wait_gen <= ack; ELSE wait_gen <= retry; END IF; WHEN ack => wait_gen <= idle; WHEN OTHERS => wait_gen <= idle; END CASE; END IF; END PROCESS fsm; retry_out <= wait_gen(0); ack_out <= wait_gen(1); END archmoore3;
  • 85. 85 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 85 FSM: Codificación One-hot • Un estado por flip-flop – En FPGAs • reduce la lógica de cálculo de estado siguiente • y por tanto, menos profundidad de lógica • permitiendo máquinas muy rápidas (>100MHz) – En CPLDs • reduce el número de términos producto • eliminando, si los hubiera, expasiones de productos, y mejorando por tanto la velocidad • pero usa muchas más macroceldas, y el beneficio nunca es tan evidente como en FPGAs
  • 86. 86 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 86 Ejemplo: Solución One-hot ARCHITECTURE archmoore4 OF maq IS TYPE fsm_states IS (idle, retry, ack); ATTRIBUTE enum_encoding: string; ATTRIBUTE enum_encoding OF fsm_states : TYPE IS ”001 010 100”; SIGNAL wait_gen: fsm_states; BEGIN fsm: PROCESS (clock, reset) BEGIN IF reset = '1' THEN wait_gen <= idle; ELSIF clock'EVENT AND clock = '1' THEN CASE wait_gen IS WHEN idle => IF req = '0' THEN wait_gen <= retry; ELSE wait_gen <= idle; END IF;
  • 87. 87 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 87 Ejemplo: Solución One-hot (cont.) WHEN retry => IF pwait = '1' THEN wait_gen <= ack; ELSE wait_gen <= retry; END IF; WHEN ack => wait_gen <= idle; WHEN OTHERS => wait_gen <= idle; END CASE; END IF; END PROCESS fsm; -- Decodificacion de salidas retry_out <= '1' WHEN (wait_gen = retry) ELSE '0'; ack_out <= '1' WHEN (wait_gen = ack) ELSE '0'; END archmoore4;
  • 88. 88 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 88 Resumen FSM Moore • Salidas decodificadas de los bits de estado – Mayor flexibilidad en el proceso de diseño – Utilizando tipos enumerados se permite que la asignación de los estados se realice durante la compilación. • Salidas codificadas en los bits de estado – Asignación manual del valor de los estados – La salida se obtiene directamente de los registros – Se reduce le número de registros – Lógica adicional más compleja • Codificación One-Hot – Logica de siguiente estado mas sencilla – Mejora la velocidad – Necesita mas registros
  • 89. 89 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 89 FSM de Mealy • Las salidas cambian por un cambio de estado o por un cambio en el valor de las entradas – Hay que tener mucho cuidado con las entradas asíncronas Entradas Salidas Registros de estado Lógica
  • 90. 90 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 90 Ejemplo: generador de “wait states” • Diagrama de estados: X1/10 RESET (async) IDLE RETRY0X/01 X0/01 REQ PWAIT / ACK RETRY_OUT 1X/00
  • 91. 91 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 91 ARCHITECTURE archmealy1 OF maq IS TYPE fsm_states IS (idle, retry); SIGNAL wait_gen: fsm_states; BEGIN fsm: PROCESS (clock, reset) BEGIN IF reset = '1' THEN wait_gen <= idle; ELSIF clock'EVENT AND clock = '1' THEN CASE wait_gen IS WHEN idle => IF req = '0' THEN wait_gen <= retry; ELSE wait_gen <= idle; END IF; WHEN retry => IF pwait = '1' THEN wait_gen <= idle; ELSE wait_gen <= retry; END IF; WHEN OTHERS => wait_gen <= idle; END CASE; END IF; END PROCESS fsm; retry_out <= '1' WHEN (wait_gen = retry AND pwait='0') OR (wait_gen = idle AND req='0') ELSE '0'; ack_out <= '1' WHEN (wait_gen = retry AND pwait='1') ELSE '0'; END archmealy1; Ejemplo: Solución
  • 92. 92 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 92 Lenguaje de Descripción Hardware VHDL Introducción La entidad y la arquitectura Tipos de datos Los procesos Circuitos combinacionales Circuitos secuenciales Máquinas de estados TriestadosTriestados Diseño jerárquico Estilos de diseño Verificación con testbenches VHDLVHDL
  • 93. 93 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 93 Concepto de driver de una señal • El driver es el elemento que da valores a una señal • Para cada señal que se le asigna un valor dentro de un proceso se crea un driver para esa señal – Independientemente de cuantas veces se le asigne un valor a la señal, se crea un único driver por proceso – Tanto para procesos explícitos como implícitos – Cuando hay múltiples drivers se usa la función de resolución PROCESS(in1) BEGIN senal <= in1; END PROCESS; senal <= in2; in1 senal in2
  • 94. 94 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 94 Inferencia de triestado • Cuando se quiere que un driver de una señal se quede en alta impedancia, se le asigna a la señal el valor 'Z' – Sólo vale si para el tipo std_logic • Igual que ocurre en la realidad, el estado de la señal lo fijará el driver que no esté en alta impedancia senal <= in1 WHEN ena='1' ELSE 'Z'; PROCESS(in1) BEGIN senal <= '0'; END PROCESS; in1 senal = '0' '0' '0' '0' 'Z'
  • 95. 95 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 95 Ejemplos de inferencia de buffers triestado • Con asignación condicional: • Con un proceso: PROCESS (ena_a, a) BEGIN IF (sel_a = '0') THEN t <= a; ELSE t <= 'Z'; END PROCESS; a_out <= a WHEN enable_a='1' ELSE 'Z'; b_out <= b WHEN enable_b='1' ELSE 'Z';
  • 96. 96 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 96 Señales bidireccionales • En este caso la señal tiene drivers externos, fuera de la entidad x yfb y oe ENTITY bufoe IS PORT ( x: IN std_logic; oe: IN std_logic; y: INOUT std_logic; yfb: OUT std_logic); END bufoe; ARCHITECTURE simple OF bufoe IS BEGIN y <= x WHEN oe='1' ELSE 'Z'; yfb <= y; END simple;
  • 97. 97 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 97 Ejemplo con señales bidireccionales DATA CLOCK REG OE LOAD 88 ENTITY ejbidir IS PORT ( load,clock,oe: IN std_logic; data: INOUT std_logic); END ejbidir; ARCHITECTURE simple OF ejbidir IS SIGNAL reg: std_logic_vector(7 downto 0); BEGIN data<=reg WHEN oe='1' ELSE "ZZZZZZZZZ"; PROCESS(clk) BEGIN IF rising_edge(clk) THEN reg<=data; END IF; END PROCESS; END simple;
  • 98. 98 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 98 Lenguaje de Descripción Hardware VHDL Introducción La entidad y la arquitectura Tipos de datos Los procesos Circuitos combinacionales Circuitos secuenciales Máquinas de estados Triestados Diseño jerárquicoDiseño jerárquico Estilos de diseño Verificación con testbenches VHDLVHDL
  • 99. 99 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 99 Diseño jerárquico • Componentes pequeños son utilizados como elementos de otros más grandes • Es fundamental para la reutilización de código • Permite mezclar componentes creados con distintos métodos de diseño: – Esquemáticos – VHDL, verilog • Genera diseños más legibles y más portables • Necesario para estrategias de diseño top-bottom o bottom-up top.vhd a.vhd a1.vhd a2.vhd b.vhd c.vhd
  • 100. 100 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 100 Árbol de jerarquías • Cada componente de la jerarquía es un archivo VHDL, con: – Entidad – Arquitectura top.vhd COMPONENTE SUPERIOR ( TOP ) COMPONENTES INFERIORES c.vhdb.vhda.vhd a2.vhda1.vhd
  • 101. 101 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 101 Cómo instanciar un componente ENTITY top IS PORT ( ... ) END top; ARCHITECTURE jerarquica OF top IS signal s1,s2 : std_logic; begin end top COMPONENT a PORT ( entrada IN std_logic; salida OUT std_logic ); END COMPONENT; u1: a PORT MAP (entrada=>s1, salida=>s2);
  • 102. 102 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 102 Declaración de Componentes • Antes de poder usar un componente, se debe declarar – Especificar sus puertos (PORT) – Especificar parámetros (GENERIC) • Una vez instanciado el componente, los puertos de la instancia se conectan a las señales del circuito usando PORT MAP • Los parámetros se especifican usando GENERIC MAP • La declaración de los componentes se puede hacer en un package – Para declarar el componente, sólo habrá que importar el package – Opción interesante: la declaración de los componentes no aporta nada al lector del código
  • 103. 103 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 103 Ejemplo de diseño jerárquico: top-level LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY toplevel IS PORT (s: IN std_logic; p, q, r: IN std_logic_vector(2 DOWNTO 0); t: OUT std_logic_vector(2 DOWNTO 0)); END toplevel; USE WORK.mymuxpkg.ALL; ARCHITECTURE archtoplevel OF toplevel IS SIGNAL i: std_logic_vector(2 DOWNTO 0); BEGIN m0: mux2to1 PORT MAP (a=>i(2), b=>r(0), sel=>s, c=>t(0)); m1: mux2to1 PORT MAP (c=>t(1), b=>r(1), a=>i(1), sel=>s); m2: mux2to1 PORT MAP (i(0), r(2), s, t(2)); i <= p AND NOT q; END archtoplevel; Asociación posicional Asociación por nombre Declaración del componente en un package
  • 104. 104 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 104 Ejemplo de diseño jerárquico: componente inferior LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY mux2to1 IS PORT ( a, b, sel: IN std_logic; c: OUT std_logic); END mux2to1; ARCHITECTURE archmux2to1 OF mux2to1 IS BEGIN c <= (a AND NOT sel) OR (b AND sel); END archmux2to1; LIBRARY ieee; USE ieee.std_logic_1164.ALL; PACKAGE mymuxpkg IS COMPONENT mux2to1 PORT ( a, b, sel: IN std_logic; c: OUT std_logic); END COMPONENT; END mymuxpkg; Creación del package Mismos puertos Descripción del componente de nivel inferior
  • 105. 105 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 105 ¿Qué son los packages (paquetes)? • Es el mecanismo que tiene VHDL para guardar construcciones que se van a reutilizar en varios diseños – Declaraciones de componentes, subprogramas, constantes... • Consta de dos partes: – Declaración del paquete • Declaraciones de señales y constantes • Declaraciones de componentes • Definiciones de tipos • Declaraciones de subprogramas – Cuerpo del paquete • Cuerpo de los subprogramas • Cualquier otra declaración que se desea que permanezca privada al paquete • Los paquetes se agrupan en librerías
  • 106. 106 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 106 Lenguaje de Descripción Hardware VHDL Introducción La entidad y la arquitectura Tipos de datos Los procesos Circuitos combinacionales Circuitos secuenciales Máquinas de estados Triestados Diseño jerárquico Estilos de diseñoEstilos de diseño Verificación con testbenches VHDLVHDL
  • 107. 107 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 107 Estilos de arquitecturas • Arquitectura estructural • Arquitectura RTL • Arquitectura comportamental
  • 108. 108 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 108 Estilos de descripción: Estructural • Una unidad de alto nivel se divide en unidades de más bajo nivel. • Descripción que contiene los sub- componentes y las conexiones entre los mismos.
  • 109. 109 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 109 Estilos de descripción: Comportamiento • Nivel abstracto de descripción, usando la expresividad de las construcciones de VHDL • Definición de QUE HACE el modelo y NO COMO LO HACE. • Es sintetizable siempre que sea RTL • Cuando se utilizan ecuaciones lógicas (asignaciones concurrentes) se denomina dataflow
  • 110. 110 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 110 Estilos de descripción: RTL RTL:RTL: RegisterRegister TransferTransfer LevelLevel • Descripción de comportamiento teniendo en cuenta el flujo de datos entre registros y bloques funcionales • Tiene en cuenta el ciclo de reloj • Independiente de la tecnología • Definición del sistema en términos de: – registros – lógica combinacional – operaciones
  • 111. 111 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 111 Estilos de descripción: Algorítmico • Descripción de comportamiento completamente independiente del hardware, sin especificar ni relojes ni separando entre bloques combinacionales y secuenciales • Equivalente a un modelo que se podría crear en cualquier otro lenguaje de alto nivel, por ejemplo C • Sólo es útil para simulación instruccion := memoria(PC); opcode := instruccion (31 downto 28) rs1 := instruccion(27 downto 24); rs2 := instruccion(23 downto 20); rd := instruccion(19 downto 16); offset := instruccion(15 downto 0); case opcode is when load => rd := memoria(rs1 + offset); when store => memoria(rs + offset) <= rd; when add => rd := rs1 + rs2; ...
  • 112. 112 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 112 Niveles de abstracción VHDL permite describir circuitos electrónicos a distintos niveles de abstracción • Algorítmico: – Un algoritmo puro consiste en un conjunto de instrucciones ejecutadas secuencialmente que realizan una tarea. – No se detallan relojes o retrasos – No sintetizable (o sintetizable en casos limitados) • RTL – Es la entrada para la síntesis. – Las operaciones se realizan en un ciclo de reloj especifico. – No se detallan retrasos. • Nivel de puerta – Es la salida de la síntesis – Netlist de puertas e instanciaciones de una librería tecnológica – Se incluye información de retraso para cada puerta
  • 113. 113 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 113 Lenguaje de Descripción Hardware VHDL Introducción La entidad y la arquitectura Tipos de datos Los procesos Circuitos combinacionales Circuitos secuenciales Máquinas de estados Triestados Diseño jerárquico Estilos de diseño Verificación conVerificación con testbenchestestbenches VHDLVHDL
  • 114. 114 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 114 Pasos de la simulación librerías de trabajo ElaboraciónElaboración SimulaciónSimulación AnálisisAnálisis Archivos VHDLArchivos VHDL
  • 115. 115 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 115 Verificación con testbenches • Un diseño sin verificación no está completo – Hay muchas maneras de verificar, pero la más utilizada es el banco de pruebas, testbench • Simular básicamente es: – Generar estímulos – Observar los resultados • Un testbench es un código VHDL que automatiza estas dos operaciones • Los testbenches no se sintetizan – Se puede utilizar un VHDL algorítmico – Usualmente con algoritmos secuenciales Aprovechar la potencia de VHDL
  • 116. 116 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 116 Como hacer un testbench 1. Instanciar el diseño que vamos a verificar – El testbench será el nuevo top-level – Será una entidad sin ports 2. Escribir el código que: – Genera los estímulos – Observa los resultados – Informa al usuario diseño.vhd resultados estímulos testbench.vhd
  • 117. 117 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 117 Instanciando la unidad bajo test (UUT) Descripción de la UUT ENTITY ARCHITECTURE Entidad sin puertos Declaración del componente Instanciación del componente Configuración del componente Testbench ARCHITECTURE CONFIGURATION ENTITY test IS END test; COMPONENT UUT: … PORT PROCESS Procesos de simulación
  • 118. 118 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 118 Generando estímulos • Dar valores a las señales que van hacia las entradas de la UUT – En síntesis no tiene sentido el tiempo – En los testbenches el tiempo es la principal magnitud • Asignación concurrente • Asignación secuencial senal <= '1', '0' AFTER 20 ns, '1' AFTER 30 ns; senal <= '1'; WAIT FOR 20 ns; senal <= '0'; WAIT FOR 30 ns; senal <= '1';
  • 119. 119 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 119 Observando señales con assert • Assert se usa para comprobar si se cumple una condición – Equivalente a IF (not condición) • Sintaxis • Tras REPORT se añade una cadena de texto, que se muestra si no se cumple la condición • SEVERITY puede tener cuatro niveles – NOTE – WARNING – ERROR (nivel por defecto si no se incluye SEVERITY) – FAILURE ASSERT condicion REPORT string SEVERITY nivel;
  • 120. 120 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 120 Características adicionales de assert • El simulador puede configurarse para indicar a partir de qué nivel de error se parará la simulación • Se pueden mostrar en el REPORT valores de señales: • Se utiliza el atributo predefinido de VHDL 'image, que pasa de cualquier valor, del tipo que sea, a una representación en forma de string • Generalmente se usa dentro de procesos (instrucción secuencial), pero también se puede usar como concurrente – Se chequea la condición continuamente, y en el momento en que deja de cumplirse, se escribe el mensaje ASSERT q=d REPORT "Valor erroneo: " & std_logic'image(q); SEVERITY nivel;
  • 121. 121 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 121 Algoritmo básico para los testbenches • Algoritmo elemental de verificación: – Dar valores a las señales de entrada a la UUT – Esperar con WAIT FOR – Comprobar los resultados con ASSERT – Volver a dar valores a las señales de entrada a la UUT – y repetir… señal <= valor ASSERT (resultado=esperado) ASSERT (resultado=esperado) WAIT FORWAIT FOR
  • 122. 122 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 122 Ejemplo de código ARCHITECTURE tb_arch OF dff_tb IS COMPONENT dff PORT (...) END COMPONENT; SIGNAL d, c, q : std_logic; BEGIN UUT : dff PORT MAP (d => d, c => c, q => q ); PROCESS BEGIN c <= '0'; d <= '0'; WAIT FOR 10 ns; c <= '1'; WAIT FOR 10 ns; ASSERT q=d REPORT "falla" SEVERITY FAILURE; END PROCESS; END tb_arch;
  • 123. 123 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 123 Testbenches avanzados • Se pueden dar valores dependiendo de los resultados • Usar los bucles para hacer pruebas sistemáticas FOR i IN 0 TO 255 LOOP FOR j IN 0 TO 255 LOOP sumando1 <= i; sumando2 <= j; WAIT FOR 10 ns; ASSERT suma=(i+j) REPORT "ha fallado la suma"; END LOOP; END LOOP; senal <= '0'; WAIT FOR 10 ns; IF senal/='0' THEN REPORT "Intento otra vez"; senal <= '0'; ELSE REPORT "Ahora pruebo con uno"; senal <= '1'; END IF; WAIT FOR 10 ns;
  • 124. 124 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 124 Procedimientos • VHDL permite definir procedimientos (subrutinas) • La clase de los parámetros puede ser: – VARIABLE, CONSTANT, SIGNAL • Y la dirección: – IN, INOUT, OUT • Los procedimientos se pueden declarar en la arquitectura o en un proceso, y se llaman desde un proceso o concurrentemente PROCEDURE nombre (clase parametro : dir tipo, ...) IS {declaraciones} BEGIN {instrucciones secuenciales} END PROCEDURE nombre; Interesante para encapsular tareas repetitivas en la simulaciónInteresante para encapsular tareas repetitivas en la simulación
  • 125. 125 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 125 Ejemplo de código ARCHITECTURE tb_arch OF dff_tb IS (...) PROCEDURE send_clock_edge(SIGNAL c : out std_logic) IS BEGIN c <= '0'; WAIT FOR 10 ns; c <= '1'; WAIT FOR 10 ns; END PROCEDURE send_clock_edge; BEGIN UUT : dff PORT MAP (d => d, c => c, q => q ); PROCESS BEGIN c <= '0'; d <= '0'; send_clock_edge(c); ASSERT q=d REPORT "falla" SEVERITY FAILURE; END PROCESS; END tb_arch;
  • 126. 126 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 126 Acceso a archivos • La simulaciones más potentes trabajan sobre archivos • Ejemplos: – Simulación de un multiplicador que escribe los resultados en un archivo de texto – Testbench para un microprocesador que lee un programa en ensamblador de un archivo, lo ensambla y lo ejecuta • Acceso básico: paquete std.textio – Archivos de texto – Acceso línea a línea: READLINE, WRITELINE – Dentro de una línea, los campos se procesan con READ y WRITE • Acceso específico para std_logic: ieee.std_logic_textio
  • 127. 127 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 127 Instrucciones para acceder a archivos • Especificar el archivo • Leer una línea • Leer un campo de una línea • Escribir FILE archivo_estimulos : text IS IN "STIM.TXT"; VARIABLE linea : line; ... readline(archivo_estimulos, linea); VARIABLE opcode : string(2 downto 0); ... read (linea, opcode); write(linea, resultado); writeline(archivo_resultados, linea);
  • 128. 128 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 128 Configuración Una configuración es una unidad de diseño: • Que se usa para realizar asociaciones dentro de los modelos Asociar entidad con arquitectura. En la instanciación de un componente asociarlo a una entidad y su arquitectura. • Muy utilizada en entornos de simulación Proporciona una manera rápida y flexible de probar distintas alternativas del diseño • Limitada o no soportada en entornos de síntesis. Aplicandolo a un componente particular: FOR instance_name : comp_name USE ...; Aplicandolo a todas las instancias: FOR ALL: comp_1 USE ENTITY WORK.entity_name(architecture_name);
  • 129. 129 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 129 Configuración: Ejemplo Ejemplo: SumadorEjemplo: Sumador A B Carry_in Carry_out Full_adder ABAB A B Carry_out U0: Half_adder Half_adder U1: Temp_sum Temp_carry_1 CONFIGURATION a_config OF Full_adder IS FOR structural FOR all: Half_adder USE ENTITY work.Half_adder(algorithmic); END FOR; FOR U2: or_gate USE ENTITY work.or_gate(behavioral); END FOR; END FOR; END a_config;Ejemplo del Suma CONFIGURATION a_config OF Full_adder IS FOR structural FOR all: Half_adder USE ENTITY work.Half_adder(algorithmic); END FOR; FOR U2: or_gate USE ENTITY work.or_gate(behavioral); END FOR; END FOR; END a_config;Ejemplo del Suma U2 Carry_in
  • 130. 130 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 130 Verificación de un diseño escrito en VHDL 1. Simulación funcional • RTL / behavioral sintetizable • Emplea construcciones estándar VHDL • Sin tiempos 2. Simulación post-síntesis • Estructural • Librería de síntesis, elementos básicos de diseño para la FPGA • Sin tiempos 3. Simulación post-map, post-layout • Estructural • Librería de Xilinx, elementos reales de la FPGA • Con tiempos si se carga el archivo SDF
  • 131. 131 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 131 Simulaciones en el flujo de diseño de FPGAs SíntesisSíntesis Traducir la netlistTraducir la netlist MAPMAP Place & RoutePlace & Route BitstreamBitstream Simulación post-síntesis Simulación post-layout
  • 132. 132 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 132 Testbench para un diseño VHDL • El testbench debe ser el mismo para las tres simulaciones • Las tres simulaciones se asociarán con tres configuraciones, se pondrá como top-level la configuración que nos interese en cada momento CONFIGURATION funcional_OF dfftb IS FOR dfftbarch FOR uut:dff USE ENTITY WORK.dff(behavioral); END FOR; END FOR; END funcional; CONFIGURATION postlayout_OF dfftb IS FOR dfftbarch FOR uut:dff USE ENTITY WORK.dff(structure); END FOR; END FOR; END postlayout; FUNCIONALFUNCIONAL POSTPOST--LAYOUTLAYOUT
  • 133. 133 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 133 Modelo post-layout • Una vez implementado el diseño, se crea un modelo post-layout de la FPGA mediante ngd2vhdl – time_sim.vhd • El modelo usa la librería SIMPRIM • Los tiempos se anotan en un archivo SDF separado – time_sim.sdf • Todo la FPGA está modelada en estos dos archivos • El simulador puede no cargar el fichero SDF – Primera simulación, rápida, ver si el comportamiento es correcto – Segunda simulación, detallada, ver si los tiempos se respetan • Pueden aparecer en la entidad los nodos GSR/GTS (opcional) – Se puede arreglar reconfigurando los ports en CONFIGURATION
  • 134. 134 Lenguaje de Descripción Hardware VHDL Univ. Autónoma de Madrid European Training Institute 134 Lenguaje de Descripción Hardware VHDL Introducción La entidad y la arquitectura Tipos de datos Los procesos Circuitos combinacionales Circuitos secuenciales Máquinas de estados Triestados Diseño jerárquico Estilos de diseño Verificación con testbenches VHDLVHDL