9
Lab 5: Contador decimal 2-1 Lab 5: Contador decimal en System Generator Introducción Este laboratorio guia al asistente a través de las herramientas System Generator y Simulink para analizar la representación de números en System Generator Objetivos Después de completer este laboratorio, el alumno será capaz de: Crear un diseño en System Generator y realizar la simulación en MATLAB Estar familiarizado con el entorno de desarrollo de Simulink y System Generator Aprender el uso de algunos bloques: Counter, ROM, Down-Sample. Aprender a realizar divisores de frecuencia usando bloques de Xilinx Descripción del diseño Crear un modelo en Simulink que realice un contador decimal del 0 al 9 con una cuenta ascendente/descendente a una frecuencia de 2 Hz. El objetivo principal es trabajar con un diseño conocido para el asistente y explorar como implementarlo usando bloques de System Generator. Figura A. Diagrama conceptual para el contador decimal en SG Divisor de frecuencia clk rst dir display 7 Contador binario Decodifi- cador BCD 4 Clk 2Hz 50 Mz

proyecto-micro.pdf

Embed Size (px)

Citation preview

Page 1: proyecto-micro.pdf

Lab 5: Contador decimal 2-1

Lab 5: Contador decimal en System Generator

Introducción

Este laboratorio guia al asistente a través de las herramientas System Generator y Simulink para analizar la representación de números en System Generator

Objetivos

Después de completer este laboratorio, el alumno será capaz de:

• Crear un diseño en System Generator y realizar la simulación en MATLAB

• Estar familiarizado con el entorno de desarrollo de Simulink y System Generator

• Aprender el uso de algunos bloques: Counter, ROM, Down-Sample.

• Aprender a realizar divisores de frecuencia usando bloques de Xilinx

Descripción del diseño

Crear un modelo en Simulink que realice un contador decimal del 0 al 9 con una cuenta ascendente/descendente a una frecuencia de 2 Hz. El objetivo principal es trabajar con un diseño conocido para el asistente y explorar como implementarlo usando bloques de System Generator.

Figura A. Diagrama conceptual para el contador decimal en SG

Divisor de frecuencia

clk rst

dir

display 7

Contador binario

Decodifi-cador BCD 4

Clk 2Hz

50 Mz

Page 2: proyecto-micro.pdf

Lab 5: Contador decimal 2-2

Procedimiento

En esta sección el asistente encontrará todos los pasos necesarios para realizar el laboratorio. El procedimiento incluye los siguientes pasos principales:

1. Crear un nuevo modelo Simulink

2. Realizar diagrama esquemático (colocación, configuración e interconexión de bloques )

3. Simular el diseño usando MATLAB

4. Implementar el diseño en la tarjeta FPGA

Cada paso principal del procedimiento es indicado por el ícono . Cada paso a su vez tiene instrucciones específicas para alcanzar el objetivo final. Cuando se pida alguna información al asistente o que responda ciertas preguntas aparecerá el ícono

Paso 1. Crear un nuevo modelo Simulink

Abrir Xilinx System Generator mediante MATLAB y crear un nuevo modelo Simulink.

� Abrir System Generator seleccionando

� Seleccionar en la ventana Current Directory la carpeta de trabajo Work\Lab_user (e.g. $MATLAB\work\Lab_user) tal y como se muestra en la figura 1-1. Si la carpeta “Lab_user” no existe entonces crear una nueva. En la carpeta “Lab_user” estarán todos los laboratorios hechos por el usuario.

Figura 1-1. Seleccionando la carpeta de trabajo como Current Directory

� Crear una nueva carpeta llamada Lab5 y convertirla en el current directory (i.e. Current Directory = $MATLAB\work\Lab_user\Lab5)

� Ir a la ventana de Simulink Library Browser y seleccionar el botón New Model. A continuación se abrirá una “hoja en blanco” en donde se captura el modelo Simulink.

?

Page 3: proyecto-micro.pdf

Lab 5: Contador decimal 2-3

Figura 1-2. Crear un nuevo modelo Simulink

� En la ventana del nuevo modelo ir al menú Simulation ���� Configuration Parameters… Colocar las siguientes configuraciones: Start time: 0 Final time: 200 Type: Fixed-step Solver: discrete (no continuous state) Fixed-step size: 0.01 Click <OK>

� Guardar el modelo como lab5.mdl

Paso 2. Realizar diagrama esquemático

Una vez creado el nuevo modelo el siguiente paso es crear el diseño mediante bloques de System Generator y Simulink. Este paso incluye la colocación, configuración e interconexión de los bloques.

� En la ventana Simulink Library Browser. En la librería Sources, agregar 1 bloque Constant y 1 bloque Step. En la librería Sinks, agregar 1 bloque Scope (figura 2-1).

Figura 2-1. Agregando bloques de Simulink

� El siguiente paso es agregar los bloques de System Generator. En la ventana Simulink Library Browser. Expandir el Xilinx Blockset y dar click en Index, en donde aparecerán todos los bloques de System Generator disponibles para realizar diseños con FPGAs.

� Del Xilinx Blockset agregar 1 bloque System Generator, 2 bloques Gateway In, 3 bloques Gateway Out, 1 bloque Counter, 1 bloque ROM, 1 bloque Constant, 3 bloques Down Sample, 1 bloque Clock Enable Probe.

Page 4: proyecto-micro.pdf

Lab 5: Contador decimal 2-4

� Realizar las interconexiones entre los bloques tal y como se muestra en la figura 2-2. Configurar el Scope para que tenga 4 entradas. Además renombrar los puertos E/S como lo indica la figura.

Figura 2-2. Agregando bloques de Xilinx y realizando las interconexiones

� El siguiente paso es configurar los parámetros para los bloques de System Generator. Realizar las siguientes configuraciones:

Step Initial value: 1 Final value: 0 Gateway In (rst) y Gateway In (dir) Output type: Boolean Counter Counter type: Free-running Counter direction: Up/Down Output type: UFix_4_0 Provide synchronous reset: Habilitar Provide enable port: Habilitar ROM Depth: 16 Memory type: Distributed memory Initial value vector: hex2dec( ['C0'; 'F9'; 'A4'; 'B0'; '99'; '92'; '82'; 'F8'; '80'; '90'; '88'; '83'; 'C6'; 'A1'; '86'; '8E' ] ) Latency: 0 Output type: UFix_8_0 Gateway out (test_simulation y test_simulation1) Translate into output port: Deshabilitar Constant Output type: Boolean Sample Constant: Habilitar Down Samples Ningún cambio para propósitos de simulación

� Cuando el bloque Counter se configura se agregan varias entradas, conectar estas nuevas entradas tal y como lo indica la figura 2-3. Con este cambio el diseño esta completamente conectado y configurado.

Page 5: proyecto-micro.pdf

Lab 5: Contador decimal 2-5

Figura 2-3. Conectar las conexiones faltantes

APARTADO 1: DIVISOR DE FRECUENCIA EN SYSTEM GENERATOR En el presente laboratorio se aprende a diseñar un divisor de frecuencia usando bloques de Xilinx, este divisor se logra implementar de la siguiente manera:

La frecuencia de salida será la salida del bloque Clock Enable, y esta dada por la siguiente fórmula:

Fclk_out = Freloj / (cte1*cte2* cte3) [ecuación 1] Por ejemplo, si Freloj = 50 MHz, cte1=cte2=cte3=2 se tiene que la frecuencia de salida es:

Fclk_out = 50 MHz / (2*2*2) = 50 MHz / 8 = 6.25 MHz En realidad la fórmula puede extenderse a la forma genérica Fclk_out = Freloj / (cte1*cte2 *… * cteN), colocando N bloques tipo Down Sample.

cte1 cte2 cte3

Page 6: proyecto-micro.pdf

Lab 5: Contador decimal 2-6

Paso 3. Simular el diseño usando MATLAB

El siguiente paso consiste en verificar el comportamiento del diseño en la simulación. Para lograr esto se utilizan las herramientas de simulación de MATLAB

� El siguiente paso es realizar la simulación dando click en el botón Start Simulation y colocando el tiempo de simulación en el cuadro de diálogo, que para este caso siempre será 200 seg.

1. Con los valores por default de los bloques de Simulink. Explicar los valores vistos en el bloque Scope. Definir que significa cada una de las 4 entradas del Scope.

2. ¿Cada cuantas muestras se da el reloj de salida del divisor de frecuencia?, ¿Cuál es la relación entre el reloj de System Generator y el reloj de salida del divisor de frecuencia?

3. ¿Si se requiere un divisor de frecuencia para generar una frecuencia de salida de 1 Hz, Cuales serían posibles valores para las constantes cte1, cte2 y cte3 de los bloques Down sample?

?

Page 7: proyecto-micro.pdf

Lab 5: Contador decimal 2-7

4. ¿Si se implementa el diseño cuantos puertos de salida se tendrían?, note que algunos bloques gateway out están en color gris.

5. Realice los cambios necesarios para que se vea tanto el conteo ascendente como el conteo descendente en la misma ventana del Scope. Puede cambiar bloques tipo Sink y Source, tiempos de simulación , etc.

Page 8: proyecto-micro.pdf

Lab 5: Contador decimal 2-8

Paso 4. Implementar el diseño en una tarjeta FPGA

El paso final es implementar el diseño en una tarjeta FPGA. Este paso incluye la asignación de pines E/S y la generación del archivo BIT necesario para la programación del FPGA.

� El primer paso es asignar los pines de E/S a los Gateways In/Out. Realizar las siguientes asignaciones a los Gateways In/Out (figuras 4-1 y 4-2).

Figura 4-1. Asignación de pines para los Gateways In (entradas rst y dir respectivamente)

Figura 4-2. Asignación de pines para los Gateways Out (salida display)

� Recuerde que el divisor de frecuencia que se tiene genera un divisor de 8. Si se requiere generar una frecuencia de salida de 2 Hz para un reloj de entrada de 50 MHz entonces habrá que configurar los 3 bloques Down Sample con las constantes: 2500, 100 y 100 respectivamente. Consulte el APARTADO 1 para verificar este resultado haciendo uso de la ecuación 1.

Figura 4-3. Configurando el divisor de frecuencia

� Una vez asignados los pines de E/S, abrir el cuadro de configuración de System Generator y configurar los campos Compilation, Part, FPGA clock period, Clock pin location; tal y como se observa en la figura 4-4. Una vez configurado, Click <APPLY>, Click <GENERATE>. Ahora System Generator generará el archivo BIT (tarda aprox. 5 – 10 min).

Page 9: proyecto-micro.pdf

Lab 5: Contador decimal 2-9

Figura 4-4. Configurando el bloque System Generator

� Ir a la carpeta netlist y buscar el archivo lab5_cw.bit. Después se puede usar la herramienta iMPACT para programar la tarjeta FPGA como habitualmente se hace���� Programas ���� Xilinx ISE Design Suite 10.1 ���� ISE ���� Accesories ���� iMPACT

� Validar e interpretar el diseño dando las entradas mediante los Switches y push-button y leyendo la salida en los DISPLAYs