• No se han encontrado resultados

END PROCES;

In document U de G - Curso de VHDL (página 94-99)

DESCRIPCIÓN EN VHDL DE CIRCUITOS DIGITALES

END PROCES;

-- lógica combinacional de salida salidas <= "1000" WHEN (state= S1) ELSE

"0110" WHEN (state=S1 AND

entradas="1001") ELSE "1100" WHEN (state=S2) ELSE

"0000" WHEN (state= S2 AND

entradas="0010") ELSE "0011" WHEN (state=S3) ELSE

"0111" WHEN (state=S4) ELSE "0101" WHEN (state= S4 AND

entradas="0110") ELSE "1011"; -- asignación en el estado de

-- reset S0

END comportamental;

EJEMPLO

Elabore la descripción en VHDL del siguiente problema mediante máquina de estados definiendo su diagrama de estados, frecuencia de trabajo y dispositivo a utilizar. Se desea diseñar el circuito de control para lavadora de la siguiente figura.

Figura 4.36

El ciclo de lavado es de la siguiente manera:

1. - Suponiendo que esta vacía al principio, cuando se presione el botón de "INICIO", activo en ALTO, se enciende la válvula de agua fría.

2. - En el momento que el nivel del agua llegue al SENSOR, activo en ALTO, se apaga la válvula de agua fría y se enciende la de agua caliente durante dos minutos.

3. - Después se apaga la válvula de agua caliente y se enciende el motor durante cuatro minutos.

4. - Transcurridos los cuatro minutos, se apaga el motor y se enciende la válvula de desagüe durante tres minutos.

5. - Una vez que se ha vaciado la lavadora se cierra la válvula de desagüe y el ciclo de lavado comenzará nuevamente cuando se vuelva a presionar el botón de inicio.

LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY lavadora IS PORT( clk: IN std_logic; inicio: IN std_logic; sensor: IN std_logic;

vaf: OUT std_logic; vac OUT std_logic; motor: OUT std_logic; des: OUT std_logic );

END lavadora;

ARCHITECTURE state_machine OF lavadora IS

TYPE states IS

(S0,S1,S2,S3,S4,S5,S6,S7,S8,S9,S10);

SIGNAL state, nex_state: states;

SIGNAL outputs: std_logic_vector

(3 DOWNTO 0);

CONSTANT vaf_on: std_logic_vector

(3 DOWNTO 0):="0001";

CONSTANT vac_on: std_logic_vector

(3 DOWNTO 0):="0010";

CONSTANT mot_on: std_logic_vector

(3 DOWNTO 0):="1000";

CONSTANT des_on: std_logic_vector

(3 DOWNTO 0):="0100";

CONSTANT all_off: std_logic_vector

(3 DOWNTO 0):="0000";

BEGIN

-- REGISTRO DE ESTADO

PROCESS(clk, inicio, next_state)

BEJÍN

IF inicio = '0' THEN

state <= S10; -- todo apagado

ELSIF clk'event AND clk = '1' THEN

state <= next_state;

END IF;

END PROCES;

-- SIGUIENTE ESTADO

PROCESS(clk, state, sensor)

BEGIN

CASE state IS WHEN S0 =>

IF sensor='0' THEN next_state <= S0; ELSIF sensor='1' THEN next_state <= S1; END IF; WHEN S1 => next_state <= S2; WHEN S2 => next_state <= S3; WHEN S3 => next_state <= S4; WHEN S4 => next_state <= S5; WHEN S5 => next_state <= S6; WHEN S6 => next_state <= S7; WHEN S7 => next_state <= S8; WHEN S8 => next_state <= S9; WHEN S9 => next_state <= S10; WHEN S10 => IF inicio = '0' THEN next_state <= S10; ELSE next_state <= S0; END IF; WHEN OTHERS => NULL; END CASE; END IF; END PROCESS;

-- LÓGICA COMBINACIONAL DE SALIDA outputs <= all_off WHEN (state=S10) ELSE

vaf_on WHEN (state=S0 AND sensor='0') ELSE vac_on WHEN (state=S1) ELSE vac_on WHEN (state=S2) ELSE mot_on WHEN (state=S3) ELSE mot_on WHEN (state=S4) ELSE mot_on WHEN (state=S5) ELSE mot_on WHEN (state=S6) ELSE des_on WHEN (state=S7) ELSE des_on WHEN (state=S8) ELSE des_on WHEN (state=S9) ELSE all_off;

83

I M P L E M E N T A C I Ó N D E

F I L T R O S D I G I T A L E S

E N F P G A ' S

V

V

5.1 INTRODUCCIÓN

Un FPGA es un dispositivo cuyas características pueden ser modificadas, manipuladas o almacenadas mediante programación. La arquitectura de un FPGA (Field Programmable Gate Array) consiste en arreglos de múltiples celdas lógicas las cuales se comunican unas con otras mediante canales de conexión verticales y horizontales. Cada celda lógica contiene arreglos de compuertas lógicas AND y OR, así como un número definido de registros y multiplexores. Mediante estos recursos es posible implementar funciones matemáticas y de almacenamiento de datos. Dada la gran densidad de compuertas con las que cuenta un FPGA, es posible implementar sistemas digitales muy complejos, entre los que destaca el filtrado digital. Además, en un FPGA es posible realizar modificaciones de último minuto sin que esto implique grandes alteraciones en el hardware o en el software.

5.2 ANTECEDENTES

En las últimas tres décadas la ingeniería se ha visto revolucionada en el campo del procesamiento digital de señales, donde los filtros digitales forman un apartado muy importante, ya que estos se encuentran en una extensa gama de aplicaciones. Desde procesamiento de audio y vídeo hasta control de motores; donde la utilización del filtrado digital incluye ventajas como:

1) El ancho de banda y la calidad del filtro no están necesariamente relacionadas.

2) Al utilizar dispositivos programables, la función de transferencia de el filtro puede ser transformada sin más modificaciones que el cambio de los coeficientes en memoria.

3) Variables como temperatura o alteraciones en el voltaje no afectan la funcionalidad del circuito.

4) El costo de la aplicación es relativamente bajo.

5.3 MARCO TEÓRICO

El término filtro se utiliza comúnmente para describir un dispositivo que discrimina aquello que pasa a través de él. Así, por ejemplo, un filtro de aire permite que sólo pase aire a través de éste, evitando que las partículas de polvo presentes en el aire lo atraviesen. Un filtro digital es un sistema lineal e invariante en el tiempo (LTI) que modifica el espectro en frecuencia de la señal de entrada X(w), según la respuesta que tenga en frecuencia H(w) (conocida como función de transferencia), para dar lugar a una señal de salida con espectro: Y(w) = H(w) * X(w). En cierto sentido, H(w) actúa como una función de ponderación o función de conformación espectral para las diferentes componentes frecuenciales de la señal de entrada. Los sistemas LTI se clasifican como: FIR (finite impulse response) que se caracterizan pos ser sistemas no recursivos, e IIR (infinite impulse response) que se distinguen por tener retroalimentación en la señal salida.

5.3.1 FILTROS FIR

Un filtro FIR de orden M se describe mediante la ecuación en diferencias: y(n) = b0 x(n) + b1 x(n- 1) + b2 x(n-2) + bM x(n-M), donde la secuencia bk son los coeficientes del filtro. En este tipo de filtrado no existe retroalimentación. Además, la respuesta al impulso H(w), es de duración finita ya que si la entrada se mantiene en cero durante M periodos consecutivos la salida también será cero. Algunas de las ventajas de este tipo de filtros son las siguientes:

1) Un filtro FIR puede ser diseñado para tener fase lineal.

2) Siempre son estables porque son hechos únicamente con ceros en el plano complejo.

3) Los errores por desbordamiento no son problemáticos porque la suma de productos en un filtro FIR es desempeñada por un conjunto finito de datos.

4) Un filtro FIR es fácil de comprender e implementar.

85

Figura 5.1 Estructura para la realización de filtros IIR

5.3.2 FILTROS IIR

Los filtros IIR corresponden directamente al equivalente analógico. Una forma de diseñar filtros IIR es creando la función de transferencia deseada en el dominio analógico para transformarla al dominio z y después calcular los coeficientes del filtro IIR mediante los cuales se obtiene la siguiente ecuación en diferencias: y(n) = b0 x(n)

+ b1 x(n – 1) + b2 x(n – 2) + ... bM x(n –M) - a1 y(n

– 1) - a2 y(n – 2) - ....- aN y(n – N), donde las

variables ak y bk son los coeficientes del filtro.

Dentro de las ventajas que ofrecen los filtros IIR sobre los tipo FIR encontramos:

1) Los filtros IIR requieren menos memoria y menos instrucciones para implementar su función de transferencia.

2) Un filtro IIR se diseña mediante el calculo de polos y ceros en el plano complejo. El uso de polos confieren a un filtro IIR la capacidad de implementar funciones de transferencia que es imposible realizar mediante filtros FIR.

3) Es posible trasladar un filtro IIR a un modelo analítico.

Sin embargo, algunas consideraciones que se deben considerar en la implementación de filtros IIR son las siguientes:

1) Los filtros IIR no son necesariamente estables, es tarea del diseñador buscar la estabilidad del sistema.

2) Los filtros IIR producen en general distorsión de fase.

3) La posibilidad desbordamiento de resultados en la operaciones realizadas deben ser consideradas ya que un filtro IIR se implementa mediante sumas de productos que están basadas en una suma infinita.

La implementación de filtros IIR puede hacerse de varias formas. Asumiendo el comportamiento lineal e invariante en el tiempo del sistema, la ecuación en diferencias de un filtro puede ser manipulada matemáticamente para obtener una realización con N elementos de memoria, (N + M

+ 1) multiplicadores y N sumadores, conocida

Figura 5.2 Implementación de filtros IIR mediante FDII-T

5.4

METODOLOGÍA DE DISEÑO

In document U de G - Curso de VHDL (página 94-99)

Documento similar