Tarea 1
Germán Muñoz González - 159913
Objetivo Introducción a la programación FPGA
Introducción En este reporte se podrá observar la configuración utilizada en las aplicaciones,
Matlab y Quartus y la programación hecha en cada una de estas.
FPGA por sus siglas en ingles (Fiel Programmable Gate Array), es un dispositivo
basado en bloques lógicos los cuales pueden ser programables, la ventaja principal
de un FPGA es que nos permite hacer procesamientos en paralelo tanto como el dis-
positivo lo permita,esto abre la posibilidad a desarrollar proyectos con velocidad de
procesamiento y evitar el retardo, utilizado en la actualidad para la programación
de televisiones y vídeo.
Procedimiento Una de las desventajas del FPGA es que no existen muchas librerías en la red,
por lo que el usuario debe crearlas, otra es que tiene un alto grado de dificultad,
ya que esta es una programación de Hardware donde el usuario debe establecer
la interconexión para los resultados esperados, para ello se utiliza el programa
Quartus.
Así que, por lo ya mencionado, a continuación se va a desarrollar como se confi-
guro el programa Matlab y Quartus para el uso del FPGA. Y también como fue
la creación de las librerías utilizadas en la primera sesión de Programación para
FPGA.
Configuración en Matlab
1. Abrir el programa Matlab, en este ejemplo se utilizo la versión 2020a, pero
puede ser utilizada cualquier versión, solo cambiara la interfaz para encontrar
los iconos.
Figura 1: Abrir Matlab
1 of 25
2. Para el correcto funcionamiento de Matlab se debe establecer una ruta la cual
tenga permisos de lectura y escritura, para evitar problemas en el futuro es
lo principal que se debe configurar.
Figura 2: Ejemplo de ruta
3. Para consulta de que versión de Matlab se esta utilizando y que librerías tiene
instalado Matlab. Para ello en Command Window se escribe el comando ver
y se oprime enter.
Figura 3: Comando ver
4. Revisar si la librería de HDL Coder esta instalada.
Figura 4: Revisar libreria HDL Coder
2 of 25
5. Abrir simulink dentro de Matlab y seleccionar un modelo en blanco, donde
se crean algoritmos para poderlos convertir a la programación usada por los
FPGA.
Figura 5: Blank model en simulink
6. Se debe configurar Matlab para que nos permita simular sistemas discretos, se
realiza presionando las teclas ctl+e. Lo cual abre la ventana de configuration
parameters.
Figura 6: Ventana de configuración de parámetros
7. Se deben cambiar los parametros de Solver selection, seleccionando Fixed-
step en Type y Discrete en Solver.Y en Solver Details establecemos un 1. Se
puede observar mejor en la siguiente figura.
Figura 7: Parametros para sistema discreto
3 of 25
Configuración de Quartus.
1. Abrir programa Quartus.
Figura 8: Quartus
2. Seleccionar New Proyect Wizard.
Figura 9: New proyect wizard
3. Seleccionar la dirección donde se van a salvar los archivos, preferentemente
que sea el mismo donde se guardan los archivos de Matlab para evitar pro-
blemas al importar las librerías. También en esta ventana se asigna el nombre
al proyecto
4 of 25
Figura 10: Ruta y nombre del proyecto
4. En la siguiente ventana se deja de fabrica y se selecciona next.
Figura 11: Tipo de proyecto
5. En la ventana de Family devices, se va seleccionar la familia a la que pertenece,
se introduce el nombre del FPGA y se selecciona.
5 of 25
Figura 12: Familia y nombre del FPGA
Hasta esta configuración ya es posible empezar a utilizar el programa, pero
por temas de seguridad del dispositivo es conveniente que aseguremos que en
caso de un corto circuito los pines del sistema no se van a quemar.
6. Seleccionar el menu de assigments y luego seleccionar device.
Figura 13: Protección de pines para el sistema FPGA
7. En la ventana de device, seleccionar, Device and Pin Options.
6 of 25
Figura 14: Protección de pines para el sistema FPGA
8. En el menu de izquierda se selecciona unused pines y del lado derecho se
selecciona as input tri-state. Esto hara que se protegan los pines del FPGA.
Figura 15: Protección de pines para el sistema FPGA
Programación en Matlab, Ejercicio 1 En esta programación se espera simular
los canales de conexión análoga-digital del convertidor ADC128S022, por
medio de conexiones lógicas.
1. En el lienzo blanco de simulink se da doble click, para luego escribir Logic
Operator.
7 of 25
Figura 16: Agregar operadores lógicos
2. Para configurar que tipo de operador lógico se requiere dar doble click en el
operador.
Figura 17: Tipo de operador lógico
3. Para cambiar el tipo de dato, se da doble click en el icono y se cambia a la
pestaña de data type.
8 of 25
Figura 18: Tipo de dato
4. Se conectan todos los operadores lógicos y se agrega las constantes booleanas,
y se obtuvo el siguiente resultado.
Figura 19: Ejercicio 1
Programación en Matlab Ejercicio 2, PWM
1. Para el algoritmo de PWM, se utilizo un contador, el cual va ir sumando los
ciclos establecidos.
9 of 25
Figura 20: Contador
2. Se agrego la ganancia, que va permitir ajustar el parámetro dentro de 0-100
y manteniendo la frecuencia.
Figura 21: Ganancia en PWM
3. Por ultimo se puede observar el diagrama final en Matlab y el resultado de
la gráfica en el scope.
10 of 25
Figura 22: Diagrama de PWM
Figura 23: Gráfica de PWM
4. Se genera el código traducido a la programación VHDL, para ser usado en el
FPGA.
11 of 25
Figura 24: Parámetros para la conversión a VHDL
5. En la siguiente imagen se puede observar que en el command windows nos
aparece el link para abrir la programación generada.
Figura 25: Código generado
Programación en Matlab, Ejercicio 3, ADC128S022
Para el siguiente ejercicio se realizo la simulación de las señales de un ADC128S022.
12 of 25
Figura 26: ADC128S022 Diagrama de tiempo
1. Para realizar el ejercicio se agrego un index vector de 17 bits, para cada canal
de comunicación, un contador y las constantes booleanas dependiendo del
valor de cada bit del canal.A continuación se puede observar el diagrama y
las gráficas de la señal CS.
Figura 27: Diagrama de la señal CS
13 of 25
Figura 28: Gráficas de la señal CS
2. Para la señal de Din, se utilizo los mismos materiales del paso anterior con
diferencia de la colocación de las constantes, ya que los pines 3, 4 y 5 pueden
ser diferentes de cero. En la siguiente imagen se puede observar el diagrama
de Din.
Figura 29: Diagrama de Din
14 of 25
3. Para la señal DOut se tuvo que establecer del bit mas significativo al menor,
también se utilizo un switch para hacer la comparación, para luego crear un
bloque de integrador que ayuda a sumar los valores y una memoria. En la
siguiente figura se puede observar el diagrama de Dout
Figura 30: Diagrama Dout
En las siguientes imágenes se puede observar el bloque del integrador, bloque
de memoria y la gráfica de la señal DOUT.
Figura 31: Integrador
15 of 25
Figura 32: Memoria
Figura 33: Gráfica Dout
16 of 25
Programación en Quartus,ADC128S022
Para este procedimiento se va simular la libreria creada en Matlab dentro del sis-
tema Quartus, para ser conectado con un FPGA
1. En la simulación del bloque en Matlab se genera el código en lenguaje VHDL,
se debe guardar en el misma carpeta que fue salvados los archivos generados
por Quartus.
Figura 34: Generación de código en Simulink
2. Dentro de la pestaña de Files, se selecciona click derecho y se selecciona Add
Files.
Figura 35: Agregar librerías a Quartus
17 of 25
3. Se selecciona el archivo creado por Simulink.
Figura 36: Abrir librerias en Quartus.
4. En la pestaña de file se selecciona New, para en la siguiente ventana seleccio-
nar Block [Link] aparecera el lienzo blanco donde se van a agregar
los diagramas.
Figura 37: Block Diagram
18 of 25
5. Dentro del lienzo blanco se da doble click para poder agregar el bloque
ACD128S022.
Figura 38: Agregar librerías a Quartus
6. Por medio de Quartus se genera el bloque de los multiplicadores y divisores
de [Link] despues con ayuda del Wizard se genera el reloj que ira
conectado al bloque del ACD128S022.
Figura 39: Wizard
19 of 25
Figura 40: Wizard
Figura 41: Wizard
20 of 25
Figura 42: Wizard
7. Se hace la conexión entre los bloques.
Figura 43: Diagrama final de conexiones en Quartus
21 of 25
8. Se realiza una precompilacion y se asignan los pines al ADC128S022
Figura 44: Precompilacion
Figura 45: Precompilacion Exitosa
22 of 25
Figura 46: Asignacion de pines
Figura 47: Pines de ADC128S022
23 of 25
9. Compilacion Final y Diagrama final en Quartus.
Figura 48: Compilacion Final
Figura 49: Diagrama final
24 of 25
Figura 50: Prueba
25 of 25