VHDL Frequencymeter
VHDL Frequencymeter
TRABAJO DE DIPLOMA
Santa Clara
2007
"Año 49 de la Revolución"
Universidad Central “Marta Abreu” de Las Villas
Facultad de Ingeniería Eléctrica
TRABAJO DE DIPLOMA
Santa Clara
2007
"Año 49 de la Revolución"
Hago constar que el presente trabajo de diploma fue realizado en la Universidad Central “Marta
Abreu” de Las Villas como parte de la culminación de estudios de la especialidad de Ingeniería en
Telecomunicaciones y Electrónica, autorizando a que el mismo sea utilizado por la Institución, para
los fines que estime conveniente, tanto de forma parcial como total y que además no podrá ser
presentado en eventos, ni publicados sin autorización de la Universidad.
Los abajo firmantes certificamos que el presente trabajo ha sido realizado según acuerdo de la
dirección de nuestro centro y el mismo cumple con los requisitos que debe tener un trabajo de esta
envergadura referido a la temática señalada.
A mi familia y amigos.
AGRADECIMIENTOS
Como Tareas técnicas necesarias para cumplir con el objetivo y las interrogantes de la
presente investigación se plantean:
1. La realización de una revisión de la literatura científica y técnica que permita identificar las
regularidades del proceso de diseño electrónico digital, con vistas a su desarrollo dentro del
proceso de enseñanza-aprendizaje.
2. La caracterización y el análisis de FPGAs de Altera, que nos permita su utilización para fines
docentes.
3. La caracterización y el análisis de las aplicaciones: medición de frecuencia y período, tal que
permita realizar una selección de las variantes más adecuadas.
4. El estudio del software Quartus II de Altera para su explotación en la implementación de
algoritmos en el kit de APEX20KE.
5. La implementación y comprobación de estas aplicaciones.
6. El análisis y evaluación de los resultados obtenidos tal que permita proponer la utilización de
esta tecnología como recurso tecnológico-docente.
7. La redacción del Informe Final.
Las nuevas transformaciones que están sucediendo en el panorama del desarrollo de las
telecomunicaciones y la electrónica en el país, han llevado al Ministerio de la Informática y las
Comunicaciones a redefinir la estrategia del desarrollo de la electrónica. Dentro de dichas
transformaciones se encuentra la aplicación del procesamiento digital de señales (DSP) en diversas
áreas.
Esta investigación tiene como objetivo contar con dos aplicaciones típicas de electrónica digital, que
pueden ser implementadas sobre dispositivos lógicos programables del tipo FPGA (Field
Programmable Gate Arrays). Para ello incluye información sobre aspectos relacionados con
mediciones electrónicas y con los elementos que conforman estos sistemas, permitiendo así la
implementación de mediciones electrónicas de frecuencia y período, en un entorno de trabajo con un
computador y un kit de entrenamiento con el APEX EP20K100EQC240-2X, factible de configurar
desde el propio ordenador con aplicaciones típicas de electrónica digital y la comprobación sobre el
kit de dichas aplicaciones. Además, se muestran los resultados tanto en simulaciones de software
como en demostraciones con hardware que posibilitan una mejor preparación docente e
investigativa de los estudiantes de la carrera de Ingeniería en Telecomunicaciones y Electrónica.
ÍNDICE
PENSAMIENTO.....................................................................................................................................i
DEDICATORIA………...…………………………………………………………………...…….………..…...ii
AGRADECIMENTOS............................................................................................................................iii
TAREA TÉCNICA.................................................................................................................................iv
RESUMEN.............................................................................................................................................v
INTRODUCCIÓN...................................................................................................................................1
Problema Científico...............................................................................................................................3
I.2 Características generales de las FPGAs y los CPLDs de la familia Altera.La familia APEX20K…9
I.3.2.1 Diseño.....................................................................................................................28
I.3.2.2 Síntesis...................................................................................................................28
I.3.2.4 Simulación................................................................................................................29
I.3.2.5 Programación.........................................................................................................30
II.1Introducción.................................................................................................................................35
III.1 Introducción...............................................................................................................................56
CONCLUSIONES…………….......................…………………………………………………………….…67
RECOMENDACIONES.......................................................................................................................68
REFERENCIAS BIBLIOGRÁFICAS....................................................................................................69
ANEXO ...............................................................................................................................................71
Anexo I MEDIDOR DE FRECUENCIA................................................................................................71
INTRODUCCIÓN
Los ordenadores digitales y el hardware asociado hace tres décadas eran relativamente grandes y
caros y como consecuencia, su uso se limitaba a aplicaciones de propósito general en tiempo no
real, tanto científicas como comerciales. El rápido desarrollo de la tecnología de circuitos integrados,
empezando con la integración a mediana escala (MSI, Medium-Scale Integration) y continuando la
integración a gran escala (LSI, Large-Scale Integration), hasta llegar a la integración a muy gran
escala (VLSI, Very-Large-Scale Integration) de circuitos electrónicos ha estimulado el desarrollo de
ordenadores digitales más potentes, pequeños, rápidos, baratos y de hardware digital de propósito
general.
Esto ha hecho posible construir sistemas digitales altamente sofisticados, capaces de realizar
funciones y tareas de procesamiento digital de señales que normalmente eran demasiado difíciles
y/o caras con circuitería o sistemas de procesamiento de señales analógicas. De aquí que muchas
de las tareas del procesamiento de señales que convencionalmente se realizaban analógicamente
se realicen hoy mediante hardware digital, más barato y a menudo más fiable.
Las nuevas transformaciones que están sucediendo en el panorama del desarrollo de las
telecomunicaciones y la electrónica en el país han llevado al Ministerio de la Informática y las
Comunicaciones (MIC) a redefinir la estrategia del desarrollo de la electrónica.
1
INTRODUCCIÓN
En estos aspectos, el país ha dirigido grandes esfuerzos y recursos que incluyen la compra e
instalación de equipamiento con tecnologías de último modelo y la realización de eventos científicos
de orden nacional e internacional con el objetivo de capacitar especialistas que dominen estas
tecnologías.
En este sentido, resulta estratégico preparar una docencia de mayor calidad en la carrera de
Ingeniería en Telecomunicaciones y Electrónica, la cual tiene la responsabilidad de formar
profesionales con alta preparación en las técnicas de diseño electrónico digital moderno.
Contar con un conjunto de aplicaciones típicas sobre dispositivos lógicos programables del tipo
FPGA (Field Programmable Gate Arrays en inglés) en un kit de entrenamiento para estos fines,
permitirá una mejor preparación docente e investigativa de los estudiantes de la especialidad antes
mencionada y/o personal orientado a la misma.
2
INTRODUCCIÓN
En este sentido, desarrollar una base material y técnica que permita una docencia de calidad en
estas asignaturas, es una necesidad impostergable.
Problema Científico
¿Cómo elaborar una metodología de diseño electrónico-digital, utilizando FPGAs, para dos
aplicaciones generalizadoras de los contenidos y habilidades de la Electrónica Digital, tal que
garantice una mejor formación en los estudiantes de Telecomunicaciones y Electrónica?
1. ¿Cuáles son las regularidades del proceso de diseño electrónico digital con vistas a su
desarrollo dentro del proceso de enseñanza-aprendizaje?
2. ¿Cuál de las familias de FPGAs de Altera, es la más adecuada para fines docentes?
4. ¿Cómo implementar las mismas en un hardware de propósito general tal como el kit de
entrenamiento?
3
INTRODUCCIÓN
Elaborar y comprobar dos aplicaciones electrónico-digitales típicas sobre FPGAs que permitan
proponer su utilización como recurso tecnológico-docente en las asignaturas vinculadas a los
diseños digitales en la carrera de Telecomunicaciones y Electrónica.
La importancia del presente trabajo se revela en dos vertientes, por la parte tecnológica permite
familiarizar a los futuros profesionales con las tecnologías electrónico-digitales modernas, mientras
que desde el punto de vista didáctico, enriquece el conjunto de medios de apoyo a la enseñanza de
las asignaturas de Electrónica Digital I y II.
El mismo tiene una actualidad demostrada, por cuanto vincula aspectos del diseño electrónico
digital utilizando metodologías de alto nivel de abstracción en la descripción del hardware y
empleando tecnologías de avanzada, tales como las FPGAs.
CAPÍTULO I: Se verá que es diseño digital, su evolución. También se hablará de las herramientas
utilizadas en el proyecto.
CAPÍTULO III: Realización del diseño del medidor de período, su implementación y comprobación.
4
CAPÍTULO I. GENERALIDADES SOBRE EL DISEÑO DIGITAL UTILIZANDO FPGAs
En el campo de la electrónica digital, algunos autores (Mano, 2000; Wakerly, 2000) señalan como la
función actual del diseño digital “la creación de sistemas”, lo que reafirma la complejidad de los
circuitos digitales modernos y por ende, del proceso asociado a su realización.
Es importante destacar el término creación en la anterior definición, por cuanto expresa que el
diseño electrónico digital requiere, por parte de los profesionales de este perfil, una actividad
compleja de solución de problemas a partir de sus conocimientos precedentes, pero también de
inventivas.
5
CAPÍTULO I. GENERALIDADES SOBRE EL DISEÑO DIGITAL UTILIZANDO FPGAs
En este sentido, según Wakerly: “El diseño digital es ingeniería, e ingeniería es solucionar un
problema... En mi experiencia personal sólo entre un 5-10% de los diseños tienen un aporte nuevo,
mientras que el resto está formado por módulos característicos o típicos y diseñar, utilizando estos
módulos típicos, es mucho más fácil diseñar en estos tiempos que hace 20 ó 10 años atrás. De
manera que entre un 50-100% del tiempo de diseño se consume actualmente en la parte nueva del
mismo” (Wakerly, 2000 p.2).
En términos generales, se puede definir el diseño electrónico digital como el proceso planificado y
organizado mediante el cual se implementa un sistema electrónico digital concreto, con vista a
solucionar un problema práctico. El diseño es, además de un proceso tecnológico, el modo de
actuación de los especialistas de la electrónica y por tanto una habilidad profesional compleja
(Barrios, J. P. 2006).
El incremento de la complejidad de los sistemas creados por el ser humano, producto del desarrollo
tecnológico en diferentes áreas, hizo necesario desarrollar métodos de diseño que garantizaran el
correcto funcionamiento de un sistema una vez implementado, así como la eficiencia y la
repetibilidad de dicho proceso. Dichos métodos han cambiado conforme se ha elevado la
complejidad de los mismos.
Numerosos han sido los autores que han propuesto modelos del proceso de diseño, aplicables a
cualquier tecnología, que permitan el desarrollo de un método para realizarlo (Mandado, 2000 p.
12). Como rasgo común se concibe la estructura del diseño como un sistema jerárquico en el que
cada componente constituye un módulo separado. La utilización de esta estrategia en el diseño de
sistemas digitales complejos tiene la ventaja de que los módulos pueden ser realizados para diseñar
diferentes sistemas (reutilización), con la consiguiente reducción del costo de diseño.
Los sistemas digitales complejos se definen como aquellos compuestos por un número de
componentes elementales (compuertas) superior a cien y se caracterizan porque en su diseño no es
posible utilizar los métodos manuales “clásicos" (ecuaciones del Álgebra de Boole, relaciones de
entrada salida en forma de tabla de verdad, entre otras).
Lo anterior permite caracterizar al diseño tanto como resultado (implementación física), como a la
vez proceso o sucesión de fases, con un método o estrategia propia. Esta interrelación dialéctica
entre contenido y método no es privativa del diseño. Al respecto Lenin (Klingberg, 1980) comentaba
en sus Escritos Filosóficos la definición de Hegel sobre método como: “la conciencia sobre la forma
6
CAPÍTULO I. GENERALIDADES SOBRE EL DISEÑO DIGITAL UTILIZANDO FPGAs
del movimiento interno propio del contenido”. La anterior definición revela el carácter histórico y
subjetivo del método y su dependencia del contenido que, a su vez, está históricamente
determinado. A manera de resumen histórico, la tabla I.1 muestra la relación entre el contenido del
diseño de los sistemas digitales y los métodos y medios para solucionar el mismo.
Según Moreno: “las características más destacadas de las tendencias actuales en diseño de
sistemas electrónicos se pueden resumir en un incremento creciente de la complejidad de los
sistemas a desarrollar, ciclos de vida y de diseño cada vez más reducidos, así como la necesidad
de incluir un cierto grado de flexibilidad que permita afrontar posibles modificaciones o
actualizaciones futuras”. (Moreno, 2005 p.5).
Para Al-Hadithi y Suardíaz: “La consolidación en la década de los noventa de los lenguajes de
descripción de hardware (HDLs, del inglés: Hardware Description Languages) ha supuesto, por otro
lado, la implantación progresiva de la denominada metodología de diseño ‘Top-Down’
(descendente) que, en contraposición a la metodología ascendente (Bottom-Up), permiten la
descripción del sistema al más alto nivel. Hoy en día los HDLs están ampliamente difundidos y
estandarizados bajo la IEEE, por lo que su aprendizaje, más que aconsejable, es una necesidad en
la pequeña y gran industria”. (Al-Hadithi y Suardíaz, 2004 p.14).
Es importante señalar que los lenguajes de descripción de hardware, al formar parte de las
herramientas de ayuda al diseño electrónico por computadora (EDA en inglés), permiten el trabajo
en equipo. Así, al estructurar el desarrollo del proyecto, cada integrante del equipo de diseño puede
trabajar en subproyectos antes de integrar todas las partes del sistema y establecer una
comunicación tecnológica a través de la documentación del subproyecto mediante un lenguaje de
descripción de hardware común (Barrios, J. P. 2006).
Dicha tendencia se ha generalizado dentro del diseño digital moderno (Sagahyroon, 2000). El
trabajo por niveles de jerarquía, la descripción mediante lenguajes de hardware de alto nivel y el uso
de herramientas de software prácticamente en todas las etapas del proceso de diseño, se integran
en entornos informáticos favorables al intercambio entre diseñadores y la reutilización de diseños.
En el proceso de diseño digital tiene una gran importancia la comunicación y la documentación.
7
CAPÍTULO I. GENERALIDADES SOBRE EL DISEÑO DIGITAL UTILIZANDO FPGAs
Tabla I.1 Relación histórica entre el contenido del diseño y los métodos y medios empleados.
Período Problemas a Diseñar (Contenido) Métodos y Medios
1970 Memorias, Microprocesadores de 8 y - Metodología de diseño ascendente
16 bits. (bottom-up).
- Herramientas de ayuda al diseño
muy rudimentarias.
- Tecnología bipolar y NMOS.
- Diseño centrado en las fábricas
específicas de semiconductores.
1980 Diseño de Circuitos Integrados de - Se separan los procesos de diseño
Aplicación Específica (ASICs), y fabricación.
circuitos integrados de alta densidad - Metodologías de diseño
programables (FPGAs y CPLD), ascendentes (bottom-up) y descendentes
microprocesadores de 32 bits y (top-down).
procesadores digitales de señales. - Surgimiento del lenguaje de
descripción de hardware VHDL.
- Tecnologías CMOS y BiCMOS.
- Desarrollo de herramientas
computacionales de ayuda al diseño.
1990 Predominio de los FPGAs y CPLDs - Desarrollo profundo de la
sobre los ASICs, desarrollo de tecnología CMOS.
aplicaciones en un solo chip (System - Herramientas computacionales de
on a Chip), Sistemas Complejos de ayuda al diseño muy poderosas.
Co-diseño Hardware-Software. Diseño - Predominio de la metodología de
de procesadores Pentium, Interfaces diseño descendente (top-down).
para redes y Multimedia. - Desarrollo y actualización del
VHDL.
- Abundantes bibliotecas de módulos
complejos reutilizables.
- Desarrollo de Co-Diseño
Hardware-Software (Co-Design).
2000 Predominio de los System on a Chip - Consolidación del Co-Design y la
(SoC), Diseños completos en un chip convergencia Hardware-Software.
(mixtos), procesadores con propiedad - Fortalecimiento de la metodología
intelectual. de diseño descendente (top-down).
- Poderosas herramientas de ayuda
al diseño por computadora (CAD-EDA)*.
- Lenguajes de descripción de
hardware con síntesis automatizada.
- Fuerte independencia entre el
diseño y la tecnología.
- Trabajo en equipo con amplio uso
de las TIC.
- Tecnología submicrónica.
* CAD: Diseño Asistido por Computadora en inglés. EDA: Herramientas de Diseño Electrónico
Automatizadas.
8
CAPÍTULO I. GENERALIDADES SOBRE EL DISEÑO DIGITAL UTILIZANDO FPGAs
LUT (Look-Up-Table)- (mirar sobre su tabla) consiste en: construcción tabular, la forma de
configurar funciones booleanas mediante multiplexores, cuyas líneas de entrada reciben los valores
de la tabla de verdad de la función que le corresponde al vector de entrada.
9
CAPÍTULO I. GENERALIDADES SOBRE EL DISEÑO DIGITAL UTILIZANDO FPGAs
10
CAPÍTULO I. GENERALIDADES SOBRE EL DISEÑO DIGITAL UTILIZANDO FPGAs
extendida. Además, los dispositivos APEX 20KE extienden la familia APEX 20K a 1.5 millones de
compuertas. Los dispositivos APEX 20KE son denotados con un sufijo “E” en el nombre del
dispositivo.
Todos los dispositivos APEX 20K son reconfigurables y son 100% probados. Los dispositivos
APEX 20K pueden ser configurados en la placa para la funcionalidad específica requerida.
Los dispositivos APEX 20K son configurados para que enciendan al alimentarse, con
almacenamiento de datos en un dispositivo de configuración serie de Altera o provisto por un
sistema controlador.
Además, los dispositivos APEX 20K contienen una interfase optimizada que permite a los
microprocesadores configurar los dispositivos APEX 20K, serie o paralelo y sincrónicamente o
asincrónicamente. La interfase también permite a los microprocesadores tratar los dispositivos del
APEX 20K como memoria y configurar el dispositivo escribiendo a una localización de la memoria
virtual, haciendo fácil la reconfiguración.
Después de que se haya configurado un dispositivo del APEX 20K, puede ser reconfigurado en el
circuito reseteando el sistema y cargando el nuevo dato.
I.2.2 Descripción funcional.
Las interconexiones de señales dentro del dispositivo APEX 20K son proporcionadas por la
interconexión FastTrack. Cada pin de entrada-salida es alimentado por un elemento de la entrada-
salida (IOE) localizado en el final de cada fila y columna de la interconexión FastTrack. Cada IOE
contiene un buffer I/O bidireccional y un registro que se puede utilizar como una entrada o registro
de salida para alimentar la entrada, la salida o señales bidireccionales. Cuando es usado con un
pin de reloj dedicado, estos registros proporcionan funcionamiento excepcional. Las IOEs
proporcionan una variedad de características, tales como 3.3-V, 64-bit, PCI 66-MHz; ayuda de
JTAG BST; control de slew-rate y buffer de tres estados.
El ESB puede implementar una variedad de funciones de memoria, incluyendo CAM, RAM, RAM
de doble puerto, ROM y funciones FIFO. Embebiendo la memoria directamente dentro del dado
proporciona eficiencia y reduce el área del dado comparado con las implementaciones de RAM
distribuida. Además, la abundancia de ESBs en cascada asegura que el dispositivo APEX 20K
puede implementar múltiples bloques de memoria extendido para los diseños de alta densidad.
Los ESBs de alta velocidad aseguran implementar pequeños bloques de memoria sin ninguna
11
CAPÍTULO I. GENERALIDADES SOBRE EL DISEÑO DIGITAL UTILIZANDO FPGAs
penalidad de velocidad. La abundancia de ESBs asegura que los diseñadores puedan crear tantos
bloques de memoria de diferentes tamaños como el sistema requiera.
La figura I.2 muestra una descripción del diagrama en bloque del dispositivo APEX 20K.
Figura I.2 Diagrama en bloque del dispositivo APEX 20K (Altera, 2006).
Los dispositivos APEX 20K proporcionan dos pines dedicados a reloj y cuatro a entradas que
manejan las entradas de control de registro. Estas señales aseguran la distribución eficiente de
alta velocidad y señales de control de bajo esquema. El uso de estas señales dedicadas al
enrutamiento de canales para proporcionar pequeñas demoras y bajo esquema. Cuatro de las
entradas dedicadas controlan cuatro señales globales. Estas cuatro señales globales se pueden
también controlar por la lógica interna, proporcionando una solución ideal para un divisor del reloj
o señales asincrónicas internamente generadas como fan-out. Los pines de reloj dedicado en los
dispositivos APEX 20K también pueden alimentar lógica. Los dispositivos también proporcionan
administración de circuitos de reloj ClockLock y ClockBoost. Los dispositivos APEX 20KE
proporcionan dos pines de reloj dedicado adicionales, para un total de cuatro pines de reloj
dedicado.
12
CAPÍTULO I. GENERALIDADES SOBRE EL DISEÑO DIGITAL UTILIZANDO FPGAs
13
CAPÍTULO I. GENERALIDADES SOBRE EL DISEÑO DIGITAL UTILIZANDO FPGAs
carga asincrónica, clear sincrónico y señales de carga sincrónicas. Un máximo de seis señales de
control pueden ser usadas a la vez. Aunque la carga sincrónica y las señales de clear son
generalmente usadas cuando se implementan contadores, ellas también pueden ser utilizadas en
otras funciones.
14
CAPÍTULO I. GENERALIDADES SOBRE EL DISEÑO DIGITAL UTILIZANDO FPGAs
Las señales de control de LAB extendido pueden ser generadas desde una interconexión local de
LAB, señales globales y pines de reloj dedicados. El bajo esquema inherente de la habilitación de
la interconexión FastTrack permite ser utilizada para la distribución del reloj.
La figura I.5 muestra el circuito de generación de la señal de control del LAB.
15
CAPÍTULO I. GENERALIDADES SOBRE EL DISEÑO DIGITAL UTILIZANDO FPGAs
16
CAPÍTULO I. GENERALIDADES SOBRE EL DISEÑO DIGITAL UTILIZANDO FPGAs
17
CAPÍTULO I. GENERALIDADES SOBRE EL DISEÑO DIGITAL UTILIZANDO FPGAs
Figura I.7 Modos de operación del LE del APEX 20K (Altera, 2006).
Notas:
1- Los LEs en modo normal soportan empaquetamiento de registros.
2- Hay dos habilitaciones de reloj de LAB expandido por LAB.
3- Cuando se usa la entrada de acarreo en modo normal, la característica del empaquetado de
registros queda invalidada.
4- El multiplexor de la realimentación de registros está disponible en el LE1 de cada LAB.
5- Las señales de entrada DATA1 y DATA2 pueden suministrar habilitación de contador, control
de subida y bajada o señales de realimentación de registro para LEs.
6- El clear sincrónico y la carga sincrónica del LAB expandido afecta todos los registros en el
LAB.
Por ejemplo, al implementar un sumador, esta salida es la suma de tres señales: DATA1, DATA2 y
acarreo de entrada. El segundo LUT utiliza las mismas tres señales para generar la señal acarreo
18
CAPÍTULO I. GENERALIDADES SOBRE EL DISEÑO DIGITAL UTILIZANDO FPGAs
de salida, de este modo creando la cadena de acarreos. El modo aritmético también soporta el uso
simultáneo de la cadena de cascadas. LEs en modo aritmético pueden manejar versiones de
salidas registradas y no registradas de la salida de LUT.
El software de Quartus II implementa funciones parametrizadas que utilizan el modo aritmético
automáticamente cuando sea apropiado; el diseñador no necesita especificar como la cadena de
acarreos será utilizada.
I.2.6.3 Modo contador.
El modo contador ofrece habilitación de reloj, habilitación de contador, control de subida y bajada
sincrónica y opciones de carga sincrónica. La habilitación de reloj y las señales de control de
subida y bajada sincrónica son generadas desde las entradas de datos de la interconexión local
del LAB. Las opciones clear sincrónico y cargas sincrónicas son señales de LAB expandido que
afectan todos los registros en el LAB. Consecuentemente, si alguno de los LEs en el LAB usa el
modo contador, otro LEs en ese LAB se debe utilizar como parte del mismo contador o utilizar
para una función combinatoria.
El software de Quartus II ubica automáticamente cualquier registro que no sea utilizado por el
contador en otros LABs.
El modo contador utiliza dos tres-entradas LUTs: uno genera el contador de datos y el otro genera
el acarreo rápido de bit. Un multiplexor de dos a uno proporciona carga sincrónica y otra
compuerta AND proporciona clear sincrónico. Si la función de cascada es utilizada por un LE en
modo contador, el clear o la carga sincrónica elimina cualquier señal de acarreo en la cadena de
cascadas. El clear sincrónico sustituye la carga sincrónica. Los LEs en modo aritmético pueden
controlar las versiones registradas y no registradas de la salida de LUT.
I.2.7 Lógica de Término-Producto.
La parte del Término-Producto (The product-term portion) de la arquitectura MultiCore es
implementada con el ESB. El ESB se puede configurar para actuar como bloque de macroceldas
en un ESB por ESB básico. Cada ESB es alimentado por 32 entradas de la interconexión local
adyacente; por lo tanto, puede ser controlado por la interconexión de MegaLAB o de LAB
adyacente. También, nueve macroceldas de ESB son realimentadas dentro del ESB a través de la
interconexión local para un rendimiento más alto. Los pines dedicados del reloj, las señales
globales y las entradas adicionales de la interconexión local controlan las señales de control de
ESB.
19
CAPÍTULO I. GENERALIDADES SOBRE EL DISEÑO DIGITAL UTILIZANDO FPGAs
En modo del Término-Producto, cada ESB contiene 16 macroceldas. Cada macrocelda consiste
en dos términos de producto y un registro programable. La figura I.8 muestra el ESB en modo de
Término-Producto.
20
CAPÍTULO I. GENERALIDADES SOBRE EL DISEÑO DIGITAL UTILIZANDO FPGAs
Las entradas del ESB son controladas por la interconexión local adyacente, que alternadamente
se puede controlar por la interconexión de MegaLAB o de FastTrack. El ESB puede ser controlado
por la interconexión local o un LE adyacente puede controlarlo directamente para el rápido acceso
a memoria. Las salidas del ESB controlan el MegaLAB y la interconexión FastTrack. Además, de
las diez salidas del ESB, nueve son solamente líneas de salida, controlan la interconexión local
para la conexión rápida al LE adyacente o para la rápida realimentación de la lógica término-
producto.
Cuando implementamos memorias, cada ESB se puede configurar en alguno de los tamaños
siguientes: 128 × 16, 256 × 8, 512 × 4, 1.024 × 2, o 2.048 × 1. Combinando múltiples ESBs, el
software de Quartus II implementa los mayores bloques de memoria automáticamente. El
funcionamiento de la memoria no se degrada para bloques de memoria hasta 2.048 palabras
enterradas. Cada ESB puede implementar una memoria de 2.048 palabras enterradas.
El ESBs se utiliza en paralelo, eliminando de la necesidad de cualquier lógica de control externa y
de su retraso asociado.
Para crear un bloque de memoria de alta velocidad que sea mayor que 2.048 palabras enterradas,
los ESBs controlan líneas de tres estados. Cada línea de tres estados conecta todos los ESBs en
una columna de las estructuras de MegaLAB, y a través de la columna controla la interconexión de
MegaLAB y la fila y columna de la interconexión de FastTrack. Cada ESB incorpora un
decodificador programable para activar apropiadamente el controlador de tres estados. Por
ejemplo, para implementar memorias de 8.192 palabras enterradas, se utilizan cuatro ESBs. Once
líneas de dirección controlan la memoria del ESB y dos más el decodificador de tres estados.
Dependiendo de cuál de las páginas de memoria de 2.048 palabras es seleccionada, el
controlador apropiado del ESB es encendido, controlando la salida de la línea de tres estados. El
software de Quartus II automáticamente combina los ESBs con las líneas de tres estados para
formar bloques de memoria “enterrados” (deeper memory blocks) que permiten la
interconectividad, de una forma rápida, de los diferentes LABs.
La lógica interna de control de tres estados se diseña para evitar contenciones internas y líneas
flotando. Vea la figura I.10.
El ESB implementa dos formas de memoria dual-port: modo de reloj de lectura-escritura y modo
de reloj de entrada-salida. El ESB se puede también utilizar para los usos bidireccionales,
aplicaciones de memoria dual-port en los cuales dos puertos leen o escriben simultáneamente.
21
CAPÍTULO I. GENERALIDADES SOBRE EL DISEÑO DIGITAL UTILIZANDO FPGAs
Para implementar este tipo de memoria dual-port, dos o cuatro ESBs se utilizan para apoyar dos
lecturas o escrituras simultáneas. Esta funcionalidad se muestra en la figura I.11.
Figura I.10 Bloques de memoria “enterrados” implementados con múltiples ESBs (Altera, 2006).
22
CAPÍTULO I. GENERALIDADES SOBRE EL DISEÑO DIGITAL UTILIZANDO FPGAs
de los requerimientos de salida. Cuando los pines VCCIO son conectados a una fuente de
alimentación de 2.5v, los niveles de salida son compatibles con sistemas de 2.5v. Cuando los
pines VCCIO son conectados a fuentes de alimentación de 3.3v, las salidas en alto son
compatibles con sistemas de 3.3v o 5.0v.
Tabla I.2 Resumen de tolerancias multivolt I/O que soportan los dispositivos APEX 20K (Altera,
2006).
Nota:
1- El diodo clamping PCI debe ser deshabilitado para controlar una entrada con voltajes
mayores que VCCIO.
2- Cuando VCCIO= 3.3v, un dispositivo APEX 20K puede controlar un dispositivo de 2.5v
con entradas tolerantes a 3.3v.
Los pines de salida en drenador abierto de los dispositivos APEX 20K son tolerantes a 5.0v (con
un resistor pull up conectado a la fuente de 5.0v) y pueden controlar pines de entrada CMOS de
5.0v que requieren un VIH de 3.5v.Cuando los pines están inactivos, se debe conectar a través de
una resistencia a 5.0v. El pin de drenador abierto solo controlará el bajo y el tercer estado; este
nunca va controlar el alto. El tiempo de subida depende del valor del resistor pull up y de la
impedancia de carga. La especificación de corriente IOL debe ser considerada cuando se
selecciona el resistor pull up.
Los dispositivos APEX 20KE también soportan las características de la interfase multivolt I/O. Los
pines VCCINT del APEX 20KE siempre deben ser conectados a una fuente de alimentación de
1.8v. Con 1.8v de nivel VCCINT, los pines de entrada son tolerantes a 1.8v, 2.5v y 3.3v de
suministro, dependiendo de los requerimientos estándar de I/O. Cuando los pines VCCIO son
conectados a una fuente de alimentación de 1.8v, los niveles de salida son compatibles con
sistemas de 1.8v. Cuando los pines VCCIO son conectados a una fuente de alimentación de 2.5v,
los niveles de salida son compatibles con sistemas de 2.5v. Cuando los pines VCCIO son
23
CAPÍTULO I. GENERALIDADES SOBRE EL DISEÑO DIGITAL UTILIZANDO FPGAs
conectados a una fuente de alimentación de 3.3v, la salida en alto es 3.3v y es compatible con
sistemas de 3.3v o 5.0v. Un dispositivo APEX 20KE es tolerante a 5.0v con la adición de un
resistor.
I.3 Herramientas utilizadas para el desarrollo del proyecto.
Para el desarrollo del proyecto se han utilizado principalmente herramientas de la firma Altera,
mediante las cuales ha sido posible implementar los diferentes sistemas que han permitido el
desarrollo de este proyecto.
Puesto que el objetivo del proyecto es desarrollar dos aplicaciones mediante el diseño de un
Sistema en un Chip Programable, fue necesaria la elección de una placa de desarrollo que sirviera
como base para todos los módulos de hardware y software del sistema.
Para este cometido se eligió una placa de desarrollo FPGA APEX EP20K100EQC240-2X de Altera
como se observa en la figura I.12.
24
CAPÍTULO I. GENERALIDADES SOBRE EL DISEÑO DIGITAL UTILIZANDO FPGAs
una alta razón de transferencia pueden ser desarrolladas fácilmente por medio de una PC. Al
mismo tiempo, este enlace de comunicación es usado para transmitir el programa de configuración
del FPGA siempre que sea necesario.
Las principales características de la tarjeta (ver Figura I.12) son las siguientes:
• FPGA APEX EP20K100EQC240-2X de Altera cuyas características generales se
representan en la tabla I.3.
• Controlador USB Cypress.
• Conector estándar de fuente de alimentación (5.0v) para aplicaciones de alto consumo
(AC/DC IN).
Tabla I.3 Características del FPGA (EP20K100EQC240-2X).
Parámetro Valor Unidades
Total de pines 240 -
Capacidad RAM 53 248 bits
Número máximo de compuertas 263 000 -
Número máximo de macroceldas 416 -
25
CAPÍTULO I. GENERALIDADES SOBRE EL DISEÑO DIGITAL UTILIZANDO FPGAs
26
CAPÍTULO I. GENERALIDADES SOBRE EL DISEÑO DIGITAL UTILIZANDO FPGAs
Se pueden utilizar las diferentes aplicaciones con las que cuenta el software Quartus II para
implementar los diferentes procesos que conforman el diseño de un sistema digital. Para ello
Quartus II provee al usuario de una interfaz gráfica con la que se pueden desarrollar los diferentes
procesos de forma óptima.
Los avances en la interfaz de usuario de este software permiten trabajar al mismo tiempo con
múltiples archivos y transferir información de varios archivos que se encuentren en múltiples
diseños. Usted puede ver una jerarquía entera de archivos y hacer movimientos fácilmente de un
nivel jerárquico a otro.
La versión 4.2 del Quartus II incluye nuevas facilidades en cuanto a las herramientas EDA que
soporta, los dispositivos lógicos que tiene disponibles para los diseños, la creación de estímulos
en el tiempo, la síntesis y revisión de los diseños, entre otras, que lo hacen muy tentativo.
Alguno de estos nuevos dispositivos y sus respectivas familias se mencionan a continuación:
Tabla I.4 Nuevos dispositivos de Altera.
Cyclone II Devices Stratix II Device Family Configuration Devices
• EP2C5 • EP2S60ESF484 • EPCS64 (Full Support)
• EP2C8 • EP2S60ESF672
• EP2C20 • EP2S60ESF1020
• EP2C35 • EP2S30F484
• EP2C50 • EP2S30F672
• EP2C70 • EP2S130F1020
• EP2S130F1508
27
CAPÍTULO I. GENERALIDADES SOBRE EL DISEÑO DIGITAL UTILIZANDO FPGAs
28
CAPÍTULO I. GENERALIDADES SOBRE EL DISEÑO DIGITAL UTILIZANDO FPGAs
módulo Analysis & Syntesis Settings, mediante la cual se pueden elegir las diferentes
metodologías para sintetizar el diseño.
Este módulo dispone de un compilador con el que se puede analizar el nivel de corrección del
diseño implementado (archivos VHDL) y proceder así a crear la base de datos y archivos con lo
que se desarrollará el proyecto iniciado en Quartus II.
I.3.2.3 Placement & Routing.
La herramienta Quartus II Fitter se encarga de localizar y plasmar el sistema que ha sido diseñado
sobre los dispositivos lógicos presentes en la placa de desarrollo utilizada.
Utilizando los datos que se han generado a través del proceso de síntesis, este adaptador se
encarga de combinar las precondiciones en cuanto a lógica y tiempos derivadas del diseño creado
con los recursos de los que dispone la placa de desarrollo o el dispositivo programable utilizado en
cada caso.
El adaptador se encargará de asignar cada una de las funciones lógicas generadas en la posición
óptima del sistema de celdas lógicas del dispositivo hardware, seleccionando al mismo tiempo las
interconexiones y asignaciones de pines más apropiadas. Esto es lo que se conoce como
Placement & Routing. El Placement es como se denomina al proceso de asignación de celdas,
mientras que el Routing se encargará del conexionado de las mismas.
I.3.2.4 Simulación.
Para comprobar que el funcionamiento de los diferentes dispositivos es el deseado, Quartus II
incorpora una herramienta de simulación, el Quartus II Simulator. Mediante esta herramienta se
puede simular el comportamiento de cualquier diseño generado en un proyecto. Dependiendo de
las necesidades de cada usuario, puede configurarse una simulación de tipo funcional para los
diferentes diseños o bien una simulación de tipo temporal, para analizar tanto las operaciones
lógicas del diseño así como el peor caso en cuanto al retardo o comportamiento temporal del
diseño en el dispositivo.
Esta aplicación permite tanto la simulación de diseños completos como de partes o módulos
separados, facilitando de esta forma la progresión en el desarrollo del sistema.
De entre los diferentes parámetros que pueden configurarse en las simulaciones destacan el
período temporal que debe cubrir la simulación, el vector de estímulos generados, etc.
Antes del inicio de cualquier simulación, se debe generar el archivo netlist apropiado indicando si
se destina a simulación temporal o funcional. En consecuencia, se deberá crear el vector
29
CAPÍTULO I. GENERALIDADES SOBRE EL DISEÑO DIGITAL UTILIZANDO FPGAs
apropiado de señales que regulen la simulación. El simulador utilizará estos vectores de entrada
de señales para generar el valor de las salidas que el sistema digital da como resultado.
Para la generación de estos vectores de entrada de datos, existe una aplicación en el software
que permite generar estos vectores a través de un formato de ondas. Se trata de la aplicación
Waveform Editor (Figura I.15), la cual, como se ha comentado, representa los vectores mediante
formas de onda que describen el comportamiento del dispositivo lógico en el diseño
implementado.
Para lograr programar el FPGA, unido al Kit referenciado anteriormente, se brinda un software
nombrado IEA, que incluye una ventana de aplicación que permite el control de la programación del
30
CAPÍTULO I. GENERALIDADES SOBRE EL DISEÑO DIGITAL UTILIZANDO FPGAs
31
CAPÍTULO I. GENERALIDADES SOBRE EL DISEÑO DIGITAL UTILIZANDO FPGAs
VHDL el cual se estandarizó por el Instituto de Ingenieros Eléctricos y Electrónicos (IEEE, por sus
siglas en inglés).
En 1980 el Departamento de Defensa de Estados Unidos (DoD) inició un proyecto denominado Very
High Speed Integrated Circuit (VHSIC), con el principal objetivo de desarrollar circuitos integrados
en tecnología de 0,5 micras con muy altas prestaciones y resistencia a la radiación. Estos circuitos
se habrían de integrar en los sistemas militares y mejorarlos en gran medida.
Antes del término de ese mismo año se hizo evidente que para poder organizar y coordinar el
desarrollo de los 28 circuitos integrados propuestos por diversas compañías, era necesario el
empleo de un lenguaje de descripción del hardware que permitiera el flujo de información entre
diseñadores, fabricantes y usuarios. De esta forma, en otoño de 1980, se iniciaron los trámites para
el desarrollo de un nuevo lenguaje de descripción denominado VHSIC Hardware Design/Description
Language o VHD2L, que posteriormente se simplificaría en el acrónimo VHDL.
En julio de 1983 se inició formalmente el proyecto de desarrollo del lenguaje VHDL, con la
participación de tres compañías: Intermetrics, Texas Instruments e IBM.
La aparición del VHDL provocó un fuerte impulso para que numerosas firmas de herramientas de
ayuda al diseño (EDA) comenzaran a incorporar compiladores y simuladores en sus paquetes de
diseño. A partir de este momento se pusieron de manifiesto las ventajas de la estandarización, lo
que resultó de gran interés para las universidades que harían uso de dicho lenguaje. Las
empresas de herramientas de diseño microelectrónico pasaron a incluirlo como parte sus
entornos.
VHDL permite modelar y simular un sistema desde un alto nivel de abstracción hasta el nivel
lógico más elemental con compuertas y biestables. Básicamente permite tres estilos de
descripción: algorítmico o de comportamiento, RTL (Register Transfer Level) o flujo de datos y
estructural. No obstante, pueden mezclarse en un mismo diseño los distintos estilos de descripción
o niveles de abstracción.
Los modelos creados pueden ser usados para diferentes tecnologías (reutilización del código).
También permite especificar características tecnológicas mediante la definición de nuevos tipos,
componentes, atributos y parámetros genéricos. Es un lenguaje normalizado, por lo que es
compatible con prácticamente la totalidad de las herramientas de diseño disponibles en el
mercado. La normalización implica que no es un lenguaje de propietario, por lo que cualquier
usuario puede desarrollar una herramienta para VHDL y comercializarla.
32
CAPÍTULO I. GENERALIDADES SOBRE EL DISEÑO DIGITAL UTILIZANDO FPGAs
Además de ello, este lenguaje puede usarse para la comunicación entre distintas herramientas
EDA, por ejemplo, un programa de captura de esquemáticos podría generar una descripción
VHDL, que a su vez podría usarse como entrada a un simulador. Permite diseño jerárquico y el
diseño top-down, este último incrementa la productividad y eficiencia de los diseños,
particularmente de los más complejos, aunque también permite el diseño bottom-up o una
combinación de éste y el top-down. Admite diseños arbitrariamente largos, pues no existen
limitaciones impuestas al tamaño de los mismos (Dorta, G. 2006).
VHDL permite al diseñador concentrarse en la funcionalidad sin tener que dedicar tiempo y
esfuerzos a factores que no afectan a la misma. En el diseño tradicional, el diseñador tenía que
comprobar paralelamente y de forma manual factores puramente tecnológicos como retardos,
área, fan-out, etcétera.
I.5 Conclusiones parciales del capítulo.
A partir del análisis de los contenidos tratados en este capítulo, se derivan las siguientes
conclusiones:
1. El diseño electrónico encierra un modo de actuación y por tanto es una habilidad en los
profesionales de las Telecomunicaciones y la Electrónica. Diseñar es en esencia resolver un
problema de la práctica utilizando los conocimientos, los métodos, los componentes y sistemas
digitales.
2. El desarrollo de la electrónica en general y de la electrónica digital, en particular desde
1980, ha modificado el contenido y los métodos de diseñar. El uso de herramientas
computacionales de ayuda al diseño, las estrategias de diseño descendente (top-down), la
utilización de los lenguajes de descripción de hardware (HDL) y el trabajo en equipos de
proyectos, caracterizan el estado actual de esta ciencia aplicada.
3. La habilidad diseñar, en Electrónica Digital, se define como: la actividad mediante la que
se especifica, modela, describe, simula, implementa y comprueba un sistema electrónico digital
destinado a resolver, de forma eficiente y en un tiempo adecuado, un problema práctico
profesional. Diseñar es, además de un proceso tecnológico, el modo de actuación de los
especialistas de la electrónica y constituye por tanto, una habilidad profesional compleja.
4. Los dispositivos lógicos programables APEX 20K debido a sus características son de gran
utilidad para la implementación de aplicaciones digitales.
5. El uso de FPGA constituye una solución atractiva en la implementación de sistemas
33
CAPÍTULO I. GENERALIDADES SOBRE EL DISEÑO DIGITAL UTILIZANDO FPGAs
digitales complejos.
6. El Quartus II es un software que presenta un alto grado de flexibilidad para describir los
diseños digitales y para seleccionar el dispositivo lógico programable de Altera en el cual se desea
compilar y simular. La versión 4.2 incluye nuevas bondades, entre las que se destacan: el
aumento de los dispositivos lógicos que tiene disponibles para los diseños y la existencia de una
biblioteca con una amplia variedad de megafunciones, la cual resulta de mucha utilidad en diseños
complejos de alto nivel.
7. El conocimiento del lenguaje VHDL resulta de gran utilidad en el desarrollo de sistemas
electrónicos digitales debido a las ventajas y facilidades que brinda.
34
CAPÍTULO II. MEDIDOR DE FRECUENCIA
II.1 Introducción.
En este capítulo se va a implementar y comprobar la lógica de la siguiente aplicación:
• Medidor de frecuencia con las siguientes características:
o Entradas de medición compatibles con lógica TTL.
o Rango en modo frecuencia: 0,1Hz a 50MHz.
o Representación mediante seis dígitos.
En el próximo capítulo, esta aplicación será implementada en una plaqueta experimental la cual
contiene la FPGA APEX 20KE (EP20K100EQC240-2X) de Altera.
II.2 Arquitectura básica.
Se puede definir a un frecuencímetro como un contador de eventos cíclicos, esto es, cuenta una
serie de sucesos (los ciclos de frecuencia que se están midiendo), los presenta en los displays,
vuelve a cero y comienza a contar nuevamente.
En la figura II.1 se observa un diagrama en bloques elemental de un frecuencímetro.
35
CAPÍTULO II. MEDIDOR DE FRECUENCIA
Luego de tener la señal, ésta pasa por el contador digital, el cual es gobernado por una base de
tiempos generada por el bloque superior. Esta base de tiempos permite fijar un tiempo de
medición al contador y luego:
Es decir que dentro de este tiempo de medición se activará el contador para contar los pulsos de
la señal cuadrada de igual frecuencia que la de entrada, tal como se muestra en el diagrama de
tiempos en la figura II.2.
36
CAPÍTULO II. MEDIDOR DE FRECUENCIA
37
CAPÍTULO II. MEDIDOR DE FRECUENCIA
Como se observa se medirán frecuencias de señales TTL (0 - 5V) de forma de onda cuadrada.
Para la visualización de la medición se utilizará seis displays de siete segmentos, con lo cual se
tendrá un total de seis dígitos para representar la frecuencia medida.
El generador de la base de tiempos proveerá cuatro señales de bases de tiempos con distintos
tiempos de medición (los cuales estarán dados por el tiempo en alto de la base de tiempo) las
cuales serán seleccionadas por líneas exteriores.
El grupo de contadores estará formado por seis contadores (uno por cada dígito) de cuatro bits
cada uno, conectados sincrónicamente de modo que un contador corresponderá a las unidades,
otro a las decenas, otro a las centenas y así hasta el contador correspondiente a los millares.
Los valores de los contadores serán cargados en seis latchs de cuatro bits cada uno.
Para la visualización en los displays se utilizará el método de multiplexación en el tiempo, es
decir, que las líneas de entrada a, b, c, d, e, f y g serán comunes a los seis displays mientras que
no así las de selección de cada dígito. Para esto se utilizará un bloque jerárquico descrito en
lenguaje VHDL (mult) para multiplexar las salidas de los latchs, cuyas líneas de selección serán
comandadas por un contador ubicado en el bloque generador de la base de tiempos de modo
que se pueda obtener una secuencia repetitiva de uno a seis. A su vez este contador estará
conectado a un decodificador para manejar la selección del dígito a encender en ese momento.
Para la ubicación del punto (dp) se utilizará un bloque jerárquico descrito en lenguaje VHDL
(ubica_punto), el cual se verá más adelante.
Finalmente se colocará un decodificador BCD a siete segmentos para la correcta representación
en decimal de la salida de los contadores.
La figura II.4 representa un diagrama en bloques de este sistema y como se puede observar, se
debe utilizar también un oscilador externo (de 1MHz para este caso) para la generación de la
base de tiempos.
II.3.1 Bloque Generador de la base de tiempos.
El bloque generador de la base de tiempos debe generar, como se dijo anteriormente, cuatro
bases de tiempos de acuerdo a las entradas externas de selección. Esta selección se puede
realizar mediante el ingreso de dos líneas las cuales se llamarán sel [1..0] como se representa
en la tabla II.1.
Por su parte el nivel bajo de la base de tiempos será de 1ms para todos los casos, permitiendo
en este intervalo la carga de los latchs y la puesta a cero de los contadores.
38
CAPÍTULO II. MEDIDOR DE FRECUENCIA
Para conseguir estas bases y partiendo de la frecuencia del oscilador externo (1MHz), se diseñará
un bloque jerárquico descrito en el lenguaje VHDL (vea el Anexo I.1) el cual se llamará div al que
39
CAPÍTULO II. MEDIDOR DE FRECUENCIA
entra la señal del oscilador externo (osc=1MHz) y se obtiene a la salida una señal ms la cual es un
pulso a una frecuencia de 1KHz (1ms de período). Este bloque se observa en la figura II.5.
40
CAPÍTULO II. MEDIDOR DE FRECUENCIA
41
CAPÍTULO II. MEDIDOR DE FRECUENCIA
42
CAPÍTULO II. MEDIDOR DE FRECUENCIA
.
Figura II.11 Diagrama de estados.
De este diagrama de estados se puede obtener la siguiente tabla de transición y salida:
Tabla II.2 Transición/salida.
43
CAPÍTULO II. MEDIDOR DE FRECUENCIA
(ec II.1)
Para obtener le ecuación de salida del primer biestable en función de la entrada y el estado
presente Do = G(X, EP) y con la ayuda de la tabla II.2 se crea la tabla siguiente:
Tabla II.4 Primer biestable.
(ec II.2)
Para obtener le ecuación de salida del segundo biestable en función de la entrada y el estado
presente ( ) y con la ayuda de la tabla II.2 se crea la tabla siguiente:
Tabla II.5 Segundo biestable.
(ec II.3)
Sustituyendo en estas tres ecuaciones se obtiene el circuito lógico que se puede observar en la
figura II.12.
Por su parte la señal W que se encarga de la puesta a cero de los contadores, deberá ser un pulso
que se genere luego de la señal Z y debe durar en alto, como máximo, hasta el flanco ascendente
de la base de tiempos. Para conseguir esto se implementará el circuito lógico de la figura II.13.
En este circuito el flip flop tipo D es disparado por flanco ascendente de reloj, con lo cual, cuando la
baseT está en alto, el ff se resetea continuamente, cuando ésta baja para un flanco descendente
de Z, copia la entrada en la salida (o sea Vcc) hasta resetearse (volver a cero) cuando la base
vuelva al nivel alto.
44
CAPÍTULO II. MEDIDOR DE FRECUENCIA
45
CAPÍTULO II. MEDIDOR DE FRECUENCIA
46
CAPÍTULO II. MEDIDOR DE FRECUENCIA
47
CAPÍTULO II. MEDIDOR DE FRECUENCIA
48
CAPÍTULO II. MEDIDOR DE FRECUENCIA
49
CAPÍTULO II. MEDIDOR DE FRECUENCIA
Esto se hizo con la pastilla 7448 a la cual se le colocaran inversores a la salida ya que los leds de
los displays se encienden con cero en este caso.
Este bloque tiene como entrada selec_encoding [2..0] y salida s [5..0] como se puede observar en
la figura II.21.
50
CAPÍTULO II. MEDIDOR DE FRECUENCIA
Por lo que se debe ubicar el punto en el dígito cinco, de forma que se lea 1KHz y los displays
quedarían:
Ahora se toma el caso de la base de tiempos con 1000ms = 1seg en nivel alto (sel [1..0] = “01” = 1)
y la misma frecuencia de 1KHz, su período sería de 1ms, con lo cual el grupo contadores llegaría a
un valor de 1000 y la representación en los displays sería:
51
CAPÍTULO II. MEDIDOR DE FRECUENCIA
Por esto se debe ubicar el punto en el dígito cuatro, de forma tal que se lea 1KHz y los displays se
verían de la siguiente forma:
Para la misma frecuencia de la señal de entrada, se toma el caso de la base de tiempos con
100ms = 0.1seg en nivel alto (sel [1..0] = “10” = 2). El grupo contadores llegaría a un valor de 100 y
la representación en los displays sería:
En este caso para que leer 1KHz se debe ubicar el punto en el dígito tres, de forma que los
displays se muestren:
Y ahora queda el último caso, para la base de tiempos con 10ms = 0.01seg en nivel alto (sel [1..0]
= “11” = 3), el grupo de contadores llegaría a 10 (siempre con la misma frecuencia de 1KHz de
señal de entrada) con la siguiente visualización de los displays:
Y por lo tanto se debe ubicar el punto en el dígito dos, de forma que los displays se muestren de la
manera siguiente:
52
CAPÍTULO II. MEDIDOR DE FRECUENCIA
Entonces se puede confeccionar la tabla II.7, la cual muestra el dígito que contiene el punto de
acuerdo a la base seleccionada:
Tabla II.7 Ubicación del punto.
53
CAPÍTULO II. MEDIDOR DE FRECUENCIA
señal bcd[6..0] mantiene en cero todos los dígitos de los displays excepto el quinto donde coloca
un uno (“1111001”), dando como resultado el valor esperado 1.0KHz.
Para la comprobación práctica se utilizaron dos generadores de funciones uno como oscilador
externo de 1MHz y otro para la señal de entrada que se desea medir, en este caso de 1KHz de
frecuencia.
Se colocó la base de tiempos con 10000ms = 10seg en nivel alto (sel [1..0] = “00” = 0) y se obtuvo
el siguiente resultado:
54
CAPÍTULO II. MEDIDOR DE FRECUENCIA
55
CAPÍTULO III. MEDIDOR DE PERÍODO
III.1 Introducción.
En este capítulo se va a implementar y comprobar la lógica de la siguiente aplicación:
• Medidor de período con las siguientes características:
o Entradas de medición compatibles con lógica TTL.
o Rango en modo período: 1us a 1000s.
o Representación mediante seis dígitos.
En el próximo capítulo, esta aplicación será implementada en una plaqueta experimental la cual
contiene la FPGA APEX 20KE (EP20K100EQC240-2X) de Altera.
III.2 Arquitectura básica.
Se puede definir a un medidor de período de la misma forma que se hizo con el frecuencímetro,
como un contador de eventos cíclicos (pero en este caso, cuenta una serie de sucesos, que son
pulsos de período definido, dentro del período de la señal a medir, que aquí actúa como la base de
tiempos), los presenta en los displays, vuelve a cero y comienza a contar nuevamente. En la figura
III.1 se observa el diagrama en bloques elemental de medidor de período digital, en forma análoga
al frecuencímetro, como el que se implementará a continuación:
56
CAPÍTULO III. MEDIDOR DE PERÍODO
Como se ve el diagrama en bloques es similar al de medición de frecuencia, solo que aquí, como
se mencionó anteriormente, el período de la señal a medir actúa como tiempo de medición (nivel
en alto de la base de tiempos del frecuencímetro) y los pulsos a contar por el contador son de
período definido, luego:
O sea, que dentro de este tiempo de medición (período de la señal) se activará el contador para
contar los pulsos de período definido (o preciso), tal como se muestra en el diagrama de tiempos
en la figura siguiente:
57
CAPÍTULO III. MEDIDOR DE PERÍODO
Para conseguir estos pulsos de períodos definidos se crea el bloque div unido con un multiplexor
74153. El bloque div descrito en lenguaje VHDL (vea Anexo II.1) tiene como entrada la señal osc
(oscilador externo de 1MHz) y sus salidas son las señales cuadradas a, b, d donde a es de período
de 10us, b de 100us y d de1000us, o sea, 1ms. Estas señales junto con la del oscilador externo
(osc=1MHz) y la selección sel [1..0] entran al multiplexor 74153 y a su salida se obtienen los pulsos
de período definido que se desea.
58
CAPÍTULO III. MEDIDOR DE PERÍODO
59
CAPÍTULO III. MEDIDOR DE PERÍODO
60
CAPÍTULO III. MEDIDOR DE PERÍODO
61
CAPÍTULO III. MEDIDOR DE PERÍODO
Al dividir la señal de entrada por dos se obtiene una señal cuyo tiempo de duración en alto es igual
al período de la señal a medir y a la base de tiempos (llamada baseT), tal como se ve en el
diagrama tiempos de la figura III.2.
III.3.3 Bloque Ubicación del punto dp.
De igual forma que en el caso del frecuencímetro, este bloque se encarga de la ubicación del punto
dp en uno de los seis dígitos de acuerdo a la señal de pulsos utilizada. Para cumplir con el rango
de períodos que se desea medir, se toma la visualización en los displays en la escala de ms, esto
permitirá una correcta visualización del rango de períodos a medir, eligiendo la correcta señal de
pulsos.
En este caso se toma la señal de pulsos con período 1us (sel [1..0] = “00” = 0). Si se tiene que
medir una señal de período 2ms, el grupo de contadores llegaría a un valor de 2000 y la
representación en los displays sería:
Con lo cual se debe ubicar el punto en el dígito cuatro, de forma que se lea 2ms y los displays
quedarían:
Ahora se toma el caso de la señal de pulsos con período 10us (sel [1..0] = “01” = 1) y la misma
señal de período 2ms de entrada. El grupo contadores llegaría a un valor de 200 y la
representación en los displays se vería:
En este caso para que se lea 2ms se debe ubicar el punto en el dígito tres, de forma que los
displays se muestren:
62
CAPÍTULO III. MEDIDOR DE PERÍODO
Para la misma señal de entrada y tomando el caso de la señal de pulsos con período 100us (sel
[1..0] = “10” = 2). El grupo contadores llegaría a un valor de 20 y la representación en los displays
sería:
Y por lo tanto se debe ubicar el punto en el dígito dos, de forma que en los displays se observe:
Queda el último caso, para la señal de pulsos con período 1000us (sel [1..0] = “11” = 3), el grupo
de contadores llegaría a dos (siempre con la misma señal de entrada) con la siguiente
visualización de los displays:
Por lo que se debe ubicar el punto en el dígito uno, de forma que los displays se muestren:
Entonces se puede confeccionar la tabla III.2, que nos muestra el dígito que contiene el punto de
acuerdo a la señal de pulsos seleccionada.
Para lograr esto se crea un bloque descrito en lenguaje VHDL (vea Anexo II.2) llamado ubica _
punto que tiene como entrada la selección sel [1..0] y su salida será dp [5..0] como se puede
observar en la figura III.10.
63
CAPÍTULO III. MEDIDOR DE PERÍODO
64
CAPÍTULO III. MEDIDOR DE PERÍODO
y la señal bcd[6..0] mantiene en cero todos los dígitos de los displays excepto el segundo donde
coloca un dos (“0100100”), dando como resultado 2,0ms.
65
CAPÍTULO III. MEDIDOR DE PERÍODO
66
CONCLUSIONES
CONCLUSIONES
67
RECOMENDACIONES
RECOMENDACIONES
1. Se propone que los temas abordados en esta investigación sean retomados en futuros trabajos
de diploma e investigaciones, con la finalidad de contar con un mayor número y variedad de
algoritmos de DSP que se puedan implementar sobre un FPGA.
2. Dada la importancia de esta investigación y sobre la base de un mejoramiento en la preparación
docente de los estudiantes de la carrera de Ingeniería en Telecomunicaciones y Electrónica, se
recomienda valorar la posibilidad de incorporar demostraciones como las realizadas en el
segundo y tercer capítulo en el marco docente-educativo de la especialidad antes mencionada;
pues las mismas permiten una mayor interactividad de los estudiantes con las herramientas de
software y los recursos de hardware con que se cuenta.
68
REFERENCIAS BIBLIOGRÁFICAS
REFERENCIAS BIBLIOGRÁFICAS
1. APEX 20K Device Family Data Sheet (2006). Consultado el primero de marzo de 2007, en
http://www.altera.com/literature/ds/apex.pdf.
2. Alfonso, S., Soto, E., Fernández, S. Diseño de Sistemas Digitales con VHDL. Thomson Ed.
Spain. 2002.
3. Al-Hadithi, Basil M. y Suardíaz, Muro Juan (2004). “Nuevas tendencias en el diseño electrónico
digital: codiseño hardware/software”. Tecnologí@ y Desarrollo. Revista de Ciencia, Tecnología y
Desarrollo. Universidad Alfonso X el sabio. Madrid. Volumen II. Año 2004. ISSN: 1696-8085.
4. Barrios, J. P. (2000). Enseñanza de los Dispositivos Lógicos Programables. Tecnologías
Aplicadas a la Enseñanza de la Electrónica (TAEE). Barcelona. España.
5. Barrios, J. P. (2002). La enseñanza de los procesadores digitales secuenciales utilizando
Internet y OrCAD 9.0. Un ejemplo de colaboración. Informática 2002. La Habana, Cuba. ISBN
959-237-079-6.
6. Barrios, J. P. (2003). DigitalTools: Una herramienta de ayuda a la enseñanza del diseño de
unidades de control secuenciales síncronas. Informática 2003. La Habana, Cuba. ISBN
959237095-8.
7. Barrios, J. P. (2005). La integración de medios informáticos y el trabajo en equipo en la
enseñanza del diseño electrónico digital. Una experiencia de cinco años. Informática 2005.
Palacio de Convenciones. Ciudad Habana. Cuba. ISBN 959-7164-87-6.
8. Barrios, J. (2006). Estrategia didáctica para el desarrollo de la habilidad diseño electrónico digital
en estudiantes de ingeniería en Telecomunicaciones y Electrónica. Tesis Doctoral en Ciencias
Pedagógicas. Santa Clara, Cuba. 2006.
9. Dorta, G., Torres, F. Implementación de algoritmos básicos de procesamiento digital de señales
sobre FPGA de Altera. Trabajo de Diploma. Santa Clara, Cuba. 2006.
69
REFERENCIAS BIBLIOGRÁFICAS
70
ANEXOS
ANEXOS
LIBRARY ieee;
USE ieee.std_logic_1164.all;
-- Entity Declaration
ENTITY div IS
PORT
osc: IN STD_LOGIC;
);
END div;
-- Architecture Body
BEGIN
process (osc)
71
ANEXOS
variable c: integer;
begin
c:= c + 1;
if c = 1000 then
ms <= '1';
c:= 0;
else
ms <= '0';
end if;
end if;
end process;
END div_architecture;
El objetivo de este programa es que con la entrada del osc (oscilador externo de 1Mz) se obtenga
como salida un pulso cada 1ms. Para esto se creó la variable c que cuenta los pulsos del oscilador
(osc) y cuando c llegue a 1000, salga un pulso de ms (1ms) y ponga c a cero hasta que vuelva a
llegar el nuevo pulso del oscilador externo donde comience a contar c y ms vuelva a cero.
LIBRARY ieee;
USE ieee.std_logic_1164.all;
-- Entity Declaration
ENTITY BaseT IS
PORT
72
ANEXOS
ms : IN STD_LOGIC;
);
END BaseT;
-- Architecture Body
BEGIN
process(ms)
variable c: integer;
begin
c := c+1;
case sel is
else
c := 0;
end if;
73
ANEXOS
else
c := 0;
end if;
else
c := 0;
end if;
if c < 11 then
else
c := 0;
end if;
end case;
end if;
end process;
END BaseT_architecture;
74
ANEXOS
El objetivo de este programa es que de acuerdo a la selección hecha por sel[1..0] se obtenga la
baseT deseada. Para esto se crea una variable que cuente los pulsos de ms. La variable contará
hasta que se elija por sel[1..0] en la sección case del programa.
Mientras c cuenta, baseT se mantendrá en alto hasta que c llegue al final del conteo elegido donde
baseT y c vuelven a cero.
LIBRARY ieee;
USE ieee.std_logic_1164.all;
-- Entity Declaration
ENTITY latchs IS
PORT
z : IN STD_LOGIC;
75
ANEXOS
);
END latchs;
-- Architecture Body
BEGIN
process(z)
begin
if z = '1' then
j <= b;
k <= c;
l <= d;
m <= e;
n <= f;
o <= g;
end if;
end process;
END latchs_architecture;
El objetivo de este programa es cargar los valores que tienen los contadores (cuando z está en alto)
y mantenerlos por un tiempo para que pueda ser visualizado.
LIBRARY ieee;
USE ieee.std_logic_1164.all;
76
ANEXOS
-- Entity Declaration
ENTITY mult IS
-- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE!
PORT
(
j : IN STD_LOGIC_VECTOR(3 downto 0);
k : IN STD_LOGIC_VECTOR(3 downto 0);
l : IN STD_LOGIC_VECTOR(3 downto 0);
m : IN STD_LOGIC_VECTOR(3 downto 0);
n : IN STD_LOGIC_VECTOR(3 downto 0);
o : IN STD_LOGIC_VECTOR(3 downto 0);
selec_encoding : IN STD_LOGIC_VECTOR(2 downto 0);
p : OUT STD_LOGIC_VECTOR(3 downto 0)
);
-- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE!
END mult;
-- Architecture Body
ARCHITECTURE mult_architecture OF mult IS
signal sy : std_logic_vector(3 downto 0);
BEGIN
process (selec_encoding, j, k, l, m, n, o)
begin
case selec_encoding is
when "001" => sy <= j;
when "010" => sy <= k;
when "011" => sy <= l;
when "100" => sy <= m;
when "101" => sy <= n;
when "110" => sy <= o;
when "000" => sy <= "0000" ;
when "111" => sy <= "0000" ;
77
ANEXOS
LIBRARY ieee;
USE ieee.std_logic_1164.all;
-- Entity Declaration
ENTITY dec IS
PORT
);
END dec;
-- Architecture Body
BEGIN
process (selec_encoding)
begin
78
ANEXOS
case selec_encoding is
end case;
end process;
s <=sa;
END dec_architecture;
LIBRARY ieee;
USE ieee.std_logic_1164.all;
-- Entity Declaration
ENTITY ubica_punto IS
-- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE!
PORT
(
sel : IN STD_LOGIC_VECTOR(1 downto 0);
dp : OUT STD_LOGIC_VECTOR(5 downto 0)
);
-- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE!
79
ANEXOS
END ubica_punto;
-- Architecture Body
ARCHITECTURE ubica_punto_architecture OF ubica_punto IS
signal sx : std_logic_vector(5 downto 0);
BEGIN
process(sel)
begin
case sel is
when "00" => sx <= "101111";
when "01" => sx <= "110111";
when "10" => sx <= "111011";
when "11" => sx <= "111101";
when others => null;
end case;
end process;
dp <= sx;
END ubica_punto_architecture;
El objetivo de este programa es el de ubicar el punto poniendo en cero el bit correspondiente de
acuerdo con la selección que se haga con sel[1..0].
LIBRARY ieee;
USE ieee.std_logic_1164.all;
-- Entity Declaration
ENTITY div IS
PORT
80
ANEXOS
osc : IN STD_LOGIC;
b : OUT STD_LOGIC;
a : OUT STD_LOGIC;
d : OUT STD_LOGIC
);
END div;
-- Architecture Body
BEGIN
process (osc)
variable dd , bb , aa : integer;
begin
aa:= aa + 1;
dd:= dd + 1;
bb:= bb + 1;
if bb = 100 then
b <= '1';
bb:= 0;
else
b <= '0';
end if;
if aa = 10 then
81
ANEXOS
a <= '1';
aa:= 0;
else
a <= '0';
end if;
if dd = 1000 then
d <= '1';
dd:= 0;
else
d <= '0';
end if;
end if;
end process;
END div_architecture;
El objetivo de este programa es lograr que de la frecuencia del oscilador externo (osc=1MHz) se
creen distintas señales con períodos como b=100us, a=10us, d=1000us .Esto se logra con la ayuda
de las variables enteras bb, aa, dd creadas, las cuales contaran la señal osc hasta el valor
especificado en las secuencias if correspondientes y darán los pulsos deseados.
LIBRARY ieee;
USE ieee.std_logic_1164.all;
-- Entity Declaration
ENTITY ubica_punto IS
PORT
82
ANEXOS
);
END ubica_punto;
-- Architecture Body
BEGIN
process(sel)
begin
case sel is
end case;
end process;
dp <= sx;
END ubica_punto_architecture;
El objetivo de este programa es que de acuerdo con la selección especificada por sel[1..0] se
coloque en cero el bit deseado del vector dp[5..0].
83
ANEXOS
84
ANEXOS
85
ANEXOS
86