Tema 2
Modelado de sistemas
con VHDL
T2.3
T2 3 Tipos de
descripción hardware
© 2009 A.G.O. All Rights Reserved
Modelos de descripción
► Existen tres formas diferentes de describir el funcionamiento
de una entidad a través de la arquitectura:
Comportamiento o algorítmico (behavioral). Especifica cómo se
comportan las salidas con respecto a las entradas
entradas. No proporciona al
sintetizador información de cómo será el circuito, siendo éste el que lo
determina. La parte fundamental de este tipo de descripciones es el
proceso (process)
Flujo de datos (dataflow). Especifica el circuito como una
representación concurrente del movimiento de los datos a su través,
es decir, cómo circula la información
Estructural (structural). Describe la conexión entre distintos módulos
descritos previamente
ver ejemplo
ISE ver ejercicio
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 2
Modelos de descripción VHDL
► Como hemos visto, la architecture, en VHDL describe la
función que realiza una entity.
► La arquitectura se compone de dos partes:
la parte declarativa en la que se encuentran las definiciones de
las señales, funciones, tipos, procedimientos, etc .. a utilizar.
y el cuerpo de la descripción, consistente en una sucesión de
asignaciones concurrentes y procesos que modelan la entidad.
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 3
Estructura de un diseño en VHDL
LIBRARY ieee;
USE ieee.std_LOGIC_1164.all;
ENTITY nombre_entidad IS
[GENERIC( )];
(
PORT(
declaraciones
de puertos
); Nombre de la entidad
END nombre_entidad;
ARCHITECTURE nombre_arquitectura OF nombre_entidad IS
p
parte
Definición de las señales a usar
declarativa de
Definición de los tipos y subtipos a utilizar
la arquitectura
BEGIN
Nombre de la
Se modela el comportamiento del circuito arquitectura
cuerpo de la
arquitectura con asignaciones, instanciaciones y PROCESOS
END nombre_arquitectura;
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 4
Concurrencia del hardware
► El h
hardware
d es concurrente, es d
decir,
i llos circuitos
i i coexisten
i en ell
tiempo y por lo tanto trabajan al mismo tiempo.
No se puede modelar con un lenguaje
como C:
S1 = A and B;
S2 = C or D;
S3 = C xor D;
Las tres puertas funcional al mismo tiempo
Este chip tiene tres puertas que ¡no una después de la otra!
funcionan simultáneamente
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 5
Concurrencia: una posible solución
► La
L solución
l ió all problema
bl anterior
i es que aunque lla ejecución
j ió sea
secuencial, las asignaciones no tengan tiempo de ejecución:
S1 <= A and B;
S2 <= C or D;
S3 <=
< C xor D;
► De esta manera aunque una asignació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
f
funcionando
i d simultáneamente
i ltá t
► Esta es la solución por la que opta VHDL (y Verilog)
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 6
Necesidad de la concurrencia
► Qué
Q é ocurre cuando
d ell circuito
i i es ddell tipo
i
AyB <= A and B;
AyB
S <= AyB
y xor C;;
► El valor de S será el correcto una vez que se hayan propagado
los tiempos de retardo de las puertas
► No hay que olvidar que se trata de modelar circuitos reales, no
virtuales, y las señales necesitan que transcurra el tiempo para
tomar un valor
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 7
Sentencias concurrentes
► Características:
Se ejecutan de forma asíncrona unas respecto de las otras en el
mismo tiempo de simulación.
● El orden en que se escriban es indiferente
indiferente, no siguen un
orden de ejecución predefinido.
– No obstante conviene escribir el código en el orden que
mejor
j se pueda
d entender
t d y mejor j d documentet ell di
diseño.
ñ
► Sirven para especificar:
Interconexiones entre componentes.
Estructuras jerárquicas.
Estructuras regulares.
Transferencias entre registros.
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 8
process: elemento de diseño principal
► Un
U proceso d
describe
ib ell comportamiento
i d
de un circuito:
i i
Cuyo estado puede variar cuando cambian ciertas señales
Utilizando construcciones muy
y expresivas:
p 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
...
sentencias que describen el comportamiento
...
end process;
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 9
Procesos: Resumen
► Los
L procesos se “di
“disparan”” ((su código
ódi se ejecuta)
j ) cuando
d cambia
bi
alguna de las señales de su lista de sensibilidad
► Un pproceso sin lista de sensibilidad es válido,, pero
p se activa con
cualquier evento, no se asegura un comportamiento correcto.
► Las instrucciones dentro del proceso se ejecutan secuencialmente,
una detrás de otra
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
queramos, y
todos se ejecutan en paralelo
► Esta es la manera que tiene VHDL de expresar la concurrencia
inherente al hardware
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 10
La solución VHDL a la concurrencia
► VHDL ((y en general,
l todos
d llos HDL
HDLs)) solucionan
l i este problema
bl
dando soporte explicito a la concurrencia
► En VHDL,, una arquitectura
q puede
p tener tantos p
procesos como
queramos, y todos se ejecutan concurrentemente
architecture ...
...
begin
process(...)
...
Los procesos se ejecutan
end process;
concurrentemente
process(...)
...
end
d process;
end ...;
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 11
sentencias concurrentes
Asignación simple
suma <= ope1 xor ope2;
Para SEÑALES y PUERTOS, el operador es <=, el
l d iizquierdo
lado i d es ell d
destino
ti y ell llado
d dderecho
h lla ffuente.
t
OJO: fuente y destino tienen que ser del mismo tipo
Para VARIABLES el operador es :=
acarreo_intermedio := ope1 and ope2;
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 12
Sentencias concurrentes. WHEN/ELSE
Permite realizar asignaciones condicionales
salida <= a and b when c =‘1’ else a or c;
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 13
Sentencias concurrentes. WHEN/ELSE
[etiqueta:] señal <= val_1 when condi_1 else
val 2 [when condi_2]
val_2 condi 2] else
… else
val_n ;
Ej
Ejemplo:
l
entity sumador is
port (op1, ope2 : in std_logic;
enable : in std_logic;
std logic;
salida : out std_logic_vector(1 downto 0)); -- salida(1) acarreo
-- salida(0) la suma
end sumador;
architecture con_when_else of sumador is
begin
salida <= “00” when (enable=‘1’, and op2=‘0’ and op1=‘0’) else
“01”
01 when (enable=‘1’
(enable= 1 and op2=‘0’
op2= 0 and op1=‘1’)
op1= 1 ) else
“01” when (enable=‘1’ and op2=‘1’ and op1=‘0’) else
“10” when (enable=‘1’ and op2=‘1’ and op1=‘1’) else
“ZZ” ;
end con_when_else;
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 14
sentencias concurrentes. WITH/SELECT
La asignación condicional (WHEN/ELSE), También se puede hacer
mediante la sentencia de asignación selectiva WHIT/SELECT
WHIT cont SELECT a 0
b 1 salida
salida <= a when “00”, c 2
b when “01”,
, d 3
c when “10”,
d when others;
cont[1:0]
Por su ejecución
j en p
paralelo ((balanceada)) es similar a un
CASE
Se pueden dar problemas de memoria implícita si no se pone
el último when others
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 15
Sentencias concurrentes. WITH/SELECT
[etiqueta:] with expresión select
señal <= val_1 when result_1 [,
val 2 when result_2
val_2 result 2 ] [[,
…] [, símbolo para asignar
val_n when result_n] [, el mismo valor
val_cuando_otros
_ _ when others];
] a varios resultados
Ej
Ejemplo:
l
entity sumador is
port (op1, ope2 : in std_logic;
enable : in std_logic;
std logic;
salida : out std_logic_vector(1 downto 0)); -- salida(1) acarreo
-- salida(0) la suma
end sumador;
architecture con_with_select of sumador is
begin
with (enable&ope2&op1) select
salida <= “00”
00 when “100”
100 ,
“01” when “101”, -- puede ser también “01” when “101” | “110”
“01” when “110”, -- este se quitaría
“10”
10 when “111”,
111 ,
“ZZ” when others;
end con_with_select;
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 16
Dentro de los procesos: Descripciones
secuenciales
IF <condición> THEN <acción> ELSE <acción> END IF;
CASE <condición> IS WHEN <valor> => <acción>;
WHEN <valor> =>
> <acción>;
WHEN others => <acción>;
END CASE;
FOR <rango> LOOP <acción> END LOOP;
WHILE <condición> LOOP <acción> END LOOP;
WAIT ON <señal> UNTIL <expresión>;
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 17
IF
IF condición_1 THEN Si se da la condición
Sentencias secuenciales
END IF;
IF condición_1 THEN
Si se da la condición
Grupo 1 de sentencias secuenciales
ELSE
Grupo 2 de sentencias secuenciales ... y si no se da
END IF; la condición
IF condición_1 THEN
Grupo 1 de sentencias secuenciales
ELSIF condición_2 THEN Si se da alguna
Grupo 2 de sentencias secuenciales Condición se
ejecuta su grupo
ELSIF condición_n THEN
Grupo n de sentencias secuenciales
END IF;
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 18
IF
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use
se IEEE.STD_LOGIC_ARITH.ALL;
IEEE STD LOGIC ARITH ALL
use IEEE.STD_LOGIC_UNSIGNED.ALL;entity CONTA is
generic (Nbits:integer:=8);
Port ( CLOCK : in std_logic;
RESET : in std_logic;
COUNT : inout std_logic_vector(Nbits-1 downto 0));
end CONTA;
architecture Behavioral of CONTA is
begin
process (CLOCK, RESET)
begin
if RESET='1' then
COUNT <= (others =>'0');
elsif (CLOCK='1' and CLOCK'event) then
COUNT <= COUNT + 1;
end if;
end process;
end Behavioral;
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 19
CASE
Sintaxis:
CASE expresión IS
WHEN caso1
caso1=>>
secuencia sentencias1;
WHEN caso2 =>
secuencia sentencias2;
WHEN casoN =>
secuencia
i sentenciasN;
t i N
WHEN OTHERS =>
resto de casos;
END CASE;
…
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 20
CASE (Ejemplo)
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity ALU is
Port ( A : in STD_LOGIC_VECTOR (7 downto 0);
B : in STD_LOGIC_VECTOR (7 downto 0);
OPE : in STD_LOGIC_VECTOR (1 downto 0);
RESULTADO : out STD_LOGIC_VECTOR (7 downto 0));
end ALU;
architecture COMPORTA of ALU is
begin
process(A B
process(A, B, OPE) is
begin
case OPE is
when "00" =>
RESULTADO <= A + B;
when
h "01" =>
RESULTADO <= A - B;
when "10" =>
RESULTADO <= A and B;
when "11" =>
RESULTADO <= A or B;
when others =>
RESULTADO <= (others =>'Z');
end case;
end process;
end COMPORTA;
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 21
Bucles
► Hay tres formas de realizar bucles:
FOR-LOOP. Siempre es un bucle finito.
WHILE-LOOP. Puede ser finito o no, depende de la condición.
LOOP.
LOOP Siempre es infinito.
infinito
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 22
FOR-LOOP
► Realiza un bucle un número determinado de veces
[etiqueta:]FOR índice IN rango’inf TO rango’sup LOOP
secuencia
i dde sentencias
t i
END LOOP [etiqueta];
ejemplo:
bucle: FOR i IN 0 TO 5 LOOP
x(i) <= enable AND w(i+2);
y(0, i) <= w(i);
END LOOP bucle;
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 23
FOR (Ejemplo)
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use
se IEEE.STD_LOGIC_ARITH.ALL;
IEEE STD LOGIC ARITH ALL
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity MI_EJEMPLO_FOR is
Port ( A : in STD_LOGIC_VECTOR (2 downto 0);
S : out STD_LOGIC_VECTOR (7 downto 0));
end MI_EJEMPLO_FOR;
architecture EJEMPLO of MI_EJEMPLO_FOR is
begin
process(A) is
begin
for i in 0 to 7 loop
if i=conv_integer(A) then -- SE ENCUENTRA EN STD_LOGIC__1164
S(i) <= '1';
else
S(i) <='0';
end if;
end loop;
end process;
end architecture;
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 24
WHILE-LOOP
► El bucle se repite mientras la condición que haya
d
después
é ddell while
hil sea verdadera
d d
[etiqueta:]WHILE
[ i ] condición
di ió LOOP
secuencia de sentencias
END LOOP [etiqueta];
ejemplo:
lazo1:WHILE (i < 10) LOOP
WAIT UNTIL clk'EVENT AND clk='1';
;
END LOOP lazo1;
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 25
LOOP
► El bucle se repite infinatamente
[etiqueta:]LOOP
secuencia de sentencias
END LOOP [etiqueta];
ejemplo:
l
lazo1:
1 LOOP
a <= c and b;
END LOOP lazo1;;
La única sentencia que deja romper el bucle es EXIT
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 26
EXIT
► Detiene la ejecución en ese instante y sale del bucle.
Si hay varios bucles anidados
anidados, sale de donde se encuentre la
instrucción o bien del bucle que se especifica en la etiqueta.
► Solamente puede aparecer dentro de una sentencia LOOP.
exit [etiqueta] [when condición];
Ejemplo:
-- Interrumpe el FOR y sigue por el WHILE
termina: WHILE a< 100 LOOP
--- sentencias
sigue:
i FOR n IN 0 TO 100
--- sentencias
EXIT termina WHEN n=a;
END LOOP sigue;
END LOOP termina;
► Cuando existen bucles anidados, sale del más interno, o bien, de aquel que tiene la
etiqueta
ti t que sigue
i all EXIT
EXIT.
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 27
NEXT
► En VHDL se pueden crear bucles infinitos
[etiqueta] loop
secuencia de sentencias
end loop [etiqueta];
► Los bucles pueden tener una condición de salida
salida.
next[etiqueta] [when condición];
Ejemplo:
-- Interrumpe el FOR y sigue por el WHILE
termina: WHILE a< 100 LOOP
--- sentencias
sigue: FOR n IN 0 TO 100
--- sentencias
NEXT termina WHEN n
n=a;
a;
END LOOP sigue;
END LOOP termina;
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 28
WAIT
► Espera a que ocurra una condición
WAIT UNTIL condición;
WAIT UNTIL e1=‘1’ and e2=‘0’;
► Espera a que cambie alguna señal de la lista de señales
WAIT ON lista_señales;
WAIT ON e1,e2,clk;
► Espera un cierto tiempo
WAIT tiempo;
WAIT 25ns;
► Espera indefinidamente
WAIT
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 29
NULL
► No realiza función alguna. Pasa la ejecución a la
siguiente
i i t sentencia
t i secuencial.
i l
Útil en sentencias CASE cuando no se quiere realizar ninguna
acción para alguna de las elecciones.
Sintaxis:
[etiqueta:] NULL;
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 30
GENERATE
► Esta sentencia concurrente permite reducir el tamaño
del código de aquellas estructuras que se repiten
considerablemente.
considerablemente
Sintaxis:
etiqueta: FOR identificador IN range GENERATE
(sentencias concurrentes)
END GENERATE;
etiqueta:
ti t IF condición
di ió GENERATE
(sentencias concurrentes)
END GENERATE
GENERATE;
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 31
GENERATE
X(0)
z(0)
SIGNAL
S G x: BIT_VECTOR
C O (7 DOWNTO
O O 0)
0); y(8)
SIGNAL y: BIT_VECTOR (15 DOWNTO 0);
SIGNAL z: BIT_VECTOR (7 DOWNTO 0);
...
G1: FOR i IN x'RANGE GENERATE
X(7)
z(i) <= x(i) AND y(i+8); z(7)
y(15)
END GENERATE;
Ejemplo: Sumador de acarreo propagado
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 32
Paquetes
► Son unidades de diseño en las que se declaran y describen tipos, objetos,
funciones, componentes
funciones componentes, etc
etc. Para ser usados en cualquier descripción y
modelo.
Sintaxis: NO olvidar delante LIBRARY
package
k nombre_paquete
b t is
i y USE
-- zona de dclaraciones
-- tipos, subtipos, constantes
-- atributos
end package nombre_paquete;
[package body nombre_paquete
nombre paquete is
-- descripción de FUNCTION y PROCEDURE
end package nombre_paquete;]
► La primera parte es obligatoria y la segunda solo es necesaria cuando uno o
mas subprogramas (FUNCTION O PROCEDURE) sean declarados
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 33
Component
► Un componente es una descripción simple, es decir, (LIBRARY + ENTITY +
ARCHITECTURE)) sin embargo g bajo j la declaración de COMPONET p puede ser
utilizado por cualquier otro circuito, permitiendo de esta manera el diseño
jerárquico
Declaración:
COMPONENT nombre_componente IS
PORT(locales);
END COMPONENT;
Instanciación ó llamada: Se puede hacer de dos formas
Etiqueta: nombre_componente PORT MAP (lista_puertos);
La lista_p
puertos es p
posicional;
Lista de puertos por asignación; nombre_puerto_compo => señal_o_puerto_asig
Etiqueta:
q nombre_componente
p GENERIC MAP (
(lista_p
parametros)
)
PORT MAP (lista_puertos);
Mediante lista_parametros se pasan parámetros genéricos al componente.
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 34
Atributos
► Un
U atributo
t ib t es una característica
t í ti (función,
(f ió tipo,
ti rango, señal
ñ lo
constante), que puede ser asociada (atribuida) a ciertos elementos
del modelo VHDL.
Dos
D posibilidades:
ibilid d
● Atributos definidos por el usuario.
● Predefinidos.
► Atributos predefinidos para señales.
Dan
D iinformación
f ió sobre
b llas señales
ñ l oddefinen
fi nuevas señales
ñ l
implícitas derivadas de las señales declaradas explícitamente.
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 35
Atributos
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 36
Atributos
Nota: para detectar flancos de señales del tipo std_logic_vector es mejor
emplear las funciones rising_edge(S) y falling_edge(S).
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 37
Resumen: estilos de descripción
► Independiente del nivel de abstracción, existen tres
estilos de descripción de una arquitectura
Comportamiento (Behavioral)
Transferencia entre registros o flujo de datos (Data Flow)
Estructural (Structural)
( )
► En VHDL un sistema puede mezclar diferentes estilos a
la hora de describir sus diferentes arquitecturas.
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 38
Resumen: estilos de descripción
1. Comportamiento (Behavioral). En este estilo de
descripción se modela la funcionalidad por medio de
los recursos algorítmicos del lenguaje.
lenguaje
Se describe el algoritmo que refleja el comportamiento de
dicho componente.
También se le suele llamar estilo algorítmico o secuencial.
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 39
Resumen: estilos de descripción
2. Transferencia entre registros (RTL) o flujo de datos
(Data Flow). En este estilo de descripción se especifican
los flujos de datos del sistema y la interconexión entre
sus componentes.
componentes
El proceso de descripción se realiza por medio de funciones
lógicas, que se ejecutarán de forma concurrente
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 40
Resumen: estilos de descripción
3. Estructural (Structural). En este estilo de descripción se definen o
instancian todas las partes del sistema y sus interconexiones
interconexiones.
Resulta muy útil cuando se quiere aprovechar diseños compilados con
anterioridad y que se encuentran almacenados en bibliotecas de
componentes.
La instrucción concurrente fundamental utilizada dentro de una
arquitectura RTL es la de COMPONENT
COMPONENT nombre_componente
PORT ( nombre_puerto
nombre puerto : tipo
tipo_puerto
puerto tipo
tipo_dato;
dato;
nombre_puerto : tipo_puerto tipo_dato;
...
);
END COMPONENT;
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 41
Ejemplo de estilos de descripción
Multiplexor
p de dos entradas de datos
de un bit (e0 y e1), una señal de salida
(y) y señal de control (sel)
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 42
Ejemplo de estilos de descripción
Declaración de la entidad (entity)
( y)
-- los comentarios empiezan con dos guiones
ENTITY mx IS
PORT ( e0:
0 IN STD
STD_LOGIC;
LOGIC
e1: IN STD_LOGIC;
sel: IN STD_LOGIC;
y: OUT STD_LOGIC
);
END mx;
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 43
Ejemplo de estilos de descripción
1 Descripción de comportamiento o algorítmica (Behavioral))
1.
ARCHITECTURE comportamiento OF mx IS
BEGIN
PROCESS (e0,e1,sel)
BEGIN
IF (sel=’0’) THEN
y<= e0;
END IF;
END PROCESS;
END comportamiento;
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 44
Ejemplo de estilos de descripción
2 Descripción transferencia entre registros o flujo de datos (Data Flow)
2.
ARCHITECTURE FLUJO_DATOS1 OF mx IS
BEGIN
y<= (e0 AND (NOT sel)) OR (e1 AND sel);
END FLUJO_DATOS1;
ARCHITECTURE FLUJO_DATOS2 OF mx IS
SIGNAL not_sel, ax, bx : STD_LOGIC
BEGIN
not_sel <= NOT sel;
ax <= e0 AND not_sel;
bx <= e1 AND sel;
y <= ax OR bx;
END FLUJO_DATOS2 ;
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 45
Ejemplo de estilos de descripción
3. Descripción estructural (Structural)
ARCHITECTURE estructural OF mx IS
COMPONENT mi_inv
PORT (e: IN STD_LOGIC; y: OUT STD_LOGIC);
END COMPONENT;
COMPONENT mi_and2
PORT (e1,e2: IN STD_LOGIC; y: OUT STD_LOGIC);
END COMPONENT;
COMPONENT mi_or2
PORT (e1,e2: IN STD_LOGIC; y: OUT STD_LOGIC);
END COMPONENT;
;
SIGNAL ax,bx,not_sel: STD_LOGIC
BEGIN
U0: mi_inv PORT MAP (e =>sel, sal=>not_sel);
U1: mi_and2 PORT MAP (e1=>e0, e2=>not_sel, sal=>ax);
U2: mi_and2 PORT MAP (e1=>e1, e2=>sel, sal=>bx);
U3: mi_or2 PORT MAP (e1=>ax, e2=>bx, sal=>y);
END estructural;
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 46
Ejemplo de estilos de descripción
ENTITY mi_inv IS
PORT ( e : IN STD_LOGIC;
sal : OUT STD_LOGIC
ENTITY mi_or2 IS
);
END mi_inv; PORT (e1, e2 : IN STD_LOGIC;
sal : OUT STD_LOGIC
ARCHITECTURE transfe OF mi_inv IS );
BEGIN END mi_or2 ;
sal <= NOT (e1);
END transf;
ARCHITECTURE transfe OF mi_or2 IS
BEGIN
ENTITY mi_and2 IS sal <= e1 OR e2;
PORT ( e1, e2 : IN STD_LOGIC; END transf;
sal : OUT STD_LOGIC
);
END mi_and2 ;
ARCHITECTURE transfe OF mi_and2 IS
BEGIN
sal <= e1 AND e2;
END transf;
T2.3 Tipos de descripción hardware © 2009 A.G.O. All Rights Reserved 47