Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
1. Lenguajes de descripción de hardware. VHDL
1.1. Lenguajes de descripción de hardware1.2. VHDL
1.2.1. Presentación del lenguaje VHDL1.2.2. Objetos, tipos de datos y operadores1.2.3. Sentencias secuenciales1.2.4. Sentencias concurrentes1.2.5. Sentencias estructurales1.2.6. Unidades básicas de diseño1.2.7. Descripción de máquinas de estado1.2.8. Test bench
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
LENGUAJES DE DESCRIPCIÓN DE HARDWARE
HDL: Hardware Description Language
Surgen de la necesidad de una herramienta que permita al diseñador afrontar el modelado y simulación de sistemas electrónicos complejos:
• Descomposición en bloques (arquitectura)• Sincronización (Concurrencia y retardo)• Comunicación entre bloques (buses)• Reutilización de código
Estos lenguajes permiten definir los circuitos tanto de forma funcional (cómo funcionan) como estructural (cómo están realizados).
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
Proceso de diseño de un ASIC con HDL. Es un proceso iterativo dearriba abajo, de niveles de mayor complejidad a menor, para cadanivel:
• Esquema de bloques general (descripción estructural)• Descripción funcional de cada bloque. • Simulación del modelo anterior: permite comparar diversas arquitecturas.• Descripción estructural de cada uno de los bloques del modelo anterior• Simulación.• (...)
Así se seguiría hasta que toda la estructura del circuito estuviera definida en base a puertas elementales o macrocélulas (RAM, ROM...)
LENGUAJES DE DESCRIPCIÓN DE HARDWARE
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
LENGUAJES DE DESCRIPCIÓN DE HARDWARE
NIVEL CIRCUITO
NIVEL BLOQUE
NIVEL COMPONENTE
NIVEL CELDA
NIVEL ELEMENTAL
NIVEL SUBCOMPONENTE
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
LENGUAJES DE DESCRIPCIÓN DE HARDWARE
El resultado final del diseño sería una serie de bloques con descripciones estructurales a distintos niveles de complejidad y unos cuantos bloques elementales cuya descripción es funcional y a partir de los cuales se construye toda la estructura de bloques del circuito.
Por ejemplo, un sumador escalable:
XORANDOR
FULL ADDER HALF ADDER
SUMADOR n BITS
Descripción estructural
Descripción funcional
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
Una vez modelado el circuito es necesario hacer un test de funcionamiento, así se completa el trabajo de diseño con el HDL.
Este es el test bench (banco de pruebas), que responde al siguiente diagrama:
LENGUAJES DE DESCRIPCIÓN DE HARDWARE
Generador de
estímulos
Diseñoen
prueba(DUT: design under test)
Estructura de nivel superior (Test Bench)
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
LENGUAJES DE DESCRIPCIÓN DE HARDWARE
Generador de estímulos
DUT
OK
Resultados correctos
Errores
Test Bench:
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
Existen muchos lenguajes de descripción de hardware (Verilog HDL, Zeus HDL, VHDL).
Nosotros estudiaremos el VHDL, (VHSIC Hardware Description Language, VHSIC: Very High Speed Integrated Circuit).
El VHDL es el estándar del IEEE. Surge en 1981 a partir de un proyecto promovido por el departamento de defensa de los EEUU. Se publica en 1985 y en 1987 es homologado por el IEEE (Institute of Electronic and Electrical Engineers).
LENGUAJES DE DESCRIPCIÓN DE HARDWARE
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
Las herramientas actuales permiten no sólo modelar, compilar y simular los diseños, sino también sintentizarlos, es decir, crear la información necesaria para implementar los diseños en un circuito integrado, o programar FPGA’s.
LENGUAJES DE DESCRIPCIÓN DE HARDWARE
Implementación de un sumador de 8 bits en una FPGA.
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
LENGUAJES DE DESCRIPCIÓN DE HARDWARE
Diseño de un bloque de la FPGA para un sumador de 8 bits
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
Los pasos a dar para crear un nuevo diseño son:
LENGUAJES DE DESCRIPCIÓN DE HARDWARE
Especificación
Modelado VHDL
Descripción de bloques
Simulación y test
Simulación y test para Hw a implementar
Generación de información para fabricación
Fabricación
Independiente del Hardware
Dependiente del Hardware
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
Diferencia entre los dos tipos de test:
En el primer test se simulará teniendo en cuenta las características físicas que hayamos modelado (retardos, con la sentencia AFTER)
En el segundo test no se tendrán en cuenta esas características descritas, sino que se incluirán aquellas que genere el hardware en el que vamos a implementar el circuito (dependiendo de la tecnología utilizada).
LENGUAJES DE DESCRIPCIÓN DE HARDWARE
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
1. Lenguajes de descripción de hardware. VHDL
1.1. Lenguajes de descripción de hardware1.2. VHDL
1.2.1. Presentación del lenguaje VHDL1.2.2. Objetos, tipos de datos y operadores1.2.3. Sentencias secuenciales1.2.4. Sentencias concurrentes1.2.5. Sentencias estructurales1.2.6. Unidades básicas de diseño1.2.7. Descripción de máquinas de estado1.2.8. Test bench
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
Modelo de estructura: componentes y jerarquía
– Descripción de un dispositivo en VHDL:La entidad o entity: interfaz del dispositivo con el exteriorLa arquitectura o architecture: descripción de la funcionalidad que realiza el dispositivo.
– Cualquier elemento modelado en VHDL puede ser usado como un componente (component) de otro diseño.
AND
OR
a
b
d s
entity FUNC isport(a,b,d: in bit;
s: out bit);end FUNC;
architecture A_FUNC of FUNC isbegin
s<= d OR (a AND b) AFTER 4 ns;end A_FUNC;
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
– El hardware por definición es concurrente: formado por un mar de puertas lógicas, funcionando en paralelo.
– Elemento básico para modelar el paralelismo: proceso (process).Describe comportamientos y el código interno se ejecuta de forma secuencial.Todos los procesos de una descripción se ejecutan de forma paralela.
– El elemento necesario para comunicar dos procesos es la señal(signal):
Objeto que puede ir variando su valor a lo largo de lasimulación.Tiene asociado una o varias colas de eventos (drivers) quedefine su comportamiento a lo largo del tiempo.
– Cada proceso tiene un conjunto de señales a las que es sensible.
Modelos de concurrencia: procesos, señales y eventos
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
architecture ACIR...AND2: process (a,b)
beginc<=a and b after2 ns;
end process AND2;
Modelos de concurrencia: procesos, señales y eventos
a<=1
1. Se para la simulación2. Se calcula el resultado de los procesos (AND2)3. Se programan las colas de eventos de las señales4. El valor de c será 1 dentro de 2ns
2 ns
abdce
d<=01. Se para la simulación2. Se calcula el resultado de los procesos (OR2)3. Se programan las colas de eventos de las señales4. El valor de e será 0 dentro de 1.5ns1.5 ns
c<=1
1. Se para la simulación2. Se calcula el resultado de los procesos (OR2)3. Se programan las colas de eventos de las señales4. El valor de e será 1 dentro de 1.5ns
1.5 ns
En ese instante de la simulación la señal d tiene dos eventos futuros programados.
e<=0
e<=1
En estos eventos se pararía la simulación, pero al no haber procesos sensibles a esas señales, no pasaría nada más.
OR2: process (c,d)begin
e<=c or d after 1.5 ns;end process OR2;
...end ACIR;
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
– La simulación de un modelo en VHDL es una simulación dirigida por eventos.
– El simulador mantiene unas listas de eventos (cambios en las señales internas del modelo y también de las entradas y salidas)que se han producido a lo largo de la simulación.
– El ciclo de simulación tiene dos etapas:Primera etapa: las señales actualizan su valor. Esta etapa finaliza cuando todas las señales que debían obtener unnuevo valor en el tiempo actual se simulación han sido actualizadas.Segunda etapa: los procesos que se activan (porque hacambiado alguna de las señales a la que son sensibles) seejecutan hasta que se suspenden.Cuando todos los procesos se hayan suspendido, el tiempode simulación avanza hasta el siguiente instante de tiempoen el que haya un evento programado.
Modelos de tiempo: ciclo de simulación
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
– Importante: siempre hay un cierto retardo entre el momento en que un proceso coloca un nuevo valor en la cola de eventos de una señal y el momento en el que esta señal toma el valor programado en la cola de eventos.
Variable: actualiza su contenido en cuanto se ejecuta una asignación sobre ella.Señal: se actualiza sólo cuando todos los procesos se hayan ejecutado y estén suspendidos.
Modelos de tiempo: ciclo de simulación
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
1. Lenguajes de descripción de hardware. VHDL
1.1. Lenguajes de descripción de hardware1.2. VHDL
1.2.1. Presentación del lenguaje VHDL1.2.2. Objetos, tipos de datos y operadores1.2.3. Sentencias secuenciales1.2.4. Sentencias concurrentes1.2.5. Sentencias estructurales1.2.6. Unidades básicas de diseño1.2.7. Descripción de máquinas de estado1.2.8. Test bench
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
OBJETOS, TIPOS DE DATOS Y OPERADORES
Objetos del VHDL? Constantes
constant identificador {, ...}: tipo [:=expresión];? Variables
variable identificador {, ...}: tipo [:=expresión];? Señales
signal identificador {, ...}: tipo [:=expresión];? Ficheros
file identificador {, ...}: tipo_fichero [is dirección "nombre"];
Tipos de datosDetermina el conjunto de valores que puede asumir y las operaciones que se podrán realizar.Declaración de tipos de datos:
type identificador is definición_tipo
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
Tipos de datosstd_logic
Definido en el paquete std_logic_1164 de la biblioteca IEEElibrary IEEE;use IEEE.std_logic_1164.all;
Su definición:type std_logic is ('U', - No inicializado
'X', - Forzando desconocido'0', - Forzando cero'1', - Forzando uno'Z', - Alta impedancia'W', - Desconocido débil'L', - Cero débil'H', - Uno débil'-'); - Redundante
OBJETOS, TIPOS DE DATOS Y OPERADORES
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
Operadores
VHDL tiene predefinidos los operadores aritméticos, relacionales, lógicos y de concatenación de cualquier lenguaje de programación común (+,-,*, or, and,...) más los operadores de desplazamiento para vectores unidimensionales.
OBJETOS, TIPOS DE DATOS Y OPERADORES
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
1. Lenguajes de descripción de hardware. VHDL
1.1. Lenguajes de descripción de hardware1.2. VHDL
1.2.1. Presentación del lenguaje VHDL1.2.2. Objetos, tipos de datos y operadores1.2.3. Sentencias secuenciales1.2.4. Sentencias concurrentes1.2.5. Sentencias estructurales1.2.6. Unidades básicas de diseño1.2.7. Descripción de máquinas de estado1.2.8. Test bench
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
SENTENCIAS SECUENCIALES
Aquellas que nos permiten describir o modelar la funcionalidad de un componente.Pueden encontrarse en los procesos o en los cuerpos de los subprogramas.Pueden ser:
Sentencias de asignación (a señal y a variable)Sentencias condicionales (if, case)Sentencias iterativas (loop, exit, next)Otras sentencias (wait, assert, null)Llamadas a subprogramas
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
Sentencias secuenciales:
Pueden ser:Sentencias de asignación (a señal y a variable)Sentencias condicionales (if, case)Sentencias iterativas (loop, exit, next)Otras sentencias (wait, assert, null)Llamadas a subprogramas
SENTENCIAS SECUENCIALES
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
Asignación a señalSintaxis
nombre_señal<= valor {after expresion_tiempo}
Al ejecutarse una de estas sentencias, no se está modificando el contenido de la señal, sino que se está modificando el contenido de su cola de eventos: se está proyectando un posible cambio del valor futuro de la señal, que algunas veces puede no llegar a producirse.
process (a,b)begin
a<=b;b<=a;
end process;
Se intercambia el valor de las dos señales, ya que cuandose ejecuta la segunda sentencia, el valor de a aún no reflejala asignación a<=b.
Sentencias secuenciales de asignación
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
Asignación a variable:
Reemplaza el valor actual de la variable con el valor especificado por una expresión.Sintaxis
nombre_variable := expresion;
La variable toma el nuevo valor en el momento de ejecutarse la sentencia, de forma que las sentencias que se ejecuten a continuación ya pueden ver ese nuevo valor.
a:=b;b:=a;
No se intercambian las dos variables.Tmp := a;a:=b;b:=Tmp;
Ahora si.
Sentencias secuenciales de asignación
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
La sentencia ifSintaxis
if condicion then sentencias_secuenciales{elsif condicion then sentencias_secuenciales}[else sentencias_secuenciales]end if;
La sentencia caseSintaxis
case expresion iswhen valor => sentencias_secuenciales;{when others=> sentencias_secuenciales;}end case;
La sentencia loopSintaxis
[while condicion_boolena | for control_repeticion] loopsentencias secuencialesend loop;
Sentencias condicionales e iterativas
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
1. Lenguajes de descripción de hardware. VHDL
1.1. Lenguajes de descripción de hardware1.2. VHDL
1.2.1. Presentación del lenguaje VHDL1.2.2. Objetos, tipos de datos y operadores1.2.3. Sentencias secuenciales1.2.4. Sentencias concurrentes1.2.5. Sentencias estructurales1.2.6. Unidades básicas de diseño1.2.7. Descripción de máquinas de estado1.2.8. Test bench
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
Las sentencias concurrentes se ejecutan en paralelo.Las encontraremos en arquitecturas de los modelos y no estarán contenidas en ningún proceso.
Sentencia process.Asignación a señal concurrente.Llamada concurrentes a subprogramas.
SENTENCIAS CONCURRENTES
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
La sentencia process
Es una sentencia concurrente que define su comportamiento a través de sentencias secuenciales.Sintaxis
[etiqueta]: process (nombre_señal {, ...})declaraciones
beginsentencias_secuenciales;
end process [etiqueta];
Asignación a señal concurrente
Sintaxisnombre_señal <= forma_onda;
Se comporta de la misma forma que la asignación secuencial. Su principal diferencia radica en que se encuentra en las arquitecturas, en lugar de encontrarse en procesos osubprogramas.Es sensible a las señales que se encuentren a la derecha de laasignación.
SENTENCIAS CONCURRENTES
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
Asignación a señal concurrenteEjemplo
Asignación concurrentea<=b;
Asignación secuencial equivalenteprocess (b)begin
a<=b;end process;
SENTENCIAS CONCURRENTES
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
1. Lenguajes de descripción de hardware. VHDL
1.1. Lenguajes de descripción de hardware1.2. VHDL
1.2.1. Presentación del lenguaje VHDL1.2.2. Objetos, tipos de datos y operadores1.2.3. Sentencias secuenciales1.2.4. Sentencias concurrentes1.2.5. Sentencias estructurales1.2.6. Unidades básicas de diseño1.2.7. Descripción de máquinas de estado1.2.8. Test bench
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
Es el conjunto de sentencias dedicadas a la descripción de estructura del hardware.
Son sentencias concurrentes, ya que se ejecutan en paralelo con cualquier otra sentencia concurrente de la descripción.
Componentes
Para poder usar un componente VHDL se debe:
Declarar el componente
Hacer referencia o copia del componente
SENTENCIAS ESTRUCTURALES
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
Declaración del componente:
component nombre_componente[generic (lista_generic);][port (lista_puertos);]end component [nombre_componente];
La declaración del componente debe coincidir con la declaración de la entidad de dicho diseño: debe tener los mismos puertos, definidos del mismo tipo y dirección.
Referencia o copia del componente:
Es una sentencia recurrente que se ejecuta en paralelo con las demás sentencias concurrentes de la arquitectura.Cada copia o referencia a un componente se ejecutará cada vez que se produzca un evento en alguna de las señales conectadas a sus puertos de entrada o de entrada/salida.
etiqueta_referencia: nombre_componente[generic map (lista_asociación);][port map(lista_asociación);]
Componentes
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
Declaración “Generate”:
Es una sentencia recurrente que se ejecuta en paralelo con las demás sentencias concurrentes de la arquitectura. Se usa para describir estructuras repetitivas de componentes: matrices de componentes:
architecture SUM16_ARCH of SUM16 iscomponent FAport(A,B,CIN: in std_logic;S,COUT: out std_logic );
end component;signal CARRY : std_logic_vector (16 downto 0);
beginSUMA : for I in 0 to 15 generateCELL : FA port map (A16(I), B16(I), CARRY(I),
S16(I), CARRY(I+1));end generate SUMA;
CARRY(0) <= '0';OVF <= CARRY(16);
end SUM16_ARCH;
Matrices de componentes
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
1. Lenguajes de descripción de hardware. VHDL
1.1. Lenguajes de descripción de hardware1.2. VHDL
1.2.1. Presentación del lenguaje VHDL1.2.2. Objetos, tipos de datos y operadores1.2.3. Sentencias secuenciales1.2.4. Sentencias concurrentes1.2.5. Sentencias estructurales1.2.6. Unidades básicas de diseño1.2.7. Descripción de máquinas de estado1.2.8. Test bench
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
UNIDADES BÁSICAS DE DISEÑO
Cinco tipos de unidades de diseño:La declaración de entidad (entity)La arquitectura de una entidad (architecture)La configuración (configuration)La declaración de un paquete (package declaration)El cuerpo del paquete (package body)
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
Declaración de entidadDefine la interfaz del dispositivo con su entorno.Sintaxis:
entity identificador is[genéricos][puertos][declaraciones][begin sentencias]end [entity][identificador];
Ejemploentity mux21 isport ( a : in std_logic;
b : in std_logic;crtl : in std_logicz : out std_logic);
Entidad
abc
z
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
Define la funcionalidad de la entidad que representa.Describe un conjunto de operaciones sobre lasentradas de la entidad que determinan el valor de las salidas en cada momento.Sintaxis
architecture identificador of identificador_entidad is[declaraciones]begin[sentencias concurrentes]
end [architecture][identificador];
Arquitectura
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
Define la funcionalidad del dispositivo mediante un algoritmo ejecutado secuencialmente.No se hace nunguna referencia a la estructura que se seguirá para implementar el algoritmo en hardware.
Arquitectura: estilo algorítmico
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
Refleja la funcionalidad de un dispositivo mediante un conjunto de ecuaciones ejecutadas concurrentemente, que determinan el flujo que van a seguir los datos entre módulos encargados de implementar las operaciones.
Existe una correspondencia directa entre el código y su implementacion hardware.
Arquitectura: estilo flujo de datos
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
Consiste en definir la arquitectura como un conjunto de componentes interconectados mediante señales.No incluye ningún tipo de funcionalidad.
Arquitectura: estilo estructural
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
1. Lenguajes de descripción de hardware. VHDL
1.1. Lenguajes de descripción de hardware1.2. VHDL
1.2.1. Presentación del lenguaje VHDL1.2.2. Objetos, tipos de datos y operadores1.2.3. Sentencias secuenciales1.2.4. Sentencias concurrentes1.2.5. Sentencias estructurales1.2.6. Unidades básicas de diseño1.2.7. Descripción de máquinas de estado1.2.8. Test bench
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
DESCRIPCIÓN DE MÁQUINAS DE ESTADO
Máquina de Moore:
Máquina de Mealy:
CIRC.COMB.
ENTRADABIESTABLES
CIRC.COMB.SALIDA
CIRC.COMB.
ENTRADASALIDA
BIESTABLES
St
StEt
Et
Normalmentemás compacta
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
Estilo explícito 1.
La máquina de estado se describe utilizando:Un proceso combinacional para describir la función del próximo estado y las asignaciones de salida .Un proceso secuencial para describir las asignaciones sobre el registro de estados en la transición activa de la señal de reloj.
entity FSM isport (reloj, reset: in std_logic;
x1, ... xn : in std_logic;z1, ... zm : out std_logic);
end FSM;
DESCRIPCIÓN DE MÁQUINAS DE ESTADO
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
DESCRIPCIÓN DE MÁQUINAS DE ESTADO
Estilo explícito e1
architecture e1 of FSM istype estados is (s0, ... sp);signal estado: estados;signal nxt_estado: estados;
beginprocess (estado, x1, ... xn)begin
case s0 => -- acciones del estado so:--asignación de est. próximo--asignaciones de salida
case sp =>...
end case;end process;
process (reset, reloj)beginif (reset='0') then
estado <=s0;elsif (relok'event and reloj ='1') then
estado<=nxt_estado;end if;end process;
end e1;
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
DESCRIPCIÓN DE MÁQUINAS DE ESTADO
Ejemplo
entity FSM isport( CLK, RESET, X : in std_logic;
Z : out std_logic);end FSM;
architecture E1 of FSM is
type ESTADOS is (S0, S1, S2, S3);signal ESTADO, NXT_ESTADO: ESTADOS := S0;
begin
process (RESET, CLK)begin
if RESET = '0' then ESTADO <= S0;elsif (CLK'event and CLK='1') thenESTADO <= NXT_ESTADO;
end if;end process;
process (ESTADO, X)begin
case ESTADO iswhen S0 => Z <= '0';
if X='0' then NXT_ESTADO <= S1;else NXT_ESTADO <= S2;
end if;when S1 => Z <= X;
NXT_ESTADO <= S0;when S2 => Z <= '0';
if X='0' then NXT_ESTADO <= S1;else NXT_ESTADO <= S3;
end if;when S3 => z <= '1';
if X='1' then NXT_ESTADO <= S1;end if;
end case;end process;
end E1;
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
Estilo explícito 2
Se describe la máquina de estados utilizando un único proceso secuencial con una sentencia de espera de reloj.
Todas las acciones tienen lugar en sincronía con la señal de reloj, por lo que sólo es posible describir máquinas de Moore.
DESCRIPCIÓN DE MÁQUINAS DE ESTADO
architecture e2 of FSM istype estados is (s0, ... sp);signal estado: estados;
beginprocessbegin
wait until reloj = '1';if (reset='0') then
estado:= s0;else
case estado iswhen s0=> -- acciones
del estado s0
... -- transición de estado y-- asignaciones de salida
when sp => ...
end case;end if;
end process; end e2;
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
Estilo explícito e2
DESCRIPCIÓN DE MÁQUINAS DE ESTADO
entity FSM isport( CLK, RESET, X : in std_logic;
Z : outstd_logic);
end FSM;
architecture E2 of FSM is
type ESTADOS is (S0, S1, S2, S3);signal ESTADO: ESTADOS := S0;
begin
processbegin
wait until CLK ='1';if RESET ='0' then ESTADO <= S0;
else
case ESTADO iswhen S0 => Z <= '0';
if X='0' then ESTADO <= S1;else ESTADO <= S2;
end if;when S1 => Z <= X;
ESTADO <= S0;when S2 => Z <= '0';
if X='0' then ESTADO <= S1;else ESTADO <= S3;
end if;when S3 => z <= '1';
if X='1' then ESTADO <= S1;end if;
end case;end if;
end process;end E2;
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
Estilo explícito 3
Se describe utilizando un único proceso secuencial con las señales de reloj, reset, registros de estado y entradas en la lista de sensibilidad.
DESCRIPCIÓN DE MÁQUINAS DE ESTADO
architecture e3 of Fsm istype estados is (s0,... sp);signal estado: estados := s0;beginprocess (reset, estado, x1, ...
xn)begin
..... --lógica combinatorialif (reset ='0') then
estado <= s0elsecase estado is
when s0=> -- acciones del estado s0;
-- transición de estado-- asignaciones a registro de entradawhen sp=>...
end case;end if;...
end process;end e3;
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
DESCRIPCIÓN DE MÁQUINAS DE ESTADO
Ejemplo
entity FSM isport( CLK, RESET, X : in std_logic;
Z : out std_logic);end FSM;
architecture E3 of FSM is
type ESTADOS is (S0, S1, S2, S3);signal ESTADO: ESTADOS := S0;
begin
process (RESET, ESTADO, CLK)begin
case ESTADO iswhen S1 => Z<= X;when S3 => Z<= '1';when others => Z<='0';end case;
if RESET = '0' then ESTADO <= S0;elsif CLK'event and CLK = '1' thencase ESTADO is
when S0 => if X='0' then ESTADO <= S1;else ESTADO <= S2;end if;
when S1 => ESTADO <= s0;when S2 => if X='0' then ESTADO <= S1;
else ESTADO <= S3;end if;
when S3 => if X='1' then ESTADO <= S1;end if;
end case;end if;
end process;end E3;
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
Estilo implícito
Se describe la máquina de estados utilizando un proceso con varias sentencias de espera de la señal de reloj.Recibe el nombre de estilo descriptivo implícito debido a que además de los P estados explícitos en la declaración del tipo "estados" de la señal de estado, la descripción incluye los N estados introducidos por las sentencias de espera.
El número de estados total de la máquina es N*P.Sólo es posible describir máquinas de Moore.
DESCRIPCIÓN DE MÁQUINAS DE ESTADO
architecture implicita of FSM istype estados is (s0, ... sp);signal estado: estados :=s0;
beginprocessbegin
....
....wait until reloj ='1';
....wait until reloj='1';....
end process;end implicita;
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
DESCRIPCIÓN DE MÁQUINAS DE ESTADO
Ejemploentity FSM is
port( CLK, RESET, X : in std_logic;Z : out std_logic);
end FSM;
architecture E4 of FSM is-- implicitabegin
processbegin
-- S0wait until CLK ='1';z <= '0';if X='1' thenwait until CLK = '1';
-- S2Z<='0';if X='1' then
wait until CLK ='1';
-- S3Z<='1';while X = '0' loopwait until CLK = '1';Z <= '1';
end loop;end if;
end if;-- S1
wait until CLK = '1';Z <= X;
end process;end E4;
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
DESCRIPCIÓN DE MÁQUINAS DE ESTADO
Para el ejemplo anterior, el diagrama de estados sería:
S0Z=‘0’
S2Z=‘0’
S1Z=X
S3Z=‘1’
X=0
X=1
X=1
X=1 X=0
X=0
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
OTROS TEMAS IMPORTANTES
Simulación de retardo de transporte e inercial (AFTER, TRANSPORT):
Inercial:library IEEE;
USE IEEE.std_logic_1164.ALL;ENTITY buf ISPORT ( a : IN std_logic;
b : OUT std_logic);END buf;ARCHITECTURE buf OF buf ISBEGIN
b <= a AFTER 20 ns;END buf;
Transporte:library IEEE;
USE IEEE.std_logic_1164.ALL;ENTITY delay_line ISPORT ( a : IN std_logic;
b : OUT std_logic);END buf;ARCHITECTURE delay_line OF delay_line ISBEGIN
b <= TRANSPORT a AFTER 20 ns;END buf;
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
OTROS TEMAS IMPORTANTES
Sentencia de espera (WAIT), tres usos:
WAIT FOR: una determinada cantidad de tiempo...WAIT FOR 10 ns;...
WAIT ON: cambios en la señal...WAIT ON a, b;...
WAIT UNTIL: una expresión sea verdadera...WAIT UNTIL clk=‘1’ and clk’event;...
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
OTROS TEMAS IMPORTANTES
TextIO: Input/Output de texto:...PROCESSVARIABLE linea : line;FILE fichout : TEXT IS OUT “xxx.txt";
BEGIN...WRITE(linea, “ A = “);WRITE(linea, A);- - Salida por pantallaWRITELINE(OUTPUT, linea);- - Salida por ficheroWRITELINE(fichout, linea);...
END PROCESS;...PROCESSFILE fichin : TEXT IS IN “yyy.txt";VARIABLE linea : line;
BEGIN...READLINE(fichin, linea);READ(linea, A);...
END PROCESS;...
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
1. Lenguajes de descripción de hardware. VHDL
1.1. Lenguajes de descripción de hardware1.2. VHDL
1.2.1. Presentación del lenguaje VHDL1.2.2. Objetos, tipos de datos y operadores1.2.3. Sentencias secuenciales1.2.4. Sentencias concurrentes1.2.5. Sentencias estructurales1.2.6. Unidades básicas de diseño1.2.7. Descripción de máquinas de estado1.2.8. Test bench
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
TEST BENCH
Un test bench se usa para verificar la funcionalidad del diseño. El test bench esta en el nivel más alto de la jerarquía del diseño. El test bench crea una instancia (una copia) del DUT, lo estimula y comprueba los resultados.
La única característica que diferencia el test bench de un diseño de un circuito es que no tiene entradas y salidas, que genera internamente y secuencialmente una serie de señales con las que estimula la instancia del circuito que está en prueba.
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
TEST BENCH
library ieee ;use ieee.std_logic_1164. all;use std.textio.all;use ieee.std_logic_textio.all;
-- El test bench es una caja negra sin entradas ni salidas que funciona de forma autonomaENTITY FA_TB is END FA_TB ;
ARCHITECTURE FA_TB_arch of FA_TB IS -- Declaración de señales, variables, componentes, funciones, procedimientos que se usaran
COMPONENT FA IS port(A: IN std_logic;B: IN std_logic;CIN: IN std_logic;S: OUT std_logic;COUT: OUT std_logic);END COMPONENT ;
CONSTANT period : time := 50 ns ;
SIGNAL A_IN, B_IN, CIN_IN, COUT_OUT, S_OUT, CLOCK : std_logic := '0' ;SIGNAL done : BOOLEAN := FALSE ;SHARED VARIABLE Cycle : NATURAL := 0 ;
PROCEDURE PrintStatus ISVARIABLE lout : line ; BEGIN
WRITE(lout, Cycle);WRITE(lout, " ");WRITE(lout, CLOCK);WRITE(lout, " A = ") ;WRITE(lout, A_IN) ;WRITE(lout, " B = ") ;WRITE(lout, B_IN) ;WRITE(lout, " CIN = ") ;WRITE(lout, CIN_IN) ;WRITE(lout, " COUT = ") ;WRITE(lout, COUT_OUT) ;WRITE(lout, " S = ") ;WRITE(lout, S_OUT) ;--Por defecto, la salida estandar es la pantallaWRITELINE(OUTPUT, lout) ;
END PrintStatus ;
BEGIN -- En todo momento (Concurrente) se asignan las señales a las entradas/salidas del DFFU1: FA
PORT MAP(A => A_IN,B => B_IN,CIN => CIN_IN,S => S_OUT,COUT => COUT_OUT) ;
ClkProcess: PROCESS(done, CLOCK) -- Proceso (Concurrente) que va marcando el reloj con un periodo fijado por period
BEGINIF (NOT done) THEN
IF (CLOCK = '1') THENCycle := Cycle + 1 ;END IF ;
CLOCK <= NOT CLOCK after period / 2 ;END IF ;
END PROCESS ;TestBench: PROCESS-- Proceso Concurrente que fija los valores de entrada para el test
BEGINwait until (CLOCK = '0') ;A_IN <= '0';B_IN <= '1';CIN_IN <= '0';wait for period * 1 ;CIN_IN <= '1';wait for period * 1 ;done <= TRUE ;WAIT ;
END PROCESS ;Monitor: PROCESS
FILE fichout : TEXT IS OUT "FA.txt";VARIABLE fout : line;BEGIN
if done = TRUE thenwait;
elseWAIT FOR 5 ns; PrintStatus ;
end if;END PROCESS ;
END FA_TB_arch ;
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
VHDL PARA SINTESIS
Proceso: descripción disminuyendo el nivel de abstracción hasta llegar a descripciones puramente estructurales
Cualquier descripción VHDL es sintetizable:
- No tiene por qué ser la síntesis óptima.- La complejidad del circuito dependerá de cómo se haga la descripción.
Mapeado tecnológico. Descripción de los componentes de una determinada librería que representa una determinada tecnología con la que se realizará el circuito físico.
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
VHDL PARA SINTESIS
Restricciones de la descripción:
¿cómo la herramienta de síntesis interpreta las instrucciones VHDL?
Siempre que se pueda hay que facilitar el trabajo al sintetizador.Los fabricantes dan ciertas recomendaciones para las descripciones:
-Evitar cláusulas temporales-Los sintetizadores ignoran/prohiben los retardos en la asignación-No se puede asignar dos valores a una misma señal en la misma sentencia
-Identificar cada puerta con claridad
-Evitar sentencias de espera WAIT. Aunque no esta prohibido pero algunos sintetizadores tienen dificultades. Es mejor utilizar listas de sensibilidad
Universidad Antonio de Nebrija Tecnología electrónica II. Tema 1
VHDL PARA SINTESIS
Restricciones de la descripción:
-Señales de reloj.-Sólo se permite una señal de reloj por proceso-Se debe especificarse claramente el flanco de reloj (clk=‘1’ and clk’event)-Esta condición sólo puede ponerse una vez en el proceso-No se puede poner else en el if en el que se usó la condición
-Utilizar CASE mejor que IF anidados. Las herramientas los sintetizan mejor.
-Utilizar el estilo indicado para las máquinas de estado.
-En sentencias condicionales para descripción combinacional, es obligatorio poner todos los casos de la condición (else, when others..)