You are on page 1of 35

noviembre 12

Práctico de Laboratorio

2013
DSP BUILDER

En este laboratorio se aprenderá a manejar herramientas propias de diseño electrónico.

Contenido
1 Práctica de laboratorio: DACs en FPGA .....................................................................................................2 1.2 PROYECTO. .........................................................................................................................................2 1.3 Diagrama de flujo de DSP Builder (DSB): ............................................................................................2 1.4 Forma de trabajo. ...............................................................................................................................3 2 DSP Builder Advanced Blockset. ................................................................................................................5 2.1 Bloques fundamentales: .....................................................................................................................5 2.2 NCO ....................................................................................................................................................6 2.3 Frecuencia del NCO. ...........................................................................................................................8 2.4 Puertos de interface del NCO: ............................................................................................................8 3 FPGA overview ........................................................................................................................................10 3.1 Detalles de configuración de la FPGA. ..............................................................................................11 3.2 Sistema de clocks..............................................................................................................................12 3.3 Implementación del circuito de Clocks .............................................................................................14 3.4 Diagrama conceptual general . .........................................................................................................15 3.5 Características avanzadas de PLL. .....................................................................................................16 3.6 Agregar un diseño de DSP Builder a Quartus II. ................................................................................16 4 THDB_ADA (ADA): High-Speed A/D and D/A Development Kit ...............................................................17 4.1 Mapeo de los Datos. .........................................................................................................................18 4.2 Referencias. ......................................................................................................................................19 5 Conclusiones. ..........................................................................................................................................20 6 Apéndice. ................................................................................................................................................21 6.1 Quartus II: Creación del Proyecto. ....................................................................................................21 6.2 Agregar un diseño a Quartus hecho en DSPB Advanced Blockset ....................................................25 6.3 Creación del top-level para instanciar el ALTPLL y el diseño de DSPB. ...........................................26 6.4 Pruebas con ALTPLL0: desplazamiento de fase. ...............................................................................29

1

1 Práctica de laboratorio: DACs en FPGA

1.1 OBJETIVO.
El objetivo de este laboratorio en principio es muy simple: sintetizar un NCO (Numerically Controlled Oscillator) en la FPGA DE4 y luego viusalizarlo por el osciloscopio usando DACs del kit ADA (Analog-toDigital-to-Analog).

1.2 PROYECTO.
El enfoque del proyecto será bastante práctico evitando una descripción precisa de los bloques o módulos de DSP Builder o la misma FPGA, pero si indicar las configuraciones, programas, esquemas y diagramas que se utilizaron para alcanzar este objetivo. Para una descripción detallada se puede recurrir a los manuales de usuario de Altera citados en la bibliografía al final.

1.3 Diagrama de flujo de DSP Builder (DSB):
DSPB es una herramienta de alto nivel que nos permite “abstraernos ” del hardware (FPGA) y n os permite concentrarnos en la aplicación misma y no en como la implementaremos.

2

Advanced Blockset. Pero lograr esto debemos encapsular la parte hecha con el Advanced dentro de un subsistema y luego usar los bloques: HDL Output y HDL Input. La figura muestra la interoperabilidad entre los distintos dominios. 3 . y se describe sus bloques fundamentales.Clasificación de DSP Builder   Standard Blockset. que son especiales para interconectar los dominios Advanced y Estandard. 1. Lo que se recomienda es realizar los diseños con el Advanced Blockset y luego usar el Standard Blockset como envoltorio (wrapped) o contenedor del proyecto total. al menos en DSPB. Un diagrama más detallado mostraría un proyecto de esta forma: A continuación se muestra el proyecto final. De hecho este es el enfoque que se le dio a este Laboratorio.4 Forma de trabajo.

CLOCK_IN establece el clock de la FPGA. para una correcta interpretación por parte del osciloscopio. luego tenemos el bloque Signal Compiler que especifica el target la FPGA con la que se va a trabajar. CLOCK_OUT deriva a un SMA externo para analizar la señal. Las salidas seno y coseno se mapean a sendos DACs y dual_mode elige la forma en que van a trabajar los DACs. El bloque Clock configurado a 50 MHz. luego 3 bloques de asignación de pines: SW1 para resetear la FPGA.Del diagrama se ven los dos bloques obligatorios: Control y Signal. 4 . La siguiente figura desglosa el subsistema Advanced. Constant y Parallel Adder únicamente son necesarios para hacer positivos el nivel de salidas seno y coseno.

2. ModelIp: incluye filtros y síntesis de formas de onda que permiten crear diseños para aplicaciones digitales front-end. Control Block: especifica el directorio de salida del RTL y parámetros threshold del top level. DSPB Advanced se focaliza en la arquitectura del diseño y no en la implementación. De otra forma no se podrá compilar o simular el diseño.1 Bloques fundamentales: Cada diseño en DSPB Advanced debe tener un bloque de Control y otro de Signal. ModelBus: Provee registros y memoria.   Signals Block: especifica el clock del Bus y los clock del sistema. De esta librería usamos el oscilador controlado numéricamente (NCO) para sintetizar las ondas en la FPGA.2 DSP Builder Advanced Blockset. 5 . A continuación se muestran en detalles las configuraciones. Librerías: Básicamente consta de tres librerías:   ModelPrim: contiene funciones primitivas que automáticamente mapean construcciones eficientes en la FPGA. Los componentes del datapath en DSPB usa un solo clock-rate y el clock del Bus puede correr a una frecuencia de clock más bajo.  Simulink usa la representación time-step del system clock rate para representar su diseño.

luego usar este ángulo como un índice en tablas de seno y coseno para encontrar una primera aproximación (gruesa) de seno y 6 .2 NCO Un oscilador controlado numéricamente o un oscilador controlado digitalmente (DCO) es un sistema electrónico para sintetizar un rango de frecuencias desde una base de tiempo fija. Device Block debe estar al mismo nivel que los HDL Input y HDL Output. Observación: solo hace falta indicar la familia del dispositivo FPGA y no el modelo exacto. Los NCOs son útiles cuando una señal sinusoidal de fase continua con frecuencia variable es requerida. 2. tal como cuando se recibe una señal desde un trasmisor basado-en-NCO. El bloque NCO usa un algoritmo basado-en-octant con interpolación trigonométrica. La operación básica del NCO es acumular un ángulo de fase en un acumulador. ya que este se especifica en el bloque Signal Compiler del DSPBuilder Standard. Device Block: indica un subsistema de simulink particular como Top-Level de la FPGA y permite especificar el target del dispositivo. Todos los bloques por debajo de este nivel jerarquía se convierte en parte del diseño RTL y todos los que están por encima son parte del Tesbench.

Posteriormente implementa las tablas con una ROM. Este parámetro permite especificar el valor de incremento de fase que controla la frecuencia de la onda sinusoidal generada durante la simulación. Lo cual se corresponde con el DAC de 14 bits que vamos a usar. 7 .coseno. Una expansión en series de Taylor de los errores de ángulo pequeño refinan la primera aproximación para producir valores de seno y coseno precisos. con signo y con 13 bits de fracción. Se puede usar este bloque en un up/down converter para sistemas de radio o en una aplicación con DSP. También está muy relacionado con los parámetros output rate per channel y el Accumulator Bit Width. Los bloques de NCO usan la técnica de folding para producir valores de seno y coseno si el sample rate es una fracción entera del clock rate del sistema. A continuación analizamos los parámetros de configuración. sfix14_13 indica que es del tipo fixed-point de Simulink que tiene un total de 14 bits de ancho. Los coeficientes y los datos de entrada son del tipo fixed-point y la salida también. Phase Increment and Inversion.

%[MHz] frecuencia deseda para el seno y coseno. A=24. se puede especificar un valor de incremento de fase menor que 2^24.7109e+05 2.4 Puertos de interface del NCO: Los puertos son las entradas y salidas. Incr_pha=F*2^A/Fs Incr_pha = 6.3 Frecuencia del NCO. Sync: especifica la sincronización de fase. Para alcanzar la frecuencia deseada se debe especificar un incremento de fase definido por: Este valor debe caer dentro del rango especificado por el parámetro Accumulator Bit Width. En este proyecto esto se implementa con el bloque increment/decrement de DSPB Standard. como se ven en la siguiente figura. chan: especifica el canal. si v es alto. entonces chan indica a que canal de datos corresponde. cos: ídem al anterior 8 . entonces un nuevo dato se genera. En este ejemplo 14. En ancho en bits es una función del ancho de entrada en bits y la parametrización. Por ejemplo si el ancho es de 24 bits. también cero en este ejemplo. en este ejemplo cero.2. Sin: salida de datos del seno. Phase: especifica el offset de fase. v: indica validad. y se explican a continuación.%[bits] ancho del acumulador Fs=50. Que básicamente genera una onda cuadrada.%[MHz] frecuencia de los datos. ver diagrama. si v es alto. Ejemplo: F=2.

es un entero sin signo. Cuando un solo canal esta en la entrada. La salida. 9 . para todos los tipos. Este bloque incrementa o decrementa un valor en el tiempo. el valor siempre cambia por 1. para todos los formatos de salida. en este proyecto. Chanview excluye todas las muestras no validas. y por lo tanto se puede usar en cualquier lugar en el diseño. limpiando entonces el display del scope de simulink Increment Decrement. Produce RTL sintetizable. la secuencia de cuenta incrementa o decrementa por el valor representable más pequeño.Channel Viewer: Este bloque deserializa el bus en sus entradas para producir un número configurable de señales de salidas que no son TDM. Se puede usar para visualizar el contenido del protocolo TDM.

2do oscilador de 100 MHz.3 FPGA overview FPGA: STRATIX IV GX EP4SGX530KH40C2N Deberemos configurar los siguientes elementos de la FPGA. Existen tres fuentes: 1ro Oscilador de 50 MHz. J24: Salidas de clock de la FPGA. SW7: Este switch es importante. 10 .       SW8: Este switch nos permitirá trabajar con la con la placa ADA insertada en el conector HSMC Port A. SMA J14. USB Blaster Port: JTAG. es la interfaz de comunicación con la notebook. SMA J23. J18: Son salidas que se usan para sacar señales hacia afuera. 3ro fuente externa. SW0: Este switch se usa (por el usuario) para resetear la FPGA. nos permite seleccionar la fuente de clock para la FPGA. Se derivan al osciloscopio para su estudio. en nuestro caso señales de clock para el osciloscopio.

1 Detalles de configuración de la FPGA. A continuación mostramos la configuración del SW8. switch y botones de la FPGA se muestran a continuación. 11 .3. El control de los displays.

2 Sistema de clocks. 12 .3.

13 .

El nombre es usado como el nombre de la señal de clock y debe ser un identificador VHDL valido. Las fuentes de entrada de clock de la FPGA se originan desde dos osciladores on-board. siempre que esta activada la opción Export As Output Pin. J24. Cabe hacer notar que el nombre debe ser igual a como apararece en la figura anterior: Block parameters Clock. El periodo del clock debe ser más grande que 1 ps pero menos que 2. uno de 50 MHz y otro de 100 MHz. A continuación siguen tres bloques: Quartus II Pinout Assignments SW1: debería decir sw0 ya que este es el switch que se selecciono para el reseteo. un clock por defecto (clock) con un periodo real-world de 20ns y un sample time de 1 es automáticamente creado con un reset activo por bajo (aclr). ver figura : Clock block. la tabla 2-20 y la tabla 2. Para este proyecto elegimos la fuente de 50 MHz. Se usa en el top level de un diseño para establecer el clock base del hardware. Clocks adicionales pueden ser derivados desde este clock base mediante el uso del bloque Clock_Derived. La distribución de clocks completa está representada en la figura anterior y el SW7 se usa para elegir la fuente. O como se muestra en este ejemplo mediante la asignación Clock_out.3. alimentan a través de buffers de clocks así como también a otras interfaces incluyendo HSMC y conectores SMA.3 Implementación del circuito de Clocks La board DE4 contiene tres tipos de entrada de clock la cual incluye 16 pins de entrada de clocks globales. Si ninguna base de clock existe en el diseño.22 indican cómo se mapean estos clocks a los pin-outs de la Stratix. entradas de clock PLL externos y entradas de clock de referencia transceiver. CLOCK_IN : selecciona PIN AV19 de la FPGA como entrada para el clock de 50 MHz CLOCK_OUT: habilita GCLKOUT_FPGA y si el SW7 lo selecciona se puede ver en el conector SMA J23. 14 .1 ms.

Ver figura. CLK_A.4 Diagrama conceptual general . WRT_B. CLK_B con el agregado que estos deben sincronizarse con el clock de datos de acuerdo al diagrama de timing de los DACs. 15 .3. pero de la figura podemos ver que necesitamos 4 clocks adicionales a saber: WRT_A. Hasta ahora tenemos a la FPGA funcionando con el clock de 50 MHz con el pin AV19 habilitado. y este será el clock para los datos.

tcl. El bloque PLL de DSPB Standard soporta multiplicación y división de la frecuencia fundamental del PLL.tcl.add. Crear un nuevo proyecto en Quartus y usar MegaWirzar Plug-In para configurar el bloque ALTPLL. que son los archivos que hay que importar desde Quartus.tcl. Para más detalles ver el apéndice. <model name>. 3. Notar la ubicación de los archivos: nco.dmdl y noc. hay que encontrar el archivo: .add. Veamos un poco la estructura de carpetas que nos crea DSPB.add. duración del ciclo. al proyecto de Quartus como un archivo fuente. Si uno quiere usar características especiales del PLL tales como desplazamiento de fase. 3. generado por DSPB.mdl y . 2. Agregar el archivo . debe usar un proyecto en Quartus separado. Crear un diseño top-level (por ejemplo en Verilog) par instanciar el ALTPLL y el diseño de DSPB. Para un diseño hecho en DSPB Advanced Blockset en un projecto de Quartus II .tcl: este script (cuando se le ejecuta) carga los archivos VHDL en este subdirectorio y en la jerarquía de subsistemas.6 Agregar un diseño de DSP Builder a Quartus II.3.5 Características avanzadas de PLL. siguiendo el siguiente método: 1. por debajo del proyecto de Quartus. 16 .add.

and PLL from either HSMC or GPIO interface 17 . Dual ADC channels with 14-bit resolution and data rate up to 65 MSPS 2. Arquitectura y principales características de la placa 1. Ver figura. Clocks: Oscillator 100MHz.4 THDB_ADA (ADA): High-Speed A/D and D/A Development Kit Es una board secundaria que esta diseñada para proveer solucion DSP sobre FPGAs de la serie DE con interface HSMC (High-Speed Mezazine Card). para proveer puertos dual-channel. En este caso particular se probo en la DE4. SMA for ADC and DAC each. Dual DAC channels with 14-bit resolution and data rate up to 125 MSPS 3. Está placa esta equipada con un ADC y un DAC cada uno.

1 Mapeo de los Datos. Y también para completar las asignaciones con el Pin Planner desde Quartus.4. 18 . Esta tabla es muy importante y es la base para el mapeo de los pins I/O que dispone la FPGA Stratix se muestra a continuación.

• Volume 2: DSP Builder Standard Blockset. 19 . DSP Builder: • DSP Builder Handbook: • Volume 1: Introduction to DSP Builder.4. ADA: • THDB_ADA: High-Speed A/D and D/A Development Kit • AD9248 • AD9767 • Terasic High-speed AD/DA Daughter Board – Schematics. Quartus II: • Quartus II Handbook • Altera Software Installation and Licensing • Quartus II Help: About Installing Altera Software FPGA: • DE4 Getting Started Guide • DE4 User Manual • ALTERA Stratix IV Development & Education Board – Schematics.2 Referencias. • Volume 3: DSP Builder Advanced Blockset.

y como queda demostrado en este práctico. Segundo y más crítico fue integrar DSP Builder desde Quartus. 20 . Quartus II requiere mucho tiempo de ambientación. No obstante. siempre hay que hacer ajustes (en este caso relacionados con la fase) que nos obligan a hilar más fino y usar herramientas de más bajo nivel. tanto a nivel de resultados. enfrentarse por primera vez con herramientas nuevas como DSP Builder. Primero con DSP Builder: Advanced + Standard. como a nivel conceptual. fueron la fases de integración. aún usando herramientas de alto nivel.5 Conclusiones. Y por último podemos citar síncronismo de los clocks. La complejidad de funcionamiento de la FPGA usada para este práctico. el práctico fue positivo. al inicio. Si bien el objetivo es muy simple. La parte más críticas y a la vez. Ya que logramos el primer contacto con las suits EDS (Electronic Design Suits). que a su vez son mas completas. En resumen podemos concluir que implementar algo en FPGA no es algo trivial. también contribuye a aumentar esta inercia. la más poderosas del proyecto.

(Matlab R2012a .1 Quartus II: Creación del Proyecto.Quartus v13.SO:Windows 7 64 bits) 21 .0 .6 Apéndice. Crear un nuevo proyecto en Quartus II. 6.

Ahora creamos 22 .

23 .

24 .

add.6.2 Agregar un diseño a Quartus hecho en DSPB Advanced Blockset Hay que encontrar el archivo: .tcl en el proyecto de Quartus. 25 .

EL Top-Level se crea en base al siguiente diagrama: Básicamente para crear el TopLevel renombramos las entradas y salidas de los proyectos en DSPB y Quartus según diagrama.3 Creación del top-level para instanciar el ALTPLL y el diseño de DSPB. 26 .6.

27 .Luego lo ponemos como Top-Level del proyecto.

28 . usando la tabla y luego volver a compilar y grabar en la FPGA.Luego podemos compilar el proyecto y las variables declaradas en el top-level aparecerán en el pin planner en la columna “node Name” y en la columna “location” se puede completar manualmente las asisgnaciones que faltan.

6. 29 .4 Pruebas con ALTPLL0: desplazamiento de fase.

A continuación se muestran resultados obtenidos con distintas configuraciones en el PLL. analizados en el osciloscopio para ver los corrimientos de fase. 30 .

31 .

32 .

33 .

34 .