Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Extenso130809 PDF
Extenso130809 PDF
Control
Felipe Santiago Espinosa
Instituto de Electrónica y Computación
(953) 53 202 14 Ext. 200
fsantiag@mixteco.utm.mx
Resumen
Este trabajo está relacionado con el desarrollo de módulos, para la evaluación de algoritmos
de control, en una tarjeta Spartan 3E Starter Board. Dicha tarjeta contiene un FPGA Spartan
3E de Xilinx y, además, incluye un DAC, un ADC, LCD y diversos periféricos de
entrada/salida. Sin embargo, el DAC y el ADC utilizan una interfaz SPI (Serial Port
Interfaz), lo que implica que para obtener o generar una señal analógica se requiere de un
módulo secuencial que maneje esta interfaz. Se desarrollaron, en VHDL, los módulos
necesarios para el manejo del LCD y de los distintos periféricos de entrada/salida
empleados, así como de los algoritmos de control evaluados. Se presentan resultados
experimentales de las pruebas realizadas con la plataforma desarrollada en conjunto con un
sistema de control de temperatura.
1. Introducción
2. Organización de la Plataforma
Interfaz_SPI DAC LTC 2624 AMP LTC 6912-1 ADC LTC 1407 A1
ADC_CONV
D_OUT D_IN
12 14
El módulo Interfaz_Usuario tiene por objetivo manipular la pantalla LCD para mostrar 3
datos importantes en cualquier sistema de control: La referencia, el valor actual de la planta
y el error. Con este módulo también se maneja al botón rotatorio e interruptores, necesarios
para definir la referencia y los LED’s, únicamente para mostrar el signo del error. El LCD
se emplea utilizando una interfaz de 4 bits. En la figura 4 se muestran sus entradas y
salidas, relacionadas con los periféricos correspondientes.
Interfaz_Usuario
LCD
8
switch_Port LCD_Port 8
(16 x 2)
8
rotatory_Port LED_Port 8
12 Act_Port Err_Port 12
El módulo Algoritmo_Control recibe como entradas la magnitud (12 bits) y signo del error
para que, con base en el algoritmo programado genere la señal que actuará sobre la planta
(12 bits). El error proviene del módulo Interfaz_Usuario y la salida que actúa sobre la
planta lo hace a través del módulo Interfaz_SPI.
En la figura 5 se muestra la relación existente entre los tres módulos que conforman la
plataforma desarrollada en el FPGA.
Interfaz_Usuario Algoritmo_Control Interfaz_SPI
3. Módulo Interfaz_SPI
SS
Puesto que son 3 los dispositivos a manejar y el número de bits difiere entre ellos, para cada
uno se requirió de un registro de desplazamiento con sus bits de carga y desplaza, luego,
un módulo de control se encarga de habilitarlos e ir encausando la información a la terminal
de salida (MOSI). En la figura 7 se observa la organización del módulo Interfaz_SPI. Todos
los componentes se desarrollaron en VHDL.
U1
clk clk DOut
MOSI
load
shift
AMP_shift
U5
U2
U4
clock ADC_CONV AD_CONV
D_Out(11:0) Din(11:0) Dout
clk fin1 fin1 AMP_CS AMP_CS
clk
inc fin2 fin2 DAC_CLR DAC_CLR
load
rst fin3 fin3 DAC_CS DAC_CS
shift
reset capture
contador
DAC_shift cnta
rst
load
rst_cnt
U3 sck SCK
sel_sal
MISO MISO Dat_par(13:0) AMP_SHDN
shift
capture
GND
clk control
shift U7
ADC_shift invertido(13:0) normal(13:0) D_In(13:0)
recorre
El contador indica al control cuando se han realizado los desplazamientos requeridos por
cada uno de los dispositivos.
El control es quien irá generando las tramas SPI e irá activando a los dispositivos para que
solo trabaje uno a la vez. En la figura 8 se muestra la trama empleada para el DAC. Para
conocer el estado de las señales y el número de bits de cada componente, es necesario
revisar sus hojas de especificaciones [6, 7, 8].
Fig. 8 Trama utilizada para el manejo del DAC
INICIO AMP
DAC ADC
Esto significa que cada iteración en el lazo infinito va a emplear 134 ciclos de reloj. Puesto
que el FPGA trabaja a una frecuencia de 50 MHz, las conversiones se están realizando a
una frecuencia de 373.134 KHz.
4. Módulo Interfaz_Usuario
Requiere de un único bloque de RAM para formar una ROM en donde es posible
almacenar un programa de hasta 1024 instrucciones. Los programas con requerimientos
mayores pueden ser redireccionados de manera que utilicen múltiples procesadores, cada
uno con su respectivo bloque de memoria, para distribuir tareas en diversos sistemas. Su
desempeño es de aproximadamente 43 a 66 millones de instrucciones por segundo (MIPS,
Millions Instruction Per Second ) y el núcleo puede acondicionarse para su síntesis en
VHDL o Verilog.
En relación con el LCD, el programa que comande al Picoblaze podrá disponer de dos
direcciones, una para un puerto de salida y la otra para un puerto de entrada. Sin embargo,
realmente el LCD [9] es conectado con el FPGA a través de un bus bi-direccional de datos,
además de las señales de control, por lo tanto, debe hacerse el acondicionamiento mostrado
en la figura 13.
Para el botón rotatorio también debe hacerse un acondicionamiento de hardware [10], esto
para que los giros se detecten inmediatamente por interrupción, y por el estado de los
botones se conozca la dirección del giro. El eje no está centrado, con ello hace que dos
botones sean presionados en diferente orden, esto se muestra en la figura 14.
La forma inmediata para detectar la dirección de rotación es: Si ‘B’ va a un nivel Alto
mientras ‘A’ está en Bajo, la rotación es a la Izquierda, y si ‘A’ va a un nivel Alto mientras
‘B’ está en Bajo, la rotación es a la Derecha. Sin embargo, la misma irregularidad del eje
hace que se inserten cambios inesperados, por lo que debe establecerse un filtro, de manera
que una vez que se detecte un cambio en una señal, la actividad subsecuente en ella sea
ignorada hasta que ocurra un cambio en la otra señal.
El filtro modifica dos señales internas (q1 y q2), que posteriormente son útiles para indicar
si hubo algún movimiento y su dirección. En la figura 16 se observa como en q1 se aplica
una XNOR, mientras que en q2 una XOR. Anulando los rebotes de los botones.
Estas señales son las que se utilizan para detectar los movimientos y su dirección,
acondicionando el hardware mostrado en la figura 18.
Inicio
Si No
Izquierda?
Referencia = Referencia =
Referencia - swicth_port Referencia + swicth_port
Fin
Inicio
Inicializa al LCD
Referencia = 50 %
Despliega Títulos
Habilita Interrupción
Actual = Act_port
Imprime Actual
Recupera Referencia
Imprime Referencia
Referencia
No Si
>
Actual
Imprime Signo
Imprime Error
Err_port = Error
LED_port = Signo
5. Módulo Algoritmo_Control
No Si
Signo = 0
Fin
8. Conclusiones
[1] Chapman, Ken: “PicoBlaze KCPSM3 8 bit Microcontroller”; Xilinx, Inc; June,
2005.
[2] Digilent Inc., Digital Design Engineer’s Source < http://www.digilentinc.com/ >
[3] Spartan-3E Starter Kit Board User Guide, Xilinx, Inc., version 1.0a, March 9, 2006
[4] ROMERO, René: “Sistemas Digitales con VHDL”; Legaria Ediciones
[5] Xilinx: Prototyping and Development Boards; Spartan-3e Starter Kit Design
Examples, http://www.xilinx.com/products/boards/s3estarter/reference_designs.htm
[6] LTC2624 Quad DAC Data Sheet
http://cds.linear.com/docs/Datasheet/2604fd.pdf
[7] LTC6912 Dual Programmable Gain Amplifiers with Serial Digital Interface
http://cds.linear.com/docs/Datasheet/6912fa.pdf
[8] LTC1407A-1 Serial 14-bit Simultaneous Sampling ADCs with Shutdown
http://cds.linear.com/docs/Datasheet/14071fa.pdf
[9] Chapman, Ken: “Initial Design for Spartan-3E Starter Kit (LCD Display Control)”,
Xilinx Inc., February 2006
[10] Chapman, Ken: “Rotary Encoder Interface for Spartan-3E Starter Kit”, Xilinx Inc.,
February 2006
[11] Manual de usuario del sistema LTR701.
[12] Katsuhiko, Ogata: “Ingeniería de control utilizando Matlab”, Prentice Hall, España,
1998.