Matlab-Vhdl

6
1 Resumen El siguiente documento explica la relación que tiene VHDL y MATLAB® al trabajar unificadamente, describiendo las características de Simulink HDL Coder, de esta manera familiarizar el procedimiento necesario para generar código VHDL utilizando el Software MATLAB® de forma automática. Esto se lo realiza mediante un ejemplo ilustrativo que utiliza la herramienta Simulink Filter Design HDL Coder que genera un código eficiente, sintetizable y portable para la implementación de hardware. Palabras claveVHDL, MATLAB®, Simulink, HDL Coder, Filter Design, Xilinx, FPGA, filter builder. I. INTRODUCCIÓN El avance tecnológico y la creciente complejidad de los circuitos electrónicos digitales han hecho que los diseñadores de circuitos necesiten descripciones de alto nivel de la lógica digital, es decir, que no dependa de nada, así como lo es HDL. Al utilizar HDL facilita mucho construir un hardware utilizando software es decir co-simula en hardware lo que se simula en software, la ventaja al usar esto es la implementación de toda la estructura por software y genera el hardware deseado. Se realiza esto con la ayuda de MATLAB®, es un software de alto nivel que permite varios tipos de simulaciones, un ejemplo es el diseño de filtros en el caso de la electrónica. El uso de estos en la vida real es indispensable debido a que en base a eso la información se puede transmitir de manera clara, precisa y concisa, tanto en medios analógicos como digitales, pero es necesario implementar hardware que garanticen esto. MATLAB® es compatible con VHDL por lo es posible que un programa realizado con el System Generator o Simulink sea generado para el lenguaje de VHDL, de esta manera se facilita el entorno de trabajo ya que se automatiza con las herramientas que brinda MATLAB®. II. DESARROLLO DEL ARTÍCULO A. Características de Simulink Filter Design HDL Coder Genera sintetizable IEEE 1076 compatible con código VHDL y código IEEE 1364-2001 compatible con Verilog para la implementación de filtros de punto fijo en ASCIs y FPGAs. Controla el contenido, optimización y el estilo de código generado. Proporciona opciones para compensaciones en zona de velocidad frente a la arquitectura y la exploración, incluyendo la aritmética distribuida. Genera VHDL y Verilog bancos de prueba para la verificación rápida y validación de código generado por un filtro HDL. Genera simulación y síntesis de secuencias de comandos. Además Simulink genera directamente el archivo de configuración FPGA (.bit) ya que utiliza un flujo de diseño integrado a éste. Fig. 1. Flujo de diseño integrado a Simulink B. Generación de código VHDL con MATLAB® MATLAB® es un software con lenguaje de programación matemático, el cual es muy utilizado, por ello cuenta con herramientas que permiten realizar un programa en este software y transformarlo a otros lenguajes, facilitando así la generación de código VHDL por ejemplo, para así poder desarrollar algoritmos para trabajar con FPGAs. La herramienta Simulink HDL Coder es de uso muy intuitivo, pero para un correcto uso es necesario conocer sobre programación de FPGAs y software de Xilinx como lo es ISE Design Suite. HDL Coder permite convertir automáticamente código MATLAB de punto flotante a de punto fijo y genera VDHL sintetizable y código Verilog, esta característica hace que se puedan desarrollar aplicaciones en un lenguaje de alto nivel para luego transformarlo a código HDL para su implementación en software, además mediante configuraciones se puede optimizar el uso de recursos en el momento de la implementación. • MATLAB®, Simulink • HDL síntesis • Librerías de DSP • Herramientas de implementación para FPGA • Simulación en doble precisión y punto fijo INTEGRA • Bloques de distitnas funciones implementables en FPGA • Generación de archivos VHDL • Simulación • IP cores (48 hasta ahora) PROVEE M. Bermeo, F. Cachago, D. Vallejos, M. Zurita, Escuela Politécnica del Ejército MATLAB - VHDL

description

Matlab con codigo Vhdl

Transcript of Matlab-Vhdl

Page 1: Matlab-Vhdl

1

Resumen — El siguiente documento explica la relación que tiene

VHDL y MATLAB® al trabajar unificadamente, describiendo las

características de Simulink HDL Coder, de esta manera familiarizar

el procedimiento necesario para generar código VHDL utilizando

el Software MATLAB® de forma automática. Esto se lo realiza

mediante un ejemplo ilustrativo que utiliza la herramienta

Simulink Filter Design HDL Coder que genera un código eficiente,

sintetizable y portable para la implementación de hardware.

Palabras clave— VHDL, MATLAB®, Simulink, HDL Coder,

Filter Design, Xilinx, FPGA, filter builder.

I. INTRODUCCIÓN

El avance tecnológico y la creciente complejidad de los

circuitos electrónicos digitales han hecho que los diseñadores

de circuitos necesiten descripciones de alto nivel de la lógica

digital, es decir, que no dependa de nada, así como lo es HDL.

Al utilizar HDL facilita mucho construir un hardware

utilizando software es decir co-simula en hardware lo que se

simula en software, la ventaja al usar esto es la implementación

de toda la estructura por software y genera el hardware

deseado.

Se realiza esto con la ayuda de MATLAB®, es un software de

alto nivel que permite varios tipos de simulaciones, un ejemplo

es el diseño de filtros en el caso de la electrónica. El uso de

estos en la vida real es indispensable debido a que en base a eso

la información se puede transmitir de manera clara, precisa y

concisa, tanto en medios analógicos como digitales, pero es

necesario implementar hardware que garanticen esto.

MATLAB® es compatible con VHDL por lo es posible que un

programa realizado con el System Generator o Simulink sea

generado para el lenguaje de VHDL, de esta manera se facilita

el entorno de trabajo ya que se automatiza con las herramientas

que brinda MATLAB®.

II. DESARROLLO DEL ARTÍCULO

A. Características de Simulink Filter Design HDL Coder

Genera sintetizable IEEE 1076 compatible con código

VHDL y código IEEE 1364-2001 compatible con Verilog

para la implementación de filtros de punto fijo en ASCIs y

FPGAs.

Controla el contenido, optimización y el estilo de código

generado.

Proporciona opciones para compensaciones en zona de

velocidad frente a la arquitectura y la exploración,

incluyendo la aritmética distribuida.

Genera VHDL y Verilog bancos de prueba para la

verificación rápida y validación de código generado por un

filtro HDL.

Genera simulación y síntesis de secuencias de comandos.

Además Simulink genera directamente el archivo de

configuración FPGA (.bit) ya que utiliza un flujo de diseño

integrado a éste.

Fig. 1. Flujo de diseño integrado a Simulink

B. Generación de código VHDL con MATLAB®

MATLAB® es un software con lenguaje de programación

matemático, el cual es muy utilizado, por ello cuenta con

herramientas que permiten realizar un programa en este

software y transformarlo a otros lenguajes, facilitando así la

generación de código VHDL por ejemplo, para así poder

desarrollar algoritmos para trabajar con FPGAs.

La herramienta Simulink HDL Coder es de uso muy

intuitivo, pero para un correcto uso es necesario conocer sobre

programación de FPGAs y software de Xilinx como lo es ISE

Design Suite. HDL Coder permite convertir automáticamente

código MATLAB de punto flotante a de punto fijo y genera

VDHL sintetizable y código Verilog, esta característica hace

que se puedan desarrollar aplicaciones en un lenguaje de alto

nivel para luego transformarlo a código HDL para su

implementación en software, además mediante

configuraciones se puede optimizar el uso de recursos en el

momento de la implementación.

•MATLAB®, Simulink

•HDL síntesis

• Librerías de DSP

•Herramientas de implementación para FPGA

• Simulación en doble precisión y punto fijo

INTEGRA

•Bloques de distitnas funciones implementables en FPGA

•Generación de archivos VHDL

• Simulación

• IP cores (48 hasta ahora)

PROVEE

M. Bermeo, F. Cachago, D. Vallejos, M. Zurita, Escuela Politécnica del Ejército

MATLAB - VHDL

Page 2: Matlab-Vhdl

2

Fig. 2. Generación de código VHDL

C. Ejemplos Filter Design HDL Coder

Filter Design HDL Coder es una herramienta desarrollada por

MATLAB® que permite la implementación de Hardware

generando código VHDL. Se puede diseñar filtros y generar

código VHDL. Se puede hacer el diseño de filtros de distintas

formas como las siguientes a continuación:

En el workspace de MATLAB® ingresar el comando

filterbuilder.

Fig. 3. Comando en workspace de MATLAB®

Despliega la pantalla (Fig. 4) y se escoge el tipo de filtro

Fig. 4. Ventana “Response Selection” de MATLAB®

Se selecciona “Lowpass” y luego se despliega la ventana

en la cual se configuran los valores para el filtro a diseñar

Fig. 5. Ventana “Lowpass Design”

Parámetros a configurar:

Fs = 11000 Hz.

Banda de paso: 0 a 1700 Hz

Banda eliminada: 3000 a 5000 Hz

Atenuación en frecuencias bajas = 3 dB

Atenuación en frecuencias altas = 50 dB

Luego se da clic en “View Filter Response”

Fig. 6. Botón para diseñar el filtro pasabajo.

Se da clic y luego se verifica la información del filtro.

Fig. 7. Respuesta del filtro diseñado

En la barra de menús se selecciona “Code Generation” y

se da clic en “Generate HDL…”

Código en MATLAB®,Extensión .m

HerramientaHDL CODER

Código con Extensión .VHD

Software de XilinxISE Design Suite

Tarjeta FPGA

Page 3: Matlab-Vhdl

3

Fig. 8. Ventana del diseño de filtro pasabajo para generar código VHDL.

Se elige el lenguaje a generar, se da un nombre y se elige

una dirección en la cual se van a guardar los archivos

generados por este método.

Fig. 9. Ventana para generar el código VHDL.

Una vez configurado los parámetros antes mencionados

se da clic en “Generate” y se revisa el workspace para

verificar si se creó correctamente el código VHDL.

Fig. 10. Verificación del código VHDL generado.

Se verifica en la ruta indicada anteriormente si se

generaron los siguientes archivos

Y se procede a generar un proyecto en ISE Design Suite.

A continuación se mostrará que archivos deben añadirse

Fig. 11. Ventana para añadir los archivos generados

Y finalmente se chequea la sintaxis para generar

correctamente los archivos para cargar a la tarjeta.

D. Ejemplos empleando Simulink HDL coder

Lo primero que se debe hacer es abrir Simulink en el Matlab y

dentro de los paquetes de Simulink se escoge el paquete Xilinx

Blockset en cual posee diversos bloques para trabajar con

Xilinx en Matlab.

Después se procede abrir un nuevo modelo en el que se

colocaran los bloques mencionados; es importante colocar el

bloque System Generator.

Page 4: Matlab-Vhdl

4

En el new model realizamos la configuración de los bloques

para la aplicación que se desee realizar.

Se configura el número de bits en las entradas y salidas, a

utilizarse en las tarjetas.

Una vez que se haya verificado los pasos anteriores se

procede a abrir el bloque System Generetor y se configura

los parámetros de acuerdo a la FPGA a utilizarse.

A continuación se presiona Generate con lo cual se

generara el respectivo código VHDL.

Page 5: Matlab-Vhdl

5

Luego se abre el archivo generado en ISE el cual posee el

mismo nombre que el nombre del New Model de

simulink.

E. Ejecución del Programa

Para poder generar un archivo .VHDL con la herramienta

SIMULINK de MATLAB, se utilizará la siguiente función:

𝑓 = 𝐴 ∗ 𝐵 ∗ 𝐶 ∗ 𝐷

Es necesario tomar en cuenta que se necesita siempre

ejecutar el System Henerator para iniciar Matlab el cual

nos direccionará automáticamente a simulink, en el cual

se eligirá la opción generate blocks. De esta forma al

ejecutar el programa y especificando el tipo de FPGA a

utilizar se generará el código en VHDL. (OPCIONAL)

Una vez configurada la FPGA se puede especificar la

carpeta en donde se desea crear el VHDL, en Target

Directory, y se elegirá la opción Browse de esta forma se

guardará en una carpeta diferente el código de VHD de

ISE DESIGN

Una vez seleccionado y abierto el programa, se verifica la

sintaxis del programa en ISE DESIGN

III. CONCLUSIONES

Se concluye que la generación de código VHDL desde

MATLAB usando HDL Coder es la más óptima para

implementar en un hardware ya que entrega el mejor

algoritmo posible.

Al momento de generar el código HDL desde MATLAB,

se producen errores si la carpeta donde se compilará en

MATLAB es distinta a la carpeta en donde se crearon las

funciones.

Se comprobó que el software ISE Design de Xilinx sirve

para verificar que el código generado por MATLAB es el

correcto mediante el chequeo de la sintaxis.

Los diseños realizados con Simulink y el código HDL

generado por este, también soportan el desarrollo de

aplicaciones de alta integridad.

Se verificó que al usar MATLAB y sus herramientas

como Simulink, resultó más sencilla la programación ya

que su entorno facilita mediante diagrama de bloques el

desarrollo de la misma, además de comprender de mejor

manera.

Se concluye que la herramienta Filter Design Coder de

MATLAB diseña cualquier tipo de filtro de forma más

eficiente y óptima debido a que solo se necesita

especificar ciertos parámetros como frecuencias de corte,

de paso, atenuaciones, etc para su implementación y

generación de código VHDL.

El trabajar con MATLAB y generación de código VHDL

permite no solo tener simulaciones en software sino que

también se las puede tener en hardware, por lo que no

estará limitado solo a software.

IV. RECOMENDACIONES

Se recomienda instalar primero MATLAB 2012a, y

después Xilinx, dado que System Generator necesita de

MATLAB 2012a para poder configurarse.

Se sugiere que al utilizar Filter Design Coder se diseñe

que filtro se desea utilizar ya que según el tipo se deben

usar diferentes comandos por lo que podría darse

resultados no deseados.

Page 6: Matlab-Vhdl

6

En caso de trabajar con el sistema operativo Windows 8

es necesario instalar una máquina virtual debido a que el

software ISE Design Suite no es compatible con este

sistema operativo.

Al momento de generar código VHDL mediante Filter

Design HDL Coder se recomienda modificar el tamaño

de las entradas y salidas del filtro.

V. REFERENCIAS

[1] A, Palazzesi. Desarrollo de Sistemas de automatización y Control.

http://www.upnfm.edu.hn/bibliod/images/stories/xxtindustrial/libros%2

0de%20electricidad/electronica%201y%202/Compuertas_Logicas.PDF.

pdf. Extraído el día 15 de Diciembre del 2015 desde fuente. [2] Raúl Jiménez, (2008), Digital II, Introducción a circuitos secuenciales,

http://www.uhu.es/raul.jimenez/DIGITAL_II/dig2_i.pdf. Extraído el 20

de Diciembre de 2015.

[3] Morris Mano M,Duchén G, (2003), Diseño Digital, Pearson Education,

México

[4] Sicard E, Delmas S, (2007),Basics of CMOS Cell Design, Secuential Cell Design.

[5] Mathworks, 2015 Verilog.

http://www.mathworks.com/products/datasheets/pdf/hdl-coder.pdf. Extraido el 24 Diciembre del 2015

[6] Mathworks, 2015 HDL Coder

http://www.mathworks.com/videos/using-matlab-simulink-and-ise-design-suite-to-develop-dsp-applications-on-xilinx-fpga-based-systems-

81700.htmlExtraido el 24 Diciembre del 2015

[7] Mathworks, 2015 HDL Coder http://www.mathworks.com/products/hdl-

coder/features.html#generating-hdl-code Extraido el 25 Diciembre del

2015 [8] Mathworks, 2015 HDL Coder

https://www.aldec.com/en/support/resources/documentation/articles/990 Extraido el 25 Diciembre del 2015

VI. BIOGRAFÍAS

Michael Alonso Bermeo Ramón nació en

Quito, Pichincha, Ecuador, 18 de marzo de

1992. Se graduó en Colegio San Gabriel en el

año 2011 de bachiller físico matemático y

actualmente estudia ingeniería Electrónica en

Automatización y Control en la Universidad

de las Fuerzas Armadas ESPE.

Francis Andrés Cachago Tandazo nació en

Santo Domingo, Santo Domingo de los

Tsáchilas, Ecuador, 14 de marzo de 1995. Sus

estudios primarios lo realizó en la Escuela

Particular Maristas “PIO XII” y sus estudios

secundarios los realizó en el Colegio Particular

Maristas “PIO XII”, estuvo en el cuadro de honor

tanto en su escuela como colegio. Se graduó en

el año 2012 de bachiller físico matemático y

actualmente estudia ingeniería Electrónica en

Automatización y Control en la Universidad de

las Fuerzas Armadas ESPE.

David Alejandro Vallejos Brito, nació el 16

de Marzo de 1986 en la ciudad de Otavalo,

Imbabura, Ecuador. Sus estudios primarios los

realizó en el “Instituto Inocencio Jácome”, y

los secundarios en el “Instituto Tecnológico

Superior Otavalo”, graduándose como

Bachiller Técnico en Electrónica. Sus estudios

superiores los realizó en la “Escuela de

Formación de Tecnólogos” perteneciente a la

Escuela Politécnica Nacional y en la Escuela

Superior Militar de Aviación “Cosme Rennella B.”, en la cual se

graduó como Licenciado en Administración Aeronáutica Militar.

Actualmente se encuentra cursando en la Universidad de las Fuerzas

Armadas ESPE, en sexto semestre de la carrera de Ingeniería

Electrónica en Automatización y Control.

Marco Antonio Zurita nació en Machala, El

ORO, Ecuador, 03 de abril de 1990. Se graduó

en el Colegio Militar Héroes del 41 en el año

2007 de bachiller físico matemático y

actualmente estudia ingeniería Electrónica en

Automatización y Control en la Universidad de

las Fuerzas Armadas ESPE. Desarrollador de

aplicaciones en C – Microchip, programador en

Java de la Escuela Politécnica Nacional con suficiencia en inglés e

italiano.