DOCUMENTO Nº 1 MEMORIA - IIT Comillas · documento nº 1 memoria . Índice de la memoria ii
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.
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<=(others=>'0');
elsif(clk50MHz'event and clk50MHz='1') then
if(en='1') then
dato<=data;
elsif(carga='1') then
q<=dato;
end if;
end if;
end process;
end rtl;
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<=(others=>'0');
G<=(others=>'0');
B<=(others=>'0');
elsif(clk50MHz'event and clk50MHz='1') then
if(ce='1') then
B<=data(7 downto 0);
G<=data(15 downto 8);
R<=data(23 downto 16);
end if;
end if;
end process;
end rtl;
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<=std_logic_vector(cuenta);
process(clk50MHz,rst)
begin
if(rst='0') then
cnt_div<=(others=>'0');
cuenta<=(others=>'0');
elsif(clk50MHz'event and clk50MHz='1') then
if(ce='1') then
if(cnt_div=214) then
cnt_div<=(others=>'0');
if(cuenta=255) then
cuenta<="00000000";//No es necesario
ceo<='0';
else
cuenta<=cuenta+1;
ceo<='0';
end if;
if(cuenta=254)then
ceo<='1';
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<=cnt_div+1;
end if;
end if;
end if;
end process;
end rtl;
1.1.3.2 comp_RGB
Figura 31: comp_RGB
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<=cuenta;
color<=data;
process(clk50MHz,rst)
begin
if(rst='0') then
data_clk<='0';
elsif(clk50MHz'event and clk50MHz='1') then
if(ce='1') then
if(tim<color) then
data_clk<='1';
else
data_clk<='0';
end if;
end if;
end if;
end process;
end rtl;
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<=AUX1;
flag<='0';
carga<='0';
en1<='0';
en2<='0';
en3<='0';
elsif (clk50MHz'event and clk50MHz='1') then
if (ce='1') then
case estado is
when AUX1=>
estado<=AUX2;
flag<='1';
when AUX2=>
estado<=AUX3;
flag<='0';
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<=AUX4;
flag<='1';
when AUX4=>
estado<=AUX5;
flag<='0';
en1<='1';
en2<='0';
en3<='0';
when AUX5=>
estado<=AUX6;
flag<='1';
en1<='0';
en2<='0';
en3<='0';
when AUX6=>
estado<=AUX7;
flag<='0';
en1<='0';
en2<='1';
en3<='0';
when AUX7=>
estado<=AUX8;
en1<='0';
en2<='0';
en3<='0';
when AUX8=>
estado<=AUX9;
en1<='0';
en2<='0';
en3<='1';
when AUX9=>
estado<=AUX10;
en1<='0';
en2<='0';
en3<='0';
carga<='1';
when AUX10=>
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<='0';
end case;
end if;
end if;
end process;
end rtl;
1.1.5 DIRECCIÓN
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity direccion is
port (rst,ce,clk50MHz,flag: in std_logic;
FILA: out std_logic_vector(3 downto 0);
dir: out std_logic_vector(5 downto 0)
);
end direccion;
architecture rtl of direccion is
signal col_cuenta: unsigned(1 downto 0);
signal fil_cuenta: unsigned(3 downto 0);
begin
FILA<=std_logic_vector(fil_cuenta);
dir<=std_logic_vector(fil_cuenta)&std_logic_vector(col_cuenta);
process(clk50MHz,rst)
begin
if(rst='0') then
col_cuenta<="11";--(others=>'0');
fil_cuenta<=(others=>'0');
elsif(clk50MHz'event and clk50MHz='1') then
if(ce='1') then
if(flag='1') then
if(col_cuenta=2) then
col_cuenta<="00";
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<="0000";
else
fil_cuenta<=fil_cuenta+1;
end if;
else
col_cuenta<=col_cuenta+1;
end if;
end if;
end if;
end if;
end process;
end rtl;
1.1.6 DEMUX_FIL
library ieee;
use ieee.std_logic_1164.all;
entity demux_fil is
port (sel: in std_logic_vector(3 downto 0);
F1,F2,F3,F4,F5,F6,F7,F8,F9: out std_logic
);
end demux_fil;
architecture rtl of demux_fil is
begin
process(sel)
begin
if (sel="0000")then --FILA 1
F1<='1';
F2<='0';
F3<='0';
F4<='0';
F5<='0';
F6<='0';
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<='0';
F8<='0';
F9<='0';
elsif (sel="0001")then --FILA 2
F1<='0';
F2<='1';
F3<='0';
F4<='0';
F5<='0';
F6<='0';
F7<='0';
F8<='0';
F9<='0';
elsif (sel="0010") then --FILA 3
F1<='0';
F2<='0';
F3<='1';
F4<='0';
F5<='0';
F6<='0';
F7<='0';
F8<='0';
F9<='0';
elsif (sel="0011") then --FILA 4
F1<='0';
F2<='0';
F3<='0';
F4<='1';
F5<='0';
F6<='0';
F7<='0';
F8<='0';
F9<='0';
elsif (sel="0100") then --FILA 5
F1<='0';
F2<='0';
F3<='0';
F4<='0';
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<='1';
F6<='0';
F7<='0';
F8<='0';
F9<='0';
elsif (sel="0101") then --FILA 6
F1<='0';
F2<='0';
F3<='0';
F4<='0';
F5<='0';
F6<='1';
F7<='0';
F8<='0';
F9<='0';
elsif (sel="0110") then --FILA 7
F1<='0';
F2<='0';
F3<='0';
F4<='0';
F5<='0';
F6<='0';
F7<='1';
F8<='0';
F9<='0';
elsif (sel="0111") then --FILA 8
F1<='0';
F2<='0';
F3<='0';
F4<='0';
F5<='0';
F6<='0';
F7<='0';
F8<='1';
F9<='0';
elsif (sel="1000") then --FILA 9
F1<='0';
F2<='0';
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<='0';
F4<='0';
F5<='0';
F6<='0';
F7<='0';
F8<='0';
F9<='1';
end if;
end process;
end rtl;
1.2 RAMDOBLEPUERTO
Figura 32: RamDoblePuerto
1.2.1 RAMMEM
En este apartado se explica el método de configuración de una memoria
Ram doble puerto en Quartus empleando los módulos prediseñados de
MegaWizard Plug-In Manager y además se expone el contenido del documento
memram.mif que inicializa la memoria Ram.
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;
36 : 00000000;
37 : 00000000;
38 : 00000000;
39 : 00000000;
3A : 00000000;
3B : 00000000;
3C : 00000000;
3D : 00000000;
3E : 00000000;
3F : 00000000;
END;
1.3 MINIOS
1.3.1 CONFIGURACIÓN DEL MICRO NIOS II
Este apartado se centra en la configuración de un microcontrolador
OpenCore Nios II empleando el SOPC Builder de Quartus, detallando los pasos
hasta la compilación del mismo. Toda la información que se ha necesitado para
este apartado se ha extraído de la referencia [ALTE08].
En primer lugar se abre el programa Quartus, se genera un nuevo proyecto
configurado adecuadamente para la FPGA que se va a utilizar y se selecciona el
SOPC Builder. Aparecerá inmediatamente la pantalla de la figura 41 donde se
debe de añadir el reloj del sistema pinchando en el botón Add.
Código fuente e instrucciones de creación
82
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Figura 41: Nios II, paso 1
A continuación se añade una memoria Ram on-chip de 17.000 bytes de
tamaño como la de la figura 42, éste es el tamaño máximo permitido para esta
clase de micros con memorias on-chip de M4K. Si se requiriese mayor espacio de
memoria se añadiría otra memoria Ram on-chip, pero con una es suficiente para
albergar el software con el que se programará el micro más adelante. Otras
versiones de tarjetas de desarrollo Altera permiten el uso de memorias M9K.
En Component Library (dentro de System Contents), expandir Memories
and Memory Controllers, expandir On-Chip, y hacer click en On-Chip Memory
(RAM or ROM).
Figura 42: Nios II, paso 2
Código fuente e instrucciones de creación
83
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
A continuación se selecciona la cpu Nios II, para ello se hace click en
Component Library, expandir Processors y hacer click en Nios II Processor.
Aparecerán las pantallas de las figuras 43 y 44. En el proyecto se ha seleccionado
el micro Nios II/s porque es un intermedio entre el básico y el completo y es
suficiente para el programa a desarrollar. Se selecciona una caché de 4 Kbytes.
Figura 43: Configuración Micro Nios II
Figura 44: Configuración micro Nios II
Código fuente e instrucciones de creación
84
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Se añade a continuación el JTAG UART que es una forma cómoda de
comunicar datos con el procesador Nios II a través del cable de descarga USB-
Blaster. Realizar los siguientes pasos para agregar la UART JTAG: En
Component Library expandir Interface Protocols, expandir Serial y hacer click en
JTAG UART, aparecerá la figura 45 en la pantalla y sólo hay que darle a Finish.
Figura 45: Nios II, paso 3
Para futuras aplicaciones se le ha añadido al microcontrolador un módulo
de interrupción, aunque para este proyecto no es necesario. Para añadirlo al micro
hay que ir a Component Library, expandir Peripherals, expandir Microcontroller
Peripherals y hacer click en Interval Timer. Aparecerá la pantalla de la figura 46.
Código fuente e instrucciones de creación
85
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Figura 46: Nios II, paso 4
Además de los módulos anteriores, se le añade el System ID peripheral,
éste módulo protege contra descargas accidentales de software compilado en un
sistema de Nios II diferente. Si el sistema incluye el system ID peripherals, el
Nios II SBT for Eclipse puede prevenir al usuario de que se está intentando
descargar programas compilados para otro sistema diferente. Para añadir éste
módulo se ha de ir a Component Library, expandir Peripherals, expandir Debug
and Performance y hacer click en System ID Peripheral. Aparecerá la pantalla de
la figura 47.
Figura 47: Nios II, paso 5
Código fuente e instrucciones de creación
86
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
El siguiente paso es añadir las interfaces de salida del microcontrolador
para las señales data, wraddress y wren. Para ello se añaden tres módulos PIO
como los de la figura 48, la figura 49 y la figura 50.
Los módulos PIO proporcionan un método sencillo para los sistemas del
procesador Nios II para recibir estímulos de entrada y sacar señales de salida del
microcontrolador. Aplicaciones complejas de control pueden utilizar cientos de
señales PIO del Nios II. En este proyecto se utilizan 39 señales de salida
PIO para conducir las señales en la placa.
Figura 48: Nios II, paso 6
Código fuente e instrucciones de creación
87
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Figura 49: Nios II, paso 7
Figura 50: Nios II, paso 8
Código fuente e instrucciones de creación
88
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Finalmente, después de añadir todos los módulos descritos al diseño del
microcontrolador, deben de aparecer reflejados en la pantalla principal de SOPC
Builder como en la figura 51.
Figura 51: Nios II, paso 9
Acto seguido hay que aginar las direcciones base de todos los módulos,
para ello hay que hacer click en System menu, hacer clic en Assign Base
Addresses. Al pulsar en Address Map aparecerá el mapa de las direcciones de
cada componente, las direcciones de los componentes del microcontrolador
diseñado se detallan en la figura 52.
Figura 52: Nios II, paso 10
Código fuente e instrucciones de creación
89
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Una vez asignadas las direcciones base, hay que generar el
microcontrolador y todos los archivos para que funcione correctamente, para ello
SOPC Builder pone a disposición del usuario en System Generation el botón
Generate. Si no hay ningún problema aparecerá el mensaje System generation was
susccessful como en la figura 53.
Figura 53: Nios II, paso 11
Una vez generado el componente se coloca en el proyecto de Quartus
como en la figura 54. Para poderlo compilar es necesario que no haya ningún
programa asignado para simulación y que no se especifique nada en el apartado
Timming, como se indica en la pantalla Settings de la figura 55.
Figura 54: Microcontrolador Nios II
Código fuente e instrucciones de creación
90
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Figura 55: Nios II, paso 12
Los datos resultantes de la compilación se observan en la figura 56.
Figura 56: Nios II, resultado de la compilación
Código fuente e instrucciones de creación
91
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
1.3.2 SOFTWARE DEL MICRO NIOS II
#include "alt_types.h"
#include "altera_avalon_pio_regs.h"
#include "sys/alt_irq.h"
#include "system.h"
#include <stdio.h>
#include <unistd.h>
#define N 36
static alt_u32 celda;
static int direcc;
static int habilit;
static void data_asignation()
#ifdef DATA_PIO_BASE
IOWR_ALTERA_AVALON_PIO_DATA(DATA_PIO_BASE,celda);
#endif
static void wraddress_asignation()
#ifdef WRADDRESS_PIO_BASE
IOWR_ALTERA_AVALON_PIO_DATA(WRADDRESS_PIO_BASE,direcc);
#endif
static void wren_asignation()
#ifdef WREN_PIO_BASE
IOWR_ALTERA_AVALON_PIO_DATA(WREN_PIO_BASE,habilit);
#endif
int main(void)
int
matrix1[N]=0x007F0000,0x007F0000,0x007F0000,0x00777777,0x007F0000
Código fuente e instrucciones de creación
92
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
,0x007F0000,0x007F0000,0x00777777,0x007F0000,0x007F0000,0x007F0000
,0x00777777,0x00007F00,0x00007F00,0x00007F00,0x00777777,0x00007F00
,0x00007F00,0x00007F00,0x00777777,0x00007F00,0x00007F00,0x00007F00
,0x00777777,0x0000007F,0x0000007F,0x0000007F,0x00777777,0x0000007F
,0x0000007F,0x0000007F,0x00777777,0x0000007F,0x0000007F,0x0000007F
,0x00777777;
int
matrix2[N]=0x00007F00,0x00007F00,0x00007F00,0x00777777,0x00007F00
,0x00007F00,0x00007F00,0x00777777,0x00007F00,0x00007F00,0x00007F00
,0x00777777,0x0000007F,0x0000007F,0x0000007F,0x00777777,0x0000007F
,0x0000007F,0x0000007F,0x00777777,0x0000007F,0x0000007F,0x0000007F
,0x00777777,0x007F0000,0x007F0000,0x007F0000,0x00777777,0x007F0000
,0x007F0000,0x007F0000,0x00777777,0x007F0000,0x007F0000,0x007F0000
,0x00777777;
int
matrix3[N]=0x0000007F,0x0000007F,0x0000007F,0x00777777,0x0000007F
,0x0000007F,0x0000007F,0x00777777,0x0000007F,0x0000007F,0x0000007F
,0x00777777,0x007F0000,0x007F0000,0x007F0000,0x00777777,0x007F0000
,0x007F0000,0x007F0000,0x00777777,0x007F0000,0x007F0000,0x007F0000
,0x00777777,0x00007F00,0x00007F00,0x00007F00,0x00777777,0x00007F00
,0x00007F00,0x00007F00,0x00777777,0x00007F00,0x00007F00,0x00007F00
,0x00777777;
int i;
int cuenta;
cuenta=0;
habilit=1;
i=0;
data_asignation();
wraddress_asignation();
wren_asignation();
while( 1 )
usleep(1100); // wait 1.1 ms
direcc=cuenta;
Código fuente e instrucciones de creación
93
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
if (i==0)
celda=matrix1[cuenta];
else if (i==1)
celda=matrix2[cuenta];
else if(i==2)
celda=matrix3[cuenta];
if(cuenta==(N-1))
cuenta=0;
if(i==2)
i=0;
else
i++;
else
cuenta++;
return 0;
1.4 TESTBENCH DE MEMORIA RAM MÁS MULTIPLEXACIÓN
El testbench o banco de pruebas es un módulo VHDL en el que se
instancia el componente a verificar y contiene código para asignar los estímulos
sobre el modelo a verificar y también contiene código para observar los resultados
obtenidos e informar al usuario. Hay que resaltar que los testbench no se
sintetizan, se utilizan descripciones algorítmicas para aprovechar toda la potencia
VHDL.
El testbench empleado para la simulación del módulo memoria Ram más
el circuito de multiplexación es el siguiente:
Código fuente e instrucciones de creación
94
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
-- Copyright (C) 1991-2011 Altera Corporation
-- Your use of Altera Corporation's design tools, logic functions
-- and other software and tools, and its AMPP partner logic
-- functions, and any output files from any of the foregoing
-- (including device programming or simulation files), and any
-- associated documentation or information are expressly subject
-- to the terms and conditions of the Altera Program License
-- Subscription Agreement, Altera MegaCore Function License
-- Agreement, or other applicable license agreement, including,
-- without limitation, that your use is for the sole purpose of
-- programming logic devices manufactured by Altera and sold by
-- Altera or its authorized distributors. Please refer to the
-- applicable agreement for further details.
--
******************************************************************
*********
-- This file contains a Vhdl test bench template that is freely
editable to
-- suit user's needs .Comments are provided in each section to
help the user
-- fill out necessary details.
--
******************************************************************
*********
-- Generated on "07/22/2011 02:33:43"
-- Vhdl Test Bench template for design : pract
--
-- Simulation tool : ModelSim-Altera (VHDL)
--
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY pract_vhd_tst IS
END pract_vhd_tst;
Código fuente e instrucciones de creación
95
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
ARCHITECTURE pract_arch OF pract_vhd_tst IS
-- constants
-- signals
SIGNAL clk50MHz : STD_LOGIC:='0';
SIGNAL rst : STD_LOGIC;
SIGNAL ce : STD_LOGIC;
SIGNAL cuenta : STD_LOGIC_VECTOR(7 DOWNTO 0);
SIGNAL flag : STD_LOGIC;
SIGNAL edir1 : STD_LOGIC_VECTOR(5 DOWNTO 0);
SIGNAL dataout : STD_LOGIC_VECTOR(31 DOWNTO 0);
SIGNAL ceo : STD_LOGIC;
SIGNAL C1R : STD_LOGIC;
SIGNAL C1G : STD_LOGIC;
SIGNAL C1B : STD_LOGIC;
SIGNAL C2R : STD_LOGIC;
SIGNAL C2G : STD_LOGIC;
SIGNAL C2B : STD_LOGIC;
SIGNAL C3R : STD_LOGIC;
SIGNAL C3G : STD_LOGIC;
SIGNAL C3B : STD_LOGIC;
SIGNAL carga : STD_LOGIC;
SIGNAL en1 : STD_LOGIC;
SIGNAL en2 : STD_LOGIC;
SIGNAL en3 : STD_LOGIC;
SIGNAL fila : STD_LOGIC_VECTOR(3 DOWNTO 0);
SIGNAL F1 : STD_LOGIC;
SIGNAL F2 : STD_LOGIC;
SIGNAL F3 : STD_LOGIC;
SIGNAL F4 : STD_LOGIC;
SIGNAL F5 : STD_LOGIC;
SIGNAL F6 : STD_LOGIC;
SIGNAL F7 : STD_LOGIC;
SIGNAL F8 : STD_LOGIC;
SIGNAL F9 : STD_LOGIC;
SIGNAL wraddress : STD_LOGIC_VECTOR(5 DOWNTO 0);
SIGNAL data : STD_LOGIC_VECTOR(31 DOWNTO 0);
COMPONENT pract
Código fuente e instrucciones de creación
96
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
PORT (
C1B : OUT STD_LOGIC;
C1G : OUT STD_LOGIC;
C1R : OUT STD_LOGIC;
C2B : OUT STD_LOGIC;
C2G : OUT STD_LOGIC;
C2R : OUT STD_LOGIC;
C3B : OUT STD_LOGIC;
C3G : OUT STD_LOGIC;
C3R : OUT STD_LOGIC;
carga : OUT STD_LOGIC;
ce : IN STD_LOGIC;
ceo : OUT STD_LOGIC;
clk50MHz : IN STD_LOGIC;
cuenta : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
data : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
dataout : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
edir1 : OUT STD_LOGIC_VECTOR(5 DOWNTO 0);
en1 : OUT STD_LOGIC;
en2 : OUT STD_LOGIC;
en3 : OUT STD_LOGIC;
F1 : OUT STD_LOGIC;
F2 : OUT STD_LOGIC;
F3 : OUT STD_LOGIC;
F4 : OUT STD_LOGIC;
F5 : OUT STD_LOGIC;
F6 : OUT STD_LOGIC;
F7 : OUT STD_LOGIC;
F8 : OUT STD_LOGIC;
F9 : OUT STD_LOGIC;
fila : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
flag : OUT STD_LOGIC;
rst : IN STD_LOGIC;
wraddress : IN STD_LOGIC_VECTOR(5 DOWNTO 0)
);
END COMPONENT;
BEGIN
i1 : pract
Código fuente e instrucciones de creación
97
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
PORT MAP (
-- list connections between master ports and signals
C1B => C1B,
C1G => C1G,
C1R => C1R,
C2B => C2B,
C2G => C2G,
C2R => C2R,
C3B => C3B,
C3G => C3G,
C3R => C3R,
carga => carga,
ce => ce,
ceo => ceo,
clk50MHz => clk50MHz,
cuenta => cuenta,
data => data,
dataout => dataout,
edir1 => edir1,
en1 => en1,
en2 => en2,
en3 => en3,
F1 => F1,
F2 => F2,
F3 => F3,
F4 => F4,
F5 => F5,
F6 => F6,
F7 => F7,
F8 => F8,
F9 => F9,
fila => fila,
flag => flag,
rst => rst,
wraddress => wraddress
);
clk50MHz<= not clk50MHz after 10 ns;
Código fuente e instrucciones de creación
98
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
init : PROCESS
BEGIN
data<=x"00000000";
wraddress<="000000";
rst<='0';
ce<='0';
wait for 1000 ns;
rst<='1';
ce<='1';
WAIT;
END PROCESS init;
END pract_arch;
En este testbench se le asignan señales de valor nulo tanto al dato como a
la dirección de escritura para inicializar esas señales y a continuación se habilitan
los módulos y se desactiva el reset.
Anejos
99
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Parte V ANEJOS
Anejos
100
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Capítulo 1 MAPA DE MEMORIA RAM
En este capítulo se muestra el mapa de memoria RAM de la matriz de
doble puerto, se explican los detalles de su estructura en la tabla 1.
MAPA DE MEMORIA RAM
DIRECCIÓN
[31..24] [23..16] [15..8] [7..0] FILA|COL DIR FILA 3x3x3 COL
ZONA DE MEMORIA MUERTA
1111|11 63 15 3
1111|10 62 15 2
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
ZONA DE MEMORIA MUERTA
1001|10 37 9 1
1001|00 36 9 0
1000|11 35 8 3
FILA 9
LED 27
RED GREEN BLUE 1000|10 34 8 2
LED 26
RED GREEN BLUE 1000|01 33 8 1
LED 25
RED GREEN BLUE 1000|00 32 8 0
0111|11 31 7 3
FILA 8
LED 24
RED GREEN BLUE 0111|10 30 7 2
LED 23
RED GREEN BLUE 0111|01 29 7 1
LED 22
RED GREEN BLUE 0111|00 28 7 0
0110|11 27 6 3
FILA 7
LED 21
RED GREEN BLUE 0110|10 26 6 2
LED 20
RED GREEN BLUE 0110|01 25 6 1
LED 19
RED GREEN BLUE 0110|00 24 6 0
0101|11 23 5 3
FILA 6
LED 18
RED GREEN BLUE 0101|10 22 5 2
LED 17
RED GREEN BLUE 0101|01 21 5 1
LED 16
RED GREEN BLUE 0101|00 20 5 0
0100|11 19 4 3
Anejos
101
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
FILA 5
LED 15
RED GREEN BLUE 0100|10 18 4 2
LED 14
RED GREEN BLUE 0100|01 17 4 1
LED 13
RED GREEN BLUE 0100|00 16 4 0
0011|11 15 3 3
FILA 4
LED 12
RED GREEN BLUE 0011|10 14 3 2
LED 11
RED GREEN BLUE 0011|01 13 3 1
LED 10
RED GREEN BLUE 0011|00 12 3 0
0010|11 11 2 3
FILA 3
LED 9
RED GREEN BLUE 0010|10 10 2 2
LED 8
RED GREEN BLUE 0010|01 9 2 1
LED 7
RED GREEN BLUE 0010|00 8 2 0
0001|11 7 1 3
FILA 2
LED 6
RED GREEN BLUE 0001|10 6 1 2
LED 5
RED GREEN BLUE 0001|01 5 1 1
LED 4
RED GREEN BLUE 0001|00 4 1 0
0000|11 3 0 3
FILA1
LED 3
RED GREEN BLUE 0000|10 2 0 2
LED 2
RED GREEN BLUE 0000|01 1 0 1
LED 1
RED GREEN BLUE 0000|00 0 0 0
Tabla 1: Mapa de memoria RAM doble puerto
En la tabla 1 se observa que es una memoria de 64 palabras de 32 bits cada
una, a su vez, cada celda de memoria de 32 bits está compuesta por cuatro bloques
de 8 bits cada uno. Los tres primeros bloques de 8 bits corresponde con el número
de cuenta (cuenta de 0 a 255) que han de comparar los comparadores del bloque
timer_RGB para que se pueda mostrar un ancho de pulso a la salida proporcional
al valor de cada uno de esos bloques de 8 bits. El cuarto boque de 8 bits no se
utiliza pero se ha declarado porque el bloque predeterminado de Quartus II de la
memoria RAM ofrece celdas de 16 ó de 32 bits, con lo cual se optó por escoger 32
bits aunque sobrasen bits.
Anejos
102
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
El número de celdas de memoria asciende a 64, pero en realidad sólo
serían necesarias 36, pero de nuevo, Quartus ofrece la posibilidad entre otros de
escoger 32 ó 64 palabras y se optó por 64 palabras aunque no se utilizara esa zona
de memoria.
Se ha llamado zona útil al espacio de memoria que ocupan las 36 primeras
celdas porque el resto de celdas no se utiliza.
Las celdas rayadas de la zona útil en la tabla 1 no se utilizan porque en el
circuito de multiplexación se han empleado los dos bits más bajos de la dirección
de las celdas como indicador del número de columna y los 5 bits restantes como
indicador del número de fila. Por eso la celda de la dirección 0000|011 se
representa rayada porque sus datos no son relevantes ya que no existe la columna
4 de la fila 1 (filas y columnas se contabilizan empezando por 0) en la matriz
tridimensional.
Por el mismo motivo se han rayado las celdas que comienzan a partir de la
dirección 1001|00 porque no existe la fila 10 en la matriz tridimensional.
Anejos
103
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Capítulo 2 FABRICACIÓN DE LA MATRIZ
TRIDIMENSIONAL DE LEDS
En este capítulo se describe la fabricación de la matriz de LEDs
tridimensional. Cabe destacar que se ha fabricado de manera artesanal con las
herramientas disponibles en el taller de ICAI.
Para ello se han empleado 27 LEDs RGB de encapsulado SMD a los
cuales se les ha soldado unas patillas de metal cuyo origen es un simple cable de
cobre de 0,5 mm2, para después soldar dichos cables con las patillas de los otros
LEDs para formar una estructura de una matriz de 3x3x3. Todo este proceso se ha
realizado en diferentes pasos.
En primer lugar se han tomado tres LEDs para unirlos por el ánodo para
formar la primera fila de la matriz como se observa en la figura 57.
Figura 57: Fila de LEDs
Después se le sueldan las patillas de la columna del color rojo como se
observa en la figura 58.
Anejos
104
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Figura 58: Columnas para color rojo
Acto seguido se sueldan dichas patillas al pin rojo de cada uno de los tres
LEDs que forman la segunda fila, como en la figura 59.
Figura 59: Dos filas conectada por color rojo
Después de este paso sólo que soldar el color rojo de la tercera fila como
se aprecia en la figura 60. Acto seguido se sueldan los pines verdes y azul de
Anejos
105
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
todos y cada uno de los LEDs para tener formadas las columnas rojo, verde y azul
de la matriz 3x3, se observa el resultado en la figura 63.
Figura 60: Conexión de la tercera fila por color rojo
Figura 61: Matriz 3x3 columnas color rojo conectadas
Anejos
106
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Figura 62: Matriz 3x3 columnas rojo y verde conectadas
Figura 63: Matriz 3x3 columnas rojo, verde y azul conectadas
Una vez completada la estructura 3x3, se debe crear otra matriz 3x3
exactamente igual y soldarla encima de la anterior matriz 3x3 como en la figura
64. Las patillas que conectan la matriz superior con la inferior están uniendo los
colores respectivos de manera individual de cada matriz, esto es que la columna
del color rojo de la matriz superior se une con la columna del color rojo de la
matriz inferior y lo mismo para el color verde y para el color azul.
Anejos
107
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Figura 64: Ensamblaje de dos matrices 3x3
Figura 65: Ensamblaje de dos matrices 3x3y una tercera 3x3 preparada
Para terminar, se suelda una tercera matriz 3x3 como en la figura 66 y se
completa el cubo de LEDs, obteniendo una estructura 3x3x3 donde se conexionan
el color rojo de la matriz superior con el color rojo de la matriz media y con el
color rojo de la matriz 3x3 inferior. Lo mismo ocurre para el color azul y el verde.
Anejos
108
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Figura 66: Matriz 3x3x3
Por último, para poder ensamblar el cubo de LEDs se sueldan a las filas y
a las columnas unas patillas, en total forman 9 conexiones para las filas y 9
conexiones para cada uno de los tres colores de las tres columnas, como se refleja
en la imagen de la figura 67.
Figura 67: Patillas de filas y columnas de la matriz 3x3x3
Anejos
109
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Capítulo 3 FABRICACIÓN DE LAS PCB
En esta sección se describe el proceso de fabricación de los circuitos
impresos (PCB) del proyecto. Éste es un proceso en el cual se ha de poner
especial cuidado porque sirve para pasar un circuito desde el papel donde se ha
diseñado a un componente físico importante del proyecto. La información sobre la
fabricación de las PCB en el taller está extraída de la referencia [ROJO09].
Para la fabricación de cualquier PCB se debe disponer primero del
esquema en positivo del circuito. Hay múltiples programas para obtenerlo, pero en
el caso de este proyecto se ha utilizado el OrCAD Layout con el que se genera el
Layout del esquema eléctrico, en él aparecen las pistas y los footprints de los
componentes que se han de soldar en un paso posterior.
Cuando se ha obtenido el Layout del circuito se procede a imprimirlo, para
ello existen dos métodos mayoritariamente empleados en fabricación de PCBs:
Este método consiste en imprimir con tóner el Layout en papel
satinado para posteriormente planchar ese papel en la placa virgen
creando una película protectora del circuito positivo con el tóner
acumulado. Tras realizar dicha protección se procedería a atacar la
placa según se detalla más adelante.
El segundo método se emplea en circuito de una complejidad
media-elevada, consiste en insolar la placa. Para ello se debe
imprimir un positivo del circuito en papel de acetato, éste papel es
transparente y permite el paso de la luz a en partes que se desean
Anejos
110
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
eliminar de la placa positiva, como los mostrados en los planos Nº
5 y Nº 7 del documento planos.
En el taller de la escuela se dispone de la insoladora que se muestra en la
figura 68.
Figura 68: Insoladora del taller de ICAI
Esta herramienta se fundamenta en que mediante un foco de luz actínica y
en un entorno con ausencia de luz exterior, se puede proceder al grabado de las
pistas en una placa fotosensible cuyo circuito positivo queda protegido por medio
de la tinta impresa que filtra la luz de la insoladora.
Tras aproximadamente 4 minutos en la insoladora el circuito estará
preparado para el proceso de revelado durante el cual se introduce la placa en
líquido revelador que pasiva las zonas no insoladas de nuestro circuito
protegiéndolas del proceso de oxidación posterior. Antes de realizar el ataque de
la placa se debe eliminar completamente el resto de líquido revelador
sumergiendo la placa en agua.
Anejos
111
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
La oxidación, y por tanto eliminación del positivo sobrante de la placa, se
realiza mediante un proceso químico de ataque en el que se sumerge nuestra
placa, ya revelada, en una solución de partes iguales de agua oxigenada y ácido
clorhídrico. Se debe prestar especial atención a realizar este proceso en un entrono
con una temperatura cercana a 35º y bien ventilado pues se emanan gases nocivos
durante el cual, como son cloro (Cl) e hidrógeno naciente que se forma durante el
proceso de oxidación (H0).
Tras dar varias vueltas a la placa y comprobar que se ha eliminado las
zonas deseadas se debe sacar la placa de la solución y eliminar el barniz que
protegía las pistas para permitir que el estaño se adhiera a ellas durante el proceso
de soldadura para ello basta con frotar la tarjeta con un algodón empapado de
acetona. El resultado final se muestra en la figura 69 y en la figura 70.
Figura 69: PCB etapa de potencia
Anejos
112
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Figura 70: PCB matriz de LEDs
A continuación, se sueldan todos los componentes de ambas PCB, para
ellos se utilizar el soldador, el flux, estaño y mucha paciencia al igual que en la
fabricación de la matriz 3x3x3. El resultado después del proceso de soldadura y
del proceso de ensamblaje aparece en la figura 71 y en la figura 72.
Figura 71: Parte Bottom de la etapa de potencia
Anejos
113
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Figura 72: Parte Top de la etapa de potencia
Para terminar, se suelda la matriz tridimensional de LEDs a la PCB de la
matriz como en la figura 73.
Figura 73: Cubo de LEDs soldado a PCB
Anejos
114
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Como resultado final, se obtiene la tarjeta PCB de la figura 74 donde se
aprecia la PCB de la etapa de potencia y la PCB de la matriz tridimensional.
Figura 74: PCB etapa de potencia y PCB cubo de LEDs
Datasheets
115
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Parte VI DATASHEETS
Datasheets
116
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Capítulo 1 DATASHEETS
1.1 MINI USB-B
Datasheets
117
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
1.2 HEADER 40 PINES
Datasheets
118
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
1.3 LED RGB
Datasheets
119
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Datasheets
120
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Datasheets
121
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Datasheets
122
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Datasheets
123
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
1.4 DIODO DE PEQUEÑA SEÑAL (D21)
Datasheets
124
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Datasheets
125
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
1.5 MOSFET CANAL N (Q1 Y Q3)
Datasheets
126
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Datasheets
127
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Datasheets
128
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Datasheets
129
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Datasheets
130
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Datasheets
131
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Datasheets
132
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Datasheets
133
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
1.6 MOSFET CANAL P (Q2)
Datasheets
134
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Datasheets
135
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Datasheets
136
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Datasheets
137
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Datasheets
138
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Datasheets
139
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Datasheets
140
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Datasheets
141
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
1.7 RESISTENCIA DE 50 Ω
Datasheets
142
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
1.8 RESISTENCIA DE 100 Ω
Datasheets
143
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Datasheets
144
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Datasheets
145
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Datasheets
146
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Datasheets
147
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
1.9 RESISTENCIA DE 953 Ω
Datasheets
148
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Datasheets
149
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Datasheets
150
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL
Datasheets
151
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL