Está en la página 1de 18

Plataforma FPGA para el Diseño y Evaluación de Sistemas de

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.

Palabras clave: FPGA, SPI, Picoblaze, VHDL, Sistemas de Control.

1. Introducción

El uso de FPGA's para la implementación de sistemas electrónicos cada vez es más


demandante, por su velocidad de procesamiento y flexibilidad. En este sentido, en el
mercado se ofertan diferentes tarjetas de evaluación y desarrollo, las cuales incluyen una
diversidad de periféricos para aumentar su versatilidad. Un ejemplo es la tarjeta Spartan 3E
Starter Board, manufacturada y distribuida por Digilent Inc [2], en la figura 1 se muestra la
vista superior de esta tarjeta.

Fig. 1 Vista superior de la tarjeta Spartan 3E Starter Board.


Esta tarjeta es una alternativa de bajo costo ($149.00 USD) para el diseño y evaluación de
sistemas de control, principalmente por la inclusión del DAC y ADC. Sus características
principales son [3]:

• FPGA XC3S500E, familia Spartan-3E de Xilinx.


• Memoria Flash de 4 Mbit para configuración.
• CPLD XC2C64A, familia CoolRunner.
• DDR SDRAM de 64 MByte (512 Mbit), interfaz x16, 100+ MHz.
• Memoria Flash 16 MByte (128 Mbit) para aplicaciones.
• Memoria Flash 16 Mbits acceso serial, via SPI.
• Pantalla LCD de 16 caracteres por 2-líneas.
• Puerto PS/2 y Puerto VGA.
• Capa física Ethernet 10/100.
• Dos puertos RS-232 de 9 terminales.
• Interfaz USB para descarga y depuración
• Oscilador de 50 MHz.
• Convertidor Digital a Analógico SPI de cuatro salidas (DAC), con resolución de 12
bits.
• Convertidor Analógico a Digital SPI de dos entradas (ADC) con resolución de 14 bits
y pre - amplificador con ganancia programable.
• Botón rotatorio.

Motivados por el interés práctico de desarrollar sistemas empotrados que permitan la


implementación de algoritmos de control para sistemas físicos reales a bajo costo, en éste
trabajo se presenta el desarrollo de los módulos necesarios en la tarjeta anteriormente
descrita. Este documento está organizado como sigue: en la Sección II se muestra la
organización de la plataforma desarrollada; en la Sección III se presenta el desarrollo de la
interfaz SPI que permite el manejo de los convertidores ADC y DAC; en la Sección IV se
presenta la interfaz de usuario; la Sección V está dedicada al desarrollo del módulo para el
algoritmo de control a evaluar; la Sección VI muestra la plataforma experimental que se
integró para la realización de pruebas; la sección VII presenta los resultados experimentales
obtenidos y finalmente en la sección VIII se dan algunas conclusiones.

2. Organización de la Plataforma

La plataforma se diseñó con base en la metodología Top-Down [4], en el nivel de mayor


jerarquía se tienen los módulos mostrados en la figura 2.
Plataforma FPGA

Interfaz_SPI Interfaz_Usario Algoritmo_Control

Fig. 2 Módulos principales en la plataforma

El módulo Interfaz_SPI establece una interfaz para manipular a 3 dispositivos de la tarjeta,


el DAC, el ADC y el pre-amplificador con ganancia programable. El protocolo SPI
establece un esquema Maestro-Esclavos manejado por 3 señales: MOSI (Master Output,
Slave Input), MISO (Master Input, Slave Output) y SCK (Reloj del Sistema). En este caso
el maestro es el FPGA y los esclavos son: El DAC LTC2624, el ADC LTC1407A-1 y el
pre-amplificador LTC6912-1, todos manufacturados por Linear Technology. Puesto que los
esclavos comparten el bus SPI, además de estas tres señales cuentan con señales propias
para su habilitación, de manera que no existan conflictos para un dispositivo mientras otro
se está utilizando. En la figura 3 se ilustran las conexiones que se establecen entre el
módulo y los esclavos. Sólo se maneja una salida analógica, su valor digital se coloca en
D_OUT, y una entrada analógica, su valor digital es obtenido en D_IN.

Interfaz_SPI DAC LTC 2624 AMP LTC 6912-1 ADC LTC 1407 A1

MISO MOSI SDI SDO DIN DOUT SCK SDO


AMP_DOUT SCK SCK Vout A SCK
DAC_CS CS/LD Vout B VinA A VinA
DAC_CLR CLR Vout C VinB B VinB
DAC_CS Vout D CS/LD
DAC_CLR SHDN CONV

ADC_CONV
D_OUT D_IN
12 14

Fig. 3 Dispositivos manejados por el módulo Interfaz_SPI

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

Fig. 4 Periféricos manejados por el módulo Interfaz_Usuario

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

Act_Port Err_Port Error Planta D_OUT D_IN

Fig. 5 Relación entre módulos dentro del FPGA

3. Módulo Interfaz_SPI

La interfaz SPI basa su operación en registros de desplazamiento. El maestro determina la


velocidad y marca el inicio de la transferencia. Los datos recibidos por el esclavo son
retornados para verificación. Esto se ilustra en la figura 6, donde ss es para seleccionar un
esclavo en particular, dado que pueden ser varios los que comparten la interfaz.

módulo SPI módulo SPI


generador de maestro SCK esclavo
baudios
memoria
procesador unidad de unidad memoria
etc. control de procesador
MOSI control
SPI n ... 3 2 1 0 n ... 3 2 1 0 etc.
registro de desplazamiento registro de desplazamiento SPI
MISO

SS

Fig. 6 Comunicación vía SPI


Este módulo se planteó con base en registros de desplazamiento y un control basado en una
máquina de estados, en [5] se encuentran notas de aplicación en donde se manipula a los
dispositivos SPI empleando al Picoblaze. Se prefirió desarrollar un módulo propio para
aprovechar la frecuencia de 50 MHz generada por el oscilador incluido en la tarjeta,
frecuencia soportada por el ADC y el DAC.

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

Fig. 7 Organización del módulo Intarfaz_SPI

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

El control se basa en una máquina de estados, básicamente se tienen 4 estados jerárquicos,


éstos se muestran en la figura 9. En el estado inicio el control coloca señales inofensivas en
espera que los dispositivos se estabilicen tras un reinicio en la alimentación. Luego se tiene
al estado AMP, el cual incluye la secuencia para configurar al pre-amplificador con una
ganancia unitaria. Posterior-mente se tiene una secuencia infinita entre el estado ADC y el
estado DAC, con lo que se consigue que ambos convertidores trabajen bajo un esquema de
carrera libre.

INICIO AMP

DAC ADC

Fig. 9 Comportamiento del control

El estado jerárquico ADC requiere de 18 estados simples, de los cuales 5 se ejecutan 14


veces, por lo tanto, requiere de 83 ciclos de reloj. El dato digital se captura cuando han
concluido las conversiones. El estado DAC únicamente emplea 7 estados, pero 2 de ellos se
ejecutan 23 veces. Por lo tanto, son necesarios 51 ciclos de reloj, el dato a convertir queda
atrapado durante el proceso de conversión.

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

Este módulo basa su funcionamiento en el procesador Picoblaze. El cual es un procesador


de 8 bits que puede implementarse en dispositivos Spartan-3, Virtex-II o dispositivos más
recientes. También es conocido como KCPSM3, es de distribución libre y fue desarrollado
por Ken Chapman; ingeniero de desarrollo de Xilinx, Inc. Aunque puede ser usado para
procesamiento de datos, generalmente es empleado para aplicaciones que requieren una
compleja máquina de estados. Un factor importante es su tamaño, ocupa solo el 3% de los
recursos en un dispositivo XC3S500 [1].

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.

Su repertorio de instrucciones contiene los comandos suficientes para procesamiento de


datos de 8 bits y está formado por 42 instrucciones con que puede ejecutar instrucciones
lógicas, aritméticas y de transferencia. Incluye memoria de datos, 16 registros de propósito
general, banderas, unidad aritmética lógica (ALU, Aritmethic Logic Unity), una
interrupción externa, la posibilidad de manejar hasta 256 puertos de entrada y 256 puertos
de salida [1].

En la figura 10 se muestra al procesador Picoblaze con su correspondiente memoria de


código. Pueden observarse las señales disponibles para acondicionar puertos. Los puertos
son necesarios para el manejo del LCD, botón rotatorio, interruptores y botones, conocer el
estado actual de la planta (desde el ADC, 14 bits) y proporcionar el valor del error (12 bits).

Fig. 10 El núcleo Picoblaze y su memoria de código

Los puertos se agregan codificándolos en VHDL y en total se requiere de 9, 5 puertos de


entrada y 4 de salida. El estado actual de la planta y el error se maneja en 2 puertos, dado
que los puertos son de 8 bits. En la tabla 1 se listan todos los puertos.
Las direcciones de los puertos de entrada no tienen bits en común con las direcciones de los
puertos de salida, por lo tanto, el acondicionamiento de los 5 puertos de entrada
básicamente se consigue con un multiplexor, como se muestra en la figura 11. La selección
de la entrada se determina con los 3 bits menos significativos de Port_ID.

Tabla 1. Puertos requeridos


Puerto Dir. E/S Uso
switch_port 00 E 4 botones y 4 interruptores
rotary_port 01 E Codificador Rotatorio
LCD_input_port 02 E Datos del módulo LCD
Act_port_LOW 03 E Estado actual (byte bajo)
Act_port_HIGH 04 E Estado actual (byte alto)
LCD_output_port 10 S Datos y Control del LCD
Err_port_LOW 20 S Error (byte bajo)
Err_port_HIGH 40 S Error (byte alto)
LED_port 80 S Manejo de los LEDs

Figura 11. Puertos de Entrada

Fig. 12 Puertos de salida


Para los puertos de salida, el nibble más significativo cambia 1 bit para diferenciar a cada
uno de los puertos, por lo tanto, la escritura en un registro queda determinada por el
habilitador de escritura y el bit que distingue al puerto. Esto se muestra en la figura 12.

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.

Figura 13. Puertos bidireccional para el LCD

Con la señal lcd_rw se determina si se escribirá o leerá en el LCD, con 0 se escribe y 1 se


lee. Se agrega la señal interna lcd_drive, para que el LCD solo trabaje cuando es habilitado.
El código VHDL correspondiente es:
lcd_rw <= lcd_rw_control and lcd_drive;
lcd_d <= lcd_output_data when lcd_rw_control='0' and lcd_drive='1')
else "ZZZZ";

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.

Fig. 14 Apariencia del botón rotatorio


En la figura 15 se observa como por la forma de las señales puede determinarse la dirección
del movimiento.

Fig. 15 Resultado de los giros del botón rotatorio

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.

Fig. 16 Un filtro elimina rebotes y modifica señales internas

En la figura 17 se muestra la aplicación del filtro en diferentes movimientos, puede notarse


que un flanco de subida en q1 indica que se realizó un movimiento y el nivel de q2 indica si
el movimiento fue a la izquierda.
Fig. 17 Señales intermedias

Estas señales son las que se utilizan para detectar los movimientos y su dirección,
acondicionando el hardware mostrado en la figura 18.

Fig. 18 Las señales intermedias interrumpen al Picoblaze

Dentro de la plataforma, se utiliza al botón rotatorio para aumentar o reducir la referencia,


en un factor determinado por los interruptores. Esto se hace en la rutina que atiende a la
interrupción, en la figura 19 se muestra esta evaluación.

Inicio

Si No
Izquierda?

Referencia = Referencia =
Referencia - swicth_port Referencia + swicth_port

Fin

Fig. 19 Rutina que da servicio a la interrupción

El programa que ejecuta el Picoblaze en el módulo Interfaz_Usuario sigue el diagrama de


flujo ilustrado en la figura 20. Los datos dentro del programa se manejan como números
binarios de 12 bits, sin embargo, al momento de hacer la impresión en el LCD, se
normalizan a decimal.

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

Error = Actual - Referencia Error = Referencia - Ac tual


Signo = 1 Signo = 0

Imprime Signo
Imprime Error
Err_port = Error
LED_port = Signo

Fig. 20 Programa principal en el Picoblaze

5. Módulo Algoritmo_Control

Básicamente se implementó un algoritmo de control proporcional, para después probarse en


un sistema de control de temperatura. La planta incluye un calefactor y un sensor. Sin
embargo, al actuador no se le pueden suministrar voltajes negativos, por lo que este módulo
básicamente realiza el algoritmo mostrado en la figura 21.
Inicio

No Si
Signo = 0

Salida = 0 Salida = Kp * Error

Fin

Fig. 21 Flujo del módulo Algoritmo_Control


6. Prueba de la Plataforma

La plataforma con el algoritmo de control proporcional se probó sobre el sistema LTR701,


el cual es un sistema de control de temperatura desarrollado por Amira [11]. En la figura 22
se observa la planta a controlar.

Fig. 22 Planta empleada para evaluar la plataforma

El actuador de la planta trabaja en un rango entre 0 y 10 V, y la salida del DAC integrado


en la tarjeta está en un rango entre 0 y 3.3 V, por lo tanto, fue necesario realizar un
amplificador con ganancia de 3, cuyo diagrama electrónico se muestra en la figura 23.

Fig. 23 Circuito de acondicionamiento para el actuador


El sensor de la planta entrega 0.1 volts por grado centígrado. Puesto que el valor máximo
para la temperatura es de 100º C, el voltaje proporcionado por el sensor está entre 0 y 10 V,
en contraste con el voltaje que puede recibir el ADC, el cual está en un rango entre 0.4 y
2.9 V, por lo tanto también se requirió de un circuito de acondicionamiento, consistente en
un reductor de voltaje por un factor de 4 seguido por un sumador para que el valor mínimo
sea de 0.4, el diagrama de este circuito se muestra en la figura 24.

Fig. 24 Circuito de acondicionamiento para el sensor

En la figura 25 se muestra el montaje de la plataforma desarrollada con sus circuitos de


acondicionamiento y su conexión con la planta.

Fig. 25 Conexión de la plataforma con la planta, utilizando los circuitos de acondicionamiento

Los circuitos de acondicionamiento se basan en Amplificadores Operacionales, por lo


tanto, se requirió de una fuente de alimentación simétrica (+/- 12 V), así como la fuente de
5 V para la tarjeta de desarrollo. El programa del FPGA se grabó en su memoria Flash, con
ello, no se pierde su configuración aún en ausencia de alimentación.
7. Resultados

Se probó la plataforma utilizando una constante y Kp = 1 en el módulo Algoritmo_Control,


la plataforma funcionó correctamente, ante una referencia de 50º C partiendo de la
temperatura ambiente, tiende a minimizar el error, aunque no lo nulifica, dado que
solamente se utilizó la contribución proporcional. En la figura 26 se muestra la grafica con
el comportamiento de la temperatura que puede visualizarse en la misma planta.

Fig. 26 Resultados observados en la planta

En la figura 27 se muestra la información que se presenta en la plataforma de desarrollo, la


cual coincide con la información que entrega la planta.

Fig. 27 Resultados en la pantalla LDC de la plataforma

Una vez que se verificó el funcionamiento de la plataforma, se conectó una tarjeta de


adquisición NI-6024E de National Instruments, manipulada con el RTWT de
Matlab/Simulink y se hicieron pruebas con diferentes valores para Kp, en las figuras 28 a la
30 se muestran los resultados experimentales obtenidos para los algoritmos de control
proporcional evaluados. Mostrando el estado actual de la planta, proporcionado por el
sensor y la señal de control, generada por la plataforma.

Fig. 28 Comportamiento del sistema con Kp = 1

Fig. 29 Comportamiento del sistema con Kp = 2

Fig. 30 Comportamiento del sistema con Kp = 8


En la figura 28 puede verse que aunque el sistema se estabiliza, presenta un error en estado estable.
En la figura 30 se observan demasiado sobretiro y oscilaciones alrededor de la temperatura deseada,
esto concuerda con la teoría [12], dado que un control proporcional no es suficiente para alcanzar
un error cero sin evitar que el sistema oscile.

8. Conclusiones

La aplicación de FPGA’s en el área de control automático proporciona una herramienta


flexible, rápida, de bajo costo y con alta capacidad de procesamiento, sin embargo, es
necesario el desarrollo de una suite de módulos que faciliten el diseño de sistemas.

Los módulos desarrollados son transportables a FPGA’s Xilinx de diferentes densidades y


con excepción del Picoblaze, la transportabilidad se puede dar con FPGA’s de diferentes
fabricantes, esto por el uso de VHDL, el cual es un lenguaje estandarizado. Aunque el
Picoblaze está elaborado en VHDL, su arquitectura utiliza una definición de bajo nivel, que
explota las características únicamente en FPGA’s de Xilinx.

La densidad en los FPGA’s actuales proporciona un medio adecuado para desarrollar


sistemas empotrados, en la tabla 2 se muestran los principales recursos empleados por la
plataforma, se observa que aún hay muchos elementos disponibles para implementar
algoritmos de control con mayor complejidad.

Tabla 2. Recursos empleados por la plataforma


Recurso Usado Disponible Uso
Slices 196 4, 656 4%
Ent/Sal 39 232 16 %
Bloques RAM 1 20 5%
GCLKs 1 24 4%

El algoritmo de control empleado como prueba es demasiado simple, pero este no es el


aspecto relevante en el presente trabajo, lo relevante es que la plataforma queda disponible
y con ella en un futuro inmediato se plantea comparar el comportamiento de un controlador
PID digital con un controlador difuso. O bien, aplicar la plataforma en otras plantas que se
tienen disponibles en el laboratorio de control de la Universidad Tecnológica de la Mixteca.

Para el diseño de un sistema secuencial dentro de un FPGA se tienen dos alternativas:


Organización modular bajo una metodología Top-Down o bien, el uso de un procesador
empotrado, como el Picoblaze. La elección de una u otra está en función de los
requerimientos. Para el módulo Interfaz_SPI se prefirió el desarrollo de módulos propios
para que los convertidores trabajen a su frecuencia más alta. Para la Interfaz_Usuario se
optó por el uso del Picoblaze, porque en caso contrario se requerirían máquinas de estado
muy complejas para permitir todos los comandos del LCD. Además, la información se ha
normalizado para presentarla de manera decimal (y no en binario, como internamente se
maneja). Esto requirió un algoritmo para la división aritmética dentro de la función que
imprime en el LCD.
9. Referencias

[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.

También podría gustarte