sábado, 26 de enero de 2008

Implementación de un FPGA a una Máquina Expendedora de Refresco


Basanta Ingrid
dergrid@hotmail.com
Santiago Lemus
santia90@hotmail.com
Universidad Nacional Experimental Politécnica
“Antonio José de Sucre”
Vicerrectorado Puerto Ordaz
Departamento de Ingeniería Electrónica
Maestría de Ingeniería Electrónica, Cátedra Electrónica Integrada



Resumen: En el presente trabajo se realiza la programación e implementación de una FPGA para el control de una máquina expendedora de refresco, la cual no acumula dinero ni da cambio. Primeramente se describe el proceso de expendio del refresco de la máquina, luego se presenta el diagrama de estado el cual se utiliza para obtener las ecuaciones booleanas y secuenciales del sistema, que a su vez permitirá construir el circuito lógico y desarrollar la codificación en VHDL para programar la FPGA Xilinx XC2S200E. Antes de realizar la implementación se presenta la simulación del código en VHDL, mediante el software ModelSim XE III 6.2g de la empresa Xilinx. Los resultados muestran que el código desarrollado se ajusta perfectamente a la lógica establecida para el funcionamiento de la máquina de refresco.
Palabras Claves: Máquina de estado, expendedora de refresco, FPGA, simulación, programación en VHDL.


1. INTRODUCCIÓN.

Actualmente con los avances tecnológicos la automatización de equipos ha crecido en la industria, hogares, entre otros. Las dificultades más grandes que se pueden encontrar en la automatización es el tiempo de respuesta de los equipos, desde el momento en que se da la orden hasta que se ejecuta. En ese sentido los dispositivos Lógicos programables (PLD), en especial los FPGA resuelven en gran medida las constantes de tiempo debido a sus altas velocidades de respuestas dado que su propagación es a nivel lógico.

Como tarea de fin de curso de la asignatura Electrónica Digital se presenta en este trabajo la programación e implementación de un FPGA en una máquina expendedora de refresco la cual posee las siguientes características: la máquina solo puede admitir dos tipos de monedas y un solo tipo billete. El costo del refresco es de 2,5 Bs.F y la máquina solo expende un tipo de refresco.

En el trabajo se presentan las ecuaciones y el circuito lógico del problema a modelar, se realiza el código en VHDL y la simulación del dispositivo utilizando el software Xilinx ISE 9.2i y el ModelSim XE III 6.2g de la empresa Xilinx.


2. DESARROLLO.

2.1. Descripción del Proceso.

Como se mencionara anteriormente la máquina expende un solo tipo de refresco siempre y cuando el usuario introduzca una cantidad de dinero igual o superior a BsF 2,5 dado que la máquina no da vuelto ni acumula la cantidad. Se pueden introducir dos tipos de monedas y un solo tipo de billete, donde las monedas son de 0,50 BsF y 1 BsF, y el billete de 2 BsF.

2.3. Diagrama de Estado.

Para identificar las monedas la máquina posee un circuito lógico de reconocimiento de las monedas y billetes el cual activa las señales A y B según como se muestra en la Tabla 1.


Ahora bien, a medida que se introducen monedas a la expendedora de refresco, el estado lógico de la misma debe ir cambiando para identificar cuantas monedas ha introducido el consumidor. Estos estados se pueden definir mediante tres bits, los cuales son identificados en la Tabla 2 por Q1, Q2 y Q3.



Las señales de los estados deben ser generadas por tres Flip-Flops; donde el estado VACÍO significa que no hay monedas en la máquina, el estado BSF05 señala que hay 0,5 BsF., el estado BSF10 indica que existe 1,0 BsF, el estado BSF15 que hay 1,5 BsF., el estado BSF20 que hay 2,0 BsF. y el estado final del proceso se representa por SALIDA, el cual indica que la condición de pagó se ha cumplido ejecutando la salida del refresco y reinicio la máquina al estado VACÍO.
Para ilustrar mejor los estados del sistema se hace uso del diagrama de estado de la máquina de Moore, mostrado en la Figura 1, estos son una representación gráfica que indican la secuencia de los estados que se presentan en el circuito secuencial, teniendo en cuenta las entradas y las salidas. Vale la pena comentar que al activarse la señal RST la máquina de estado se va al estado VACÍO.



2.2. Ecuaciones Booleanas y Circuito Lógico.
Del diagrama de estado se obtiene la tabla de transición de estado (Tabla 3), donde se especifican las salidas D1, D2 y D3 de los tres Flip-Flop tipo D y la salida S para las diferentes combinaciones de entrada. Vale la pena comentar que las filas sombreadas en la Tabla 3 representan los puntos en los cuales la máquina suministra el refresco y regresa al estado vacio.

Las ecuaciones booleanas secuenciales resultantes son:



Finalmente a partir de las ecuaciones booleanas se construye el circuito lógico secuencial mostrado en la Figura 2.

Figura 2. Circuito Lógico Secuencial
2.3. Codificación en VHDL.
A partir del circuito lógico secuencial se puede obtener la codificación en VHDL de nuestro sistema (también se puede obtener la codificación en Verilog) utilizando el software Xilinx ISE 9.2i. Es posible también obtener la codificación a partir del diagrama de estado desarrollado en el mismo software Xilinx. La codificación en VHDL para el sistema es la siguiente:
_______________________________________________________
-- Module Name: MaqRefresco - Behavioral
-- Project Name: Ingrid Basanta
-- Target Devices: FPGA XC2S200E
---------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
---- Uncomment the following library declaration if instantiating
---- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;
entity MaqRefresco is
Port ( A : in STD_LOGIC;
B : in STD_LOGIC;
RST : in STD_LOGIC;
CLK : in STD_LOGIC;
S : out STD_LOGIC );
end MaqRefresco;
architecture Behavioral of MaqRefresco is
type ESTADOS is (VACIO, BSF05, BSF10, BSF15, BSF20, SALIDA);
attribute syn_encoding: string;
attribute syn_encoding of ESTADOS: type is "sequential";
signal ESTADOA,ESTADOSIG: ESTADOS;
begin
process (RST,CLK) --Inicia el proceso secuencial
begin
if (RST='1') then
ESTADOA <= VACIO;
elsif (CLK'event and CLK='1') then
ESTADOA <= ESTADOSIG;
end if;
end process;
process (ESTADOA,A,B)
begin
ESTADOSIG <= ESTADOA;
case ESTADOA is
when VACIO => if A='0' and B='1' then ESTADOSIG<=BSF05;
elsif A='1' and B='0' then ESTADOSIG<=BSF10;
elsif A='1' and B='1' then ESTADOSIG<=BSF20;
end if;
when BSF05 => if A='0' and B='1' then ESTADOSIG<=BSF10;
elsif A='1' and B='0' then ESTADOSIG<=BSF15;
elsif A='1' and B='1' then ESTADOSIG<=SALIDA;
end if;
when BSF10 => if A='0' and B='1' then ESTADOSIG<=BSF15;
elsif A='1' and B='0' then ESTADOSIG<=BSF20;
elsif A='1' and B='1' then ESTADOSIG<=SALIDA;
end if;
when BSF15 => if A='0' and B='1' then ESTADOSIG<=BSF20;
elsif A='1' then ESTADOSIG<=SALIDA;
end if;
when BSF20 => if A='1' or B='1' then ESTADOSIG<=SALIDA;
end if;
when SALIDA => ESTADOSIG<=VACIO;
end case;
end process;
S <= '1' when (ESTADOA = SALIDA) else '0';
end Behavioral;
__________________________________________________

2.4. Simulación.
A partir de la codificación en VHDL se puede simular el comportamiento del sistema para diferentes señales de entrada A y B.
La Figura 3 muestra el comportamiento del sistema cuando se introduce el dinero en la siguiente secuencia BsF. 0,5; BsF. 1,0 y BsF. 2,0; justo cuando se introduce el billete de BsF. 2,0 se genera la salida del refresco, dado que el pagó supera el valor requerido por la máquina.

Figura 3. Comportamiento para la secuencia BsF. 0,5; BsF. 1,0 y BsF. 2,0


Para una secuencia de BsF. 1,0, BsF. 1,0 y BsF. 0,5 el comportamiento del sistema responde a la Figura 4, donde se observa que después que la máquina ha acumulado BsF. 2,5 se produce la señal de salida para expender el refresco.
Figura 4. Comportamiento para la secuencia BsF. 1,0; BsF. 1,0 y BsF. 0,5.

Finalmente se muestra la Figura 5 el comportamiento de la máquina para las secuencias 2; 2 y 0,5; 2, donde se observa que la salida del refresco responde de manera muy precisa a las condiciones establecidas, de que el refresco se expende una vez que el pagó es mayor o igual a BsF. 2,5.


Figura 5. Comportamiento para la secuencia 2; 2 y 0,5; 2.


2.5. Implementación.

Una vez probado el código mediante la simulación se procedió a realizar la implementación en la FPGA Xilinx XC2S200E utilizando el mismo software, donde los pines de conexión para las entradas y salidas son:

A: T11
B: L14
CLK: T9
RST: M13
S: T13
En la Figura 6 se muestra el diagrama esquemático de la FPGA y la arquitectura de conexión de las mismas.
(a)

(b)Figura 6. Esquema de conexión de la FPGA Xilinx XC2S200E. (a) Vista superior de la ubicación de los pines en el encapsulado y (b) arquitectura de conexión.

3. CONCLUSIONES.

- La utilización de los softwares de simulación facilita el diseño de los sistemas de control que utilizan dispositivos lógicos.

- Los diagramas de estados son una herramienta poderosa que permiten generar o desarrollar la programación en VHDL (o en Verilog) de los PLDs, en forma muy sencilla.

- La utilización de software de la empresa que fabrica la FPGA (en éste caso Xilinx) permite realizar la implementación con bastante sencillez, dado que éste, despues de culminado el proceso genera el código para programar la FPGA e indica los puntos de conexión de la misma.


5. BIBLIOGRAFÍAS.

[1] Tocci Ronald, (1996), "Sistemas Digitales, Principios y Aplicaciones". Prentice Hall, Sexta edición, Máxico. Pag. 833.

[2] Sánchez Inocente, (2007). “Tecnología de Computadores". Disponible: http://www.virtual.unal.edu/. [Consulta: 2007, enero, 15].

[3] Xilinx, Inc,. (2001). "Data Sheets Catalog". Disponible: http://www.xilinx.com/. [Consulta: 2007, diciembre, 27].

1 comentario:

Unknown dijo...

muy buen proyecto