DOCUMENTO Nº 1 MEMORIA - IIT Comillas · documento nº 1 memoria . Índice de la memoria ii

of 151/151
DOCUMENTO Nº 1 MEMORIA
  • date post

    30-Apr-2020
  • Category

    Documents

  • view

    0
  • download

    0

Embed Size (px)

Transcript of DOCUMENTO Nº 1 MEMORIA - IIT Comillas · documento nº 1 memoria . Índice de la memoria ii

  • DOCUMENTO Nº 1 MEMORIA

  • ÍNDICE DE LA MEMORIA

    II

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Índice de la memoria

    Parte I Memoria .......................................................................................... 9

    Capítulo 1 Introducción ................................................................................. 10

    1.1 Estudio de los trabajos existentes / tecnologías existentes ......................... 10

    1.1.1 M_1: Ordenador, multiplexación y potencia ................................................................ 10

    1.1.2 M_2: Microcontrolador, multiplexación y potencia ..................................................... 11

    1.2 Motivación del proyecto ................................................................................ 11

    1.2.1 Señalización vial .......................................................................................................... 12

    1.2.2 Publicidad .................................................................................................................... 12

    1.2.3 Entretenimiento ............................................................................................................ 13

    1.3 Objetivos......................................................................................................... 13

    1.4 Metodología / Solución desarrollada ........................................................... 14

    1.5 Recursos / herramientas empleadas ............................................................. 15

    Capítulo 2 Fundamentos teóricos .................................................................. 16

    2.1 Lenguaje VHDL ............................................................................................ 16

    2.2 Multiplexación ............................................................................................... 16

    2.3 Variación del brillo de un LED mediante PWM ........................................ 19

    Capítulo 3 Componentes del proyecto ............................................................ 21

    3.1 Introducción ................................................................................................... 21

    3.2 Matriz tridimensional ................................................................................... 21

    3.3 Etapa de potencia .......................................................................................... 21

    3.3.1 Prueba del circuito ....................................................................................................... 23

    3.4 Sistema de control ......................................................................................... 28

    3.4.1 Circuito de multiplexación ........................................................................................... 29

  • ÍNDICE DE LA MEMORIA

    III

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    3.4.1.1 HW_Multiplexation.............................................................................................. 29

    3.4.1.1.1 biest_triple .................................................................................................... 31

    3.4.1.1.2 decod_triple .................................................................................................. 32

    3.4.1.1.3 timer_RGB ................................................................................................... 33

    3.4.1.1.4 maquina ........................................................................................................ 34

    3.4.1.1.5 dirección ....................................................................................................... 35

    3.4.1.1.6 demux_fil ...................................................................................................... 35

    3.4.2 Memoria RAM doble puerto ........................................................................................ 36

    3.4.3 CPU Nios II .................................................................................................................. 37

    Capítulo 4 Resultados/Experimentos ............................................................. 39

    4.1 Memoria Ram y circuito de multiplexación ................................................ 39

    4.2 Microcontrolador, memoria Ram y circuito de multiplexación ................ 46

    Capítulo 5 Conclusiones ................................................................................. 48

    Capítulo 6 Futuros desarrollos ...................................................................... 49

    Bibliografía 50

    Parte II Estudio económico ........................................................................ 51

    Capítulo 1 Estudio económico ........................................................................ 52

    Parte III Manual de usuario ....................................................................... 53

    Capítulo 1 Manual de conexionado de las tarjetas ....................................... 54

    Capítulo 2 Manual de programación del micro Nios II ................................ 56

    Parte IV Código fuente e instrucciones de creación .................................. 59

    Capítulo 1 Código fuente e instrucciones de creación .................................. 60

    1.1 HW_Multiplexation ....................................................................................... 60

    1.1.1 Biest_triple ................................................................................................................... 60

    1.1.1.1 biestable ................................................................................................................ 61

    1.1.2 decod_triple .................................................................................................................. 62

    1.1.2.1 decod .................................................................................................................... 62

    1.1.3 timer_RGB ................................................................................................................... 64

    1.1.3.1 counter .................................................................................................................. 64

    1.1.3.2 comp_RGB ........................................................................................................... 66

  • ÍNDICE DE LA MEMORIA

    IV

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    1.1.3.2.1 comp ............................................................................................................. 67

    1.1.4 maquina ........................................................................................................................ 68

    1.1.5 dirección ....................................................................................................................... 70

    1.1.6 demux_fil ..................................................................................................................... 71

    1.2 RamDoblePuerto ........................................................................................... 74

    1.2.1 RamMem ...................................................................................................................... 74

    1.2.1.1 Configuración de la memoria Ram ....................................................................... 75

    1.2.2 Inicialización de la memoria Ram ................................................................................ 79

    1.3 MiNios............................................................................................................. 81

    1.3.1 Configuración del micro Nios II .................................................................................. 81

    1.3.2 Software del micro Nios II ........................................................................................... 91

    1.4 Testbench de memoria Ram más multiplexación ...................................... 93

    Parte V Anejos ............................................................................................ 99

    Capítulo 1 Mapa de memoria RAM ............................................................. 100

    Capítulo 2 Fabricación de la matriz tridimensional de LEDs .................... 103

    Capítulo 3 Fabricación de las PCB .............................................................. 109

    Parte VI Datasheets ................................................................................... 115

    Capítulo 1 Datasheets ................................................................................... 116

    1.1 Mini USB-B .................................................................................................. 116

    1.2 Header 40 pines ........................................................................................... 117

    1.3 LED RGB ..................................................................................................... 118

    1.4 Diodo de pequeña señal (D21) .................................................................... 123

    1.5 MOSFET canal N (Q1 y Q3) ...................................................................... 125

    1.6 MOSFET canal P (Q2) ................................................................................ 133

    1.7 Resistencia de 50 Ω...................................................................................... 141

    1.8 Resistencia de 100 Ω .................................................................................... 142

    1.9 Resistencia de 953 Ω .................................................................................... 147

  • ÍNDICE DE TABLAS

    V

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Índice de figuras

    Figura 1: Simulación de memoria Ram más circuito de multiplexación .............. 18

    Figura 2: Resumen del esquema eléctrico. ............................................................ 20

    Figura 3: Resumen del esquema eléctrico ............................................................. 22

    Figura 4: Señal COLUMNA ................................................................................. 24

    Figura 5: Tensiones VA y VB estando conectada la columna del color rojo. ...... 25

    Figura 6: Tensiones VA y VB estando conectada la columna del color verde. .... 25

    Figura 7: Tensiones VA y VB estando conectada la columna del color azul. ...... 26

    Figura 8: Tensiones VB y VC estando conectada la columna del color rojo. ....... 27

    Figura 9: Tensiones VB y VV estando conectada la columna del color verde. .... 27

    Figura 10: Tensiones VB y VC estando conectada la columna del color azul. .... 28

    Figura 11: Circuito de Multiplexación .................................................................. 30

    Figura 12: Biestable triple ..................................................................................... 31

    Figura 13: Decodificador triple ............................................................................. 32

    Figura 14: Generador de la amplitud de la señal de las columnas ........................ 33

    Figura 15: Máquina de estados .............................................................................. 34

    Figura 16: Generador de la dirección de memoria y de la fila .............................. 35

    Figura 17: Demultiplexor de filas ......................................................................... 36

    Figura 18: Memoria RAM de doble puerto ........................................................... 37

    Figura 19: Microcontrolador Nios II ..................................................................... 38

    Figura 20: Datos de la memoria Ram más el circuito de multiplexación ............. 40

    Figura 21: Simulación de dos ciclos completos .................................................... 41

    Figura 22: Simulación de un ciclo ......................................................................... 42

  • ÍNDICE DE TABLAS

    VI

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Figura 23: Detalle de la adquisición de datos de la memoria ................................ 43

    Figura 24: Detalle de la amplitud deseada de las columnas de la matriz .............. 45

    Figura 25: Datos del micro, la memoria Ram y el cto. de multiplexación ............ 46

    Figura 26: Nios II Application and BSP from Template ....................................... 57

    Figura 27: Properties for proyecto_bsp ................................................................. 58

    Figura 28: biest_triple ........................................................................................... 60

    Figura 29: decod_triple ......................................................................................... 62

    Figura 30: timer_RGB ........................................................................................... 64

    Figura 31: comp_RGB .......................................................................................... 66

    Figura 32: RamDoblePuerto .................................................................................. 74

    Figura 33: Configuración Ram paso 1 .................................................................. 75

    Figura 34: Configuración Ram paso 2 .................................................................. 76

    Figura 35: Configuración Ram paso 3 .................................................................. 76

    Figura 36: Configuración Ram paso 4 .................................................................. 77

    Figura 37: Configuración Ram paso 5 .................................................................. 77

    Figura 38: Configuración Ram paso 6 .................................................................. 78

    Figura 39: Configuración Ram paso 7 .................................................................. 78

    Figura 40: Configuración Ram paso 8 .................................................................. 79

    Figura 41: Nios II, paso 1 ...................................................................................... 82

    Figura 42: Nios II, paso 2 ...................................................................................... 82

    Figura 43: Configuración Micro Nios II ............................................................... 83

    Figura 44: Configuración micro Nios II ................................................................ 83

    Figura 45: Nios II, paso 3 ...................................................................................... 84

    Figura 46: Nios II, paso 4 ...................................................................................... 85

    Figura 47: Nios II, paso 5 ...................................................................................... 85

    Figura 48: Nios II, paso 6 ...................................................................................... 86

    Figura 49: Nios II, paso 7 ...................................................................................... 87

  • ÍNDICE DE TABLAS

    VII

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Figura 50: Nios II, paso 8 ...................................................................................... 87

    Figura 51: Nios II, paso 9 ...................................................................................... 88

    Figura 52: Nios II, paso 10 .................................................................................... 88

    Figura 53: Nios II, paso 11 .................................................................................... 89

    Figura 54: Microcontrolador Nios II ..................................................................... 89

    Figura 55: Nios II, paso 12 .................................................................................... 90

    Figura 56: Nios II, resultado de la compilación .................................................... 90

    Figura 57: Fila de LEDs ...................................................................................... 103

    Figura 58: Columnas para color rojo ................................................................... 104

    Figura 59: Dos filas conectada por color rojo ..................................................... 104

    Figura 60: Conexión de la tercera fila por color rojo .......................................... 105

    Figura 61: Matriz 3x3 columnas color rojo conectadas ...................................... 105

    Figura 62: Matriz 3x3 columnas rojo y verde conectadas ................................... 106

    Figura 63: Matriz 3x3 columnas rojo, verde y azul conectadas .......................... 106

    Figura 64: Ensamblaje de dos matrices 3x3 ........................................................ 107

    Figura 65: Ensamblaje de dos matrices 3x3y una tercera 3x3 preparada............ 107

    Figura 66: Matriz 3x3x3 ...................................................................................... 108

    Figura 67: Patillas de filas y columnas de la matriz 3x3x3 ................................. 108

    Figura 68: Insoladora del taller de ICAI ............................................................. 110

    Figura 69: PCB etapa de potencia ....................................................................... 111

    Figura 70: PCB matriz de LEDs .......................................................................... 112

    Figura 71: Parte Bottom de la etapa de potencia ................................................. 112

    Figura 72: Parte Top de la etapa de potencia ...................................................... 113

    Figura 73: Cubo de LEDs soldado a PCB ........................................................... 113

    Figura 74: PCB etapa de potencia y PCB cubo de LEDs .................................... 114

  • ÍNDICE DE TABLAS

    VIII

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Índice de tablas

    Tabla 1: Mapa de memoria RAM doble puerto .................................................. 101

  • Memoria

    9

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Parte I MEMORIA

  • Memoria

    10

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Capítulo 1 INTRODUCCIÓN

    En este capítulo se hace una introducción del proyecto, en las siguientes

    partes y capítulos se irán describiendo todos los detalles que lo componen.

    1.1 ESTUDIO DE LOS TRABAJOS EXISTENTES /

    TECNOLOGÍAS EXISTENTES

    Hoy en día existen diferentes proyectos de control de matrices de LEDs

    tanto bidimensionales como tridimensionales. Todos los proyectos tienen dos

    cosas en común, por un lado existe una matriz cuyos LEDs se pretenden iluminar,

    y por el otro existe un sistema de control de dichos LEDs, el cual está compuesto

    por un circuito de potencia, una etapa de multiplexación y un elemento que

    ejecuta instrucciones del usuario previamente programadas. La matriz puede ser

    tridimensional o bidimensional, pero la mayor diferencia entre los diversos

    trabajos con este tipo de matrices reside en el sistema de control, que se puede

    desarrollar de dos modos diferentes que a continuación se detallan.

    1.1.1 M_1: ORDENADOR, MULTIPLEXACIÓN Y POTENCIA

    Se trata de que un programa que se ejecuta en un ordenador envíe órdenes

    al circuito impreso donde está la multiplexación y la etapa de potencia. El usuario

    desde el ordenador envía al circuito impreso las instrucciones donde indica los

    LEDs que quiere que se iluminen durante la ejecución del programa. Dicho

    circuito está compuesto por una etapa de multiplexación y por una etapa de

  • Memoria

    11

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    potencia. El sistema de control está dividido entre el ordenador y el circuito

    impreso. La información se ha extraído de la referencia [MARK11].

    1.1.2 M_2: MICROCONTROLADOR, MULTIPLEXACIÓN Y POTENCIA

    En este modelo se añade un microcontrolador al circuito impreso para que

    se ejecute el programa. El usuario programa instrucciones en un microcontrolador

    localizado en el circuito impreso, donde están integradas también la etapa de

    multiplexación y la etapa de potencia. El circuito de control se encuentra en un

    único circuito impreso. Se puede comprobar la existencia de esta clase de

    circuitos en la referencia [SACC11].

    1.2 MOTIVACIÓN DEL PROYECTO

    Una vez analizados los dos modos existentes de implantación del sistema

    de control se pretende realizar una innovación en la parte dedicada al control. La

    idea consiste en mejorar el diseño y la eficiencia del sistema de control integrando

    el microcontrolador y la multiplexación en un solo chip. Para lograr ambas ideas

    se va a modelar el circuito de control en VHDL dentro de una FPGA.

    En este tercer método se trata de modelar un microcontrolador y la etapa

    de multiplexación en VHDL dentro de la FPGA, y exteriormente se conecta a un

    circuito impreso donde se ubica la etapa de potencia. De este modo se consigue

    mejorar el diseño al tener localizadas dos etapas del control dentro de la FPGA

    con su consiguiente reducción de espacio en circuito impreso y por lo tanto ahorro

    en coste de fabricación del circuito impreso. También se consigue mayor rapidez

  • Memoria

    12

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    en el control ya que la multiplexación hardware dentro de la FPGA es más rápida

    que la multiplexación software dentro de un microcontrolador. Con el empleo de

    la FPGA se gana en espacio, coste y velocidad.

    Este proyecto tiene varias aplicaciones muy interesantes en campos muy

    diferentes, tales como la señalización vial, la publicidad y el entretenimiento.

    1.2.1 SEÑALIZACIÓN VIAL

    En la actualidad, en muchos municipios se emplean semáforos de

    iluminación por LEDs para regular la circulación vial por el bajo consumo de los

    LEDs y porque el brillo de la señalización es muy visible en condiciones

    meteorológicas adversas. Estos semáforos están compuestos por matrices

    bidimensionales de LEDs y sólo son visibles para vehículos y peatones situados

    delante de sus respectivas matrices de señalización.

    La matriz tridimensional aporta a la señalización vial la ventaja de que un

    peatón ó un vehículo puedan conocer el estado del paso para peatones desde

    cualquier ángulo en que se aproxime al semáforo.

    1.2.2 PUBLICIDAD

    Todas las empresas necesitan darse a conocer al mercado para conseguir

    vender sus productos y esto se consigue en parte con la publicidad. Las matrices

    bidimensionales se emplean para anunciar toda clase de productos ó logos de

    empresas, pero al igual que con los semáforos LEDs bidimensionales la

    información sólo se transmite a los usuarios situados delante de la matriz.

  • Memoria

    13

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    El cubo de LEDs aporta a la publicidad una vía de emisión de información

    hacia usuarios localizados en cualquier posición alrededor del cubo, dando

    originalidad al mensaje a transmitir ó movimiento tridimensional a la imagen a la

    que hacer publicidad.

    1.2.3 ENTRETENIMIENTO

    El cubo de LEDs tridimensional ofrece al usuario un amplio abanico de

    posibilidades de entretenimiento debido a que los LEDs pueden ser iluminados de

    manera selectiva, esto significa que el usuario puede crear infinidad de imágenes

    y formas en el cubo iluminando los LEDs correspondientes.

    1.3 OBJETIVOS

    Durante el desarrollo del proyecto se van a seguir una serie de directrices

    para alcanzar el siguiente objetivo:

    “Encendido de un grupo de LEDs RGB de la matriz tridimensional,

    previamente introducidas sus posiciones y colores en la memoria del circuito de

    control y modelado en VHDL dentro de la FPGA”.

  • Memoria

    14

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    1.4 METODOLOGÍA / SOLUCIÓN DESARROLLADA

    Los objetivos han sido alcanzados cumpliendo previamente los siguientes

    pasos intermedios:

    Diseño y prueba del circuito de la etapa de potencia en una placa

    protoboard para la iluminación de un único LED.

    Fabricación de la etapa de potencia en una PCB, soldando únicamente los

    componentes necesarios para iluminar un LED.

    Creación de la matriz 3D de 3x3x3 y comprobación del correcto

    conexionado de los LEDs.

    Una vez que se compruebe que tanto el circuito para iluminar un LED

    como la matriz de 9 LEDs funcionan correctamente se suelda el resto de

    componentes de la placa PCB.

    Diseño del código en VHDL de la etapa de multiplexación para extraer

    los datos de luminosidad y color de cada uno de los LEDs de una memoria

    RAM.

    Implantación de la memoria RAM prediseñada por Altera en el diseño en

    VHDL.

    Visualización de una imagen estática, programada previamente en la

    memoria RAM, en la matriz de LEDs.

    Creación de una CPU Nios II para ejecutar instrucciones del usuario y su

    adhesión al diseño en VHDL.

    Programación del código final en VHDL en la FPGA Altera DE1 que

    controle el encendido de los LEDs de tal modo que se visualicen imágenes

    tanto estática como dinámicamente por la estructura de la matriz 3D.

  • Memoria

    15

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    1.5 RECURSOS / HERRAMIENTAS EMPLEADAS

    A continuación se detalla la lista de programas utilizados para desarrollar

    las diferentes etapas del proyecto:

    OrCAD Capture 7.10.340: se utiliza para el diseño del esquema del

    conexionado de los diferentes componentes del circuito que compondrá la

    etapa de potencia.

    OrCAD Layout Plus 7.0: programa para diseñar el PCB de la etapa de

    potencia. Se obtienen los fotolitos del PCB, será fabricada manualmente

    en el taller de ICAI.

    Quartus II 10.1sp1 Web Edition: es la herramienta empleada para

    modelar un sistema hardware para realizar la multiplexación de los LEDs

    de la matriz tridimensional y una CPU Nios II para ejecutar el software de

    control de la matriz de LEDs e implantarlos en la FPGA Cyclone II. El

    simulador de esta versión no se puede utilizar con lo que es necesario

    utilizar ModelSim.

    ModelSim-Altera 6.6d Starter Edition: es una herramienta de

    simulación de Altera más veloz y avanzada que el simulador de Quartus II

    de versiones anteriores.

    Nios II 10.1 Software Build Tools for Eclipse: es un recurso que permite

    implantar el software de control de la matriz de LEDs en el

    microcontrolador Nios II.

    Tarjeta de desarrollo Altera DE1: es una tarjeta de desarrollo creada por

    Altera, contiene la FPGA Cyclone II EP2C20F484C7 empleada en el

    proyecto.

  • Memoria

    16

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Capítulo 2 FUNDAMENTOS TEÓRICOS

    2.1 LENGUAJE VHDL

    Como se describe en el temario de la asignatura de la referencia

    [FERN07], los lenguajes de descripción Hardware son similares a los lenguajes de

    descripción software. Los HDL´s son lenguajes de alto nivel que definen

    hardware por dos motivos claros:

    Modelan componentes para su simulación: aseguran el comportamiento de

    un circuito antes de realizarlo, acepta todas las características del lenguaje

    y emplea descripciones independientes de la tecnología final.

    Describe el diseño de un circuito para su implementación física: genera un

    circuito (hardware) mediante un proceso de síntesis, soporta solo un

    subconjunto del lenguaje, la calidad del resultado depende del estilo de

    descripción y necesita de parámetros físicos dependientes de la tecnología.

    2.2 MULTIPLEXACIÓN

    La multiplexación es una técnica de iluminación muy empleada en las

    matrices de LEDs. Para entender en qué consiste esta técnica se describe a

    continuación un ejemplo sencillo de una matriz bidimensional de tres filas y cinco

    columnas, éste ejemplo es similar al ejemplo explicado en el texto referenciado

    [OSCA11].

  • Memoria

    17

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Si se desease controlar una fila de esa matriz serían necesarios seis pines,

    para controlar la matriz entera se requerirían tres puertos de seis pines. A mayor

    número de puertos PIO de un microcontrolador mayor es su precio, salvando

    características internas del micro que también elevan su precio. Es por ello que se

    emplea la multiplexación de las filas de la matriz que consiste en encender

    únicamente una fila de la matriz a la vez mientras se cargan los datos de las

    columnas para los LEDs de esa fila en paralelo. Si el encendido de cada fila se

    realiza suficientemente rápido parecerá que están todas las filas encendidas a la

    vez. Con este método la matriz necesitaría únicamente un puerto de ocho pines,

    habiéndose ahorrado diez pines.

    La apariencia de que todas las filas están encendidas con la multiplexación

    se debe a que el ojo humano retiene un destello de luz durante 20 ms después de

    que éste haya desaparecido. Es recomendable de que el tiempo mínimo desde que

    se enciende una fila hasta que se vuelve a encender, después de haber recorrido el

    resto de filas, sea menor que 20 ms para poder observar un foco de luz continuo y

    sin parpadeos. Por ello, en este proyecto la multiplexación de las filas se realiza a

    una frecuencia de 100 Hz, es doblemente superior a 50 Hz para evitar el parpadeo

    de los LEDs en el caso de que se requiera una apariencia de luz continua.

    En este proyecto la multiplexación se realiza por filas, cargando los datos

    de todas y cada una de las columnas en paralelo. También hay que destacar que se

    ha escogido la multiplexación hardware dentro de una FPGA porque es más

    rápida que la multiplexación software dentro de un microcontrolador, esto permite

    que se pueda trabajar a frecuencias más altas, se gana en velocidad. Además que

    la FPGA aporta un ahorro en coste de placa al obtenerse un circuito más pequeño.

    Como se observa en la figura 1, donde se representan dos ciclos de

    encendidos de los LEDS, el tiempo transcurrido entre que se enciende una fila

  • Memoria

    18

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    hasta que se vuelve a encender la misma fila es de 10 ms, inferior a 20 ms para

    evitar el parpadeo de los LEDS.

    Figura 1: Simulación de memoria Ram más circuito de multiplexación

  • Memoria

    19

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    2.3 VARIACIÓN DEL BRILLO DE UN LED MEDIANTE PWM

    En el circuito de control se diseña el componente timer_RGB que va a ser

    capaz de generar una señal tipo PWM (Pulse Width Modulation). Una señal de

    este tipo es aquella cuya anchura del pulso es variable. Esta variación de la

    anchura del pulso va a determinar una variación de la potencia de brillo de los

    LEDs. El parámetro característico de este tipo de señales es el factor de servicio o

    ciclo de trabajo que refleja la relación entre el tiempo en el que la señal vale un

    nivel alto y el periodo. Toda la información referida al PWM de este apartado 2.3

    se ha extraído de la referencia [ARIA04].

    Para la obtención de esta señal existen diversos métodos, aunque todos

    ellos se suelen basar en la técnica de comparación de dos señales. En este

    proyecto se comparan dos números para determinar el ancho del pulso en su valor

    alto. De la memoria Ram se extrae el valor del ancho del pulso y el timer_RGB

    mostrará a su salida una señal en valor alto hasta que mediante una comparación

    el valor obtenido de la memoria Ram coincida con el valor de la cuenta del

    contador del timer_RGB, en ese momento el valor de la señal valdrá su nivel bajo

    y se habrá creado así la modulación de la señal por ancho de pulso. A medida que

    el ancho del pulso de la señal de una columna de un LED sea mayor, el brillo del

    color de esa columna del LED será mayor y viceversa.

    El PWM sólo puede aplicarse en la señal que activa al transistor Q3 de la

    figura 2 ya que si se aplica al transistor Q1 se estaría cambiando el factor de

    servicio de 1/9 necesario para encender todas las filas y además el brillo del los

    LEDs no se vería afectado en modo alguno. El circuito de la figura 2 se explica

    más adelante en el apartado 3.3.

  • Memoria

    20

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Figura 2: Resumen del esquema eléctrico.

    Para concluir, para variar la frecuencia de iluminación de un LED ha de

    realizarse modificando la frecuencia de la señal del MOSFET canal N de las filas

    y con un factor de servicio de 1/9 por tener 9 filas. Para variar la potencia del

    brillo de un LED ha de modificarse el factor de servicio de la señal del MOSFET

    canal N de las columnas del LED, si permaneciera constante y se modifica su

    frecuencia no variaría la potencia de brillo.

  • Memoria

    21

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Capítulo 3 COMPONENTES DEL PROYECTO

    3.1 INTRODUCCIÓN

    En este capítulo se describen individualmente y con detalle todos los

    módulos que componen el proyecto.

    3.2 MATRIZ TRIDIMENSIONAL

    La matriz tridimensional está compuesta por nueve LEDs RGB, cada uno

    de éstos LEDs tiene en su interior tres diodos conectados en ánodo común que

    emiten por separado luz de la longitud de onda del color rojo, del color verde y

    del color azul.

    El encapsulado SMD de éstos LEDs tiene cuatro pines que corresponden a

    los tres colores RGB más un pin perteneciente al ánodo común. Combinando

    estos cuatro pines se ha construido la matriz tridimensional, los pasos se detallan

    en el capítulo 2 de la parte V Anejos.

    3.3 ETAPA DE POTENCIA

    Se busca crear un dispositivo intermedio entre la señal de 3,3 V de

    amplitud de salida de la tarjeta de desarrollo Altera DE1 y los LEDs de la matriz

  • Memoria

    22

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    tridimensional 3x3x3 para aportar mayor cantidad de corriente que la que puede

    aportar la FPGA a la matriz. La tensión que debe llegar a la entrada de la matriz es

    de 5 V. Para ello se ha diseñado el circuito que aparece en los planos Nº 1, 2, 3 y 4

    del esquema eléctrico del documento de planos.

    A modo explicativo se resume en la figura 3 la conexión de una fila de la

    matriz tridimensional con un único LED y para uno de los tres colores de ese Led.

    Se han marcado las tensiones VA, VB y VC para futuras explicaciones.

    Figura 3: Resumen del esquema eléctrico

    Se observan transistores MOSFET canal N y canal P. El motivo por el que

    se utilizan este tipo de transistores es porque cuando están en saturación la

    corriente por la puerta es casi cero, al contrario que ocurre en los transistores

    bipolares, y esto es beneficioso porque así no se requiere corriente de la FPGA

    durante la saturación de los MOSFET.

  • Memoria

    23

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Otra cualidad a destacar del circuito es el diodo de protección de la FPGA

    (D21) que se ha introducido en el diseño. La función de éste diodo es de

    protección de la FPGA cuando el transistor Q1 se estropee y circule corriente

    entre el drenador y la puerta. En ese caso la corriente se derivaría hacia la FPGA

    pero el diodo hace que la corriente circule por él salvando a la FPGA de

    estropearse, que si bien tiene una resistencia de entrada, no sería suficiente

    protección si no se incluye el diodo en el diseño.

    Se observan diferentes resistencias en el circuito, el motivo de la

    resistencia de 953 Ω es para limitar la corriente que circula por los el transistor Q1

    y para reducir las oscilaciones que provoca el transistor en la señal, para el cálculo

    de su valor se realizan pruebas con un potenciómetro de 5K.

    La resistencia de 100 Ω ha de tener un valor tan pequeño para que el

    condensador de la puerta Q2 se descargue rápidamente cuando el transistor Q1

    conduce.

    El transistor Q3 sirve para controlar el encendido y apagado de las

    columnas de la matriz además de controlar el brillo de los LEDs en función del

    PWM de la señal COLUMNA.

    3.3.1 PRUEBA DEL CIRCUITO

    Las señal que se ha empleado para alimentar el indicador COLUMNA del

    circuito durante el ensayo es la señal de 100 Hz y factor de servicio 1/9 que

    aparece en la figura 4, siendo una señal continua de amplitud 3,3 V la señal de

    alimentación aplicada en el indicador FILA.

  • Memoria

    24

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Figura 4: Señal COLUMNA

    Tanto en la figura 5, la figura 6 y la figura 7 se observa que la señal VA

    (superior) no es perfectamente cuadrada sino que tiene una pequeña pendiente en

    el cambio de nivel bajo a nivel alto y lo mismo le ocurre a la señal VB (inferior)

    en el cambio de nivel alto a nivel bajo.

    Éstas pendientes son frutos de las oscilaciones que aparecen cuando el

    transistor Q1 conmuta. Sólo se pueden atenuar con la resistencia R1 del circuito,

    si su valor crece la pendiente de VB se vuelve menor volviendo a la señal más

    lenta y las oscilaciones de VA aumentan. Por el contrario, si R1 disminuye mucho

    más de los 953 Ω las señales VB y VA se distorsionan volviéndose inestables. El

    valor de R1 a 953 Ω es el punto intermedio entre la inestabilidad y el aumento de

    las oscilaciones.

  • Memoria

    25

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Figura 5: Tensiones VA y VB estando conectada la columna del color rojo.

    Figura 6: Tensiones VA y VB estando conectada la columna del color verde.

  • Memoria

    26

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Figura 7: Tensiones VA y VB estando conectada la columna del color azul.

    Una vez se ha obtenido el valor de R1 y de R2 se debe de calibrar la

    resistencia R3 para las columnas de tal modo que su valor no permita que por los

    LEDs circule una corriente mayor a su corriente máxima permitida. Después, con

    el PWM de la señal COLUMNA, se hará un ajuste fino del brillo.

    La figura 8, la figura 9 y la figura 10 representan la señal VB (superior) y

    la señal VC (inferior) para las columnas de color rojo, verde y azul y con una

    resistencia R3 de valor 50 Ω.

  • Memoria

    27

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Figura 8: Tensiones VB y VC estando conectada la columna del color rojo.

    Figura 9: Tensiones VB y VV estando conectada la columna del color verde.

  • Memoria

    28

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Figura 10: Tensiones VB y VC estando conectada la columna del color azul.

    Comparando las señales VA, VB y VC de las figuras 5 y 8 se observa la

    conversión de la señal FILA de amplitud 3,3 V en una señal del 5 V en el punto

    VB y la correspondiente caída de tensión en los diodos en las señales VC.

    3.4 SISTEMA DE CONTROL

    El sistema de control se puede considerar como el cerebro del proyecto

    donde se van a realizar todo tipo de operaciones para iluminar la matriz con los

    colores deseados en las posiciones requeridas. Es un sistema en lazo abierto ya

    que no se dispone de sensores para realimentar los colores de cada LED.

  • Memoria

    29

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    El sistema completo de control se puede observar en el plano nº 9 del

    apartado de planos, en él se observan tres componentes claramente diferenciables

    que son el circuito de multiplexación, la memoria Ram de doble puerto y el

    microcontrolador Nios II.

    3.4.1 CIRCUITO DE MULTIPLEXACIÓN

    Todo el código de cada uno de los componentes descritos a continuación

    se encuentra detallado en el capítulo 1 de la parte IV Código fuente e

    instrucciones de creación. Todos los componentes tienen salidas y entradas extras

    que son útiles en simulación pero que no aportan nada cuando se está ejecutando

    en la FPGA.

    3.4.1.1 HW_Multiplexation

    El componente de la figura 11 engloba toda la multiplexación del sistema

    de control. Su función es la de extraer de la memoria Ram los datos de los colores

    de cada columna y fila para crear señales adecuadas para la etapa de potencia que

    iluminará la matriz de LEDs. En su interior, como se aprecia en el plano Nº10 del

    documento Nº2 Planos, se encuentra una estructura formada por una máquina de

    estados, biestables y demás componentes que se desarrollarán más adelante. En la

    figura 11, se observa el pinout del componente.

  • Memoria

    30

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Figura 11: Circuito de Multiplexación

    Las entradas y salidas del componente son las siguientes:

    clk50MHz: señal cuadrada a 50Hz generada por el oscilador de la FPGA.

    rst: señal reset, activa con valor 0 y dada por un interruptor de la FPGA.

    ce: señal que inhabilita todos los componentes cuando su valor es 0.

    data[31..0]: bus de datos de 32 bits de una celda de la memoria Ram.

    fila[3..0]: señal para simulación, indica el número de la fila activada en

    cada momento.

    FX: señal cuadrada conectada a su fila correspondiente para su activación,

    de factor de servicio 1/9.

    edir[5..0]: señal conectada a la memoria Ram para indicarle la dirección

    de memoria a leer.

    flag: indicador para la simulación, incrementa la dirección edir[5..0].

    ceo: indicador para la simulación de fin de cuenta del contador.

    cuenta[7..0]: indicador para la simulación de la cuenta del contador.

  • Memoria

    31

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    carga: indicador para la simulación del momento para cargar los tres datos

    de la Ram en la salida del biest_triple.

    CXR, CXG, CXB: señal cuadrada de factor de servicio variable

    conectada a su columna correspondiente.

    enX: indicador para la simulación del bit que habilita el biestable

    correspondiente del biest_triple.

    3.4.1.1.1 biest_triple

    A la hora de emplear la multiplexación en la matriz tridimensional de

    LEDs hay que tener en cuenta que las filas se multiplexan pero los datos de los

    colores de cada columna se han de cargar en paralelo aunque de la matriz solo se

    extraigan celdas de memoria de una en una. Para solventar éste problema se crea

    el componente de la figura 12 que es capaz de almacenar las tres palabras de la

    memoria Ram que contienen los datos de una columna.

    Figura 12: Biestable triple

    Las entradas y salidas del componente son las siguientes:

    clk50MHz: señal cuadrada a 50Hz generada por el oscilador de la FPGA.

    rst: señal reset, activa con valor 0 y dada por un interruptor de la FPGA.

    ce: señal que inhabilita todos los componentes cuando su valor es 0.

    carga: bit que indica a los tres biestables el momento de cargar los datos

    en las salidas. Es un proceso que se realiza en paralelo.

  • Memoria

    32

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    data[31..0]: dato de entrada de 32 bits extraído d la memoria Ram.

    enX: bit que permite cargar el dato de entrada de 32 bits en el biestable

    correspondiente.

    3.4.1.1.2 decod_triple

    La finalidad de este componente es la de desglosar en bloques de 8 bits los

    datos de 32 bits que llegan a la entrada. El proceso se realiza tres veces ya que el

    componente de la figura 13 consta de tres entradas de 32 bits, necesitando 9

    salidas de 8 bits que representan al número de cuenta de cada color de cada

    columna.

    Figura 13: Decodificador triple

    Las entradas y salidas del componente son las siguientes:

    clk50MHz: señal cuadrada a 50Hz generada por el oscilador de la FPGA.

    rst: señal reset, activa con valor 0 y dada por un interruptor de la FPGA.

    ce: señal que inhabilita todos los componentes cuando su valor es 0.

    qX[31..0]: dato de 32 bits, se cargan los tres en paralelo.

    RX[7..0], GX[7..0, BX[7..0]: dato de 8 bits para cada color y columna.

  • Memoria

    33

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    3.4.1.1.3 timer_RGB

    El componente de la figura 13 proporciona a su salida una señal cuadrada

    de factor de servicio variable según el número de cuenta que le llega a las entradas

    de 8 bits.

    Figura 14: Generador de la amplitud de la señal de las columnas

    Las entradas y salidas del componente son las siguientes:

    clk50MHz: señal cuadrada a 50Hz generada por el oscilador de la FPGA.

    rst: señal reset, activa con valor 0 y dada por un interruptor de la FPGA.

    ce: señal que inhabilita todos los componentes cuando su valor es 0.

    RX[7..0], GX[7..0], BX[7..0]: dato de 8 bits para cada color y columna.

    ceo: indicador de fin de cuenta del contador.

    cuenta[7..0]: indica la cuenta del contador.

    CXR, CXG, CXB: señal cuadrada de factor de servicio variable

    conectada a su columna correspondiente.

  • Memoria

    34

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    3.4.1.1.4 maquina

    El componente de la figura 15 representa la máquina de estados del

    sistema de multiplexación, dicha máquina se encarga de dar la señal que

    incrementa la dirección de la cual extraer de la memoria Ram la celda de 32 bits y

    además se encarga de generar la señal de carga del biest_triple. En su interior se

    gestiona un diagrama de estados mostrado en el plano Nº11 del documento Nº2

    Planos.

    Figura 15: Máquina de estados

    Las entradas y salidas del componente son las siguientes:

    clk50MHz: señal cuadrada a 50Hz generada por el oscilador de la FPGA.

    rst: señal reset, activa con valor 0 y dada por un interruptor de la FPGA.

    ce: señal que inhabilita todos los componentes cuando su valor es 0.

    ceo: sirve para resetear la máquina cuando alcanza el valor „1‟.

    carga: bit que se pone a „1‟ para cargar los datos a la salida de biest_triple.

    flag: bit que sirve para incrementar la dirección de la celda a extraer de la

    memoria Ram.

    enX: bit que habilita la carga de los datos en los biestables

    correspondientes de biest_triple.

  • Memoria

    35

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    3.4.1.1.5 dirección

    La finalidad del componente de la figura 16 es la de generar la dirección

    de extracción de la memoria Ram la celda de 32 bits incrementando dicha

    dirección cada vez que varía el bit de la entrada flag. Además genera un bus de

    datos a su salida con el número de fila a seleccionar por el bloque demux_fil.

    Figura 16: Generador de la dirección de memoria y de la fila

    Las entradas y salidas del componente son las siguientes:

    clk50MHz: señal cuadrada a 50Hz generada por el oscilador de la FPGA.

    rst: señal reset, activa con valor 0 y dada por un interruptor de la FPGA.

    ce: señal que inhabilita todos los componentes cuando su valor es 0.

    flag: indicador para la simulación, incrementa la dirección edir[5..0].

    FILA[3..0]: indica el número de fila a seleccionar por el demux_fil.

    dir[5..0]: dirección generada para extraer de la memoria Ram la celda

    deseada.

    3.4.1.1.6 demux_fil

    Representado en la figura 17 se encuentra el bloque demux_fil, el cual es

    un demultiplexor, se encarga de activar el bit de salida de la correspondiente fila

    indicada por el dato de 4 bits recibido a la entrada como sel[3..0] procedente del

    componente dirección.

  • Memoria

    36

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Figura 17: Demultiplexor de filas

    Las entradas y salidas del componente son las siguientes:

    sel[3..0]: dato que indica la fila a seleccionar.

    FX: señal cuadrada conectada a su fila correspondiente para su activación,

    de factor de servicio 1/9.

    3.4.2 MEMORIA RAM DOBLE PUERTO

    Uno de los componentes más importante del sistema de control es la

    memoria Ram de la figura 18, en dicha memoria el microcontrolador escribe la

    amplitud del PWM aplicado a cada color de los LED para que el componente

    HW_Multiplexation extraiga de una en una cada celda de 32 bits con la

    información escrita por el microcontrolador. El formato de las celdas de memoria

    se describe en el capítulo 1 de la parte V Anejos. Cabe destacar que la memoria

    Ram es un intermediario entre el microcontrolador y la multiplexación ya que

    cada uno trabaja de manera autónoma.

  • Memoria

    37

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Figura 18: Memoria RAM de doble puerto

    Las entradas y salidas del componente son las siguientes:

    data[31..0]: dato de entrada de 32 bits a escribir en la memoria Ram,

    proporcionado por el microcontrolador.

    wraddress[5..0]: dirección donde escribir el dato del microcontrolador.

    wren: permite habilitar (valor „1‟) ó deshabilitar (valor „0‟) la escritura de

    datos en la Ram.

    rdaddress[5..0]: indica la dirección de la memoria Ram donde está el dato

    de 32 bits que se quiere leer.

    clk50MHz: señal cuadrada de 50Hz generada por el oscilador de la

    FPGA.

    q[31..0]: dato leído de la memoria Ram.

    3.4.3 CPU NIOS II

    El microcontrolador juega un papel muy importante dentro del sistema de

    control, es el encargado de rellenar la memoria Ram con datos nuevos para que la

    imagen final visualizada en el cubo de LEDs sea dinámica en lugar de una imagen

    estática cuando no se varían los datos de la memoria Ram. Es un microcontrolador

    del tipo soft-core cpu el componente de la figura 19.

  • Memoria

    38

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Figura 19: Microcontrolador Nios II

    Las entradas y salidas del componente son las siguientes:

    clk50MHz: señal cuadrada de 50Hz generada por el oscilador de la

    FPGA.

    rst: señal reset, activa con valor 0 y dada por un interruptor de la FPGA.

    data[31..0]: dato de salida de 32 bits a escribir en la memoria Ram.

    wraddress[5..0]: dirección donde escribir el dato en la memoria Ram.

    wren: permite habilitar (valor „1‟) ó deshabilitar (valor „0‟) la escritura de

    datos en la Ram.

  • Memoria

    39

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Capítulo 4 RESULTADOS/EXPERIMENTOS

    4.1 MEMORIA RAM Y CIRCUITO DE MULTIPLEXACIÓN

    Para tener mayor probabilidad de que un circuito funcione correctamente

    cuando esté implementado, se debe comprobar primero el funcionamiento de los

    componentes por separado mediante simulación. En esta ocasión se va a llevar a

    cabo una simulación con la memoria Ram doble puerto y el circuito de

    multiplexación.

    La simulación se lleva a cabo con el programa ModelSim. Para poder

    simular un circuito con este programa se requiere de un Testbench ó banco de

    pruebas como el que aparece en el apartado 1.4 de la parte IV Código fuente e

    instrucciones de creación.

    Los valores con los que se inicializa la memoria Ram de doble puerto son

    los del archivo memram.mif del apartado 1.2.2 de la parte IV Código fuente e

    instrucciones de creación.

    Los datos del circuito compilado y de la memoria Ram aparecen en la

    figura 20.

  • Memoria

    40

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Figura 20: Datos de la memoria Ram más el circuito de multiplexación

    Se ha de comprobar en las simulaciones una serie de puntos que deben de

    cumplirse para poder asegurar que funciona correctamente esta parte del circuito

    de control.

    En primer lugar, se debe de cumplir que el tiempo que tarda la

    multiplexación en volver a encender una misma fila sea menor de 20 ms y, como

    se ha diseñado, que sea en 10 ms.

    En la figura 21 se comprueba que realmente la simulación cumple lo

    anteriormente descrito.

  • Memoria

    41

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Figura 21: Simulación de dos ciclos completos

  • Memoria

    42

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    El segundo punto a comprobar es que el factor de servicio de 1/9 se

    cumpla para la multiplexación de las filas, esto es que el tiempo de encendido de

    una fila ha de ser de 1,1 ms para un periodo de 10 ms. En la figura 22 se indica el

    tiempo de 1,1 ms de amplitud de la fila 1.

    Figura 22: Simulación de un ciclo

  • Memoria

    43

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    El tercer punto a cumplirse es que se extraigan correctamente los datos de

    la Ram que están en las direcciones solicitadas por el circuito de multiplexación y

    además que los datos extraídos sean recogidos y cargados correctamente mediante

    las señales en1, en2, en3 y carga del circuito de multiplexación, figura 23.

    Figura 23: Detalle de la adquisición de datos de la memoria

  • Memoria

    44

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Para terminar, el último punto para comprobar que la simulación y por

    tanto los componentes funcionan correctamente se debe de comprobar que la

    amplitud de las columnas coinciden con el dato extraído de la memoria Ram.

    En la figura 23 se observa que los tres datos extraídos están en

    hexadecimal 0x0000007F para la columna 1, el 0x00007F00 para la columna 2 y

    el 0x007F0000 para la columna 3. Estos números representan que el color azul de

    la columna 1 ha de tener una amplitud de cuenta del contador de hasta 127, el

    color verde de la columna 2 hasta 127 también y el color rojo de la columna 3

    hasta 127 de nuevo, que en hexadecimal es el 7F.

    Por lo tanto, en la figura 24 se observa que realmente la amplitud de la

    señal del color de la columna del LED deseado coincide con el valor de 8 bits

    extraído de las celdas de la memoria Ram que en esta simulación era 127.

  • Memoria

    45

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Figura 24: Detalle de la amplitud deseada de las columnas de la matriz

  • Memoria

    46

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Se cumplen todos y cada uno de los puntos diseñados para la memoria

    Ram y el circuito de multiplexación, con lo cual se puede afirmar que ambos

    funcionan correctamente cumpliendo con sus especificaciones de diseño.

    4.2 MICROCONTROLADOR, MEMORIA RAM Y CIRCUITO DE

    MULTIPLEXACIÓN

    Un microcontrolador generado con el módulo SOPC Builder de Quartus

    no puede ser simulado en ModelSim, es por ello por lo que no se puede hacer

    simulaciones para demostrar el correcto funcionamiento del sistema general de

    control de la matriz tridimensional. Es un microcontrolador OpenCore pero

    limitado. El circuito aparece en el plano Nº9 del documento Nº2 Planos.

    A continuación, en la figura 25 se muestran los datos de la compilación.

    Figura 25: Datos del micro, la memoria Ram y el cto. de multiplexación

  • Memoria

    47

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Este circuito de control consta de un microcontrolador que mete datos de

    32 bits en una memoria Ram de doble puerto y de un circuito de multiplexación

    que extrae esos datos y genera las señales adecuadas de acorde a esos datos para

    la etapa de potencia.

    Al microcontrolador se le descarga con el programa Nios II SBT for

    Eclipse el software del apartado 1.3.2 de la parte IV del proyecto, el diagrama de

    flujo del software se puede observar en el plano Nº12 del documento Nº2 Planos.

    Dicho software declara e inicializa tres vectores de tamaño 36 (zona útil de

    la memoria Ram, se explica en el capítulo 1 de la parte V Anejos) desde donde el

    propio software de manera cíclica e infinita va a ir extrayendo por un puerto de

    salida los datos de esos vectores para rellenar la memoria Ram de doble puerto. A

    la vez que extrae por otro puerto la dirección donde deben guardarse dichos datos

    en la memoria Ram para que los datos representados en la matriz se vayan

    modificando y den a la imagen un aspecto dinámico.

  • Memoria

    48

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Capítulo 5 CONCLUSIONES

    En este proyecto se ha conseguido describir un circuito de control

    hardware dentro de un chip. También se ha logrado diseñar un software para el

    Nios II que permite al microcontrolador rellenar infinitas veces la memoria Ram

    de doble puerto con tres vectores de datos declarados e inicializados previamente

    en el software.

    Se ha diseñado y construido una etapa de potencia para transformar la

    pequeña señal aportada por la FPGA en corriente y tensión suficiente para

    alimentar los LEDs de la matriz tridimensional y también se ha diseñado y

    construido con mucha paciencia un cubo de LEDs.

    Todos estos objetivos se han alcanzado satisfactoriamente. Además se han

    generado nuevas ideas innovadoras para futuras implementaciones.

    Por último, este proyecto sirve para descubrir una nueva vía de control de

    matrices de LEDs que no se había desarrollado antes.

  • Memoria

    49

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Capítulo 6 FUTUROS DESARROLLOS

    El proyecto actual deja abierta una puerta a la innovación tanto en

    el diseño de la matriz tridimensional de LEDs como en la innovación en el

    sistema de control y en la etapa de potencia.

    Una buena innovación en el proyecto sería sustituir la etapa de

    potencia por drivers de alimentación de LEDs ahorrando en tamaño de

    PCB. Respecto a la matriz se podrían emplear LEDs de diferentes

    potencias y formatos para conseguir acabados diferentes y también se

    podría investigar para mejorar la tecnología de fabricación y soldadura de

    la matriz.

    Otra posible mejora sería implantarle a la FPGA el control de un

    acelerómetro para poder controlar el giro de las imágenes representadas en

    la matriz. Se trata de convertir las señales obtenidas del acelerómetro en

    información con la que rellenar la memoria Ram.

    Por último, añadiendo sensores de luz, sensores de ultrasonido ó

    sensores de infrarrojos se podría detectar la presencia de un objeto cercano

    a la matriz de LEDs para así variar su brillo en función de la distancia al

    objeto a modo de señal lumínica. De nuevo, se trata de convertir las

    señales obtenidas de los sensores en información a asignar a la memoria

    Ram para rellenar el cubo de LEDs

  • Memoria

    50

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    BIBLIOGRAFÍA

    [ARIA04] Arias Mª J., I. Bravo, E. Bueno, M. Escudero, J. C. García, M. A. García,

    A. López, E. Martín, J. L. Martín, A. Martínez, S. E. Palazuelos,

    “Aplicaciones con Circuitos Electrónicos Analógicos”, Servicio de

    Publicaciones de la U. A. H., 2004.

    [ROJO09] Rojo J., “Mando de Radiofrecuencia Basado en Sensores Inerciales”,

    Proyecto Fin de Carrera, Universidad Pontificia de Madrid (ICAI). 2009.

    [FERN07] Fernández I., Apuntes de la asignatura “Tecnología Electrónica”,

    Universidad de Alcalá. 2007.

    [ALTE08] Altera Company, “Tutorial de desarrollo hardware de Nios II”, 2008.

    [MARK11] Markson T., www.lumisense.com. Página web. 2011.

    [OSCA11] Oscar, www.circuitoselectrónicos.org/2011/04/como-multiplexar-una-

    matriz-de-leds.html. Página web. 2011.

    [SACC11] Sacco M., www.neoteo.com/matriz-de-led-8x8.html. Página web. 2011.

    http://www.lumisense.com/http://www.circuitoselectrónicos.org/2011/04/como-multiplexar-una-matriz-de-leds.html.%20Página%20web.%202011http://www.circuitoselectrónicos.org/2011/04/como-multiplexar-una-matriz-de-leds.html.%20Página%20web.%202011http://www.neoteo.com/matriz-de-led-8x8.html.%20Página%20web.%202011

  • Estudio económico

    51

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Parte II ESTUDIO

    ECONÓMICO

  • Estudio económico

    52

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Capítulo 1 ESTUDIO ECONÓMICO

    En la actualidad, el empleo de elementos luminosos como método de

    comunicación de información está muy extendido. A lo largo de su historia, el ser

    humano ha empleado la luz tanto para iluminar en la oscuridad como para

    transmitir información. Uno de esos métodos de transmisión de información

    empleando la luz que se utiliza hoy en día son las matrices de LEDs que

    sustituyen a las pantallas de tubos catódicos que durante años se han utilizado.

    Este proyecto representa un paso más en el empleo de matrices de LEDs,

    aportándole un tercer grado de libertad a la imagen que se pretende transmitir al

    espectador.

    Las matrices actuales son pantallas compuestas por un número de LEDs

    distribuido en filas y columnas sobre el mismo plano, permitiendo únicamente el

    movimiento en dos direcciones a la imagen que se representa.

    Se está desarrollando un incremento del empleo de matrices de LEDs de

    dos dimensiones en publicidad y en señalización vial al ofrecer una alta

    luminosidad y un bajo consumo de energía eléctrica durante las horas de trabajo

    de las matrices, este incremento y el hecho de que se abra una vía al empleo de

    matrices tridimensionales de LEDs en la enseñanza universitaria avala la

    viabilidad económica del proyecto.

    El proyecto tiene una gran flexibilidad a la hora de adaptarse a cambios de

    formato y modelo deseado por los usuarios, permitiendo que el proyecto se

    renueve a medida que aparezcan nuevas necesidades.

  • Manual de usuario

    53

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Parte III MANUAL DE

    USUARIO

  • Manual de usuario

    54

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Capítulo 1 MANUAL DE CONEXIONADO DE

    LAS TARJETAS

    A continuación, se describen los pasos para conectar la tarjeta de

    desarrollo altera DE1, la etapa de potencia y la matriz de LEDs de manera que

    ningún componente sufra ningún riesgo eléctrico.

    1. En primer lugar se conecta la tarjeta de la matriz de LEDs a la tarjeta de la

    etapa de potencia mediante los 9 pines macho-hembra.

    2. El usuario debe conectar en primer lugar la tarjeta de desarrollo altera DE1

    con el cable USB-Blaster a una entrada USB del ordenador.

    3. Pulsar el botón rojo de la placa de desarrollo para el encendido.

    4. Descargar el hardware descrito en VHDL en la FPGA a través del cable

    USB-Blaster y el programa Quartus II.

    5. Descargar el software para el microcontrolador Nios II ubicado en el

    circuito de control descrito en C.

    6. Conectar un extremo del cable plano de 40 pines al conector GPIO 1 de la

    tarjeta de desarrollo DE1 y el otro extremo al socket de 40 pines de la

    etapa de potencia.

    7. Conectar el extremo mini-USB en el socket hembra mini-USB de la etapa

    de potencia y el otro extremo del cable a una entrada USB del ordenador.

  • Manual de usuario

    55

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    8. Llevar el interruptor SW9 (“reset” del circuito de control) de la tarjeta de

    desarrollo DE1 hacia adelante y también el interruptor SW0 (“ce” enable

    del circuito de control).

    9. Para desconectar las tarjetas se debe de realizar el proceso contrario,

    primero se desconecta el mini-USB de la etapa de potencia, después el

    cable plano de 40 pines y por último se desconecta el botón de POWER de

    la tarjeta de desarrollo altera DE1.

  • Manual de usuario

    56

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Capítulo 2 MANUAL DE PROGRAMACIÓN DEL

    MICRO NIOS II

    En este capítulo se explica al usuario el modo de instalar un programa en

    lenguaje C en el microcontrolador Nios II haciendo uso del programa Nios II

    Software Build Tools for Eclipse.

    Los pasos a seguir son los siguientes:

    1. Una vez abierto el programa Nios II SBT for Eclipse hacer click en File,

    expandir New y click en Nios II Application and BSP from Template.

    Aparecerá una ventana como la de la figura 26 En SOPC information file

    name seleccionar el archivo con extensión .sopcinfo que contiene la

    información del microcontrolador que va a ser utilizado. En Project name

    llamarlo proyecto, seleccionar el Project template llamado Count binary

    que se utilizará como programa base para diseñar el programa del proyecto

    y ahorrará tiempo. Por último hacer click en Finish. Aparecerán en el

    Project Explorer las siguientes carpetas:

    proyecto: proyecto de la aplicación C/C++.

    proyecto_bsp: es un paquete de soporte de la placa que encapsula

    los detalles del hardware del sistema Nios II.

  • Manual de usuario

    57

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Figura 26: Nios II Application and BSP from Template

    2. El siguiente paso consiste en compilar el proyecto para producir una

    imagen de software ejecutable, primero se debe de ajustar la configuración

    del proyecto para minimizar el tamaño ocupado en memoria por el

    software. Para ello en el Project Explorer hacer click derecho en

    proyecto_bsp y hacer click en Properties. Aparecerá la ventana de

    propiedades de proyecto_bsp. Ahora hacer clic en Nios II BSP Properties ,

    marcar las casillas de la figura 27 y hacer click en OK.

  • Manual de usuario

    58

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Figura 27: Properties for proyecto_bsp

    3. En la vista del Project Explorer hacer click derecho en “proyecto” y hacer

    click en Build. Aparecerá la ventana de Build Project que desaparecerá

    cuando el proyecto esté compilado y aparecerá un mensaje de “proyecto

    build complete” en la Console view.

    4. Este paso consiste en descargar el software en la tarjeta harware y hacerlo

    correr. Para descargar el ejecutable de software para la placa de destino

    hay que hacer click en “proyecto”, seleccione Run As y, a continuación,

    haga clic Nios II Hardware. Nios II SBT for Eclipse descarga el programa

    a la FPGA en la placa de destino y el programa empieza a correr. Si

    aparece la ventana Run Configurations hay que verificar el nombre del

    proyecto y hay que asegurarse de que el archivo ELF contiene datos

    relevantes y después hacer click en Run.

  • Código fuente e instrucciones de creación

    59

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Parte IV CÓDIGO FUENTE

    E INSTRUCCIONES DE

    CREACIÓN

  • Código fuente e instrucciones de creación

    60

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Capítulo 1 CÓDIGO FUENTE E

    INSTRUCCIONES DE CREACIÓN

    1.1 HW_MULTIPLEXATION

    Es un bloque que engloba a otros bloques menores, su estructura se puede

    apreciar en el plano Nº10 del documento Nº2 Planos.

    1.1.1 BIEST_TRIPLE

    Figura 28: biest_triple

  • Código fuente e instrucciones de creación

    61

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    1.1.1.1 biestable

    library ieee;

    use ieee.std_logic_1164.all;

    entity biestable is

    port (rst,clk50MHz,en,carga: in std_logic;

    data: in std_logic_vector(31 downto 0);

    q: out std_logic_vector(31 downto 0)

    );

    end biestable;

    architecture rtl of biestable is

    signal dato : std_logic_vector(31 downto 0);

    begin

    process(clk50MHz,rst)

    begin

    if(rst='0') then

    dato'0');

    elsif(clk50MHz'event and clk50MHz='1') then

    if(en='1') then

    dato

  • Código fuente e instrucciones de creación

    62

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    1.1.2 DECOD_TRIPLE

    Figura 29: decod_triple

    1.1.2.1 decod

    library ieee;

    use ieee.std_logic_1164.all;

    entity decod is

    port (rst,clk50MHz,ce: in std_logic;

    data: in std_logic_vector(31 downto 0);

    R: out std_logic_vector(7 downto 0);

    G: out std_logic_vector(7 downto 0);

    B: out std_logic_vector(7 downto 0)

    );

    end decod;

  • Código fuente e instrucciones de creación

    63

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    architecture rtl of decod is

    begin

    process(clk50MHz,rst)

    begin

    if(rst='0') then

    R'0');

    G'0');

    B'0');

    elsif(clk50MHz'event and clk50MHz='1') then

    if(ce='1') then

    B

  • Código fuente e instrucciones de creación

    64

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    1.1.3 TIMER_RGB

    Figura 30: timer_RGB

    1.1.3.1 counter

    El contador realiza una cuenta ascendente de 0 a 255, cada incremento en

    la cuenta se realiza cada 214 incrementos de la variable “cnt_div” que se

    producen cada ciclo de reloj (0.02 µs por los 50 MHz del reloj). Esto significa que

    un incremento de la variable “cuenta” ocurre cada 4.28 µs y cada activación del

    fin de cuenta “ceo” se produce cada 1.09 ms que es aproximadamente 1,1 ms (es

    el tiempo de activación de cada fila). Después de haberse activado las 9 filas se

    obtiene un tiempo final de ciclo de encendido de la matriz de aproximadamente

    10 ms.

  • Código fuente e instrucciones de creación

    65

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    library ieee;

    use ieee.std_logic_1164.all;

    use ieee.numeric_std.all;

    entity counter is

    port (rst,clk50MHz,ce: in std_logic;

    ceo:out std_logic;

    q: out std_logic_vector(7 downto 0)

    );

    end counter;

    architecture rtl of counter is

    signal cuenta: unsigned(7 downto 0);

    signal cnt_div: unsigned(9 downto 0);

    begin

    q

  • Código fuente e instrucciones de creación

    66

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    end if;

    else

    cnt_div

  • Código fuente e instrucciones de creación

    67

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    1.1.3.2.1 comp

    library ieee;

    use ieee.std_logic_1164.all;

    entity comp is

    port (rst,ce,clk50MHz: in std_logic;

    data: in std_logic_vector(7 downto 0);

    cuenta: in std_logic_vector(7 downto 0);

    data_clk:out std_logic);

    end comp;

    architecture rtl of comp is

    signal color: std_logic_vector(7 downto 0);

    signal tim: std_logic_vector(7 downto 0);

    begin

    tim

  • Código fuente e instrucciones de creación

    68

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    1.1.4 MAQUINA

    library ieee;

    use ieee.std_logic_1164.all;

    entity maquina is

    port(

    rst,clk50MHz,ceo,ce: in std_logic;

    --dir: in std_logic_vector(3 downto 0);

    --address: out std_logic_vector(3 downto 0);

    carga,flag,en1,en2,en3: out std_logic

    );

    end maquina;

    architecture rtl of maquina is

    type state is

    (AUX1,AUX2,AUX3,AUX4,AUX5,AUX6,AUX7,AUX8,AUX9,AUX10);

    signal estado: state;

    begin

    process(clk50mHz,rst,ceo)

    begin

    if (rst='0' or ceo='1') then

    estado

  • Código fuente e instrucciones de creación

    69

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    when AUX3=>

    estado

  • Código fuente e instrucciones de creación

    70

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    carga

  • Código fuente e instrucciones de creación

    71

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    if(fil_cuenta=8) then

    fil_cuenta

  • Código fuente e instrucciones de creación

    72

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    F7

  • Código fuente e instrucciones de creación

    73

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    F5

  • Código fuente e instrucciones de creación

    74

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    F3

  • Código fuente e instrucciones de creación

    75

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    1.2.1.1 Configuración de la memoria Ram

    En primer lugar se ha de seleccionar de los módulos de MegaWizard la

    memoria Ram doble puerto. Acto seguido, aparecerá la pantalla de la figura 33, en

    la cual no se ha de modificar nada.

    Figura 33: Configuración Ram paso 1

    En la pantalla de la figura 34 se selecciona el número de palabras que ha

    de contener la memoria Ram y el número de bits de cada palabra. En este caso se

    seleccionan 64 palabras porque se necesitan al menos 36 palabras (zona útil de la

    Ram, se explica en el capítulo 1 de la parte V Anejos) y el tamaño de cada palabra

    ha de ser de 32 bits porque necesitamos 8 bit por cada uno de los tres colores de

    un LED.

  • Código fuente e instrucciones de creación

    76

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Figura 34: Configuración Ram paso 2

    Como solamente se necesita un reloj se deja como está la pantalla de la

    figura 35 y se pulsa Next.

    Figura 35: Configuración Ram paso 3

  • Código fuente e instrucciones de creación

    77

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    Se ha de seleccionar lo que aparece en la figura 36 para añadir un puerto

    síncrono en la salida de datos de la memoria Ram para que los datos sean

    extraídos de manera síncrona con el reloj de la FPGA.

    Figura 36: Configuración Ram paso 4

    En la pantalla de la figura 37 se debe de dejar todo como está por defecto.

    Figura 37: Configuración Ram paso 5

  • Código fuente e instrucciones de creación

    78

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    En la pantalla de la figura 38 se observan dos opciones, la primera es para

    no inicializar la memoria Ram con ningún valor y la segunda que además está

    seleccionada sirve para indicarle a Quartus un archivo con extensión .mif donde

    se encuentran los valores de inicialización de la memoria Ram.

    Figura 38: Configuración Ram paso 6

    La pantalla de la figura 39 se ha de dejar por defecto y continuar con la

    siguiente pantalla.

    Figura 39: Configuración Ram paso 7

  • Código fuente e instrucciones de creación

    79

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    En la última pantalla, figura 40, nos indica MegaWizard los archivos de la

    memoria Ram que puede generar para que el usuario los seleccione a su elección.

    En este proyecto se seleccionan todos los archivos.

    Figura 40: Configuración Ram paso 8

    1.2.2 INICIALIZACIÓN DE LA MEMORIA RAM

    A continuación se expone el archivo memram.mif de inicialización de la

    memoria Ram de doble puerto para las pruebas del sistema sin incluir el

    microcontrolador. Con este archivo se configura la memoria para que la dirección

    0xXX : se inicialice con el valor 0x00XXXXXX.

  • Código fuente e instrucciones de creación

    80

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    % PROYECTO 2º I.A.E.I. %

    % VÍCTOR GARCÍA BARDERA %

    --CÓDIGO DE INICIALIZACIÓN DE LA RAM

    DEPTH = 64; -- The size of memory in words

    WIDTH = 32; -- The size of data in bits

    ADDRESS_RADIX = HEX; -- The radix for address values

    DATA_RADIX = HEX; -- The radix for data values

    CONTENT -- start of (address : data pairs)

    BEGIN

    00 : 0000007F; -- memory address : data

    01 : 0000007F;

    02 : 0000007F;

    03 : 00000000;

    04 : 00007F00;

    05 : 00007F00;

    06 : 00007F00;

    07 : 00000000;

    08 : 007F0000;

    09 : 007F0000;

    0A : 007F0000;

    0B : 00000000;

    0C : 0000007F;

    0D : 0000007F;

    0E : 0000007F;

    0F : 00000000;

    10 : 00007F00;

    11 : 00007F00;

    12 : 00007F00;

    13 : 00000000;

    14 : 007F0000;

    15 : 007F0000;

    16 : 007F0000;

    17 : 00000000;

    18 : 0000007F;

    19 : 0000007F;

    1A : 0000007F;

    1B : 00000000;

    1C : 00007F00;

    1D : 00007F00;

    1E : 00007F00;

    1F : 00000000;

    20 : 007F0000;

    21 : 007F0000;

    22 : 007F0000;

    23 : 00000000;

    24 : 00000000;

    25 : 00000000;

    26 : 00000000;

    27 : 00000000;

    28 : 00000000;

    29 : 00000000;

    2A : 00000000;

  • Código fuente e instrucciones de creación

    81

    UNIVERSIDAD PONTIFICIA COMILLAS

    ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

    INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

    2B : 00000000;

    2C : 00000000;

    2D : 00000000;

    2E : 00000000;

    2F : 00000000;

    30 : 00000000;

    31 : 00000000;

    32 : 00000000;

    33 : 00000000;

    34 : 00000000;

    35 : 00000000;