Modelos de descripción

Anuncio
Diseño electrónico con
hardware reconfigurable
Modelos de descripción
© 2007 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. 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
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
2 de 53
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.
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
3 de 53
Estructura de un diseño en VHDL
LIBRARY ieee;
USE ieee.std_LOGIC_1164.all;
ENTITY nombre_entidad IS
[GENERIC(
)];
PORT(
declaraciones
de puertos
parte
declarativa de
la arquitectura
cuerpo de la
arquitectura
);
END nombre_entidad;
Nombre de la entidad
ARCHITECTURE nombre_arquitectura OF nombre_entidad IS
Definición de las señales a usar
Definición de los tipos y subtipos a utilizar
BEGIN
Se modela el comportamiento del circuito
Nombre de la
arquitectura
con asignaciones, instanciaciones y PROCESOS
END nombre_arquitectura;
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
4 de 53
Concurrencia del hardware
El hardware es concurrente, es decir, los circuitos coexisten en el
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
¡no una después de la otra!
Este chip tiene tres puertas que
funcionan simultáneamente
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
5 de 53
Concurrencia: una posible solución
La solución al problema anterior es que aunque la ejecución 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
funcionando simultáneamente
Esta es la solución por la que opta VHDL (y Verilog)
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
6 de 53
Necesidad de la concurrencia
Qué ocurre cuando el circuito es del tipo
AyB
AyB <= A and B;
S <= AyB 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
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
7 de 53
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, no siguen un
orden de ejecución predefinido.
– No obstante conviene escribir el código en el orden que
mejor se pueda entender y mejor documente el diseño.
Sirven para especificar:
Interconexiones entre componentes.
Estructuras jerárquicas.
Estructuras regulares.
Transferencias entre registros.
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
8 de 53
process: 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
...
sentencias que describen el comportamiento
...
end process;
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
9 de 53
Procesos: Resumen
Los procesos se “disparan” (su código se ejecuta) cuando cambia
alguna de las señales de su lista de sensibilidad
Un proceso sin lista de sensibilidad es válido, pero se activa con
cualquier evento, no se asegura un comportamiento correcto.
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 ejecutan en paralelo
Esta es la manera que tiene VHDL de expresar la concurrencia
inherente al hardware
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
10 de 53
La solución VHDL a la concurrencia
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;
Los procesos se ejecutan
process(...)
concurrentemente
...
end process;
end ...;
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
11 de 53
sentencias concurrentes
Asignación simple
suma <= ope1 xor ope2;
Para SEÑALES y PUERTOS, el operador es <=, el
lado izquierdo es el destino y el lado derecho la fuente.
OJO: fuente y destino tienen que ser del mismo tipo
Para VARIABLES el operador es :=
acarreo_intermedio := ope1 and ope2;
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
12 de 53
Sentencias concurrentes. WHEN/ELSE
Permite realizar asignaciones condicionales
salida <= a and b when c =‘1’ else a or c;
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
13 de 53
Sentencias concurrentes. WHEN/ELSE
[etiqueta:] señal <= val_1 when condi_1 else
val_2 [when condi_2] else
…
else
val_n ;
Ejemplo:
entity sumador is
port (op1, ope2 : in std_logic;
enable
: in 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” when (enable=‘1’ and op2=‘0’ and 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;
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
14 de 53
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
salida <= a
b
c
d
when
when
when
when
“00”,
“01”,
“10”,
others;
a
b
0
c
2
d
3
1
salida
cont[1:0]
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
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
15 de 53
Sentencias concurrentes. WITH/SELECT
[etiqueta:] with expresión select
señal <= val_1 when result_1 [,
val_2 when result_2 ] [,
…] [,
val_n when result_n] [,
val_cuando_otros when others];
Ejemplo:
símbolo para asignar
el mismo valor
a varios resultados
entity sumador is
port (op1, ope2 : in std_logic;
enable
: in 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” when “100”,
“01” when “101”, -- puede ser también “01” when “101” | “110”
“01” when “110”, -- este se quitaría
“10” when “111”,
“ZZ” when others;
end con_with_select;
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
16 de 53
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>;
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
17 de 53
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
END IF;
... y si no se da
la condición
IF condición_1 THEN
Grupo 1 de sentencias secuenciales
ELSIF condición_2 THEN
Grupo 2 de sentencias secuenciales
Si se da alguna
Condición se
ejecuta su grupo
ELSIF condición_n THEN
Grupo n de sentencias secuenciales
END IF;
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
18 de 53
IF
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use 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;
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
19 de 53
CASE
Sintaxis:
CASE expresión IS
WHEN caso1=>
secuencia sentencias1;
WHEN caso2 =>
secuencia sentencias2;
WHEN casoN =>
secuencia sentenciasN;
WHEN OTHERS =>
resto de casos;
END CASE;
…
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
20 de 53
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, OPE) is
begin
case OPE is
when "00" =>
RESULTADO <= A + B;
when "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;
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
21 de 53
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. Siempre es infinito.
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
22 de 53
FOR-LOOP
Realiza un bucle un número determinado de veces
[etiqueta:]FOR índice IN rango’inf TO rango’sup LOOP
secuencia de sentencias
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;
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
23 de 53
FOR (Ejemplo)
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use 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;
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
24 de 53
WHILE-LOOP
El bucle se repite mientras la condición que haya
después del while sea verdadera
[etiqueta:]WHILE condición LOOP
secuencia de sentencias
END LOOP [etiqueta];
ejemplo:
lazo1:WHILE (i < 10) LOOP
WAIT UNTIL clk'EVENT AND clk='1';
END LOOP lazo1;
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
25 de 53
LOOP
El bucle se repite infinatamente
[etiqueta:]LOOP
secuencia de sentencias
END LOOP [etiqueta];
ejemplo:
lazo1: LOOP
a <= c and b;
END LOOP lazo1;
La única sentencia que deja romper el bucle es EXIT
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
26 de 53
EXIT
Detiene la ejecución en ese instante y sale del bucle.
Si hay varios bucles 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: 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 que sigue al EXIT.
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
27 de 53
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.
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=a;
END LOOP sigue;
END LOOP termina;
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
28 de 53
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
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
29 de 53
NULL
No realiza función alguna. Pasa la ejecución a la
siguiente sentencia secuencial.
Útil en sentencias CASE cuando no se quiere realizar ninguna
acción para alguna de las elecciones.
Sintaxis:
[etiqueta:] NULL;
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
30 de 53
GENERATE
Esta sentencia concurrente permite reducir el tamaño
del código de aquellas estructuras que se repiten
considerablemente.
Sintaxis:
etiqueta: FOR identificador IN range GENERATE
(sentencias concurrentes)
END GENERATE;
etiqueta: IF condición GENERATE
(sentencias concurrentes)
END GENERATE;
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
31 de 53
GENERATE
SIGNAL x: BIT_VECTOR (7 DOWNTO 0);
SIGNAL y: BIT_VECTOR (15 DOWNTO 0);
SIGNAL z: BIT_VECTOR (7 DOWNTO 0);
...
G1: FOR i IN x'RANGE GENERATE
z(i) <= x(i) AND y(i+8);
END GENERATE;
X(0)
y(8)
z(0)
X(7)
y(15)
z(7)
Ejemplo: Sumador de acarreo propagado
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
32 de 53
Paquetes
Son unidades de diseño en las que se declaran y describen tipos, objetos,
funciones, componentes, etc. Para ser usados en cualquier descripción y
modelo.
NO olvidar delante LIBRARY
Sintaxis:
y USE
package nombre_paquete is
-- zona de dclaraciones
-- tipos, subtipos, constantes
-- atributos
end package nombre_paquete;
[package body 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
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
33 de 53
Component
Un componente es una descripción simple, es decir, (LIBRARY + ENTITY +
ARCHITECTURE) sin embargo bajo la declaración de COMPONET 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_puertos es posicional;
Lista de puertos por asignación; nombre_puerto_compo => señal_o_puerto_asig
Etiqueta: nombre_componente GENERIC MAP (lista_parametros)
PORT MAP (lista_puertos);
Mediante lista_parametros se pasan parámetros genéricos al componente.
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
34 de 53
Ejemplo de paquete
Ver un ejemplo sencillo
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
35 de 53
Atributos
Un atributo es una característica asociada a un elemento (tipo de dato,
señal, entidad,…) que proporciona información adicional.
Atributo ≠ Valor
Un objeto tiene un solo valor y puede tener múltiples atributos.
VHDL proporciona una serie de atributos predefinidos.
Nombre_elemento’Nombre_atributo
Byte_a’range
Signal_a’event
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
36 de 53
Atributos de rango vectores
Nombre del atributo
Significado
LEFT
Identifica el valor definido a la izquierda del intervalo de
índices
RIGTH
Identifica el valor definido a la derecha del intervalo de
índices
HIGH
Identifica el valor máximo del intervalo de índices
LOW
Identifica el valor mínimo del intervalo de índices
LENGTH
Identifica el valor total del intervalo de índices
RANGE
Copia el intervalo de índices
REVERSE_RANGE intervalo de índices pero en sentido inverso.
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
37 de 53
Atributos de rango de vectores. Ejemplo
Signal Mi_senal: std_logic_vector(7 downto 2);
Nombre del
atributo
LEFT
Ejemplo
Mi_senal’left toma el valor 7
RIGTH
Mi_senal’rigth toma el valor 2
HIGH
Mi_senal’high toma el valor 7
LOW
Mi_senal’low toma el valor 2
LENGTH
Mi_senal’length toma el valor 6
RANGE
Mi_senal’range toma el valor 7 downto 2
REVERSE_RANGE
Permite la
descripción de
modelos más
generales que
facilitan la
reutilización
del código
Mi_senal’reverse_range toma el valor 2 to 7
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
38 de 53
Atributos de rango de vectores. Loops
Signal Mi_senal: std_logic_vector(7 downto 2);
Bucles en VHDL
for i in Mi_senal’range
loop
Mi_senal(i) <= ’0’
end loop;
for i in Mi_senal’high to 1
loop
Pone un vector de
tamaño conocido a cero
Desplaza a la izquierda
Mi_senal(i) <= Mi_senal(i-1)
end loop;
i no es ni señal ni variable, los bucles son siempre estaticos
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
39 de 53
Atributos de las señales
DELAYED(t). Valor de la señal retrasada t unidades de tiempo.
STABLE(t), verdadero si la señal permanece invariable durante t unidades de
tiempo.
QUIET(t), verdadero si la señal no ha recibido ninguna asignación en t unidades de
tiempo.
TRANSACTION, tipo bit, a ‘1’ cuando hay una asignación a la señal.
EVENT, verdadero si ocurre un cambio en la señal en el paso de simulación.
ACTIVE, verdadero si ocurre una asignación a la señal en el paso de simulación.
LAST_EVENT, unidades de tiempo desde el último evento.
LAST_ ACTIVE, unidades de tiempo desde la última asignación.
LAST_VALUE, valor anterior de la señal.
DRIVING, verdadero si el proceso actual determina el valor de la señal.
DRIVING_VALUE, valor que toma la señal tras el proceso.
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
40 de 53
Atributos
Un atributo es una característica (función, tipo, rango, señal o
constante), que puede ser asociada (atribuida) a ciertos elementos
del modelo VHDL.
Dos posibilidades:
Atributos definidos por el usuario.
Predefinidos.
Atributos predefinidos para señales.
Dan información sobre las señales o definen nuevas señales
implícitas derivadas de las señales declaradas explícitamente.
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
41 de 53
Atributos
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
42 de 53
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).
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
43 de 53
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.
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
44 de 53
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.
Se describe el algoritmo que refleja el comportamiento de
dicho componente.
También se le suele llamar estilo algorítmico o secuencial.
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
45 de 53
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.
El proceso de descripción se realiza por medio de funciones
lógicas, que se ejecutarán de forma concurrente
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
46 de 53
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.
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 : tipo_puerto tipo_dato;
nombre_puerto : tipo_puerto tipo_dato;
...
);
END COMPONENT;
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
47 de 53
Ejemplo de estilos de descripción
Multiplexor de dos entradas de datos
de un bit (e0 y e1), una señal de salida
(y) y señal de control (sel)
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
48 de 53
Ejemplo de estilos de descripción
Declaración de la entidad (entity)
-- los comentarios empiezan con dos guiones
ENTITY mx IS
PORT ( e0: IN STD_LOGIC;
e1: IN STD_LOGIC;
sel: IN STD_LOGIC;
y:
OUT STD_LOGIC
);
END mx;
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
49 de 53
Ejemplo de estilos de descripción
1. Descripción de comportamiento o algorítmica (Behavioral))
ARCHITECTURE comportamiento OF mx IS
BEGIN
PROCESS (e0,e1,sel)
BEGIN
IF (sel=’0’) THEN
y<= e0;
END IF;
END PROCESS;
END comportamiento;
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
50 de 53
Ejemplo de estilos de descripción
2. Descripción transferencia entre registros o flujo de datos (Data Flow)
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 ;
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
51 de 53
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;
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
52 de 53
Ejemplo de estilos de descripción
ENTITY mi_inv IS
PORT (
e
: IN
STD_LOGIC;
OUT STD_LOGIC
sal :
);
END mi_inv;
ENTITY mi_or2 IS
PORT (e1, e2 :
sal :
ARCHITECTURE transfe OF mi_inv IS
BEGIN
sal <= NOT (e1);
END transf;
ENTITY mi_and2 IS
PORT (
e1, e2 : IN
sal
:
OUT
STD_LOGIC;
STD_LOGIC
IN
OUT
STD_LOGIC;
STD_LOGIC
);
END mi_or2 ;
ARCHITECTURE transfe OF mi_or2 IS
BEGIN
sal <= e1 OR e2;
END transf;
);
END mi_and2 ;
ARCHITECTURE transfe OF mi_and2 IS
BEGIN
sal <= e1 AND e2;
END transf;
S2_3. Modelos de descripción hardware
© 2007 A.G.O. All Rights Reserved
53 de 53
Descargar