Está en la página 1de 6

Universidad Nacional de Salta – Sede Regional Orán Asignatura: Electrónica Digital III - TEU 27

1.5 – DESCRIPCIÓN DEL FLUJO DE DATOS O RTL DE LA ARQUITECTURA

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.

En VHDL existen tres tipos de declaraciones concurrentes:


 Declaraciones condicionales asignadas a una señal(when-else )
 Declaraciones concurrentes asignadas a señales
 Selección de una señal (with-select-when )

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 mux2a1 ENTITY comp


PORT(A, B, S0: IN BIT; Z: OUT BIT); PORT(a, b: IN BIT_VECTOR(1 DOWNTO 0);
END mux2a1; c: OUT BIT);
END comp;
ARCHITECTURE mux2a1_datos OF mux2a1 IS
BEGIN ARCHITECTURE comp_datos OF comp IS
Z <= A WHEN (S0 = ‘0’) ELSE B; BEGIN
END mux2a1_datos; c <= ‘1’ WHEN (a = b) ELSE ‘0’;
END comp_datos;
Ej3: descripción flujo de datos de la compuerta AND
(con When-else). Ej4: descripción flujo de datos de la compuerta OR
(con When-else).
“En fl se asigna 1
cuando a=1 y b=1, “En fl se asigna 0
caso contrario se asigna 0”
cuando a=0 y b=0,
caso contrario se asigna 1”
ENTITY comp_and
PORT(a, b: IN BIT; fl: OUT BIT);
END comp_and; ENTITY comp_or
PORT(a, b: IN BIT; fl: OUT BIT);
ARCHITECTURE comp_and__datos OF comp_and IS END comp_or;
BEGIN
fl <= 1 WHEN (a = '1') and (b = '1') ELSE 0; ARCHITECTURE comp_or__datos OF comp_or IS
END comp_and_datos; BEGIN
fl <= 0 WHEN (a = '0') and (b = '0') ELSE 1;
END comp_or_datos;
Cartilla de la materia - Ing. Dora Mendoza
Universidad Nacional de Salta – Sede Regional Orán Asignatura: Electrónica Digital III - TEU 28

Ej5: Descripción de flujo de datos de un Multiplexor de 4 a 1 (con When-else).

ENTITY mux4a1 “En M se asigna A cuando S es igual a 00, sino


En M se asigna B cuando S es igual a 01, sino
PORT(A, B, C, D: IN BIT; S: IN BIT_VECTOR(1 DOWNTO 0); En M se asigna C cuando S es igual a 10, sino
M: OUT BIT); se asigna D”
END mux4a1;
ARCHITECTURE mux4a1_datos OF mux2a1 IS
BEGIN
M <= A WHEN (S0 = “00”) ELSE
B WHEN (S0 = “01”) ELSE
C WHEN (S0 = “10”) ELSE
D;
END mux4a1_datos;

Ej6: Descripción de flujo de datos de una función f a partir de su tabla

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;

1.5.2 – RTL mediante ecuaciones booleanas

Mediante ecuaciones booleanas se puede describir el comportamiento de cada una de las


compuertas del sistema. Se trata de declaraciones concurrentes asignadas a señales.

Ej1: Descripción de flujo de datos de un Multiplexor de 2 a 1 (con ecuaciones booleanas).

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;

Cartilla de la materia - Ing. Dora Mendoza


Universidad Nacional de Salta – Sede Regional Orán Asignatura: Electrónica Digital III - TEU 29

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= (𝑎 + 𝑏) ⨁ 𝑐. 𝑑 )

c= (𝑎1⨁ 𝑏1) . (𝑎0 ⨁ 𝑏0) ENTITY fb


PORT(a, b, c, d: IN BIT; f: OUT BIT);
ENTITY comp
END fb;
PORT(a, b: IN BIT_VECTOR(1 DOWNTO 0); c: OUT BIT);
END comp; ARCHITECTURE fb_eb OF fb IS
BEGIN
ARCHITECTURE comp_eb OF comp IS f <= ( (a OR b) XNOR (c AND d) );
BEGIN END fb_eb;
c <= ( (a(1) XNOR b(1) ) AND (a(0) XNOR b(0) ) );
END comp_eb;

Ej4: descripción del flujo de datos con ec. Bool.

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;

1.5.3 – RTL mediante Selección de una señal (con WITH-SELECT)

Ej1: descripción del flujo de datos de un comparador de 2


Su sintaxis:
WITH <señal1> SELECT palabras de 2 bits (con WITH)
a(1) a(0) c
<señal2> <= <expr1> WHEN <condición1>, 0 0 1
<expr2> WHEN <condición2>,
ENTITY circuito 0 1 0
...
<exprN> WHEN OTHERS; PORT(a: IN BIT_VECTOR(1 DOWNTO 0); 1 0 1
c: OUT BIT); 1 1 0
Se utiliza para asignar un valor a una señal END circuito;
con base en el valor de otra señal ARCHITECTURE circuito_datos OF circuito IS
previamente seleccionada.
BEGIN
WITH a SELECT
La cláusula WHEN OTHERS especifica c <= ‘1’ WHEN “00”,
todos los demás valores que no han sido ‘0’ WHEN “01”,
contemplados. También es posible utilizar ‘1’ WHEN “10”,
la opción que se contempló en el caso ‘0’ WHEN OTHERS;
anterior (UNAFFECTED). END circuito_datos;
Cartilla de la materia - Ing. Dora Mendoza
Universidad Nacional de Salta – Sede Regional Orán Asignatura: Electrónica Digital III - TEU 30

Ej2: descripción del flujo de datos de un circuito que


detecta números primos (con WITH)
a(3) a(2) a(1) a(0) p
0 0 0 0 0
ENTITY primo 0 0 0 1 0
PORT(a: IN BIT_VECTOR(3 DOWNTO 0); 0 0 1 0 1
p: OUT BIT); 0 0 1 1 1
END primo; 0 1 0 0 0
0 1 0 1 1
ARCHITECTURE primo_datos OF circuito IS
BEGIN 0 1 1 0 0
WITH a SELECT 0 1 1 1 1
p <= ‘1’ WHEN “0010”, 1 0 0 0 0
‘1’ WHEN “0011”, 1 0 0 1 0
‘1’ WHEN “0101”, 1 0 1 0 0
‘1’ WHEN “0111”,
1 0 1 1 1
‘1’ WHEN “1011”,
‘1’ WHEN “1101”, 1 1 0 0 0
‘0’ WHEN OTHERS; 1 1 0 1 1
END primo_datos; 1 1 1 0 0
1 1 1 1 0

Sentencia BLOCK Su sintaxis:


[block_id;]
En ocasiones interesa agrupar un conjunto de sentencias en bloques. BLOCK [expresión de guardia]
Estos bloques permiten dividir el sistema en cabecera
módulos, estos módulos pueden estar Ejemplo: declaraciones
compuestos de otros módulos. latch: BLOCK(clk='1') BEGIN
BEGIN sentencias concurrentes
q <= GUARDED d; END BLOCK block_id;
END BLOCK latch;
1.6 – DESCRIPCIÓN ESTRUCTURAL

La descripción estructural hace referencia a modelos lógicos establecidos (compuertas, sumadores,


contadores, etc). Estos pueden ser guardados para usos posteriores.
En una descripción estructural se descompone la descripción del sistema a diseñar en elementos
más simples: COMPONENTES.
Para ello:
 Se definen los componentes del sistema, puede ser en una librería externa o en el mismo diseño
 luego se los declara dentro de la arquitectura, usando la sentencia COMPONENT
 Finalmente se los “instancia”, es decir, se asocian las señales de entrada y de salida dentro de la
arquitectura, definiendo las interconexiones entre ellos.
Sintaxis de la declaración:
COMPONENT nombre_componente IS
1.6.1 - Sentencia COMPONENT [GENERIC(lista_parametros);]
PORT (
Declaración de la sentencia Nbre_señal1: dirección tipo;
Nbre_señal2: dirección tipo;
….
Los componentes se declaran dentro de la ARQUITECTURA antes
);
de la sentencia BEGIN de la misma. La declaración es similar a la END COMPONENT nombre_componente;
de una ENTIDAD, no se define el comportamiento, sólo los
Sintaxis de la Instanciación:
puertos.
Etiqueta: nombre_componente
PORT MAP (lista_asociación_ puertos);
Cartilla de la materia - Ing. Dora Mendoza
Universidad Nacional de Salta – Sede Regional Orán Asignatura: Electrónica Digital III - TEU 31

Instanciación Puerta NAND a partir de una AND y una INV definidas en


el mismo archivo:
PORT MAP asocia los puertos del componente con -- se describe el circuito AND
señales en la arquitectura desde la que se instancia ENTITY mi_and IS
2 estilos: por posición o explícito. PORT(X, Y: IN BIT; Z: OUT BIT);
END mi_and;
Ejemplo de instanciación por posición: ARCHITECTURE circuito_miand OF mi_and IS
BEGIN
Z = X AND Y;
END circuito_miand;

-- se describe el circuito INV


Ejemplo de instanciación explícita: ENTITY mi_inv IS
U0: AND2 PORT MAP (I0=>X, I1=> Y, O =>S); PORT(X: IN BIT; Z: OUT BIT);
U1: INV PORT MAP (I=>S, O =>Z); END mi_inv;
ARCHITECTURE circuito_miinv OF mi_inv IS
BEGIN
Ej1: Descripcion estructural de una compuerta NAND Z = NOT X;
END circuito_miinv;
Puerta NAND a partir de una AND y una INV definidas en
una librería tecnológica (se incorpora automáticamente): -- se describe el circuito NAND utilizando como componentes
-- los circuitos mi_and y mi_inv
ENTITY nand2 IS Con componentes ENTITY mi_nand IS
PORT(X, Y: IN BIT; Z: OUT BIT); definido en una PORT(X, Y: IN BIT; Z: OUT BIT);
END nand2; librería externa END mi_nand;
ARCHITECTURE circuito_minand OF mi_nand IS
ARCHITECTURE circuito_nand2 OF nand2 IS
COMPONENT mi_and
SIGNAL S: BIT;
PORT (X, Y: IN BIT; Z: OUT BIT);
COMPONENT AND2 -- va a una librería tecnológica Con componentes
END COMPONENT;
PORT (I0, I1: IN BIT; O OUT BIT); definidos en el
COMPONENT mi_inv
END COMPONENT; mismo diseño
PORT (X: IN BIT; Z: OUT BIT);
COMPONENT INV -- va a una librería tecnológica END COMPONENT;
PORT (I: IN BIT; O OUT BIT);
SIGNAL Z1: BIT;
END COMPONENT;
BEGIN
BEGIN U1: mi_and PORT MAP (X, Y, Z1);
U0: AND2 PORT MAP (I0=>X, I1=> Y, O =>S); U2: mi_inv PORT MAP (Z1, Z);
U1: INV PORT MAP (I=>S, O =>Z); END circuito_minand;
END circuito_nand2;

Cartilla de la materia - Ing. Dora Mendoza


Universidad Nacional de Salta – Sede Regional Orán Asignatura: Electrónica Digital III - TEU 32

Ej2: descripción estructural de un multiplexor 2 a 1 componentes

I0

Y
I1

MUX 2 a 1

S0 Diagrama lógico

-- diseño de la estructura “inversor”


ENTITY inve
PORT(e1: IN BIT; s1: OUT BIT); -- diseño del multiplexor
END inve;
ENTITY mux2a1
ARCHITECTURE inv_estr OF inve IS PORT(S0, I0, I1: IN BIT; Y: OUT BIT);
BEGIN END mux2a1;
s1<= not e1;
END inv_estr; ARCHITECTURE mux_estructural OF mux2a1 IS
SIGNAL int1, int2, int3: bit;
-- diseño de la estructura “and2” COMPONENT inve
ENTITY and2 PORT(e1: IN BIT; s1: OUT BIT);
PORT(e1, e2: IN BIT; s1: OUT BIT); END COMPONENT;
END and2;
COMPONENT and2
ARCHITECTURE and2_estr OF and2 IS PORT(e1, e2: IN BIT; s1: OUT BIT);
BEGIN END COMPONENT;
s1<= e1 and e2;
END and2_estr; COMPONENT or2
PORT(e1, e2: IN BIT; s1: OUT BIT);
-- diseño de la estructura “or2” END COMPONENT;
ENTITY or2
PORT(e1, e2: IN BIT; s1: OUT BIT); BEGIN
END or2; U0: inve PORT MAP(S0, int1);
U1: and2 PORT MAP(I0, int1, int2);
ARCHITECTURE or2_estr OF or2 IS
U2: and2 PORT MAP(I1, S0, int3);
BEGIN
U3: or2 PORT MAP(int2, int3, Y);
s1<= e1 or e2;
END mux_estructural;
END or2_estr;

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

Cartilla de la materia - Ing. Dora Mendoza

También podría gustarte