Documentos de Académico
Documentos de Profesional
Documentos de Cultura
La descripción por flujo de datos o RTL (Registred Transfer Level) indica la forma en que los datos se
pueden transferir de una señal a otra, ya sea utilizando instrucciones concurrentes, o bien mediante
ecuaciones booleanas. En este tipo de descripción, no se utilizan declaraciones secuenciales IF.
Este tipo de descripción permite definir el flujo que tomarán los datos entre módulos encargados de
realizar operaciones.
1.5.1 – RTL mediante declaraciones condicionales asignadas a una señal (WHEN ELSE)
Su sintaxis:
La sentencia WHEN-ELSE se utiliza para asignar
<señal> <= <asignación1> WHEN <condición1> ELSE
valores a una señal, determinando así la ejecución de <asignación2> WHEN <condición2> ELSE
una condición propia del diseño; se trata de una ...
sentencia de selección múltiple. En hardware es <asignaciónN> WHEN <condiciónN> ELSE
necesario incluir todas las opciones posibles. En este <asignaciónM>;
caso es obligatorio siempre acabar la expresión con
un ELSE. Ej2: descripción RTL de un comparador de 2
palabras de 2 bits (con When-else)
Ej1: Descripción de flujo de datos de un Multiplexor de
2 a 1 (con When-else). “En c se asigna 1
cuando a=b, caso
“En Z se asigna A cuando S0 es igual a 0, caso contrario se asigna B” contrario se asigna 0”
ENTITY funcion x y z f
PORT(x, y, z: IN BIT; f: OUT BIT); 0 0 0 0
END funcion; 0 0 1 0
ARCHITECTURE funcion_datos OF funcion IS 0 1 0 1
0 1 1 1
BEGIN
1 0 0 0
f <= ‘1’ WHEN (x = ‘0’ AND y =’1’ AND z = ‘0’) ELSE
1 0 1 1
‘1’ WHEN (x = ‘0’ AND y =’1’ AND z = ‘1’) ELSE
1 1 0 1
‘1’ WHEN (x = ‘1’ AND y =’0’ AND z = ‘1’) ELSE 1 1 1 0
‘1’ WHEN (x = ‘1’ AND y =’1’ AND z = ‘0’) ELSE
‘0’;
END funcion_datos;
Y = I0. 𝑆0 + I1.S0 I0
ENTITY mux2a1 Y
I1
PORT(I0, I1, S0: IN BIT; Y: OUT BIT);
END mux2a1;
MUX 2 a 1
ARCHITECTURE mux2a1_datos _eb OF mux2a1 IS
SIGNAL int1, int2, int3: BIT; S0 Diagrama lógico
BEGIN
int1 <= NOT S0; -- o bien podría ser
int2 <= I0 AND int1; ARCHITECTURE mux2a1_datos _eb2 OF mux2a1 IS
int3 <= I1 AND S0; BEGIN
Y <= int2 OR int3; Y <= ((I0 AND NOT (S0)) OR (I1 AND S0)) ;
END mux2a1_datos_eb; END mux2a1_datos_eb;
Ej2: descripción del flujo de datos de un comparador Ej3: descripción del flujo de datos con ec. Bool.
de 2 palabras de 2 bits (con ecuac. Booleanas)
f= (𝑎 + 𝑏) ⨁ 𝑐. 𝑑 )
f1= (𝑎⨁𝑏)
f2 = ((𝑎⨁𝑏) + 𝑐. 𝑑). ((𝑐. 𝑑). (𝑒⨁𝑓))
f3 = (c.d).(e⨁f)
ENTITY fvarias
PORT(a, b, c, d, e, f: IN BIT; f1, f2, f3: OUT BIT);
END fvarias;
ARCHITECTURE fvarias_eb OF fb IS
BEGIN
f1 <= (a XNOR b);
f2 <=( ( (a XNOR b) OR (c AND d) ) NAND ( (c AND d) AND (e XNOR f) ) );
f3 <= (c AND d) AND (e XNOR f) ;
END fvarias_eb;
I0
Y
I1
MUX 2 a 1
S0 Diagrama lógico
Conclusión
El tipo de descripción a utilizar depende del diseñador y de la complejidad del proyecto. Por ejemplo,
un diseño puede describirse por medio de ecuaciones booleanas, pero si es muy extenso quizá sea
más apropiado emplear estructuras jerárquicas para dividirlo; ahora bien, si se requiere diseñar un
sistema cuyo funcionamiento dependa solo de sus entradas y salidas, es conveniente utilizar la
descripción funcional, la cual presenta la ventaja de requerir menos instrucciones y el diseñador no
necesita un conocimiento previo de cada componente del circuito.
Ver video
https://www.youtube.com/watch?v=3N_R_SNnC60
https://www.youtube.com/watch?v=ozEm_OHvvgM
https://www.youtube.com/watch?v=9D6fCuQB_Wk