Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Estructura
Estructura de
de un
un Sistema
Sistema Lógico
Lógico Secuencial
Secuencial
Clasificación
Clasificación
Entradas Salidas
Asíncronos
Lógica Entradas Salidas
de Memoria
de Memoria
Elementos
Elementos
Combinatoria Síncronos
Lógica
Combinatoria
Señal de Señal de
Reloj Elementos Reloj
de Memoria
Señal de
Mixtos Reloj
Entradas Salidas
de Memoria
de Memoria
Elementos
Elementos
Lógica
Combinatoria
Señal de
Reloj
Cap.4 – VHDL: Diseño Lógico Secuencial Elementos de Memoria: flip-flops
S Q J Q D Q T Q
R Q K Q Q Q
S R Qt Qt+1 J K Qt Qt+1
0 0 0 0 0 0 0 0 D Qt Qt+1 T Qt Qt+1
0 0 1 1 0 0 1 1 0 0 0 0 0 0
0 1 0 0 0 1 0 0 0 1 0 0 1 1
0 1 1 0 0 1 1 0 1 0 1 1 0 1
1 0 0 1 1 0 0 1 1 1 1 1 1 0
1 0 1 1 1 0 1 1
1 1 0 X 1 1 0 1
1 1 1 X 1 1 1 0
Cap.4 – VHDL: Diseño Lógico Secuencial Elementos de Memoria: flip-flops
En
En el
el Diseño
Diseño Secuencial
Secuencial con
con VHDL,
VHDL, las
las construcciones:
construcciones:
if-then-else
if-then-else // if-then-elsif-then
if-then-elsif-then son
son las
las más
más utilizadas.
utilizadas.
S R Qt Qt+1
0 0 0 0 S Q
0 0 1 1
0 1 0 0
0 1 1 0 R Qn
1 0 0 1 clk
1 0 1 1
1 1 0 X
if (S = ‘0’ and R = ‘1’) then
1 1 1 X
Q <= ‘0’;
Qn <= ‘1’;
Ejemplo Nº 2 – Flip-Flop tipo RS elsif (S = ‘1’ and R = ‘0’) then
library ieee; Q <= ‘1’;
use ieee.std_logic_1164.all; Qn <= ‘0’;
entity ffsr is elsif (S = ‘0’ and R = ‘0’) then
port (S, R, clk: in std_logic; Q <= Q;
Q, Qn: inout std_logic); Qn <= Qn;
end ffsr; else
architecture a_ffsr of ffsr is Q <= ‘-’;
begin Qn <= ‘-’;
end if;
process (clk, S, R)
end if;
begin
end process;
if (clk’event and clk=‘1’) then
end a_ffsr;
Cap.4 – VHDL: Diseño Lógico Secuencial Registros
clk Contador
Q3 Q2 Q1 Q0
clk
Q0
Q1
Q2
Q3
Diagrama
Diagrama de
de tiempo
tiempo del
del contador
contador de
de 44 bits
bits
Cap.4 – VHDL: Diseño Lógico Secuencial Contadores
Salidas
Entradas Lógica Lógica
Registros
Combinatoria Combinatoria
Máquina
Máquina de
de Mealy
Mealy con
con Salidas
Salidas
Asíncronas
Asíncronas
Salidas
Entradas Lógica Lógica
Registros Registros
Combinatoria Combinatoria
Máquina
Máquina de
de Mealy
Mealy con
con Salidas
Salidas
Síncronas
Síncronas
Cap.4 – VHDL: Diseño Lógico Secuencial Máquinas Secuenciales
Ejemplo
Ejemplo Nº
Nº 88
Representación
Representación de
de una
una Máquina
Máquina de
de Mealy
Mealy
0/0
Estado Entrada X
B Presente 0 1
0/1
A B/1 C/0
1/1
B B/0 A/1
C A/0 C/0
1/0
A C 1/0
Entradas
Salidas
Lógica Lógica
Registros
Combinatoria Combinatoria
Máquina
Máquina de
de Moore
Moore con
con Salidas
Salidas
Asíncronas
Asíncronas
Salidas
Entradas Lógica
Registros
Combinatoria
Máquina
Máquina de
de Moore
Moore con
con Salidas
Salidas
Síncronas
Síncronas
Cap.4 – VHDL: Diseño Lógico Secuencial Máquinas Secuenciales
Ejemplo
Ejemplo Nº
Nº 99
Representación
Representación de
de una
una Máquina
Máquina de
de Moore
Moore
B/0
1 0 1 Presente)
A B C 0
B C A 0
A/0 C/1
1 C C B 1
0
Próximo Estado
Cap.4 – VHDL: Diseño Lógico Secuencial Diseño de Sistemas Secuenciales Síncronos
3 Asignación de Estados.
4 Descripción del Comportamiento: Uso de Lenguajes de Descripción de Hardware
(HDL) – VHDL y Verilog
5 Compilación / Síntesis del Diseño – Generación de Lógica (Ecuaciones Lógicas) /
Asignación de Estados
6 Simulación Funcional
7 Implementación / Realización del Diseño: Realización de la Lógica con una
Tecnología y/o Dispositivos predefinidos, p.ej. Biblioteca de Celdas CMOS,
Lógica Comercial, PLDs/CPLDs/FPGAs (para estos dispositivos, esta fase se le
conoce como: ‘Mapping, Place & Route’), Microcontroladores, etc.
8 Simulación Temporizada
Cap.4 – VHDL: Diseño Lógico Secuencial Diseño de Sistemas Secuenciales Síncronos
Ejemplo
Ejemplo Nº
Nº 10
10
Circuito
Circuito Secuencial
Secuencial que
que detecta
detecta 4-Unos
4-Unos (1’s)
(1’s) consecutivos
consecutivos
0/0 1/0
0/0
¿Cómo
¿Cómo describir
describir oo declarar
declarar los
los estados
estados (usando
(usando VHDL)
VHDL) aa partir
partir del
del Diagrama
Diagrama de
de Estados?
Estados?
Para
Para entender
entender el
el proceso
proceso de
de declaración
declaración de
de los
los estados,
estados, se
se comprenderá
comprenderá primeramente
primeramente el
el
siguiente
siguiente grupo
grupo de
de declaraciones
declaraciones
Así, ¿Cómo
¿Cómo son
son codificados:
codificados: d0,
d0, d1,
d1, d2,
d2, d3,
d3, d4?
d4?
Así, para
para declarar
declarar los
los estados
estados de
de una
una Máquina
Máquina
de
de Estados
Estados Finitos
Finitos se
se realiza
realiza lo
lo siguiente:
siguiente:
Tipos de Codificación
Valores que pueden tener el edo.presente y utilizados:
el edo.futuro en el ejemplo Nº 10:
•One-Hot
edo_presente edo_futuro •Compact
d0 d0 •Secuencial
estados
d1 d1 •Gray
d2 d2 000 d0
•Johnson
•Definido por Usuario 001 d1
d3 d3
010 d2
d4 d4
011 d3
Declaración de Estados en una FSM
El Número de Bits 100 d4
utilizados en la 101 101
type estados is (d0, d1, d2, d3, d4); codificación está en
función del 110 110
signal edo_presente, edo_futuro: estados; Número de Estados 111 111
(Tarea realizada
Donde:
por el Compilador
estados es el nombre o identificador dado por el usuario al conjunto de datos conformado
por d0, d1,d2 d3, d4. A este tipo de datos se le conoce como Tipo de Datos Enumerados o Sintetizador)*
edo_presente, edo_futuro son señales (signal) que pueden adquirir cualquiera de los
valores (d0, d1, d2, d3, d4) que describen al tipo de dato enumerado identificado con el
nombre de estados, es decir, edo_presente y edo_futuro son también datos del tipo
enumerado
Cap.4 – VHDL: Diseño Lógico Secuencial Diseño de Sistemas Secuenciales Síncronos
Ejemplo
Ejemplo Nº
Nº 11
11
0
Máquina
Máquina de
de Moore
Moore
S0/0
0
1
1
S1/1 S2/1
0
1 1
S3/0
0
Cap.4 – VHDL: Diseño Lógico Secuencial Diseño de Sistemas Secuenciales Síncronos
Ejemplo
Ejemplo Nº
Nº 12
12
0/0
Máquina
Máquina de
de Mealy
Mealy
S0
0/0
1/1
1/0
S1 S2
0/1
1/1 1/0
S3
0/0
Cap.4 – VHDL: Diseño Lógico Secuencial Diseño de Sistemas Secuenciales Síncronos
Ejemplo Nº 12 – Máquina de Mealy when S2=>
library ieee; if x = ‘0’ then
use ieee.std_logic_1164.all; z <= ‘1’;
entity MEALY is Edo_Fut <= S2;
port (clk, x: in std_logic; else
z: out std_logic); z <= ‘0’;
end MEALY; Edo_Fut <= S3;
architecture ARQ_MEALY of MEALY is end if;
type Estados is (S0, S1, S2, S3); when S3 =>
signal Edo_Pres, Edo_Fut: Estados; if x = ‘0’ then
begin z <= ‘0’;
proceso1: process (Edo_Pres, x) begin Edo_Fut <= S3;
case Edo_Pres is else
when S0 => z <= ‘1’;
if x = ‘0’ then Edo_Fut <= S1;
z <= ‘0’; end if;
Edo_Fut <= S0; end case;
else end process proceso1;
z <= ‘1’; proceso2: process (clk) begin
Edo_Fut <= S2; if (clk’event and clk = ‘1’) then
end if; Edo_Pres <= Edo_Fut;
when S1 => end if;
if x = ‘0’ then end process proceso2;
z <= ‘0’; end ARQ_MEALY;
Edo_Fut <= S0;
else
z <= ‘0’;
Edo_Fut <= S2;
end if;
Cap.4 – VHDL: Diseño Lógico Secuencial Diseño de Sistemas Secuenciales Síncronos
Ejemplo
Ejemplo Nº
Nº 13
13
1 1 1/1
q0/0 q1/0 q2 q3/0
0 0/0 1
1
0
q4/0 0