0% encontró este documento útil (0 votos)
39 vistas47 páginas

T2 3 Modelos Descripcion VHDL

El documento describe los tipos de descripción de hardware en VHDL, incluyendo la descripción comportamental, de flujo de datos y estructural. También se aborda la concurrencia en el hardware y cómo VHDL permite modelar circuitos mediante procesos y sentencias concurrentes. Se presentan ejemplos de sentencias y estructuras de control que permiten la implementación de lógica en circuitos digitales.

Cargado por

AlvaroPortasBas
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
39 vistas47 páginas

T2 3 Modelos Descripcion VHDL

El documento describe los tipos de descripción de hardware en VHDL, incluyendo la descripción comportamental, de flujo de datos y estructural. También se aborda la concurrencia en el hardware y cómo VHDL permite modelar circuitos mediante procesos y sentencias concurrentes. Se presentan ejemplos de sentencias y estructuras de control que permiten la implementación de lógica en circuitos digitales.

Cargado por

AlvaroPortasBas
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

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

También podría gustarte