VHDL 3a Circuitos Combinacionales Y Secuenciales
DESCRIPCIÓN DE
CIRCUITOS DIGITALES
Circuitos combinacionales
Circuitos secuenciales
Organización del diseño. Diseño genérico
Operaciones iterativas
Autores: Luis Entrena, Celia López, Mario García, Enrique San Millán,
Marta Portela, Almudena Lindoso
1
Circuitos Integrados y Microelectrónica
Indice
Sentencias condicionales
Reglas para el diseño decircuitos combinacionales
Ejemplos y ejercicios
2
Circuitos Integrados y Microelectrónica
Sentencias condicionales
Sentencias secuenciales
Sentencias concurrentes
IF...THEN...ELSE
... WHEN ...
(asignación condicional)
CASE...IS...WHEN
WITH ... SELECT
(asignación seleccionada)
3
Circuitos Integrados y Microelectrónica
Un multiplexor 2 a 1
-- Descripción secuencial
--Descripción concurrente
PROCESS (a, b, s)
z <= a WHEN s = '0'
BEGIN
ELSE b;
IF s = '0' THEN
z <= a;
ELSE
z <= b;
a
MUX
END IF;
z
b
END PROCESS;
s
4
Circuitos Integrados y Microelectrónica
Un multiplexor 4 a 1
-- Descripción secuencial
-- Descripción concurrente
PROCESS (a, b, c, d, s)
WITH s SELECT
BEGIN
z <=
CASE s IS
a WHEN "00",
b WHEN "01",
WHEN "00" =>
z <= a;
c WHEN "10",
WHEN"01" =>
z <= b;
d WHEN OTHERS;
WHEN "10" =>
z <= c;
WHEN OTHERS => z <= d;
END CASE;
a
END PROCESS;
b
z
MUX
c
d
s
5
Circuitos Integrados y Microelectrónica
Diferencias entre IF y CASE
IF...THEN...ELSE impone prioridades en la selección
IF s0 = '0' THEN
0
a
z
z <= a;
ELSIF s1 = '0' THEN
b
0
c
1
1
z <= b;
ELSE
s0
z <= c;
END IF;
s1
6
Circuitos Integrados yMicroelectrónica
Diferencias entre IF y CASE
CASE no impone prioridades en la selección
PROCESS (a, b, c, d, s)
BEGIN
a
CASE s IS
WHEN "00" | "10" =>
z <= a;
WHEN "01" =>
z <= b;
WHEN OTHERS =>
z <= d;
b
z
MUX
d
END CASE;
s
END PROCESS;
7
Circuitos Integrados y Microelectrónica
Tablas de verdad
PROCESS (a, b, c)
VARIABLE entradas: STD_LOGIC_VECTOR (2 DOWNTO 0);
BEGIN
entradas := a & b & c;CASE entradas IS
WHEN "000" =>
f <= '1';
WHEN "001" =>
f <= 'X';
WHEN "010" =>
f <= '0';
WHEN "011" =>
f <= '1';
WHEN "100" =>
f <= '0';
WHEN "101" =>
f <= '1';
WHEN OTHERS =>
f <= 'X';
END CASE;
END PROCESS;
8
Circuitos Integrados y Microelectrónica
Reglas para el diseño de circuitos
combinacionales
Condiciones para que un proceso infiera un circuito combinacionalcorrectamente:
Si una señal se asigna dentro de un proceso o en una sentencia de
asignación concurrente, entonces debe garantizarse que recibe un
valor bajo todas las posibles condiciones o casos. En otras palabras,
el valor de la señal debe estar definido en todos los casos.
La lista de sensibilidad de un proceso que modela lógica
combinacional debe contener todas las señales que son leídas en el
proceso,es decir, todas las señales cuyo valor se utiliza dentro del
proceso y que por tanto actúan como entradas en el circuito resultante
de la síntesis.
Si se utilizan variables dentro de un proceso, estas deben de ser
utilizadas propiamente como variables intermedias, es decir, que
deben ser escritas antes de ser leídas.
9
Circuitos Integrados y Microelectrónica
Reglas para el diseño decircuitos
combinacionales
Algunas consecuencias de las reglas anteriores:
Para cubrir todos los casos, es conveniente que toda sentencia IF o
asignación condicional lleve una claúsula ELSE, y toda sentencia
CASE o asignación seleccionada lleve una claúsula WHEN OTHERS
No se deben crear referencias circulares, es decir, salidas que
dependen de sí mismas, ya que se generarían lazos de
realimentaciónasíncronos
Se aconseja el uso de señales en lugar de variables cuando sea
posible
10
Circuitos Integrados y Microelectrónica
Ejemplos
PROCESS( s, a)
PROCESS( s, a)
BEGIN
BEGIN
IF s = ‘0’ THEN
IF s = ‘0’ THEN
z <= a;
z <= a;
ELSE
END IF;
z <= z;
END PROCESS;
END IF;
END PROCESS;
PROCESS( s, a)
PROCESS( s, a, b)
BEGIN
IF s = ‘0’ THEN
BEGIN
IF s = ‘0’ THEN
z <= a;
z <= a;...
Regístrate para leer el documento completo.