Vous êtes sur la page 1sur 35

MANUAL MODULACIN AM CON EL SYSTEM GENERATOR

PARA FPGA

UNIVERSIDAD DISTRITAL
FRANCISCO JOSE DE CALDAS

MICROPROCESADORES

JHONNATAN STEVEN LAGUNA


CESAR AUGUSTO RAMIREZ
FABIAN REYES
ISAAC BOGOTA
YESID
PEDRO PABLO HERNANDEZ

BOGOT D.C.
8 DE FEBRERO 2012

MANUAL MODULACIN AM CON EL SYSTEM GENERATOR


PARA FPGA
INTRODUCCIN:
En sta prctica pondremos a prueba una implementacin como lo es la
modulacin AM con la herramienta System Generator que hace parte del sistema
de desarrollo de aplicaciones Xilinx, y permite realizar aplicaciones a partir de un
esquema hecho en la herramienta Matlab.
SIMULINK MATLAB
Simulink es una herramienta para el modelaje, anlisis y simulacin de una amplia
variedad de sistemas fsicos y matemticos, inclusive aquellos con elementos no
lineales y aquellos que hacen uso de tiempos continuos y discretos. Como una
extensin de Matlab, Simulink adiciona muchas caractersticas especficas a los
sistemas dinmicos, mientras conserva toda la funcionalidad de propsito general
de Matlab. As Simulink no es completamente un programa separado de Matlab,
sino un anexo a l. El ambiente de Matlab est siempre disponible mientras se
ejecuta una simulacin en Simulink.
Simulink puede simular cualquier sistema que pueda ser definido por ecuaciones
diferenciales continuas y ecuaciones diferenciales discretas. Esto significa que se
puede modelar sistemas continuos en el tiempo, discretos en el tiempo o sistemas
hbridos.
Simulink usa diagramas de bloques para representar sistemas dinmicos.
Mediante una interface grfica con el usuario se pueden arrastrar los componentes
desde una librera de bloques existentes y luego interconectarlos mediante
conectores. La ventana principal de Simulink se activa escribiendo Simulink en la
lnea de comandos de Matlab.

SYSTEM GENERATOR
Es una herramienta disponible en el ambiente de desarrollo Simulink/System
Generator que permite co-simular en hardware lo que se simula en software.
Veamos que significa esto: En primer lugar cuando uno trabaja en el entorno
Simulink/System Generator los sistemas que se construyen son simulados en ese
mismo entorno, es decir TODO se realiza en software. Sin embargo se puede

fcilmente construir el hardware equivalente de ese sistema, configurar el FPGA


respectivo, y simular en hardware lo mismo que se simular en software e incluso al
mismo tiempo. Por eso justamente es llamado 'Co-Simulacin', porque se simulan
ambos sistemas, hardware y software, al mismo tiempo.

MODULACIN AM
La modulacin se define como el proceso de transformar informacin de su forma
original a una forma ms adecuada para la transmisin. La modulacin se realiza
en el transmisor en un circuito llamado modulador.
Modulacin de amplitud AM es el proceso de cambiar la amplitud de una seal
portadora de frecuencia comparativamente alta en relacin con la de la seal
modulante que contiene la informacin. Con la modulacin de amplitud, la
informacin se combina sobre la portadora cambiando su amplitud.
La modulacin de amplitud es una forma de modulacin relativamente barata y de
baja calidad de modulacin que se utiliza en la radiodifusin de seales de audio y
vdeo. La banda de radiodifusin comercial AM abarca desde 535 a 1605 KHz. Un
modulador AM es un aparato no lineal con dos seales de entrada de informacin:
una seal portadora de amplitud constante y de frecuencia sencilla, y la seal de
informacin. La informacin modula la portadora y puede ser una forma de onda
de frecuencia simple o compleja compuesta de muchas frecuencias que fueron
enviadas de una o ms seales. Debido a que la informacin acta sobre la
portadora, se le llama seal modulante. La resultante se llama onda modulada o
seal modulada.

OBJETIVOS:

Generar una modulacin AM por medio de la herramienta System


Generator para FPGA.
Familiarizarse con la herramienta del Simulink para generar diseos que
nos ayuden a realizar la modulacin AM.
Conocer una herramienta como Matlab, para tambin programar diferentes
dispositivos como lo son las FPGA.
Realizar y conocer los procedimientos para exportar un programa desde
Xilinx ISE, e incluirlo en nuestro diseo del system generator.

RESUMEN DEL DISEO:


Se implementar un programa que genere dos ondas una portadora y una
moduladora, para luego multiplicarlas Modularlas y el resultado llamado seal
modulada podr ser observada en un Osciloscopio. El diseo har uso de algunos
de los bloques funcionales de la herramienta System Generator, a continuacin se
dar a conocer un diagrama de los bloques del proyecto.

PROCEDIMIENTO:
Lo primero que debemos hacer es crear una carpeta con un nombre que uno le
ponga, en la cual incluiremos los programas tipo VHD creados en el Xilinx ISE que
vamos a utilizar en el proyecto y los archivos que se generen desde el Simulink en
el que se generara todo nuestro diseo, para ello aremos el siguiente
procedimiento:
1. Click derecho en el escritorio, vamos a nuevo y aqu damos la opcin carpeta.

2. Al crearse la carpeta le daremos un nombre para as distinguirla:

Luego de haber creado la carpeta procederemos a hacer nuestro programa en


Xilinx ISE de nuestro conversor Digital-Anlogo.
Ver anexo para programa del conversor en VHDL
Luego de haber generado nuestro conversor digital-anlogo en el Xilinx ISE,
procederemos a copiar el archivo de tipo VHD en la carpeta generada
anteriormente, para as poderlo usar ms adelante en nuestro diseo generado en
el Simulink de Matlab.
1. Copiamos en archivo de tipo VHD:

2. Colocaremos en archivo en la carpeta creada anteriormente:

Enlace de programas Matlab y Xilinx


Uno de los primeros pasos a realizar es enlazar los dos programas que vamos a
utilizar por medio del System Generator. Esto se realiza desde el men inicio y en
la carpeta donde se encuentra el programa xilinx, y luego en la subcarpeta system
generator y luego en la aplicacin system generator configurator (inicio->todos
los programas->xilinx->system generator-> system generator configurator)
Nota: para Windows 7 se debe ejecutar la aplicacin como administrador

Al abrir este ejecutable le damos click en el recuadro para seleccionar el programa


matlab y luego en ok

Luego de esto ya podemos tenemos los dos programas enlazados y ya se puede


iniciar a trabajar en matlab como lo veremos a continuacin.
Abrir programa matlab
En este paso explicaremos como abrir el programa matlab junto con la aplicacin
simulink( que es donde trabajaremos para trabajar el tool box de system
generator)

Primero abrimos el programa matlab ya sea por medio de un acceso directo


en el escritorio o por medio de (inicio->programas ->matlab)

Luego de esto nos encontramos dentro del entorno de matlab que ser
desde donde abriremos la herramienta SIMULINK, para abrir esta
herramienta lo podemos hacer de dos maneras:
1. Escribiendo simulink en la ventana comand window y luego
presionando enter.

2. La otra manera es desde el botn de simulink:

Entorno de simulink
En esta etapa se explicara cmo encontrar la seccin donde se encuentra la
librera de los bloques que se desean utilizar para nuestro proyecto (Xilinx
blockset), la manera de crear un nuevo proyecto y como debemos guardarlo.

En la nueva ventana que se abri al ejecutar simulink en la parte izquierda


encontraremos la seccin libreras, es hay donde encontraremos la librera
xilinx blockset

En una fase previa antes de generar un nuevo proyecto debemos crear una
nueva carpeta donde guardaremos este junto con los programas o los
archivos *.vhd, que son los que utilizaremos si deseamos co-simular
programas realizados en lenguaje VHDL y Simulink

Luego de haber generado la nueva carpeta nos disponesmos a generar un


nuevo proyecto desde la ventana de simulink por medio del botn nuevo o
en el men de la barra de herramientas (file->new->model)

Luego de esto nos aparecer una nueva ventana que ser donde
trabajaremos con cada uno de los bloques (ventana de simulacin).

Para empezar a trabajar guardamos este proyecto en la direccin de la


carpeta que creamos en uno de los pasos anteriores.

NOTA: Para una mayor facilidad de trabajo para los siguientes pasos se
recomienda dejar las dos ventanas anteriormente abiertas (simulink(libreras) y la
ventana de trabajo) en un tamao en que podamos ver las dos al tiempo.
PARA WAVESCOPE
Esta herramienta la podemos encontrar en la ventana de libreras como lo vemos
a continuacin:

En esta herramienta podemos visualizar las seales como en un osciloscopio es


fcil de manejar y amigable con el usuario, adems es compatible con todos los
bloques del diseo sin necesidad de usar un Gateway out (salida de datos del
Simulink); adems no hay necesidad de crear una conexin entre los bloques.

Simplemente en la ventana wavescope damos clic en Nets y se despliega un


men con todos los bloques de nuestro esquema y podemos visualizar todas y
cada una de nuestras entradas y salidas.

Como vemos las seales que salen estn en un formato de representacin lgica,
para ver en anlogo damos doble clic sobre la seal que queremos modificar y se
abre el siguiente panel.

Ac podemos modificar el formato en que queremos


ver la seal, con valor binario, hexadecimal, decimal y
con representacin lgica o anloga; tambin
podemos establecer el color de la seal.
Para nuestro caso nos es til la representacin
decimal con formato anlogo.

Esta imagen es til para revisar si la seal si responde al comportamiento


esperado.

Seleccin de bloques y configuracin de cada uno de ellos para llevar a cabo


la modulacin.
1. El primer bloque a utilizar es el System Generator, es el encargado de
ayudar a enlazar el programa simulink para la generacin de un proyecto
para xilinx, y en donde tambin podemos configurar la versin de la FPGA
que deseamos utilizar.

Lo primero es llevar el bloque de la ventana de la librera a la ventana de


trabajo, este bloque se encuentra en la librera que ya habamos
mencionado antes xilinx blockset y en la sublibreria Basic elements.

Luego configuramos el bloque segn las caractersticas que deseemos en


nuestro caso configuraremos para la FPGA Spartan 3AN de 700
compuertas, tambin configuraremos el compilador, el lenguaje de
programacin, tambin el periodo del reloj y si lo deseamos tambin
podemos asignar el pin que se desea utilizar como reloj.

El periodo de tiempo de la fpga lo deducimos con la siguiente ecuacin.

T=

1
clk

clk es la frecuencia del oscilador que deseemos escoger de la fpga

En nuetro caso utilizaremos el cristal de 50MHz, por lo cual nuestro tiempo de


periodo nos da 20ns
La configuracin del bloque system generator debera quedar asi:

Luego de configurarlo le damos en el botn OK


2. Luego de insertar el anterior bloque nos disponemos a insertar los bloques
de las ROMS donde estarn guardadas las dos seales que deseamos
utilizar para la modulacin. Para luego configurarlas segn numero de
muestras y la funcin que deseemos utilizar.

Primero llevamos las dos ROM a la ventana de trabajo, estas se encuentran


en la subcarpeta Memory.

Para configurar las rom segn el numero de muestras y la funcin le damos


doble click en cada una de las rom y en la pestaa basic configuraremos
las siguientes opciones
Depth: ser el numero de muestras que deseemos utilizar en nuestro caso
elegiremos 256
Initial value vector: Es donde configuraremos la funcin a utilizar con
respecto al valor de las muestras que deseamos utilizar para nuestro caso
utilizaremos la funcin coseno
cos(2*pi*(0:255)/256)
Esta sera nuestra seal moduladora

La configuracin de esta pestaa quedara de la siguiente manera

Luego configuraremos la pestaa output type que es donde escogeremos


la cantidad de bits que deseamos a la salida si lo queremos con signo o sin
signo. La configuracin deber quedar as:

NOTA: La configuracin de esta pestaa(output type) deber ser igual para las dos
ROM

Configuracion de la otra ROM, aqu configuraremos solo la pestaa basic


ya que la otra pestaa (output type) tendra la misma configuracin que la
anterior

Esta seal tendr la misma cantidad de muestras pero para esta escogeremos la
funcin seno. Esta funcin al ser la seal que escogeremos como portadora
deber tener una mayor frecuencia.
Este bloque tendr la siguiente configuracin

3. El siguiente bloque a adicionara nuestro proyecto sern dos contadores


que son los encargados de direccionar nuestras memorias ROM.

Llevamos el bloque llamado contador que se encuentra en la subcarpeta


basic elements, y unimos la salda de estos contadores con las ROMS

Luego de esto damos doble click sobre cada uno de ellos para configurarlos
estos bloques llevaran la misma configuracin debido a que nuestras
memorias ROM tiene la misma cantidad de muestras. Deberemos
configurar la siguientes opciones:
Counter type: lo podemos dejar para que corra libremente o darle un limite y
cuando llegue a ese limite el se reiniciara e ira de nuevo al valor 0
Count direction: Aqu configuraremos el sentido de cuenta y el valor inicial
de la cuenta, y el valor que avanza en cada paso para la cuenta.
Ouput precisin: en esta parte configuraremos cada una de las opciones
para la cuenta numero de bits, y si la cuenta lleva signo o no.

Este bloque quedara confugurado de la siguiente manera

Luego de tener configurado esto y si deseamos revisar como quedaron nuestras


seales basta solo con simular, buscamos un bloque llamado output Gateway, y
un scope (que seria nuestro osciloscopio). Para dejar los bloques de la siguiente
manera.

Para llevar a cabo la simulacin basta con darle click en el botn play y si
deseamos ver un mayor tiempo de muestras en el osciloscopio aumentar el
numero que se encuentra al lado defrecho. Despus de que el programa lleve a
cabo la simulacin para ver las graficas le damos doble click en el osciloscopio.
Las graficas que saldrn en cada osciloscopio sern las siguientes:

4. Luego de conprobar cada una de las seales eliminamos los bloques


generados( Gateway out y scope) y luego insertamos un bloque llamado
mult y constant, que nos servirn para aunmentar la amplitud de la seal
portadora.

Estos bloques ser conectados de la siguiente manera.

Luego configuraremos los bloques, primero el bloque constant.

En este configuraremos el valor de salida y el numero de bits en que deseamos


que quede. Quedara de la siguiente forma:

Luego configuramos el bloque mult donde lo dejaremos con precisin full. Este
quedara de la siguiente manera:

5. El siguiente paso a seguir es llevar a cabo la multiplicacin de las dos


seales lo cual nos producir nuestras seal modulada
- Este bloque lo configuraremos de la misma manera que el multiplicador
anterior con una precisin full y una latencia de 1
Si deseamos probar la seal que se produce luego de la multiplicacin podemos
insertar de nuevo los bloques Gateway out y scope o por medio del wavescope
configurando la salida de ese bloque en anloga.

Luego de esto tenemos que subir el nivel dc de la seal para no ingresar


valores negativos al conversor DAC. Para esto insertamos un bloque
constant y otro bloque add.

Primero confuguramos el bloque constant que ser igual al que fue configurado
anteriormente para aumentar la amplitud de la seal, despus configuraremos el
bloque add que quedara de la siguiente manera.

En la pestaa Output type lo configuraremos para la cantidad de bits que recibe el


conversor que son 12 bits, quedara de la siguiente manera:

6. Luego de esto insertaremos el bloque que nos ayudara a insertar un cdigo


en lenguaje VHDL. Este bloque se llama black box
Como se indica en el documento referido antes, los cdigos en VHDL deben
cumplir ciertos requisitos para que sean reconocidos en el SG; vamos a ver los
principales:

El cdigo debe tener dos seales de control de reloj, estas seales deben
tener como nombre, o por lo menos dentro del nombre debe tener los
caracteres clk y ce respectivamente.
No necesariamente se deben usar pero estas dos variables se conectaran
directamente a la seal de reloj del sistema y las podemos usar para la
toma de decisiones del cdigo.
Los Black Box no reconocen flancos de bajada del reloj principal, es decir si
su programa trabaja con comandos como falling edge clk_event clk =0,
estos no sern tenidos en cuenta.
No se pueden simular puertos bidireccionales, solo si son de entrada o
salida aunque si son validos en la implementacin del hardware.
El archivo*.vhd debe tener un nombre diferente al del modelo que se est
usando y tampoco puede contener palabras reservadas de los lenguajes de
Matlab y Xilinx.

Esos son algunos aspectos a tener en cuenta, para ms informacin consultar la


ayuda de Black box en SG o en el sitio web de Xilinx.
Para generar el Black box se busca el bloque en el Xilinx Blockset en la librera
Basic elements, cuando se pega dentro del modelo se nos abre un browser donde

debemos ubicar el archivo *.VHD, seleccionamos el archivo y a continuacin se


nos abre un archivo de Matlab *_config.m en el que se pueden configurar algunas
cosas de cmo el SG debe trabajar con el Black Box.
Al insertar el bloque del black box nos aparecer una ventana donde diremos cual
es el cdigo*.vhd que deseamos importar para esta caja.

Para configurar las otras entradas de nuestro conversor inseratmos un bloque


llamado Gateway in, los configuramos dndole doble click en ellos para ponerlos
como una entrada de datos booleanos (1 o 0), debern quedar configurados de la
siguiente manera:

Ahora haremos una especie de prescalizador con bloque de la ventana de libreras para
poder hacer que el conversor no guarde un solo bit en un flanco de subida del reloj, ya
que cada dato de la seal enviada es de 12 bits, es decir el periodo que tiene cada pulso
de la seal coseno debera ser igual al periodo que demora la ventana de lectura de los
registros y al menos hasta que el conversor se ponga en modo de lectura.
Esto lo podemos lograr bajando el periodo del contador que genera nuestro bloque
contador que direcciona la memoria coseno.

Sin embargo no lo podemos hacer simplemente cambiando el parmetro simple del


periodo en la ficha de configuracin del contador, ya que al simular nos da un error de
data rate a la entrada del Black box, esto se debe a que la Black box debe procesar todas
las entradas y/o todas las salidas a la misma tasa de cambio; la forma de bajar esta
frecuencia controlando este contador por medio de una seal de reloj adicional que
trabaje a una mayor frecuencia. A continuacin explicaremos bloque a bloque como se
hara para nuestra configuracin deseada:
1. Colocaremos un contador, que lo arrastraremos desde la ventana de librerias con
la siguiente configuracin:

2. A continuacin colocaremos un Down Sample que lo arrastraremos desde la


ventana de libreras con la siguiente configuracin:

3. Por ultimo agregaremos de la ventana de libreras un caja llamada Clock Enable


Probe:

4. Por ultimo conectaremos estas tres cajas y las uniremos con el circuito hecho
anteriormente para as completarlo:

Para simular cada una de las salidas del conversor configuramos el wavescope
para cada una de las salidas como anlogas, y si queremos tambin ingresar las
graficas del las dos seales (moduladora y portadora) y de la modulacin ya sobre
un nivel DC.

Por ultimo ya cuando nuestro proyecto funciona en matlab vamos al bloque


system generator le damos doble click y en la nueva ventana le damos click en el
botn generate para generar el proyecto para xilinx ISE y poder compilarlo en ese
programa. Y programar la FPGA.

Vous aimerez peut-être aussi