0% encontró este documento útil (0 votos)
121 vistas98 páginas

VHDL Frequencymeter

VHDL frequencymeter
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
121 vistas98 páginas

VHDL Frequencymeter

VHDL frequencymeter
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 98

Universidad Central “Marta Abreu” de Las Villas

Facultad de Ingeniería Eléctrica

Departamento de Telecomunicaciones y Electrónica

TRABAJO DE DIPLOMA

“Medición de frecuencia y período utilizando FPGAs de


Altera”

Autor: Nosiel Hernández Alvare

Tutor: Dr. Juan Pablo Barrios Rodríguez

Santa Clara

2007
"Año 49 de la Revolución"
Universidad Central “Marta Abreu” de Las Villas
Facultad de Ingeniería Eléctrica

Departamento de Telecomunicaciones y Electrónica

TRABAJO DE DIPLOMA

“Medición de frecuencia y período utilizando FPGAs de


Altera”
Autor: Nosiel Hernández Alvare

Tutor: Dr. Juan Pablo Barrios Rodríguez


Prof. Dpto. de Telecomunicaciones y electrónica
e-mail: [email protected]

Consultante: Ing. Ramón Torres Rojas


Prof. Dpto. de Telecomunicaciones y electrónica
e-mail: [email protected]

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.

Firma del Autor

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.

Firma del Tutor Firma del Jefe de Departamento


donde se defiende el trabajo

Firma del Responsable de


Información Científico-Técnica
PENSAMIENTO

En las actuales sociedades, lo imaginativo cede su cetro a lo


inteligente; lo realizable se hace dueño de lo que dominaba antes
lo soñado; lo práctico se impone en nuestros tiempos con una
soberbia fatal y poderosa.

José Martí (1875)


DEDICATORIA

A mis padres por su cariño y sacrificio.

A mi hermano porque siempre ha sido imprescindible.

A Yanisley por ser el amor de mi vida.

A mi familia y amigos.
AGRADECIMIENTOS

A mis padres por su ayuda en mi formación desde los primeros


años.

A mi tutor Dr. Juan Pablo Barrios Rodríguez por su apoyo y sus


oportunas orientaciones.

A todos los que han contribuido a mi formación como profesional.

A la Universidad Central “Marta Abreu” de Las Villas.


TAREA TÉCNICA

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.

Firma del Autor Firma del Tutor


RESUMEN

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

CAPÍTULO I. GENERALIDADES SOBRE EL DISEÑO DIGITAL UTILIZANDO FPGAs......................5

I.1 El diseño digital visto como competencia profesional...................................................................5

I.1.1 Evolución histórica del diseño electrónico digital................................................................5

I.1.2 Invariantes funcionales de la habilidad de diseñar en electrónica digital...........................9

I.2 Características generales de las FPGAs y los CPLDs de la familia Altera.La familia APEX20K…9

I.2.1 Descripción general............................................................................................................9

I.2.2 Descripción funcional.........................................................................................................11

I.2.3 Estructura de MegaLAB.....................................................................................................13

I.2.4 Bloque de Arreglo Lógico...................................................................................................13

I.2.5 Elemento Lógico................................................................................................................15


I.2.6 Modos de operación del LE..............................................................................................17

I.2.6.1 Modo normal...........................................................................................................17

I.2.6.2 Modo aritmético......................................................................................................17

I.2.6.3 Modo contador........................................................................................................19

I.2.7 Lógica de Término-Producto............................................................................................19

I.2.8 Bloque de Sistema Embebido (ESB)................................................................................20

I.2.9 Interfase multivol I/O.........................................................................................................22

I.3 Herramientas utilizadas para el desarrollo del proyecto..................................................................24

I.3.1 Características del Kit que contiene al FPGA................................................................24

I.3.2 QUARTUS II....................................................................................................................26

I.3.2.1 Diseño.....................................................................................................................28

I.3.2.2 Síntesis...................................................................................................................28

I.3.2.3 Placement & Routing..............................................................................................29

I.3.2.4 Simulación................................................................................................................29

I.3.2.5 Programación.........................................................................................................30

I.4 El lenguaje VHDL. Sus ventajas para el diseño de sistemas digitales........................................31

I.5 Conclusiones parciales del capítulo............................................................................................33

CAPÍTULO II. MEDIDOR DE FRECUENCIA.....................................................................................35

II.1Introducción.................................................................................................................................35

II.2 Arquitectura básica.....................................................................................................................35

II.3 Implementación en FPGA...........................................................................................................37

II.3.1 Bloque Generador de la base de tiempos.......................................................................38

II.3.2 Bloque de control.............................................................................................................43


II.3.3 Contadores sincrónicos....................................................................................................47

II.3.4 Bloque de Latchs.............................................................................................................47

II.3.5 Bloque Multiplexor............................................................................................................47

II.3.6 Bloque Decodificador BCD siete segmentos....................................................................47

II.3.7 Bloque Decodificador.......................................................................................................50

II.3.8 Bloque Ubicación del punto dp.........................................................................................51

II.4 Comprobación de los resultados.................................................................................................53

II.4.1 Errores de medición.........................................................................................................54

II.5 Conclusiones parciales del capítulo............................................................................................55

CAPÍTULO III. MEDIDOR DE PERÍODO...........................................................................................56

III.1 Introducción...............................................................................................................................56

III.2 Arquitectura básica....................................................................................................................56

III.3 Implementación en FPGA..........................................................................................................58

III.3.1 Bloque Generador de pulsos..........................................................................................58

III.3.2 Bloque Divisor.................................................................................................................61

III.3.3 Bloque Ubicación del punto dp.......................................................................................62

III.3.4 Bloques que faltan..........................................................................................................64

III.4 Comprobación de los resultados...............................................................................................64

III.4.1 Errores de medición........................................................................................................65

III.5 Conclusiones parciales del capítulo...........................................................................................66

CONCLUSIONES…………….......................…………………………………………………………….…67

RECOMENDACIONES.......................................................................................................................68

REFERENCIAS BIBLIOGRÁFICAS....................................................................................................69

ANEXO ...............................................................................................................................................71
Anexo I MEDIDOR DE FRECUENCIA................................................................................................71

Anexo I.1 Descripción en lenguaje VHDL del bloque div..................................................................71

Anexo I.2 Descripción en lenguaje VHDL del bloque BaseT............................................................72

Anexo I.3 Descripción en lenguaje VHDL del bloque latchs.............................................................75

Anexo I.4 Descripción en lenguaje VHDL del bloque mult...............................................................76

Anexo I.5 Descripción en lenguaje VHDL del bloque dec................................................................78

Anexo I.6 Descripción en lenguaje VHDL del bloque ubica _ punto................................................79

Anexo II MEDIDOR DE PERÍODO.....................................................................................................80

Anexo II.1 Descripción en lenguaje VHDL del bloque div................................................................80

Anexo II.2 Descripción en lenguaje VHDL del bloque ubica _ punto...............................................82

Anexo III Diagrama del medidor de frecuencia representado en el QUARTUS II..............................84

Anexo IV Diagrama del medidor de período representado en el QUARTUS II..................................85

Anexo V Puesto de trabajo.................................................................................................................86


INTRODUCCIÓN

INTRODUCCIÓN

El procesamiento digital de señales es un área de la ciencia y la ingeniería que se ha desarrollado


rápidamente durante los últimos 30 años. Este rápido desarrollo es el resultado de los avances
tecnológicos tanto en los ordenadores digitales como en la fabricación de circuitos integrados.

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.

Dentro de dichas transformaciones se encuentra la aplicación del procesamiento digital de señales


en campos tan diversos como las comunicaciones, los equipos electrónicos y las aplicaciones
computacionales en general.

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.

La solución final constará de un grupo de diseños, utilizando el Quartus II de Altera y un kit de


entrenamiento con el APEX EP20K100EQC240-2X, factible de configurar desde el propio
ordenador, así como las interfaces necesarias para la comprobación sobre el kit de los diseños
programados.

La necesidad social de formación de especialistas de la carrera antes citada, unido a las


experiencias en la investigación científica relacionada con el diseño digital y el procesamiento digital
de señales, las cuales se concentran fundamentalmente en el CEETI (Centro de Estudios de
Electrónica y Tecnología de la Información) y el departamento de Telecomunicaciones y Electrónica
[Barrios, 2002, 2004, 2006], [Taboada, Mendoza, Lorenzo y Lovely 2003], [Taboada, Mendoza y
Lorenzo 2004, pp. 1199-1202]. Dichas investigaciones, en conjunto con la impartición durante varios
cursos de asignaturas de Electrónica Digital, Fundamentos de las Comunicaciones, Procesamiento
Digital de Señales, entre otras han propiciado una cultura científica y tecnológica sobre esta
temática reconocida en el contexto nacional.

En el departamento de Telecomunicaciones y Electrónica, por su parte, existe experiencia en el


diseño digital, explotando las facilidades de las herramientas de ayuda al diseño (EDA en inglés)
[Barrios, 2000], [Barrios, 2002], [Barrios, 2003], [Barrios, 2005] y los dispositivos digitales de alta
escala de integración configurables (PLD ó FPGA). Dicha experiencia se ha revertido en una
docencia con altos niveles de satisfacción estudiantil en las carreras de Telecomunicaciones y
Electrónica y de Automática.

2
INTRODUCCIÓN

Las recientes demandas de profesionales competentes en el diseño, instalación y mantenimiento de


equipos con alta tecnología digital y de gran procesamiento digital de señales, han llevado a la
decisión de profundizar en la preparación docente de las asignaturas relacionadas con estas
temáticas, con el objetivo de que los estudiantes adquieran los conocimientos y habilidades
fundamentales en el diseño de sistemas digitales básicos de su campo de acción profesional.

En este sentido, desarrollar una base material y técnica que permita una docencia de calidad en
estas asignaturas, es una necesidad impostergable.

La necesidad social de formación de especialistas de la carrera antes citada, unido a las


experiencias del CEETI y del departamento de Telecomunicaciones y Electrónica en el diseño
electrónico digital, utilizando PLDs ó FPGAs conduce a la interrogante fundamental de la presente
investigación:

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?

Como se deduce de la interrogante anterior el objeto de estudio de la presente investigación es el


relacionado con el desarrollo de diseños de sistemas electrónico-digitales típicos, constituyendo el
campo de acción; por una parte el diseño e implementación de sistemas digitales complejos sobre
FPGAs y por otra, los fundamentos esenciales relacionados con las comunicaciones digitales y el
procesamiento digital de señales.

Como Interrogantes Científicas, a solucionar como parte de la investigación se encuentran:

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?

3. ¿Qué facilidades presenta el software Quartus II de Altera para la realización y el análisis de


los medidores de frecuencia y período?

4. ¿Cómo implementar las mismas en un hardware de propósito general tal como el kit de
entrenamiento?

3
INTRODUCCIÓN

5. ¿Cómo comprobar y documentar dichas implementaciones?

Como Objetivo General se deriva:

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.

El informe de la investigación se estructurará en introducción, capitulario, conclusiones,


referencias bibliográficas y anexos.

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 II: Realización del diseño del medidor de frecuencia, su implementación y


comprobación.

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

CAPÍTULO I .GENERALIDADES SOBRE EL DISEÑO DIGITAL UTILIZANDO FPGAs

I.1 El diseño digital visto como competencia profesional.

Entre los profesionales de las Telecomunicaciones y la Electrónica, aquellos que se encargan de la


actividad de diseño son los que requieren mayor capacidad de adaptación a los cambios producidos
por el desarrollo tecnológico que demandan la industria, los servicios y la sociedad en general. Son
estos los encargados de solucionar problemas utilizando los conocimientos, los métodos, los
componentes y sistemas digitales, por lo que se exige ingenieros vinculados a este perfil, creativos y
habilidosos.

I.1.1 Evolución histórica del diseño electrónico digital.

En el DRAE se define diseño como:

- Descripción o bosquejo de alguna cosa, hecho por palabras.


- Proyecto, plan.
- Concepción original de un objeto u obra destinados a la producción en serie.
- Forma de cada uno de estos objetos.
De la misma forma expresa que diseñar es: Hacer un diseño.

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

I.1.2 Invariantes funcionales de la habilidad de diseñar en electrónica digital.


Una caracterización didáctica de la habilidad diseñar [Barrios, 2006], presupone un análisis de su
estructura interna y la determinación de las diferentes acciones y operaciones de esta actividad
compleja generalizada.
Si bien Wakerly (2000) define diseñar como ingeniería, e ingeniería como resolver un problema, no
basta con ver esta actividad en su manifestación externa. Para lograr la generalización de la
habilidad diseñar, Barrios [2006] asume como fundamentos metodológicos los relacionados con la
teoría de la actividad de la escuela soviética y las experiencias cubanas en el desarrollo de
investigaciones relacionadas con la enseñanza basada en problemas para ciencias exactas y/o
experimentales aplicando los principios generales de la misma (véase Labarrere, 1996; Rizo &
Campistrous, 1998; Llivina, 2000; Leyva, 2002; Rivero, 2002).
Dicho autor define la habilidad diseñar, en electrónica digital, como: la actividad mediante la cual
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 de la
profesión.
Como se observa, en su definición se encuentran todos los factores esenciales para el desarrollo
de una actividad:
¾ Motivo ó demanda: Resolver un problema práctico.
¾ Objetivo: Resolver el mismo de forma eficiente.
¾ Método: Mediante un conjunto de acciones.
En la figura I.1 se muestra lo que [Barrios, 2006] constituye la estructura interna de la habilidad
diseñar como actividad compleja generalizada y la interacción entre sus acciones y operaciones.
I.2 Características generales de las FPGAs y los CPLDs de la familia Altera. La Familia
APEX 20K.
I.2.1 Descripción general.
Los dispositivos APEXTM 20K son los primeros PLDs (dispositivos lógicos programables)
diseñados con la arquitectura MultiCore, los cuales combinan las fortalezas de los dispositivos
basados en LUT y en términos de productos con una estructura de memoria enriquecida.

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

Figura I.1 Estructura interna de la habilidad diseñar.


La lógica basada en LUT mantiene un desempeño optimizado y eficiencia para flujo de datos,
registros intensivos, lógica matemática o diseños con procesamiento de señales digitales. La
lógica basada en términos de productos es optimizada para flujos complejos combinacionales,
tales como máquinas de estado complejas. LUT y lógica basada en términos de productos
combinada con las funciones de memoria, la extensa variedad de Mega-Core y las funciones
AMPP (Altera® Megafunction Partners Program) hacen la arquitectura del dispositivo APEX 20K
singularmente cómodo para diseños de sistemas programables en un chip (SoC en inglés).
Los dispositivos APEX 20KE son el súper modelo de los dispositivos APEX 20K e incluyen
características adicionales tales como el soporte avanzado de I/O Standard, CAM (memoria
direccionable por contenido), relojes globales adicionales y circuitería de reloj ClockLock

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

I.2.3 Estructura de MegaLAB.


Los dispositivos APEX 20K son construidos de una serie de estructuras MegaLABTM. Cada
estructura MegaLAB contiene un grupo de bloques de arreglos lógicos (LABs), un ESB y una
interconexión de MegaLAB que encamina señales dentro de la estructura de MegaLAB. El
dispositivo EP20K30E tiene 10 LABs, los dispositivos EP20K60E hasta los EP20K600E tienen 16
LABs y los EP20K1000E hasta EP20K1500E tienen 24 LABs. Las señales son encaminadas entre
las estructuras MegaLAB y los pines I/O a través de la interconexión FastTrack. Además, los
bordes de los LABs pueden ser manejados por los pines I/O a través de la interconexión local. La
figura I.3 muestra la estructura MegaLAB.

Figura I.3 Estructura MegaLAB.


I.2.4 Bloque de Arreglo Lógico.
Cada LAB consiste en 10 LEs, el LE asociado lleva y conecta en cascada señales de control de
LAB y la interconexión local. La interconexión local transfiere señales entre LEs en el mismo o
adyacentes LABs, IOEs o ESBs. El compilador de Quartus II implementa lógica asociada dentro
de un LAB o los LABs adyacentes, permitiendo el uso de una interconexión local rápida para un
alto rendimiento. La figura I.4 muestra el LAB APEX 20K.
Los dispositivos APEX 20K utilizan una estructura interpolada de LAB. Esta estructura permite que
cada LE conduzca dos áreas locales de la interconexión. Esta característica reduce al mínimo el
uso de los MegaLAB y la interconexión FastTrack, proporcionando mayor funcionamiento y
flexibilidad. Cada LE puede controlar otros 29 LEs a través de la interconexión local rápida.
Cada LAB contiene lógica dedicada para manejo de señales de control a sus LEs y ESBs. Las
señales de control incluyen el reloj, habilitación de reloj, clear asincrónico, preset asincrónico,

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.

Figura I.4 Bloque de Arreglo Lógico (Altera, 2006).


Cada LAB puede utilizar dos relojes y dos señales de habilitación de reloj. Cada reloj de los LABs
y señales de habilitación de reloj son enlazadas (ejemplo, cualquier LE en un LAB particular que
utilice CLK1 también utilizará CLKENA1). Los LEs con el mismo reloj pero diferentes señales de
habilitación de reloj permiten usar ambas señales de reloj en un LAB o son colocas en LABs
separados.
Si los bordes de subida y bajada del reloj se utilizan en un LAB, se usan ambas señales de reloj
del LAB extendido.

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.

Figura I.5 Circuito de generación de la señal de control del LAB.


Nota:
1- Los dispositivos APEX 20KE tienen cuatro relojes dedicados.
2- Las señales LABCLR1 y LABCLR2 controlan también la carga y preset asincrónicos para
LEs dentro del LAB.
3- La señal SYNCCLR puede ser generada por la interconexión local o señales globales.
I.2.5 Elemento Lógico.
El LE, la unidad más pequeña de la lógica en la arquitectura APEX 20K, es compacto y
proporciona uso eficiente de la lógica. Cada LE contiene cuatro entradas LUT, las cuales son un
generador de funciones que pueden implementar rápidamente cualquier función de cuatro
variables. Además, cada LE contiene un registro programable y controla la interconexión local, la
interconexión de MegaLAB y las estructuras de enrutamiento de la interconexión de FastTrack.
Vea la figura I.6.
El registro programable de cada LE se puede configurar para las operaciones D, T, JK o SR. El
reloj del registro y las señales de control clear pueden ser controlados por las señales globales, los
pines de propósito general I/O o cualquier lógica interna. Para las funciones combinatorias, el
registro es punteado y la salida de los LUT controla las salidas de los LE.

15
CAPÍTULO I. GENERALIDADES SOBRE EL DISEÑO DIGITAL UTILIZANDO FPGAs

Figura I.6 Elemento lógico del APEX 20K (Altera, 2006).


Cada LE tiene dos salidas que controlan la estructura de enrutamiento local, el MegaLAB o la
interconexión FastTrack. Cada salida se puede controlar independientemente por los LUT o las
salidas de los registros. Por ejemplo, el LUT puede controlar una salida mientras que el registro
controla la otra salida. Esta característica, llamada empaquetamiento del registro, mejora la
utilización del dispositivo porque el registro y el LUT se pueden utilizar para las funciones no
relacionadas. El LE puede también controlar versiones registradas y no registradas de la salida de
LUT.
La arquitectura APEX 20K proporciona dos tipos de flujos de datos dedicados a alta velocidad que
conectan LEs adyacentes sin usar caminos de interconexión local: cadenas de acarreo y cadenas
de cascadas. Una cadena de acarreos soporta funciones aritméticas de alta velocidad tales como
contadores y sumadores, mientras que en una cadena de cascadas se implementan funciones de
entradas expandidas tales como comparadores de igualdad con mínimas demoras. Acarreo y
cadenas de cascadas conectan los LEs uno con el diez en un LAB y todos los LABs en la misma
estructura de MegaLAB.

16
CAPÍTULO I. GENERALIDADES SOBRE EL DISEÑO DIGITAL UTILIZANDO FPGAs

I.2.6 Modos de operación del LE.


El LE APEX 20K puede funcionar en uno de los tres modos siguientes:
■ Modo normal
■ Modo aritmético
■ Modo contador
En cada modo, hay siete entradas disponibles al LE (cuatro entradas de datos de la interconexión
local del LAB, la realimentación del registro programable, acarreos de entrada y cascadas de
entrada del anterior LE) que son dirigidas a diferentes destinos para implementar la función lógica
deseada. Las señales expandidas de los LABs proporcionan reloj, clear asincrónico, preset
asincrónico, carga asincrónica, clear sincrónico, carga sincrónica y control de habilitación de reloj
para registro. Estas señales expandidas son validadas en todos los modos LE.
El software de Quartus II, conjuntamente con funciones parametrizadas tales como LPM (módulo
de parámetros lógicos) y funciones de DesignWare, elige automáticamente el modo apropiado
para las funciones comunes tales como contadores, sumadores y multiplicadores. Si es requerido,
el diseñador puede también crear funciones de propósito especial que especifican cual modo de
operación del LE utilizar para un óptimo funcionamiento. La figura I.7 muestra los modos de
funcionamiento del LE.
I.2.6.1 Modo normal.
El modo normal es conveniente para aplicaciones lógicas generales, las funciones combinatorias o
funciones de decodificación que pueden tomar ventaja de las cadenas de cascadas. En modo
normal, cuatro entradas de datos de la interconexión local del LAB y el acarreo de entrada son
cuatro de las entradas LUT. El compilador del software de Quartus II selecciona automáticamente
acarreo de entrada o la señal DATA3 como una de las entradas al LUT. La salida de LUT puede
ser combinada con la señal cascada de entrada para formar una cadena de cascadas a través de
la señal de salida de la cascada. LEs en modo normal soportan empaquetamiento de registros.
I.2.6.2 Modo aritmético.
El modo aritmético es ideal para implementar sumadores, acumuladores y comparadores. Un LE
en modo aritmético utiliza dos tres-entradas LUTs.
Un LUT calcula una función de tres entradas; el otro genera una salida de acarreo. Como se
muestra en la figura I.7, el primer LUT utiliza la señal acarreo de entrada y dos entradas de datos
de la interconexión local del LAB para generar una salida combinatoria o registrada.

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.

Figura I.8 Lógica Termino-Producto en ESB.


Nota: Los dispositivos APEX 20KE tienen cuatro relojes dedicados.
I.2.8 Bloque de Sistema Embebido (ESB).
El ESB puede implementar varios tipos de bloques de memoria, incluyendo bloques dual-port
RAM, ROM, FIFO y CAM. El ESB incluye registros de entrada y salida; los registros de entrada
sincronizan la escritura y los registros de salida pueden canalizar diseños para mejorar el
funcionamiento del sistema. El ESB ofrece un modo dual-port, el cual soporta simultáneas lecturas
y escrituras en dos diferentes frecuencias de reloj. La figura I.9 muestra el diagrama del bloque
ESB.

Figura I.9 Diagrama del bloque ESB.


Los ESBs pueden implementar RAM sincrónica, la cual es más fácil de utilizar que la RAM
asincrónica.

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).

Figura I.11 ESB del APEX 20K implementando dual-port RAM.


I.2.9 Interfase multivolt I/O.
La arquitectura del dispositivo APEX soporta interfase multivolt I/O, los cuales permiten que los
dispositivos APEX en todos los empaquetamientos se comuniquen con sistemas de diferentes
fuentes de voltajes. Los dispositivos tienen un grupo de pines a vcc para operaciones internas y
buffers de entrada (VCCINT), y otro conjunto para los controladores de las salidas I/O.
Los pines VCCINT de APEX 20K siempre deben ser conectados a una fuente de alimentación de
2.5v. Con el nivel de VCCINT de 2.5v los pines de entradas son tolerantes a 2.5v, 3.3v y 5.0v. Los
pines VCCIO pueden ser conectados a una fuente de alimentación de 2.5v o 3.3v, dependiendo

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.

Figura I.12 Placa de desarrollo FPGA APEX EP20K100EQC240-2X de Altera.


Para trabajar con esta placa de desarrollo se ha utilizado el software de diseño de hardware
Quartus II, desarrollado también por Altera y que consiste en una aplicación para el desarrollo de
forma precisa de sistemas en dispositivos programables. Este software ha permitido el diseño,
sintetización, compilación y verificación de los diferentes módulos desarrollados.
I.3.1 Características del Kit que contiene al FPGA.
Esta placa está provista de un canal de comunicación USB (Universal Serial Bus) entre una PC
(Personal Computer) y el FPGA. De esta manera, las aplicaciones sobre FPGA que requieran de

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 -

Voltaje de suministro interno 1.8 V


Niveles de voltaje en pines de E/S 1.8, 2.5, 3.3, 5.0* V
Nota: El resto de las características de este dispositivo pueden ser consultadas en [“APEX 20K
Device Family Data Sheet”, 2006].
• Un chip de memoria EEPROM EPC2LC20 que soporta la configuración en modo serie del
FPGA.
• Todos los pines del FPGA son accesibles usando conectores estándares en relación a la
interconexión de la tarjeta con otros sistemas.
• Esta placa admite los niveles de bajo voltaje como los que se muestran en la siguiente
figura (tomada de una nota de aplicación de la Texas Instruments).

Figura I.13 Niveles de voltajes.

25
CAPÍTULO I. GENERALIDADES SOBRE EL DISEÑO DIGITAL UTILIZANDO FPGAs

Las principales ventajas de este sistema son:


• El bajo costo de los componentes de hardware presentes en la tarjeta.
• El pequeño número de recursos lógicos y pines del FPGA que son dedicados al enlace de
comunicación. El resto de estos recursos pueden ser programados de acuerdo a la aplicación
usada.
• El hardware puede ser conectado a la PC sin necesidad de resetear esta última.
• Si el consumo de corriente de la aplicación es bajo, la tarjeta puede ser alimentada por el
bus USB eliminando la necesidad de una fuente de suministro externa.
I.3.2 QUARTUS II.
El software de diseño Quartus II de Altera proporciona una completa y funcional plataforma para el
diseño de sistemas electrónicos digitales, que fácilmente se adapta a las necesidades de diseño
de cada usuario en particular. Es una herramienta, tal como se ha comentado, especialmente
indicada para el desarrollo de Sistemas en Chips Programables (SOPC). El software incluye
soluciones para todas las fases de diseño utilizando diferentes tipos de dispositivos lógicos
programables tales como FPGA o CPLD.
El Quartus II posee una interfaz de usuario totalmente gráfica, fácil de manejar y de comprender,
además de que cuenta con un sistema de ayuda muy amplio que se complementa con la
existencia de un tutorial.
Entre las familias de estos dispositivos lógicos programables de Altera que se pueden simular y
compilar en este software están:

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

El Quartus II versión 4.2 contiene una biblioteca de megafunciones incluyendo librerías de


funciones de modelos parametrizados (LPM) que proporciona Altera, la cual puede resultar de
mucha utilidad en diseños complejos de alto nivel. En la opción MegaWizard® Plug-In Manager
(Tools menú) el usuario puede crear o modificar archivos del diseño que contienen una o varias
megafunciones. El uso de las megafunciones proporciona una mayor eficiencia en la realización
de la síntesis lógica del diseño; pero tienen como principal inconveniente que no son portables y
que están implementadas solo para las familias de Altera.
La versión en cuestión del Quartus II posee megafunciones de analizadores, componentes
aritméticos (acumuladores, multiplicadores, divisores, etc.), compuertas lógicas (OR, AND, XOR,

27
CAPÍTULO I. GENERALIDADES SOBRE EL DISEÑO DIGITAL UTILIZANDO FPGAs

inversores, etc.), componentes de entrada/salida, componentes de almacenamiento y compilador


de memoria (Dorta, G. 2006).
A continuación se intentará describir de forma general los medios y los pasos seguidos para la
implementación de cada una de estas aplicaciones durante el desarrollo del proyecto.

Figura I.14 Pasos para la implementación.


I.3.2.1 Diseño.
Un proyecto gestionado desde Quartus II incorpora todos los archivos de diseño y de software
necesarios para el buen hacer a la hora de implementar el diseño del sistema que se quiera
elaborar. Para el diseño de éste, se puede usar la herramienta Quartus II Block Editor o Text
Editor, mediante las cuales se podrá implementar de forma óptima los diferentes diseños digitales
haciendo uso de las funciones predefinidas en las librerías de Altera.
Esta herramienta permite al usuario describir los diseños de diversas formas haciendo uso de
diagramas de bloque/esquemático, lenguajes de programación AHDL, VHDL y Verilog HDL.
En este proyecto se han utilizado dos metodologías básicas para la elaboración del diseño de las
aplicaciones seleccionadas. Por un lado, módulos editados a través de lenguajes de descripción
de hardware VHDL (.vdh) y por otro lado, utilizando la aplicación de diseño de sistemas digitales
que incorpora Quartus II mediante la utilización de archivos tipo diagrama de bloques (.bdf).
I.3.2.2 Síntesis.
Quartus II ofrece una herramienta para sintetizar los diseños implementados en la etapa de
diseño. Para ello dispone de un gran número de opciones para realizar el proceso a través del

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.

Figura I.15 Waveform Editor.


I.3.2.5 Programación.
Una vez que el proyecto generado en Quartus II ha sido compilado mediante las herramientas que
el mismo dispone para ello, se puede pasar a programar o configurar el dispositivo de Altera. El
módulo de ensamblaje del compilador de Quartus II genera los pertinentes archivos de
programación que el módulo Quartus II Programmer utilizará para configurar un dispositivo a
través del hardware de Altera (Sanchez, M. A. 2004).

Existen tres vías para la programación del FPGA:

1. Desde la PC a través del bus USB y la interfaz JTAG.


2. Desde la PC a través del puerto paralelo y la interfaz JTAG (JTAG 1) usando un cable
ByteBlaster de Altera.
3. Desde la memoria EEPROM usando el modo de configuración serie (JTAG2).

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

FPGA y el monitoreo de la transferencia de datos. El ambiente de trabajo para esta aplicación se


muestra en la figura I.16.

Figura I.16 Entorno de trabajo de la aplicación IEA.

I.4 El lenguaje VHDL. Sus ventajas para el diseño de sistemas digitales.


Numerosos lenguajes de descripción del hardware han sido desarrollados en los últimos 30 años.
Desde el CDL (Computer Design Language), presentado en 1965, hasta el Verilog, desarrollado
en 1983-1984. Siempre se han buscado formas cómodas, sencillas y potentes de describir los
circuitos electrónicos. Por parte de las empresas que comercializan herramientas de diseño
microelectrónico, el lenguaje más conocido hasta principios de los años 90 fue Verilog, propiedad
de la compañía Cadence Design Systems, este lenguaje es sencillo de aprender y utilizar,
además de poseer gran capacidad de descripción de circuitos digitales, pero existen otros como el

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

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.

Figura II.1 Diagrama en bloques del frecuencímetro digital.


La señal de entrada será digital, o sea, en forma de onda cuadrada para que cada uno de sus
ciclos pueda ser debidamente detectado por el contador.

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.

Figura II.2 Diagrama de tiempos.


Una vez que se obtenga el valor tomado por el contador al finalizar el tiempo de conteo, deberá
ser cargado en el latch o cerrojo y el contador puesto a cero, ya que el sistema no efectúa una
única medida, sino que está continuamente midiendo para detectar distintas frecuencias de
entrada y por lo tanto la señal de la base de tiempos es una señal periódica. De aquí aparece el
bloque de control de latch el cual se encarga secuencialmente de que una vez finalizado el
tiempo de medición, cargar el valor del contador en el latch y poner a cero dicho contador de
modo que esté listo para el próximo tiempo de medición. El diagrama de tiempos de la figura II.3
muestra las señales de base de tiempo (BT), carga de latch (Z) y puesta a cero del contador (W).

36
CAPÍTULO II. MEDIDOR DE FRECUENCIA

Figura II.3 Diagrama de tiempos.


Suponiendo por un momento que no existe latch. En los displays se observarían los números
moviéndose rápidamente aumentando hasta que termina el pulso de tiempo de conteo. Allí se
quedarían quietos (y se podría ver la frecuencia) hasta que llegue el pulso w o puesta a cero,
con lo que se verían los números irse a cero y al habilitarse nuevamente el contador con el nivel
alto de la base de tiempo, volver a verlos incrementándose rápidamente hasta la cifra final.
Como se puede imaginar, esto es muy agotador para la vista y dependiendo del tiempo de
medición fijado a veces imposible de ver. Es así que se intercala entre el contador digital y la
presentación (los displays de siete segmentos) dicho dispositivo cerrojo o latch el cual permite
mantener el valor del contador en los displays durante el próximo ciclo de conteo e ir
refrescándose periódicamente al finalizar el tiempo de medición. Si la frecuencia es siempre la
misma no se verá entonces cambio alguno en los displays.
Como se afirma anteriormente, el valor del contador luego de ser cargado en el latch es
representado para su visualización en los displays. Para traducir este lenguaje binario del
contador a un lenguaje decimal de los displays, se utiliza un decodificador BCD a siete
segmentos con lo cual se pueden excitar los displays para la correcta representación de la
frecuencia medida.
II.3 Implementación en FPGA.
Para este caso en particular, el frecuencímetro, que es el primero que se implementará, debe
cumplir las siguientes especificaciones:
• Entradas de medición compatibles con TTL.
• Rango: 0,1Hz a 50MHz.

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

Figura II.4 Diagrama en bloques del medidor de frecuencia en FPGA.


Tabla II.1 Bases de tiempos.

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.

Figura II.5 Bloque div.


Para generar las distintas bases, se definirá un nuevo bloque jerárquico descrito en el lenguaje
VHDL también (vea el Anexo I.2) el cual se llamará BaseT como se observa en la figura II.6.

Figura II.6 Bloque BaseT.


Este bloque tendrá como entradas la señal ms salida del bloque anterior y la señal selectora (sel
[1..0]) y su salida será la base de tiempo elegida (llamada baseT).
El objetivo de este bloque es que de acuerdo a la selección hecha por sel [1..0] se obtenga la
baseT deseada (ver tabla II.1).
Ahora queda generar el contador que comanda las líneas de selección de los bloques mult y dec.
Para esto se utiliza un contador de cuatro bits que cuente hasta 10 (74162), al cual se le hizo unos
cambios para que contara hasta seis como se observa en la figura II.7.
Para esto se adicionó un NAND de dos entradas al que le entran las salidas Qb y Qc del contador
con el objetivo de que cuando el contador llegara a seis (“0110” en binario) se volviera a cargar en
uno (“0001” en binario) y así este solo cuente hasta seis.

40
CAPÍTULO II. MEDIDOR DE FRECUENCIA

Figura II.7 Contador hasta seis.


Como se dijo anteriormente este contador comandará los tiempos de la multiplexación de los
dígitos a mostrar en los displays, por lo tanto su frecuencia deberá ser lo suficientemente rápida
como para ver todos los dígitos encendidos, pero no demasiado elevada para permitir que los leds
de los dígitos se alcancen a encender. Se adoptó entonces una frecuencia de 1KHz.
Luego las salidas del contador (selec_encoding [2..0]) serán las que comandan el mult y el dec.
Ahora se realizará una simulación temporal para verificar las salidas del bloque generador de base
de tiempos completo para los distintos valores de entrada. Se toma solo la generación de las bases
de 100 y 10ms en estado alto, debido al elevado tiempo de simulación que se necesitaría para
simular las bases de 1000 y 10000ms en alto, si se tiene en cuenta que la señal del oscilador
externo es de 1MHz.
La comprobación de la salida baseT se observa en la figura siguiente:

Figura II.8 Comprobación de la baseT.


Como se observa para los valores “10” y “11” de la entrada sel [1..0], la salida BaseT tiene un
tiempo en alto de 100 y 10ms respectivamente.

41
CAPÍTULO II. MEDIDOR DE FRECUENCIA

Ahora se comprobará la salida selec_encoding [2..0] y el nodo ms:

Figura II.9 Comprobación de ms y selec_encoding [2..0].


Se puede verificar que el período de ms es de 1ms como se desea. También se puede ver que la
secuencia de salida del contador (selec_encoding [2..0]) va de “001” a “110” y su tiempo de
duración en cada nivel es de 1ms.
En la figura II.10 se muestra el bloque generador de la base de tiempos completo.

Figura II.10 Bloque generador de la base de tiempos.

42
CAPÍTULO II. MEDIDOR DE FRECUENCIA

II.3.2 Bloque de control.


El bloque de control es el encargado de generar la señal de carga de los latchs (Z) y la señal de
puesta a cero de los contadores (W). Tal como se ve en la figura II.3 la señal Z deberá ser un pulso
luego de que la base de tiempos caiga a cero. Para construir esta señal se utilizará un
monoestable construido a partir de una máquina de estados de Mealy, cuya entrada será baseT,
su salida la señal Z y su reloj 1Mhz; con el siguiente diagrama de estados:

.
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.

Para la obtención de la ecuación de salida en función del estado presente y la entrada:


Se crea la tabla II.3.
Tabla II.3 Salida Z.

43
CAPÍTULO II. MEDIDOR DE FRECUENCIA

Luego agrupando los unos se obtiene la ecuación de la salida Z:

(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.

Luego agrupando se obtiene la ecuación de salida de este 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.

Luego agrupando se obtiene la ecuación de salida de este 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

Figura II.12 Circuito lógico para la obtención de z.

Figura II.13 Obtención de w.

45
CAPÍTULO II. MEDIDOR DE FRECUENCIA

Se observará este bloque de control completo y su comprobación en el Quartus II en las figuras


II.14 y II.15 respectivamente.

Figura II.14 Bloque de control.

Figura II.15 Comprobación en el Quartus II.

46
CAPÍTULO II. MEDIDOR DE FRECUENCIA

II.3.3 Contadores sincrónicos.


Este bloque cuenta con seis contadores 74162 (uno por cada dígito) en conexión sincrónica 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 cuales se encargan de contar los pulsos de la
señal a medir que entran en un tiempo de conteo (tiempo en el que la señal baseT está en nivel
alto).
Para esto se conecta la señal a medir como señal de reloj de los contadores, baseT a la
habilitación del primer contador y la señal W negada a los CLRN de los contadores para la puesta
a cero de ellos cuando se desee.
En la figura II.16 se observará la representación de los mismos en el QuartusII.
II.3.4 Bloque de Latchs.
El bloque de latchs presenta como entradas las salidas de todos los contadores, como se observa
en la figura II.17, el cual se encarga de mantener los valores de las salidas de los contadores
cuando finaliza un ciclo de conteo y hasta que finalice el próximo.
El objetivo de este bloque es sencillamente que cada vez que venga el pulso Z el bloque latchs
cargue los valores de los contadores y los mantenga hasta que llegue el otro pulso Z que cargue
los nuevos valores de estos contadores o los mismos si no han cambiado. Esto se hizo en lenguaje
VHDL y se puede ver en el Anexo I.3.
II.3.5 Bloque Multiplexor.
El bloque multiplexor llamado mult está constituido por seis entradas (que son las salidas de los
latchs) y solo una salida, todas estas son de cuatro bits cada una como se puede observar en la
figura II.18.
El objetivo de este bloque es el de multiplexar las seis señales provenientes de los latchs y
colocarlas una a una (en dependencia de la selección hecha por selec_encoding[2..0]) como
entrada al decodificador BCD siete segmentos (pastilla 7448 en este caso). Esto se hizo en una
descripción en lenguaje VHDL que se muestra en el Anexo I.4.
II.3.6 Bloque Decodificador BCD siete segmentos.
En este bloque se debe implementar un “traductor” del lenguaje binario de los contadores a un
lenguaje “decimal” de los displays de siete segmentos. Este lenguaje en los displays está
representado mediante los leds a, b, c, d, e, f, g y dp; los cuales están distribuidos de la forma que
se muestra en la figura II.19.

47
CAPÍTULO II. MEDIDOR DE FRECUENCIA

Figura II.16 Contadores implementados en Quartus II.

48
CAPÍTULO II. MEDIDOR DE FRECUENCIA

Figura II.17 Bloque de latchs.

Figura II.18 Bloque multiplexor.

Figura II.19 Distribución de los leds en un display de siete segmentos.

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.

Figura II.20 Pastilla 7448.


Cabe aclarar que el led dp que corresponde al punto no influirá en la representación del dígito y se
abordará luego para la ubicación del punto de acuerdo a la escala y la base de tiempos utilizada.
II.3.7 Bloque Decodificador.
Este bloque, llamado bloque dec fue programado en lenguaje VHDL y se encarga (vea el Anexo
I.5) de la decodificación binaria de la secuencia repetitiva de uno a seis de la salida del contador
hasta seis (selec_encoding [2..0]) a una secuencia repetitiva que permita seleccionar un dígito a la
vez de la forma que muestra la tabla II.6.
Tabla II.6 Decodificador.

Este bloque tiene como entrada selec_encoding [2..0] y salida s [5..0] como se puede observar en
la figura II.21.

Figura II.21 Decodificador.

50
CAPÍTULO II. MEDIDOR DE FRECUENCIA

II.3.8 Bloque Ubicación del punto dp.


Este bloque que se muestra en la figura II.22 se encarga de la ubicación del punto dp en uno de los
seis dígitos de acuerdo a la base de tiempos utilizada. Para esto se crea el bloque ubica _ punto
descrito en lenguaje VHDL (ver Anexo I.6) donde entra la señal sel [1..0] y sale la señal dp [5..0],
obteniendo la colocación del punto correcta.
Para cumplir con el rango de frecuencias a medir, se toma la visualización de los displays en la
escala de KHz, esto permitirá una correcta visualización del rango de frecuencias a medir,
eligiendo la correcta base de tiempos.

Figura II.22 Ubicación del punto.


Tomando el caso de la base de tiempos con 10000ms = 10seg en nivel alto (sel [1..0] = “00” = 0).
Si se tiene que medir una frecuencia de 1KHz como señal de entrada. El grupo contadores llegaría
a un valor de 10000 y la representación en los displays sería:

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.

II.4 Comprobación de los resultados.


Después de todo el trabajo anterior se pasó a la comprobación de los resultados. Se comenzó con
una comprobación final en el software Quartus II de las tres salidas que manejan los displays siete
segmentos (bcd[6..0], s[5..0], dp[5..0]). En la figura II.23 se observa una simulación temporal de
estas salidas, donde se tomó el caso de una señal de entrada de 1KHz, un oscilador externo de
1MHz y una selección sel[1..0] = “00”.

Figura II.23 Comprobación final en el Quartus II.


Aquí se puede observar como la señal s[5..0] que es la salida del decodificador, varia
correctamente. La señal dp[5..0] con la selección “00” coloca en “0” el quinto bit como se desea y la

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:

Figura II.24 Comprobación final.


II.4.1 Errores de medición.
Para rangos de medición calculados en los puntos anteriores, no fueron tomados en cuenta los
errores del medidor, los cuales pueden ser provocados por dos situaciones:
• Error de la base de tiempos:
Este error está dado pura y exclusivamente por la inestabilidad del oscilador externo de 1MHz.
• Error en el número de pulsos contados:
Es el error del medidor implementado en el Quartus II, ya que, los contadores cuentan dentro de un
determinado tiempo de conteo (el cual está dado por la base de tiempos generada a partir del
oscilador externo) una cantidad de pulsos (que son los de la señal a medir).
Como se puede intuir, estas dos señales en la gran mayoría de los casos no son sincrónicas, ya que
una es generada por el oscilador de 1MHz y la otra a partir de una señal no conocida a medir, y es
muy difícil que ambas estén en sincronismo.
Es por esto que en el peor de los casos los contadores cuenten un pulso de más o bien uno de
menos, con lo cual el error es de ± el dígito menos significativo de los displays.

54
CAPÍTULO II. MEDIDOR DE FRECUENCIA

II.5 Conclusiones parciales del capítulo.


Atendiendo a los temas tratados a lo largo de este capítulo a continuación se muestran las
siguientes conclusiones que se derivan de los mismos:
1. 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.
2. La implementación con elementos de hardware del medidor de frecuencia realizado en el
Quartus II 4.2, permite la comprobación práctica del funcionamiento del diseño, obteniendo
resultados satisfactorios que se corresponden con los esperados vistos previamente en la
simulación.

55
CAPÍTULO III. MEDIDOR DE PERÍODO

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:

Figura III.1 Diagrama en bloques del medidor de período digital.

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:

Figura III.2 Diagrama de tiempos.


Luego actúa exactamente igual al frecuencímetro, el valor que toma el contador al finalizar el
tiempo de conteo, se carga en el latch (señal Z) y se ponen a cero los contadores (señal W). El
valor que se carga en el latch se visualiza en los displays a través de un decodificador BCD a siete
segmentos con el cual se pueden excitar los displays de siete segmentos para la correcta
representación del período medido.

57
CAPÍTULO III. MEDIDOR DE PERÍODO

III.3 Implementación en FPGA.


Para este caso, el medidor de período que se implementará, en principio debe cumplir las
siguientes especificaciones:
• Entradas de medición compatibles con TTL.
• Rango: 1us a 1000s.
Al igual que para el frecuencímetro, se medirán señales TTL (0 - 5V) en forma de onda cuadrada.
La arquitectura que se utiliza es la misma que para el medidor de frecuencia, sólo que se
reemplaza el generador de la base de tiempos, por un generador de señales de pulsos con
períodos definidos. Este generador, que se llamará generador de pulsos, proveerá cuatro señales
con distintos períodos, las cuales serán seleccionadas por líneas exteriores.
La figura III.3 representa un diagrama en bloques de este sistema.
Al igual que para el frecuencímetro, se utiliza un oscilador externo (de 1MHz), pero en este caso es
para la generación de los pulsos de período definido. Cabe mencionar nuevamente que aquí la
base de tiempos es generada a partir de la señal a medir, tal como se ve en la figura III.2.
III.3.1 Bloque Generador de pulsos.
El bloque generador de pulsos debe generar cuatro señales de distintos períodos definidos de
acuerdo a las entradas externas de selección. Esta selección se realizará, al igual que para el
medidor de frecuencia, mediante las líneas sel [1..0] de modo que:
Tabla III.1 Pulsos de períodos definidos.

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

Figura III.3 Diagrama en bloques del medidor de período en FPGA.


En la figura III.4 se representa la implementación en el Quartus II del bloque generador de pulsos.
Finalmente y al igual que para medición de frecuencia, se debe generar el contador cuyas salidas
selec_encoding [2..0] comandan la selección de los bloques multiplexor y decodificador (mult y
dec). Para esto se hizo lo mismo que para el frecuencímetro.
Por último se va a verificar (realizando una simulación temporal) la correcta generación de la señal
pulsos para distintos valores de las entradas sel [1..0].

59
CAPÍTULO III. MEDIDOR DE PERÍODO

Figura III.4 Bloque generador de pulsos.


• Para sel [1..0] = “00” = 0 => Tpulsos = 1us

Figura III.5 Simulación en el editor de formas de onda.


• Para sel [1..0] = “01” = 1 => Tpulsos = 10us

Figura III.6 Simulación en el editor de formas de onda.

60
CAPÍTULO III. MEDIDOR DE PERÍODO

• Para sel [1..0] = “10” = 2 => Tpulsos = 100us

Figura III.7 Simulación en el editor de formas de onda.


• Para sel [1..0] = “11” = 3 => Tpulsos = 1000us =1ms

Figura III.8 Simulación en el editor de formas de onda.


Como se puede observar en las cuatro figuras anteriores los resultados de la señal pulsos se
verifican satisfactoriamente para todos los casos de la selección sel [1..0].
III.3.2 Bloque Divisor.
El bloque divisor se encarga de generar la base de tiempos a partir de la señal a medir.
Simplemente consta de un divisor de frecuencia por dos el cual se implementa por medio de un
biestable como se muestra en la figura III.9 el cual se llamará divisor.

Figura III.9 Bloque divisor.

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

Tabla III.2 Ubicación del punto.

Figura III.10 Bloque ubica _ punto.


III.3.4 Bloques que faltan.
Debido a que el medidor de período sigue los mismos principios del medidor de frecuencia, o sea,
los contadores cuentan una dada cantidad de pulsos en un tiempo de conteo y luego mediante los
latchs, el multiplexor (mult), el decodificador BCD siete segmentos y el decodificador (dec), se
representan sus valores en los displays, estos bloques son iguales a los del frecuencímetro, salvo
que la entrada de reloj de los contadores ahora no es más la señal a medir, sino los pulsos
generados por el bloque generador de pulsos.
III.4 Comprobación de los resultados.
Después de todo el trabajo anterior se pasó a la comprobación de los resultados. Se comenzó con
una comprobación final en el software Quartus II de las tres salidas que manejan los displays siete
segmentos (bcd[6..0], s[5..0], dp[5..0]), igual que en el capítulo anterior. En la figura III.11 se
observa una simulación temporal de estas salidas, donde se tomó el caso de una señal de entrada
de 0.5KHz (2ms), un oscilador externo de 1MHz y una selección sel[1..0] = “10”.
Aquí se puede observar como la señal s[5..0] que es la salida del decodificador, varia
correctamente. La señal dp[5..0] con la selección “10” coloca en “0” el segundo bit como se desea

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.

Figura III.11 Comprobación final.


Para la comprobación práctica de este medidor de período se utilizó también 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 2ms de período.
Se tomó el caso de la señal de pulsos con período de 100us (sel [1..0] = “10” = 2) y se obtuvo el
resultado de la figura III.12.

Figura III.12 Comprobación final.


III.4.1 Errores de medición.
Para rangos de medición calculados en los puntos anteriores, no fueron tomados en cuenta los
errores del medidor, los cuales pueden ser provocados por dos situaciones:

65
CAPÍTULO III. MEDIDOR DE PERÍODO

• Error de la señal de período definido:


Este error está dado pura y exclusivamente por la inestabilidad del oscilador externo de 1MHz.
• Error en el número de pulsos contados:
Es el error del medidor implementado en el Quartus II, ya que, los contadores cuentan dentro de un
determinado tiempo de conteo (el cual está dado por la división por dos de la frecuencia de la señal
a medir) una cantidad de pulsos (que son los provistos por el generador de pulsos).
Como se puede intuir, estas dos señales en la gran mayoría de los casos no son sincrónicas, ya que
una es generada por el oscilador de 1MHz y la otra a partir de una señal no conocida a medir, y es
muy difícil que ambas estén en sincronismo.
Es por esto que en el peor de los casos los contadores cuenten un pulso de más o bien uno de
menos, con lo cual el error es de ± el dígito menos significativo de los displays.
III.5 Conclusiones parciales del capítulo.
Atendiendo a los temas tratados a lo largo de este capítulo a continuación se muestran las
siguientes conclusiones que se derivan de los mismos:
1. 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.
2. La implementación con elementos de hardware del medidor de período realizado en el
Quartus II 4.2, permite la comprobación práctica del funcionamiento del diseño, obteniendo
resultados satisfactorios que se corresponden con los esperados, vistos previamente en la
simulación.

66
CONCLUSIONES

CONCLUSIONES

La realización de esta investigación cuyo objeto de estudio es el relacionado con el desarrollo de


diseño de sistemas electrónicos digitales típicos, ha permitido responder la interrogante fundamental
y el cumplimiento del objetivo general de la misma, permitiendo plantear las conclusiones generales
siguientes:

1. Del resultado de la realización de un estudio sobre el proceso de diseño electrónico digital


concluimos, que este siempre ha estado enfocado a resolver un problema de la práctica
utilizando los conocimientos, los métodos, los componentes y sistemas digitales. Además se
caracteriza por 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. Además de un proceso tecnológico,
esta actividad es el modo de actuación de los especialistas de la electrónica y constituye por
tanto, una habilidad profesional compleja.

2. La utilización del software Quartus II de Altera permite obtener resultados satisfactorios en


la implementación de aplicaciones electrónico-digitales para la realización de mediciones
electrónicas utilizando para estos fines una FPGA.
3. Al elaborar en el software Quartus II aplicaciones de mediciones electrónicas de período y
frecuencia con su posterior implementación sobre un hardware que incluye el uso de un
FPGA, se demostró la importancia de la integración de las herramientas de software y los
recursos de hardware en la formación de conocimientos. De forma tal que se justifique la
propuesta del uso de esta tecnología como recurso tecnológico-docente.

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

10. DRAE, (2000). Diccionario de la Real Academia Española. Versión Digital.


11. FPGA (2006). Consultado el 28 de marzo de 2007, en http://es.wikipedia.org/wiki/FPGA.
12. Klingberg, L. (1980). Introducción a la Didáctica General. Editorial Pueblo y Educación. La
Habana. 1980.
13. Labarrere, A. Pensamiento, análisis y autorregulación de la actividad cognoscitiva de los
alumnos. Editorial Pueblo y Educación. Ciudad de la Habana. 1996.
14. Leyva, J. (2002). La estructura del método de solución de tareas experimentales de Física como
invariante del contenido. Tesis Doctoral. Instituto Superior Pedagógico “Félix Varela”. Villaclara.
15. Llivina, M. y otros. (2000). Un sistema básico de competencias matemáticas. Centro de Estudios
Educacionales. Instituto Superior Pedagógico “Enrique José Varona”. Ciudad Habana.
16. Mandado, E., Valdés, M., Álvarez, J. (2002). Dispositivos Lógicos Programables y sus
aplicaciones. Ed. Thomson. España. 2002.
17. Pollán, T. (2003). Electrónica Digital. I. Sistemas Combinacionales. Prensas Universitarias de
Zaragoza. Colección Textos Docentes nº 97. Universidad de Zaragoza. 2003.
18. Rivero, H. (2002). Un modelo para el tratamiento didáctico integral de las tareas teóricas de
Física y su solución. Tesis Doctoral. Instituto Superior Pedagógico “Félix Varela”. Villaclara.
19. Rizo, C., Campistrous, L. (1998). Didáctica y Solución de Problemas. Material en formato digital.
descargado del sitio web del ICCP.
20. Sagahyroon, Assim A. (2000). From AHPL to VHDL: A Course in Hardware Description
Languages. IEEE Transactions on Education. VOL 43. NO. 4, November 2000.
21. “Síntesis y Descripción de Circuitos Digitales Utilizando VHDL”. Francisco Javier Torres Valle.
Capítulo II, Dispositivos Lógicos Programables.
22. Wakerly, J. (2000). Digital Design. Principles and Practices. Prentice Hall. New Jersey. 2000.

70
ANEXOS

ANEXOS

Anexo I MEDIDOR DE FRECUENCIA.

Anexo I.1 Descripción en lenguaje VHDL del bloque div.

LIBRARY ieee;

USE ieee.std_logic_1164.all;

-- Entity Declaration

ENTITY div IS

-- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE!

PORT

osc: IN STD_LOGIC;

ms: OUT STD_LOGIC

);

-- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE!

END div;

-- Architecture Body

ARCHITECTURE div_architecture OF div IS

BEGIN

process (osc)

71
ANEXOS

variable c: integer;

begin

if osc='1' and osc 'event then

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.

Anexo I.2 Descripción en lenguaje VHDL del bloque BaseT.

LIBRARY ieee;

USE ieee.std_logic_1164.all;

-- Entity Declaration

ENTITY BaseT IS

-- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE!

PORT

72
ANEXOS

ms : IN STD_LOGIC;

sel : IN STD_LOGIC_VECTOR(1 downto 0);

baseT : OUT STD_LOGIC

);

-- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE!

END BaseT;

-- Architecture Body

ARCHITECTURE BaseT_architecture OF BaseT IS

BEGIN

process(ms)

variable c: integer;

begin

if ms='0' and ms 'event then

c := c+1;

case sel is

when "00" =>

if c < 10001 then

baseT <= '1';

else

baseT <= '0';

c := 0;

end if;

when "01" =>

if c < 1001 then

73
ANEXOS

baseT <= '1';

else

baseT <= '0';

c := 0;

end if;

when "10" =>

if c < 101 then

baseT <= '1';

else

baseT <= '0';

c := 0;

end if;

when "11" =>

if c < 11 then

baseT <= '1';

else

baseT <= '0';

c := 0;

end if;

when others => null;

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.

Anexo I.3 Descripción en lenguaje VHDL del bloque latchs.

LIBRARY ieee;

USE ieee.std_logic_1164.all;

-- Entity Declaration

ENTITY latchs IS

-- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE!

PORT

b : IN STD_LOGIC_VECTOR(3 downto 0);

c : IN STD_LOGIC_VECTOR(3 downto 0);

d : IN STD_LOGIC_VECTOR(3 downto 0);

e : IN STD_LOGIC_VECTOR(3 downto 0);

f : IN STD_LOGIC_VECTOR(3 downto 0);

g : IN STD_LOGIC_VECTOR(3 downto 0);

z : IN STD_LOGIC;

j : OUT STD_LOGIC_VECTOR(3 downto 0);

k : OUT STD_LOGIC_VECTOR(3 downto 0);

l : OUT STD_LOGIC_VECTOR(3 downto 0);

m : OUT STD_LOGIC_VECTOR(3 downto 0);

n : OUT STD_LOGIC_VECTOR(3 downto 0);

75
ANEXOS

o : OUT STD_LOGIC_VECTOR(3 downto 0)

);

-- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE!

END latchs;

-- Architecture Body

ARCHITECTURE latchs_architecture OF latchs IS

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.

Anexo I.4 Descripción en lenguaje VHDL del bloque mult.

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

when others => null;


end case;
end process;
p <= sy;
END mult_architecture;
El objetivo de este programa es el de multiplexar los valores que vienen del bloque latchs de acuerdo
con la selección selec_encoding[2..0] realizada.

Anexo I.5 Descripción en lenguaje VHDL del bloque dec.

LIBRARY ieee;

USE ieee.std_logic_1164.all;

-- Entity Declaration

ENTITY dec IS

-- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE!

PORT

selec_encoding : IN STD_LOGIC_VECTOR(2 downto 0);

s : OUT STD_LOGIC_VECTOR(5 downto 0)

);

-- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE!

END dec;

-- Architecture Body

ARCHITECTURE dec_architecture OF dec IS

signal sa : std_logic_vector(5 downto 0);

BEGIN

process (selec_encoding)

begin

78
ANEXOS

case selec_encoding is

when "001" => sa <= "000001" ;

when "010" => sa <= "000010" ;

when "011" => sa <= "000100" ;

when "100" => sa <= "001000" ;

when "101" => sa <= "010000" ;

when "110" => sa <= "100000" ;

when "111" => sa <= "000000" ;

when "000" => sa <= "000000" ;

when others => null;

end case;

end process;

s <=sa;

END dec_architecture;

El objetivo de este programa es el de un decodificador y como selección está selec_encoding[2..0].

Anexo I.6 Descripción en lenguaje VHDL del bloque ubica _ punto.

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].

Anexo II MEDIDOR DE PERÍODO

Anexo II.1 Descripción en lenguaje VHDL del bloque div.

LIBRARY ieee;

USE ieee.std_logic_1164.all;

-- Entity Declaration

ENTITY div IS

-- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE!

PORT

80
ANEXOS

osc : IN STD_LOGIC;

b : OUT STD_LOGIC;

a : OUT STD_LOGIC;

d : OUT STD_LOGIC

);

-- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE!

END div;

-- Architecture Body

ARCHITECTURE div_architecture OF div IS

BEGIN

process (osc)

variable dd , bb , aa : integer;

begin

if osc='1' and osc 'event then

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.

Anexo II.2 Descripción en lenguaje VHDL del bloque ubica _ punto.

LIBRARY ieee;

USE ieee.std_logic_1164.all;

-- Entity Declaration

ENTITY ubica_punto IS

-- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE!

PORT

82
ANEXOS

sel : IN STD_LOGIC_VECTOR(1 downto 0);

dp : OUT STD_LOGIC_VECTOR(5 downto 0)

);

-- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE!

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 <= "110111";

when "01" => sx <= "111011";

when "10" => sx <= "111101";

when "11" => sx <= "111110";

when others => null;

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

Anexo III Diagrama del medidor de frecuencia representado en el QUARTUS II.

84
ANEXOS

Anexo IV Diagrama del medidor de período representado en el QUARTUS II.

85
ANEXOS

Anexo V Puesto de trabajo.

86

También podría gustarte