Академический Документы
Профессиональный Документы
Культура Документы
1
Microprocesadores Y Arquitectura Del Computador
Electrnica Doc. JMCV
Ing.
Analizando el ejemplo:
ENTITY mux IS
PORT ( a, b, c, d : IN BIT;
s0, s1 : IN BIT;
x, : OUT BIT);
END mux;
ARCHITECTURE dataflow OF mux IS
SIGNAL select : INTEGER;
BEGIN
select <= 0 WHEN s0 = 0 AND s1 = 0 ELSE
1 WHEN s0 = 1 AND s1 = 0 ELSE
2 WHEN s0 = 0 AND s1 = 1 ELSE
3;
x <= a AFTER 0.5 NS WHEN select = 0 ELSE
b AFTER 0.5 NS WHEN select = 1 ELSE
c AFTER 0.5 NS WHEN select = 2 ELSE
d AFTER 0.5 NS;
END dataflow;
Si: a, b, c, d
La salida ser:
x=0
x=1.
Suposicin 2:
Provocando un cambio en s0. ?
2
Microprocesadores Y Arquitectura Del Computador
Electrnica Doc. JMCV
Ing.
PROCESS en VHDL
Todas las sentencias dentro de un proceso se ejecutan uno seguido del otro tal
cual ocurre en un lenguaje de programacin tradicional.
Un PROCESS en VHDL, consiste en un conjunto de acciones a ser ejecutadas en
forma secuencial, a lo que en ingles se conoce como: Sequential Statements
(Sentencias Secuenciales o instrucciones secuenciales). Es as que las
asignaciones en un PROCESS no se ejecutan mientras no se presente el END
PROCESS. Por lo que generalmente a un PROCESS se le puede entender como
un circuito a parte en la arquitectura el cual es indivisible.
Un PROCESS tiene dos formas bsicas:
La primera, tiene una lista de sensibilidad, sin sentencias WAIT en el process.
La segunda, tiene una o ms sentencias WAIT, pero no tiene lista de
sensibilidad. (No se desarrollar en el curso)
PROCESS con lista de sensibilidad
process(sensitivity-list)
begin
declarations;
sequentialstatement;
sequentialstatement;
...
end process;
sensitivity-list
sensible.
declarations
PROCESS.
Si bien es cierto que un PROCESS de VHDL tiene la apariencia de un simple
procedimiento o funcin en lo que sera un lenguaje de programacin
tradicional, en VHDL un PROCESS tiene un comportamiento totalmente
diferente.
En VHDL un PROCESS, es invocado o llamado por otra rutina; como si fuera
parte de un circuito el cual puede estar ACTIVO o SUSPENDIDO.
3
Microprocesadores Y Arquitectura Del Computador
Electrnica Doc. JMCV
Ing.
end process;
...
y <= a or c;
y <= a and b;
y <= c and d;
end process;
VARIABLES EN VHDL
La sintaxis es:
Donde el operador:
VARIABLE.
tmp0 := 0 ;
tmpl : = tmp0 or a;
tmp2 := tmpl or b ;
4
Microprocesadores Y Arquitectura Del Computador
Electrnica Doc. JMCV
Ing.
y <= tmp2;
end process;
Ntese que la variable es de tipo local y tiene que ser declarado dentro de
PROCESS.
5
Microprocesadores Y Arquitectura Del Computador
Electrnica Doc. JMCV
Ing.
En este caso se usa una asociacin utilizando nombres para correlacionar o conectar
los puertos y las seales correspondientemente.
x2 de la orgate es conectada al puerto b de la entidad (en la primera asociacin).
En la ltima asociacin vemos que se conecta el puerto x de orgate al puerto x de la
entidad.
Ing.
EJEMPLO 3
LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
ENTITY mux IS
PORT (i0, i1, i2, i3, a, b : IN
std_logic;
q : OUT
std_logic);
END mux;
ARCHITECTURE manera_a of mux IS
SIGNAL muxval : INTEGER;
BEGIN
PROCESS ( i0, i1, i2, i3, a, b )
BEGIN
muxval <= 0;
IF (a = 1) THEN
muxval <= muxval + 1;
END IF;
IF (b = 1) THEN
muxval <= muxval + 2;
END IF;
CASE muxval IS
WHEN 0 =>q <= I0 AFTER 10
ns;
WHEN 1 =>q <= I1 AFTER 10
ns;
WHEN 2 =>q <= I2 AFTER 10
ns;
WHEN 3 =>q <= I3 AFTER 10
ns;
WHEN OTHERS =>NULL;
END CASE;
END PROCESS;
END manera_a;
EJEMPLO 4
LIBRARY IEEE;
USE IEEE.std_logic_1164ALL;
ENTITY mux IS
PORT (i0, i1, i2, i3, a, b : IN std_logic;
q : OUT std_logic);
END mux;
ARCHITECTURE manera_b OF mux IS
BEGIN
PROCESS ( i0, i1, i2, i3, a, b )
VARIABLE muxval : INTEGER;
BEGIN
muxval := 0;
IF (a = 1) THEN
muxval := muxval + 1;
END IF;
IF (b = 1) THEN
muxval := muxval + 2;
END IF;
CASE muxval IS
WHEN 0 =>q <= I0 AFTER 10 ns;
WHEN 1 =>q <= I1 AFTER 10 ns;
WHEN 2 =>q <= I2 AFTER 10 ns;
WHEN 3 =>q <= I3 AFTER 10 ns;
WHEN OTHERS =>NULL;
END CASE;
7
Microprocesadores Y Arquitectura Del Computador
Electrnica Doc. JMCV
Ing.
END PROCESS;
END manera_b;
PREGUNTA:
Cul de las formas de implementacin del MUX es la que trabaja correctamente?
Ing.
FUNCIN
=>
<
>
if ram(i)architecture
> 8 then ..fouradder_structure Mayor
que
of
"
report "my
message"
USING1BITFULLADDER
is
>=
<=
<=
:=
=>
Menor que
Trabajar con mensajes o cadenas
signal c: std_logic_vector (4
downto
0);
Punto
separador
component
FULLADDER
: signal sortie : bit;
Separador
port(a,
b,
c:
in
std_logic;
+ sum: = a + b;
Operador suma positivo
sum,
carry:
out
std_logic);
- subtr := a- b;
Operador resta negativo
end
component;
/ period/2
Operador divisin
begin
* mult= a * b;
Multiplicacin
FA0: FULLADDER
** expo= 2**10;
Exponenciacin
port map (a(0), b(0), not Cin,
& ten_bits = "1010" & six_bits;
Concatenacin
sum(0), c(1));
| when '1' | 'X' =>
FA1: FULLADDER Barra vertical, operador OR
; end component;
Clausula
de terminacin
port map (a(1),
b(1), C(1),
sum(1),
c(2));
FA2: FULLADDER
port map (a(2), b(2), C(2), sum(2),
c(3));
FA3: FULLADDER
port map (a(3), b(3), C(3), sum(3),
c(4));
Cout <= c(4);
end fouradder_structure;
.
cell.header
Operadores Importantes
9
Microprocesadores Y Arquitectura Del Computador
Electrnica Doc. JMCV
Ing.