UNIDAD IV

LENGUAJES HDL


Un lenguaje de descripción de hardware (HDL, hardware description language) es un lenguaje de programación especializado que se utiliza para definir la estructura, diseño y operación de circuitos electrónicos, y más comúnmente, de circuitos electrónicos digitales, como el convertidor analógico-digital o cualquier antena satelital. Así, los lenguajes de descripción de hardware hacen posible una descripción formal de un circuito electrónico, y posibilitan su análisis automático y su simulación.
Entre otras ventajas, se pueden mencionar las siguientes:
1. EL programa HDL es el mismo así cambie la tecnología, Ejemplo: FPGA, transistores 2.5m ., 1.2 m .
2. Facilita la comunicación entre los diseñadores.
3. Facilita el uso de las partes de un diseño en otros (Reutilización).
4. Es posible verificar el funcionamiento del sistema dentro del proceso de diseño sin necesidad de implementar el circuito.
5. Las simulaciones del diseño, antes de que este sea implementado, permiten probar la arquitectura del sistema para tomar decisiones en cuanto a cambios en el diseño.
6. Las herramientas de síntesis tienen la capacidad de convertir una descripción hecha en un HDL, VHDL por ejemplo, a compuertas lógicas y además, optimizar dicha descripción de acuerdo a la tecnología utilizada.
7. Las descripciones en un HDL proporcionan documentación de la funcionalidad de un diseño independientemente de la tecnología utilizada.
8. Una descripción realizada en un HDL es más fácil de leer y comprender que los nestlist o circuitos esquemáticos.
9. Un circuito hecho mediante una descripción en un HDL puede ser utilizado en cualquier tipo de dispositivo programable capaz de soportar la densidad del diseño. Es decir, no es necesario adecuar el circuito a cada dispositivo porque las herramientas de síntesis se encargan de ello.
Los lenguajes HDL permiten realizar el primer paso de la metodología del diseño descendente. Se describen en un lenguaje de alto nivel el comportamiento requerido del circuito a diseñar. Esta descripción se puede hacer mediante tablas de verdad, lista de transiciones de estados, ecuaciones lógicas. Con base a la descripción, el programa realiza los siguientes pasos:
1. Sintetiza y simplifica las ecuaciones lógicas.
2. Simula las ecuaciones.
3. Sintetiza el circuito lógico.
4. Simula el circuito lógico.
5. Sintetiza el archivo para programar un PLD.

4.1 Dispositivos lógicos programables

Un Dispositivo Lógico Programable (PLD) es un componente electrónico usado para construir circuitos digitales reconfigurables. A diferencia de una compuerta lógica que tiene una función fija, los PLDs salen de fábrica sin una función en específico, por lo tanto, necesitan ser programados o reconfigurados antes de poder ser usados. Los PLDs tienen varias ventajas. La primera es la habilidad de integración, que permite integrar una gran cantidad de funcionalidad en un solo chip. Los PLDs eliminan el uso de múltiples chips, así como la inconveniencia y desconfianza de usar cableado externo. La segunda ventaja es el hecho de poder cambiar el diseño. Muchos PLDs permiten ser reprogramados o reconfigurados. Existen dos ramas principales dentro de los dispositivos lógicos programables, la lógica programable de campo y la de fábrica. El término campo en este contexto implica que los dispositivos puedan ser programados en el “campo” del usuario, mientras que la lógica de fábrica puede ser programada en la misma fábrica donde se construyen, de acuerdo con los requerimientos del cliente. En este caso, la tecnología de programación usa procesos irreversibles, por lo que solo es posible hacerlo una vez.
Algunos ejemplos de lógica programable de fábrica son los MPGAs y memorias de sólo lectura (ROMs). Las primeras generaciones de muchos dispositivos programables también fueron programadas únicamente en fábrica. Las ROMs son consideradas como lógica programable porque, aunque fueron concebidas como unidades de memoria, también sirven para implementar cualquier circuitería combinacional. Los MPGAs son arreglos de compuertas tradicionales que requieren una máscara para ser diseñados. Los MPGAs son también llamados simplemente gate arrays y han sido la tecnología popular para crear ASICs (Application Specific Integrated Circuits). La lógica programable por el usuario basada en compuertas AND y OR fue desarrollada al inicio de la década de los ‘70s. Para 1972-73 ya estaban disponibles arreglos lógicos programables una sola vez que permitían personalizaciones instantáneas para diseñadores. Algunos se refieren a estos circuitos como FPLAs (Field Programmable Logic Arrays).
Los primeros dispositivos programables permitían ser programados una sola vez. El siguiente avance tecnológico fue el poder borrar los dispositivos, lo cual al inicio se hacía por medio de luz ultravioleta, que significaba remover el dispositivo del circuito para ponerlo en un ambiente ultravioleta. Este proceso era lento (de 10 a 15 minutos) y no permitía borrar la información en el circuito. El siguiente avance fue la tecnología de borrado eléctrico, que permitió la creación de dispositivos que se podían borrar rápida y fácilmente, así como ser reprogramados sin necesidad de removerlo del circuito.

4.1.1 Tipos

· Circuitos integrados a medida.
Los Circuitos Integrados a Medida (Full Custom), se diseñan a petición de un cliente para que resuelvan una determinada aplicación. Conllevan un alto coste de desarrollo y su empleo sólo se justifica para volúmenes de producción muy elevados. El tiempo necesario para la construcción de un CI a medida es considerable ya que puede oscilar de unos meses a unos años.
  • Matrices de puertas.
Las Matrices de puertas (Gate Arrays) son pequeños trozos de silicio pendientes de algún proceso de metalización que defina las conexiones entre un importante número de puertas o transistores que poseen en su interior. Las matrices de puertas proporcionan densidades superiores a las 100.000 puertas, con un aprovechamiento del 80 al 90 por 100 para los dispositivos pequeños y del 40 por 100 para los grandes.
Los fabricantes de silicio ponen a disposición de sus potenciales clientes abundante documentación sobre estos Gate Arrays, con una serie de macros que pueden utilizar de forma inmediata y otras que pueden construirse ellos mismos. Los macros son agrupaciones de un número de células básicas que realizan funciones comunes como; sumadores; puertas NOT, AND, NAND, NOR XOR, etc.; latches y flip-flops S-R, J-K, D; buffer; osciladores; registros, decodificadores, multiplexores, etc.
Junto a esta documentación, los fabricantes aportan un software que contabiliza el número de células básicas utilizadas por todas las macros, sugiere el Gate Array adecuado para la aplicación, calcula la potencia disipada por el Gate Array que alojará el diseño del cliente, proporciona información sobre los tiempos de propagación de las señales y permite verificar el funcionamiento del circuito.
Una vez superadas todas las etapas previas, el cliente envía la documentación generada al fabricante para que éste ultime los procesos de metalización y fabrique un primer prototipo. El diseño con Gate Arrays puede durar semanas o meses. Requiere un volumen alto de circuitos para justificar sus costes.
  • Células normalizadas.
Las células normalizadas (Standard Cell) son, en cierta forma, similares a las matrices de puertas. Su principal ventaja sobre ellas es que en lugar de trabajar con simples puertas o transistores, se dispone de colecciones de diferentes partes de circuitos que han sido depurados (puertas lógicas, circuitos MSI, RAM estáticas, ficheros de registro, etcétera). El usuario tiene que ensamblar estos circuitos, verificarlos y finalmente enviar documentación al fabricante de silicio para el desarrollo del primer prototipo. A pesar del concepto de célula normalizada, los períodos y los costes de desarrollo son superiores a los de las matrices de puertas.
En las matrices de puertas sólo hay que realizar la máscara final que define las conexiones entre las puertas, mientras que en las células normalizadas, hay que realizar máscaras para todos los procesos de producción de los CI. Una vez más, el volumen de fabricación deberá ser los suficientemente alto como para amortizar la inversión económica realizada en el desarrollo.
  • FPICs.
Los FPICs (Field Programmable Integrated Circuits): son chips programables por el usuario mediante programadores comerciales. El término FPIC también incluye a los CI no destinados a las aplicaciones lógicas. Son las memorias, los microcontroladores, los PLD (Programmable Logic Device), las FPGA (Field Programmable Gate Array) y los ASPLD (Aplication Specific Programmable Logic Devices).
Los FPIC ofrecen soluciones de bajo coste, de tiempo de desarrollo corto y con menor riesgo que los circuitos a medida, las matrices de puertas y las células normalizadas.
  • PLDs.
Los PLDs (Programmable Logic Devices) son pequeñas ASICs configurables por el usuario capaces de realizar una determinada función lógica. La mayoría de los PLD consisten en una matriz de puertas AND seguida de otra matriz de puertas OR. Mediante esta estructura, puede realizarse cualquier función como suma de términos productos.
Aunque las memorias PROM, EPROM y EEPROM son PLDs, muchas veces se las excluye de esta denominación debido a que su contenido se define utilizando elementos de desarrollo propios de microprocesadores, tales como; ensambladores, emuladores y lenguajes de programación de alto nivel. Otras veces, cuando estas memorias se usan para realizar una función lógica y no para guardar un programa de un microprocesador, se las incluye dentro del término PLD.
  • ASPLDs.
Los ASPLDs (Application Specific Programmable Logic Devices) son PLDs diseñados para realizar funciones específicas como, decodificadores de alta velocidad, secuenciadores, interfaces para buses particulares, periféricos programables para microprocesadores, etc.
Partes del ASPLD son programables permitiendo la adaptación del circuito a una aplicación determinada, pero manteniendo su función básica; así, por ejemplo, un decodificador lo personaliza el usuario, pero sigue siendo un decodificador. Estos circuitos están muy optimizados para la función para la que han sido diseñados. Los decodificadores sólo tienen un término producto, carecen de puertas OR y resultan por consiguiente muy rápidos; por otro lado, los circuitos de interface para buses normalmente tienen un Fan-Out elevado.
  • FPGAs.
Las FPGAs (Field Programmable Gate Arrays) contienen bloques lógicos relativamente independientes entre sí, con una complejidad similar a un PLD de tamaño medio. Estos bloques lógicos pueden interconectarse, mediante conexiones programables, para formar circuitos mayores. Existen FPGAs que utilizan pocos bloques grandes (Pluslogic, Altera y AMD) y otras que utilizan muchos bloques pequeños (Xilinx, AT&T, Plessey, Actel).
A diferencia de los plds, no utilizan arquitectura de matriz de puertas AND seguida de la matriz de puertas OR y necesitan un proceso adicional de ruteado del que se encarga un software especializado.
La primera FPGA la introdujo Xilinx en el año 1985. La programación de las FPGAs de Xilinx basadas en RAM estática es diferente a la programación de los PLDs. Cada vez que se aplica la tensión de alimentación, se reprograma con la información que lee desde una PROM de configuración externa a la FPGA. Una FPGA basada en SRAM (RAM estática) admite un número ilimitado de reprogramaciones sin necesidad de borrados previos.
En general la complejidad de una FPGA es muy superior a la de un PLD. Los PLD tienen entre 100 y 2000 puertas, las FPGAs tienen desde 1200 a 20.000 puertas y la tendencia es hacia un rápido incremento en la densidad de puertas. El número de flip-flops de las FPGA generalmente supera al de los PLD. Sin embargo, la capacidad de la FPGA para realizar lógica con las entradas suele ser inferior a la de los PLD. Por ello: "los diseños que precisan lógica realizada con muchas patillas de entrada y con pocos flip-flops, pueden realizarse fácilmente en unos pocos PLDs, mientras que en los diseños en los que intervienen muchos registros y no se necesita generar combinaciones con un elevado número de entradas, las FPGAs pueden ser la solución óptima".

4.1.2 Características

Los PLDs están situados en una zona intermedia entre los dispositivos a medida y la lógica de catálogo formada por los CI de función fija. Tienen casi todas las ventajas de los ASICs sin estar penalizados por un costo elevado para pequeñas series. Además, el ciclo de diseño con PLDs es mucho más rápido que los de las matrices de puertas o las células normalizadas. En determinadas aplicaciones, un PLD puede sustituir desde unos pocos hasta unas decenas de CI de función fija, mientras que los grandes ASICs pueden sustituir a cientos e incluso miles de CI. En ocasiones, los PLD se utilizan para realizar prototipos que posteriormente se llevarán a un ASIC más complejo.
El trabajo con PLDs proporciona: facilidad de diseño, prestaciones, fiabilidad, economía y seguridad.
  • Facilidad de diseño: Las herramientas de soporte al diseño con PLDs facilitan enormemente este proceso. Las hojas de codificación que se utilizaban en 1975 han dejado paso a los ensambladores y compiladores de lógica programable (PALASM, AMAZE, ABEL, CUPL, OrCAD/PLD, etc.). Estas nuevas herramientas permiten expresar la lógica de los circuitos utilizando formas variadas de entrada tales como; ecuaciones, tablas de verdad, procedimientos para máquinas de estados, esquemas, etc. La simulación digital posibilita la depuración de los diseños antes de la programación de los dispositivos. Todo el equipo de diseño se reduce a un software de bajo coste que corre en un PC, y a un programador.
  • Prestaciones: Los PLDs TTL que hay en el mercado tienen tiempos de conmutación tan rápidos como los circuitos integrados de función fija más veloces. Los PLDs ECL son todavía más rápidos. Sin embargo, el incremento de velocidad obtenido con los dispositivos CMOS, que ya han igualado o superado en prestaciones a los dispositivos TTL, está provocando el abandono de la tecnología bipolar por parte de los fabricantes. En cuanto al consumo de potencia, los PLDs generalmente consumen menos que el conjunto de chips a los que reemplazan.
  • Fiabilidad: Cuanto más complejo es un circuito, más probabilidades hay de que alguna de sus partes falle. Puesto que los PLDs reducen el número de chips en los sistemas, la probabilidad de un fallo disminuye. Los circuitos impresos con menor densidad de CI son más fáciles de construir y más fiables. Las fuentes de ruido también se reducen.
  • Economía: En este apartado, hay aspectos que resultan difíciles de cuantificar. Por ejemplo, los costes de pérdida de mercado por una introducción tardía de un producto. Otros son más claros, por ejemplo, la reducción del área de las placas de circuito impreso obtenida gracias a que cada PLD sustituye a varios circuitos integrados de función fija. Muchas veces se consigue reducir el número de placas de circuito impreso economizándose en conectores. La reducción de artículos en almacén también aporta ventajas económicas.
De la misma manera que para altos volúmenes de producción las memorias ROM resultan de menor coste que las EPROM, las HAL (Hard Array Logic) o PLDs programados por el fabricante proporcionan ahorros adicionales en grandes cantidades.
  • Seguridad: Los PLDs tienen fusibles de seguridad que impiden la lectura de los dispositivos programados, protegiendo los diseños frente a copias. Además de los puntos mencionados, podemos añadir que los PLDs facilitan el ruteado de las placas de circulo impreso debido a la libertad de asignación de patillas que proporcionan. Permiten realizar modificaciones posteriores del diseño y en ocasiones hacen posible la reutilización de circuitos impresos con algunos fallos, mediante una reasignación de los PLDs.

4.1.3 Fabricantes

Altera
Altera Corporation (NASDAQ: ALTR) es un fabricante líder de dispositivos lógicos programables. Es uno de los valores que integran los índices bursátiles NASDAQ-100 y S&P 500.
Altera es uno de los pioneros de la lógica programable, siguiendo líderes notables anteriores como Signetics y MMI en la introducción de PLDs. Altera desarrolla algunas características que están orientadas hacia capacidad de sistemas en chips programables (SOPC). Algunos de los ejemplos más recientes incluyen memoria embebida, procesadores embebidos, y transceptores de alta velocidad. El éxito en lanzamientos de productos de 130nm y 90nm son buenos casos de estudio. Los procesadores soft-core Nios II y Nios de Altera y los dispositivos HardCopy II y HardCopy están extendiendo el alcance de Altera en el mercado, y coloca a esta empresa en el mundo de los procesadores embebidos y ASICs estructuradas respectivamente. Entre sus principales competidores están: Xilinx, Lattice Semiconductor, Actel, Quicklogic y Atmel. Altera e Intel anunciaron el 1 de Junio de 2015 que llegaron a un acuerdo para que Intel adquiera Altera en una transacción en efectivo valuada aproximadamente en U$$16.700 millones pagando U$S 54 por acción.
Altera ofrece también el software Quartus II, dirigido al diseño y simulación de circuitos lógicos. Aunque su software soporta extensivamente VHDL y Verilog como principales lenguajes, Altera es el desarrollador de lenguaje de descripción de hardware conocido como AHDL.
Xilinx
Xilinx, Inc. es una compañía de tecnología americana, primeramente, es un distribuidor de dispositivos lógicos programables. Es reconocida por inventar los FPGA (del inglés Field Programmable Gate Array) y también por ser la primera compañía con modelos de manufactura fabless.
Fundada en Silicon Valley en 1984, su sede está ubicada en San José, California, con oficinas adicionales en Longmont, Colorado; Dublín, Irlanda; Singapur; Hyderabad, India; Beijing, China; Brisbane, Australia y Tokyo, Japón.
Posee las mayores familias de productos de FPGAs, incluyendo las series Virtex (alto rendimiento), Kintex (rango medio), y Artix (bajo costo), y la retirada Spartan (bajo costo). También posee software computacional Xilinx ISE y Vivado Design Suite
La compañía ha ampliado su portafolio de productos desde su fundación. Xilinx vende una amplia gama de FPGA's, CPLD's (del inglés complex programmable logic devices, complejos dispositivos lógicos programables), herramientas de diseño, propiedad intelectual y diseños de referencia. Xilinx también tiene un programa de servicios y formación global.
Virtex
La serie Virtex de FPGAs ha integrado características que incluyen lógica FIFO y ECC, bloques DSP, controladores PCI-Express, bloques Ethernet MAC y transceptores de alta velocidad. Además de la lógica FPGA, la serie Virtex incluye hardware embebido de función fija para las funciones de uso común como multiplicadores, memoria, los transceptores de serie y núcleos de microprocesadores. Estas capacidades se utilizan en aplicaciones de equipo de infraestructura alámbrica e inalámbrica, equipos médicos avanzados, pruebas y mediciones, y la sistemas de defensa.
De los componentes de Virtex más recientemente anunciados, la familia Virtex 7, se basan en un diseño de 28 nm y se divulga que ofrece una mejora del rendimiento del sistema de dos veces a la potencia por 50 por ciento menor cantidad de poder en comparación con la generación anterior de Virtex-6. Además, Virtex-7 duplica el ancho de banda de memoria en comparación con la generación anterior de FPGAs Virtex con 1.866 Mbit/s de memoria de rendimiento de la interfaz y más de dos millones de células lógicas.
Kintex
La familia Kintex-7 es la primera familia de FPGAs de Xilinx de gama media que, según la compañía, entrega el rendimiento de la familia Virtex-6 a menos de la mitad del precio, mientras que consume 50 por ciento menos energía. La familia incluye Kintex de alto rendimiento con 12.5 Gbit/s, o de menor costo optimizado con 6.5 Gbit/s de conectividad serial, la memoria lógica y el rendimiento necesarios para aplicaciones como alto volumen 10G de equipos de comunicación por cable óptico, y proporcionan un equilibrio de rendimiento de procesamiento de la señal, el consumo de energía y el costo para apoyar el despliegue de redes inalámbricas Long Term Evolution (LTE).
Artix
La familia Artix-7 ofrece una potencia 50% más baja y 35% más barata en comparación con la familia Spartan-6, y se basa en la arquitectura unificada de la serie Virtex. Xilinx afirma que los FPGAs de Artix-7 ofrecen el rendimiento necesario para abordar, mercados de gran volumen, sensibles a los costes previamente atendidos por ASSPs, ASICs y FPGAs de bajo costo. La familia Artix está diseñada para atender las necesidades de factor pequeño y de rendimiento de bajo consumo de energía de los equipos de baterías portátiles de ultrasonido, control de lente de la cámara digital comercial, aviónica militar y equipo de comunicaciones.
Lattice Semiconductor
Lattice Semiconductor Corporation es un fabricante con sede en los Estados Unidos de dispositivos lógicos programables de alto rendimiento (FPGAs, CPLDs, y SPLDs ). Fundada en 1983, la compañía emplea a unas 700 personas y tiene una facturación anual de alrededor de $300 millones, con Darin Billerbeck como director ejecutivo. La compañía con sede en Oregon es la tercera empresa clasificada en la cuota de mercado mundial de los dispositivos FPGAs y el número dos de CPLDs y SPLDs. la compañía se hizo pública en 1989 y cotiza en la bolsa de valores NASDAQ bajo el símbolo LSCC.
EasyPath
Como los dispositivos EasyPath son idénticos a las FPGAs que los clientes ya están utilizando, las piezas se pueden producir más rápido y son más fiables desde el momento en que se ordenan en comparación con programas similares de la competencia.
Un tiempo de 12 semanas está garantizado desde la recepción del diseño a la producción en masa, y ningún rediseño o recalificación son requeridos por el cliente. Además, los clientes tienen la libertad de cambiar la producción de la FPGA EasyPath no programable a la FPGA programable original Virtex, si la necesidad de cambios en el diseño surge.

4.1.4 Pasos para el diseño con PLD’S

Para poder atacar un problema complejo (sistema) la mejor manera que tenemos es dividirlo. De esta manera se pueden atacar problemas de menor complejidad y más fáciles de analizar. Este es el camino que generalmente usamos para diseñar un sistema digital. Las decisiones que se tomen al principio para dividir el problema pueden afectar el resultado final. En algunos casos debemos volver al principio y replantear la arquitectura después de haber resuelto el problema. La experiencia y conocimientos sobre el problema, las posibles soluciones y las tecnologías disponibles ayudarán a que la decisión que se tome sea la más acertada. Este proceso se esquematiza.
Esquema del proceso de diseño de un sistema complejo
Un sistema puede estar compuesto por varios subsistemas, no todos ellos digitales o electrónicos. La primera decisión será entonces que partes del sistema se implementarán como subsistemas digitales. En el sistema digital, los siguientes pasos se siguen en cada nivel de la jerarquía del diseño, cada vez con mayor nivel de detalle.
La especificación es muy importante pare definir bien los límites de lo que se quiere fabricar. A partir de la especificación se puede definir una arquitectura con los diferentes componentes que implementan cada función del sistema. Para el diseño se debe definir el funcionamiento de cada uno de esos componentes.
Un sistema digital y sus componentes pueden definirse a distintos niveles de abstracción y en tres dominios diferentes: Comportamiento, estructural y físico. En la Figura 47 se muestra el diagrama "Y" de Gajski y Kahn que representa los niveles de abstracción y dominios para un circuito.
Diagrama de Gajski - Kahn
  • Dominio Comportamiento: Describe lo que hace un sistema (funcionamiento)
  • Nivel Algoritmo: Describe el comportamiento del sistema como operaciones sobre las entradas para producir las salidas deseadas sin detallar los cambios en el tiempo ni las señales internas.
  • Nivel RTL: Describe el comportamiento de todas las señales (entradas, internas y salidas) en el tiempo (para cada ciclo de reloj en sistemas sincrónicos)
  • Dominio Estructural: Describe al sistema como una interconexión de componentes (esquemático)
  • Nivel P-M-S (Processor Memory Switch): Describe la estructura como la interconexión de elementos de procesamiento, memoria e interconexión, sin mayores detalles de implementación.
  • Nivel Registros: Describe la estructura como la interconexión de registros y lógica de interconexión.
  • Dominio Físico: Describe la implementación física del sistema (plano).
Para lograr tiempo más rápidos de diseño, menos errores, y mayor productividad, lo ideal sería poder trabajar al máximo nivel de abstracción posible (algoritmos), sin entrar en los detalles de bajo nivel. Desafortunadamente, esto no es siempre posible con la tecnología existente (pero esta cambia permanentemente). El nivel de abstracción dependerá entonces de la aplicación y restricciones sobre el diseño. Si se debe diseñar un integrado full-custom analógico es probable que se trabaje al nivel de ecuaciones diferenciales, al nivel de transistores y haciendo el layout manual. Si se diseña un integrado digital con bloques predefinidos (IP, Cores) y adquiridos a terceros se trabajará a un nivel de abstracción mucho mayor (floorplanning, RTL). En el ciclo de diseño con FPGAs, gran parte del aspecto físico ha sido solucionado por el fabricante. En general se trabaja al nivel de transferencia de registros con algunas herramientas que ayudan a diseñar a niveles de algoritmo.
Descripción del diseño paso a paso desde el circuito hasta la implementación.
Las grandes capacidades de los PLDs y herramientas de diseño disponibles permiten que los diseños implementados sobre FPGAs sean cada vez más complejos. En muchos casos varias personas pueden estar trabajando sobre el mismo producto, incluso en localidades separadas. Para poder atacar el problema del diseño de sistemas digitales complejos (ya sea para desarrollos sobre FPGAs, ASICs o PCBs) es importante tener una metodología de trabajo que permita planificar y ordenar el trabajo.
En la siguiente Figura se muestra un esquema de un método que permite ordenar el trabajo de diseño. Según su autor, la "Metodología Universal de Diseño" define pasos que permiten: Especificación - Arquitectura - Diseño lógico - Layout (disposición y conexionado).
Metodología Universal de Diseño
Especificación y Diseño
Una especificación permite que todas las personas involucradas en un proyecto comprendan cual es el dispositivo que se va a desarrollar.
Las especificaciones deberían describir la solución de manera de cumplir con los requerimientos que se piden para el dispositivo. Al haber una especificación formal, las bases sobre las que trabajar en un diseño quedan preestablecidas y se minimizan los errores por diferencias de apreciación o entendimiento entre los participantes.
Una especificación debería comprender los siguientes puntos:
· Diagrama en bloques del sistema externo, que muestra cómo y dónde encaja el dispositivo dentro del sistema completo.
· Diagrama en bloques interno que muestra los principales bloques funcionales.
· Descripción de las entradas/salidas, incluyendo interfaces lógicas, eléctricas y protocolos de comunicación.
· Estimaciones de tiempos que se deben cumplir, incluyendo tiempos de "setup" y "hold" para las entradas/salidas y frecuencias de reloj.
· Estimación de la complejidad y/o magnitud del dispositivo, dado en número de compuertas equivalentes o número de circuitos integrados necesarios.
· Especificación física del dispositivo. Tamaño, empaquetamiento, conectores, etc.
· Estimación del consumo de potencia del dispositivo.
  • Precio estimado del dispositivo.
· Procedimientos de verificación y validación para el dispositivo.
La especificación también incluye la metodología de verificación del dispositivo. Estas muchas veces se dejan para el final del proyecto y no se definen ni llevan a cabo de manera adecuada.
La especificación es un documento activo, que se modifica de acuerdo en los cambios de requerimientos y a medida que se tiene más información sobre el proyecto.
Una vez que se escribe la especificación se puede utilizar para seleccionar componentes y tecnologías que se utilizarán para el proyecto. El diseño deberá hacerse siguiendo métodos aceptados y confiables. El proceso de diseño es en general un ciclo, e incluye varios pasos intermedios.
Verificación
La verificación engloba varios pasos menores, y al revisar pueden surgir cosas que obligan a volver atrás hacia pasos anteriores. Dependiendo del dispositivo y tecnología utilizada, pero en general sigue los siguientes pasos:
  • Simulación: es en general un proceso continuo, ya que al simular se pueden encontrar problemas que hacen volver sobre el diseño y hacer cambios. Las simulaciones se hacen sobre pequeñas partes del sistema y sobre el sistema completo. Se debe llevar a cabo una simulación funcional, pero también puede incluir simulaciones de temporizado, consumo de potencia y otros parámetros.
  • Revisión: En este paso se revisan los resultados de la simulación y se analiza el comportamiento del dispositivo. Es importante que participen ingenieros externos al proyecto y personas que conozcan el sistema en su totalidad.
  • Implementación Física: Una vez que se ha aceptado el diseño se lleva a cabo la implementación física final del dispositivo.
  • Verificación Formal: En este paso se verifica la implementación física para asegurarse que su funcionamiento coincide con las simulaciones hechas anteriormente. En este paso se deben también evaluar los tiempos, consumo de potencia y cualquier otro parámetro de importancia.
Pasos Finales
Si todos los pasos se siguieron correctamente la revisión final debería ser solo una formalidad. Se verifica que el dispositivo está listo para ser entregado o integrado al sistema.
La integración y verificación en el contexto del sistema general es muy importante. Si los pasos se siguieron correctamente, cualquier modificación que surja de esta integración será en general pequeña y no requerirá grandes cambios.
Cualquier problema o falla que se encuentre debe ser documentarse y analizada para poder corregirla en una próxima versión del dispositivo y evitarla en el futuro.
Diseño Digital Utilizando Lenguajes de Descripción de Hardware
Los lenguajes de descripción de hardware (HDLs) permiten modelar sistemas digitales completos. Mediante diferentes herramientas de software estos modelos pueden luego sintetizarse para implementarlos como circuitos reales. La utilización de HDLs para sintetizar sistemas digitales y la utilización de PLDs permiten crear prototipos funcionales en plazos relativamente cortos. Esto hace que todo el proceso de desarrollo de un sistema digital sea mucho más simple y rápido en comparación con metodologías clásicas (desarrollo con discretos sobre PCBs o el diseño de circuitos integrados).
Los modelos de hardware usando HDLs pueden ser estructurales, de comportamiento o una mezcla de estos dos. A nivel estructural se describe la interconexión y jerarquía entre componentes. A nivel de comportamiento de hardware se describe la respuesta entrada/salida de un componente. El comportamiento de un sistema puede modelarse a distintos niveles de abstracción o detalle: algoritmos y comportamiento general, nivel de transferencia de registros, nivel de compuertas, etc. El tipo de modelo más usado para síntesis es el denominado RTL (Register Transfer Level), o de nivel de transferencia de registros. Existen herramientas que permiten sintetizar circuitos a partir de modelos de abstracción más elevados, pero en general lo hacen llevando el diseño a un nivel de descripción como RTL antes de sintetizarlo.
La utilización de HDLs para síntesis puede tener como objetivo la creación de un circuito integrado de propósito específico (ASIC) o la implementación del circuito en alguna lógica programable (PLD). Independientemente del objetivo, no todas las construcciones posibles de los lenguajes de descripción de hardware pueden sintetizarse y transformarse en circuitos. Esto puede deberse a las limitaciones de las herramientas utilizadas o a que el circuito descrito por el modelo VHDL no puede implementarse físicamente. En general el diseñador debe seguir ciertas pautas de modelado, que dependerán de su objetivo y de las herramientas que utiliza, para que el modelo pueda sintetizarse. Esto es aún más importante para lograr implementaciones óptimas sobre la arquitectura para la que se está diseñando el circuito.
Flujo de Diseño para Lógicas Programables
Cuando se diseña con lógicas programables, cualquiera sea el método usado para diseñar el circuito (HDLs, esquemáticos, etc.), el proceso desde la definición del circuito por el desarrollador hasta tenerlo funcionando sobre un PLD implica varios pasos intermedios y en general utiliza una variedad de herramientas. A este proceso se lo denomina ciclo o flujo de diseño.
Flujo de Diseño (Design Flow)
Durante el proceso de creación de un sistema digital desde el código fuente (esquemáticos, VHDL, etc.) a la implementación en un PLD hay varios pasos intermedios. Para cada uno de estos pasos se utilizan herramientas de software diferentes que pueden o no estar integradas bajo un ambiente de desarrollo. En muchos casos las herramientas utilizadas en cada paso del diseño son provistas por diferentes empresas. La siguiente figura muestra el ciclo de diseño típico para lógicas programables. Dependiendo de las herramientas utilizadas, este ciclo puede tener variaciones o las tareas llamarse con otros nombres.
A continuación, se describe cada uno de los pasos del ciclo de diseño. Se agrega su denominación en inglés entre paréntesis, ya que estos son los términos que se encontrarán en las herramientas de desarrollo.
Figura, Flujo de diseño para lógicas programables.
Descripción del Diseño : este es el paso en el que se describe el diseño, muchas veces usando un lenguaje de descripción de hardware como el VHDL. Muchas herramientas permiten ingresar el diseño no solo como HDLs sino también como un diagrama esquemático o estructural, una representación gráfica de una máquina de estados o una tabla de entrada-salida. Estas herramientas simplifican en gran medida el diseño y simplifican mucho la tarea del diseñador. El código HDL puede ingresarse utilizando cualquier editor de texto, pero se recomienda uno que tenga coloreado automático de sintaxis ("syntax highlighting") ya que ayuda y hace más fácil esta etapa.
Generación o Traducción (Generate, Translate): Este paso tiene sentido cuando el diseño se hace mediante algunas de los métodos mencionados anteriormente en vez de en VHDL. En este paso se traducen todos los módulos a VHDL. Para los módulos ingresados como VHDL, las herramientas generalmente hacen una copia a una librería interna. En esta etapa se hace un análisis del VHDL para verificar la sintaxis y semántica de los módulos. También se hace una elaboración de los archivos, que consiste en replicar los componentes que se utilizan más de una vez en el diseño para hacer copias únicas y definir un conexionado adecuado.
Compilado (Compile): Los simuladores actuales compilan el código VHDL a un formato que permite una simulación más rápida y eficaz. Esto se hace en este paso.
Simulación y verificación: En este paso se simula el comportamiento del diseño y se evalúa su comportamiento. La simulación puede hacerse en tres etapas diferentes del diseño. La primera es sobre el código VHDL original para verificar el correcto funcionamiento del diseño. La segunda es después de sintetizar el circuito, y se simulan la implementación real sobre el PLD, ya sea con o sin la anotación de tiempos. La tercera etapa en la cual se puede simular el diseño es después de la Ubicación e Interconexión. Esta es la más exacta y la más engorrosa y lenta, ya que incluye la información final lógica y temporal el diseño sobre el PLD.
Síntesis (Synthesis): En este paso se traduce el VHDL original a su implementación con lógica digital, utilizando los componentes específicos del PLD que va a utilizarse. Esta traducción puede llegar hasta el nivel más básico de elementos lógicos (CLBs, LUTs, FFs) o hasta un nivel superior, en el que el diseño se presenta en módulos básicos estándar provistos en una librería por el proveedor del PLD.
Ubicación e Interconexión (Place and Route): El PLD está compuesto por muchos bloques idénticos, como se presentó en las secciones anteriores. En este paso, cada componente del diseño sintetizado se ubica dentro del PLD específico. También se interconectan los componentes entre sí y con los pines de entrada-salida.
Tareas Adicionales: Las tareas adicionales dependen del fabricante y las herramientas. Puede definirse la interconexión de las con los pines físicos del PLD ingresar condiciones de entorno físico para guiar a la herramienta de Ubicación e Interconexión, seleccionar áreas del PLD para ubicar los bloques lógicos, etc.
Anotación de Retardos: Como en todo circuito digital, las señales tendrán un retardo de propagación que influirá sobre su comportamiento. Con estos retardos puede anotarse el diseño compilado para una simulación que incluya información de temporizado más cercana a la implementación real. Una vez sintetizado el diseño, puede hacerse una estimación de los retardos de propagación que habrá entre las señales. Después de la ubicación e interconexión, el cálculo de retardos es mucho más exacto.
Generación de Binarios: Después de la Ubicación e Interconexión se genera algún archivo ya sea para poder utilizar el sistema en un diseño más complejo o para programar un PLD.
Configuración de PLD: Con el archivo binario generado puede configurarse directamente un PLD a través de alguna de las opciones de configuración. Estas opciones dependerán de las herramientas y del PLD que se esté utilizando.
Programación de Memoria (PROM): Muchas FPGA no pueden configurarse de manera permanente y requieren algún tipo de memoria para leer la configuración cuando se les aplica tensión de alimentación. En la etapa de producción deben configurarse memorias PROM y conectarlas a la FPGA en el circuito impreso.
Verificación (automática): Una vez integrada la FPGA con su programación al sistema debe hacerse una verificación para controlar que el diseño sobre en la FPGA funciona bien (las FPGAs pueden tener fallas internas) y que la FPGA se integra bien al sistema en el que está. Pueden usarse técnicas y herramientas de verificación automáticas para evaluar si el dispositivo y el diseño están funcionando como debieran.
En la figura, las flechas de líneas punteadas que vuelven al comienzo indican las iteraciones que muchas veces se dan al trabajar en un diseño nuevo. Después de simularlo o configurar un PLD, pueden descubrirse fallas o haber cambios de requerimientos que obligan al diseñador a volver y modificar la descripción del diseño.
HERRAMIENTAS DE DESARROLLO
La facilidad de desarrollo de sistemas sobre PLDs depende en gran medida del software y hardware que permite crear y probar los diseños de una manera simple y eficiente. Al conjunto de estas aplicaciones se los denomina herramientas de desarrollo. A continuación, se describen algunas características de estas herramientas para los distintos pasos del ciclo de diseño.
Descripción del Diseño: en la creación de fuentes se usan diferentes herramientas para facilitar el diseño. Algunas herramientas comunes: Modelos de comportamiento. Diferentes niveles. Interfases gráficas, etc.
Generación o Traducción: se lleva todos los tipos de fuentes, tales como representaciones gráficas de máquinas de estado o diagramas esquemáticos. a un lenguaje de descripción de hardware. Los más comunes son VHDL o Verilog.
Simulación: la simulación de un sistema descrito de modelos en HDL merece algunos comentarios. Los lenguajes de descripción de hardware modelan o describen, mediante instrucciones secuenciales, bloques de hardware que funcionarán de manera concurrente, es decir, al mismo tiempo. Las señales de los bloques pueden afectarse mutuamente. Simular esto tiene su complejidad, y dentro de los estándares que definen los lenguajes de descripción de hardware VHDL y Verilog se especifica como se deben simular los procesos concurrentes.

4.2 Programación de circuitos combinacionales con HDL

Aquellos circuitos digitales con varias entradas y varias salidas, en los cuales la relación entre cada salida y las entradas puede ser expresada mediante una función lógica.
De la definición se deduce que cada salida en un instante de tiempo determinado depende exclusivamente de las entradas al circuito en el mismo instante de tiempo, pero no depende de las entradas que hubo en instantes de tiempo anteriores (no tiene "memoria").

4.2.1 Por captura esquemática

Por Captura Esquemática se entiende el proceso de descripción, mediante un dibujo, de un circuito eléctrico, que representan a los diferentes componentes del circuito y solo se efectúan interconexiones entre ellos.
Existen varios programas aplicación de Captura Esquemática como el “Schematic” del IspStarter de Lattice Semiconductor o “Fundation” de XILINX entre otros.
Esta técnica permite simular en la computadora el circuito virtualmente y verificar su funcionamiento antes de su fabricación o implementación en un PLD, reduciendo así el ciclo de diseño y el tiempo de obtención de un producto.
La desventaja es que en el diseño de circuitos grandes no es posible comprenderlos debido a que hay demasiados componentes e interconexiones en la pantalla. Los cuatro componentes básicos de la captura esquemática son:
· Símbolos, Conectores, Etiquetas y Puertos de Entrada y/o Salida Símbolos es una representación gráfica de los componentes.
· Conectores (alambre), permite la interconexión entre las terminales de los símbolos, o Dispositivos de entrada/salida.
· Etiquetas (Variables), Son los nombres para la identificación de las entradas o salidas.
· Puertos de entrada/salida es la definición de las características de un Puerto de Entrada, Salida o Puerto Bidirecional.

4.2.2 Por tabla de verdad

Para aclarar el proceso es necesario un ejemplo específico, la tabla de verdad especifica un circuito combinacional con dos entradas y dos salidas. Las funciones de BOOLE pueden expresarse en suma de términos mínimos.
El diseño de circuitos combinacionales parte la especificación del problema y culmina en un diagrama lógico de circuitos o un conjunto de funciones booleanas a partir de las cuales se puede obtener el diagrama lógico. El procedimiento implica los pasos siguientes:
De la especificación del circuito, deduzca el número requerido de entradas y salidas; asigne un símbolo a cada una.
Deduzca la tabla de verdad que define la relación requerida entre las entradas y las salidas.
Obtenga las funciones booleanas simplificadas para cada salida en función de variables de entrada.
Dibuje el diagrama lógico y verifique que el diseño sea correcto

4.2.3 Por ecuaciones booleanas

Si se requiere reducir la función que realiza el circuito. Este proceso parte del diagrama lógico dado y culmina en un conjunto de funciones BOOLEANAS, una tabla de vedad o una posible explicación del funcionamiento del circuito. Si el diagrama lógico analizar va acompañado de un nombre de función o de una explicación de lo que se supone que hace, el problema de análisis se reduce a una verificación de la función planeada.
El análisis se efectúa manual mente encontrando las funciones BOOLEANAS o la TABLA De VERDAD, o bien utilizando un programa de simulación de computadora.
El primer paso del análisis consiste en asegurarse del que el circuito dado sea combinacional y no secuencial. El diagrama del circuito combinacional tiene compuertas lógicas sin trayectoria de retroalimentación ni elementos de memoria. Una trayectoria de retroalimentación es una conexión de salida de una compuerta a la entrada de una segunda compuerta que forma parte de la entrada a la primera compuerta.
El análisis del circuito combinacional de la figura ilustra, es un circuito que tiene tres entradas binarias A,B y C y dos salidas binarias F1 y F2. Las salidas de diversas compuertas que son función únicamente de variables de entrada son T1 y T2. La salida F2 se deduce fácilmente de las variables de entrada. Las funciones BOOLEANAS de esta salida son:
F2= AB+AC+BC
F1= A+B+C
T2= ABC

4.2.4 Por descripción de comportamiento

El modelado comportamental, describe el funcionalmente de un circuito. Se trata de una descripción funcional por que expone la forma en que trabaja el circuito, es decir, las descripciones consideran la relación que hay entre las entradas y las salidas del circuito, sin importar como esté organizado en su interior.
Lenguaje de Descripción de Hardware de alta escala de integración (VHDL) VHDL es el acrónimo que representa la combinación de VHSIC y HDL, donde VHSIC es el acrónimo de Very High Speed Integrated Circuit y HDL es a su vez el acrónimo de Hardware Description Language.
Es un lenguaje definido por el IEEE (Institute of Electrical and Electronics Engineers) (ANSI/IEEE 1076-1993) usado por ingenieros para describir circuitos digitales. Otros métodos para diseñar circuitos son la captura de esquemas (con herramientas CAD) y los diagramas de bloques, pero éstos no son prácticos en diseños complejos. Otros lenguajes para el mismo propósito son Verilog y ABEL.
Aunque puede ser usado de forma general para describir cualquier circuito se usa principalmente para programar PLD (Programable Logic Device - Dispositivo Lógico Programable),FPGA (Field Programmable Gate Array), ASIC y similares Dentro del VHDL hay varias formas con las que podemos diseñar el mismo circuito y es tarea del diseñador elegir la más apropiada.
· Funcional: Describimos la forma en que se comporta el circuito. Esta es la forma que más se parece a los lenguajes de software ya que la descripción es secuencial.
Estas sentencias secuenciales se encuentran dentro de los llamados procesos en VHDL. Los procesos son ejecutados en paralelo entre sí, y en paralelo con asignaciones concurrentes de señales y con las instancias a otros componentes.
· Flujo de datos: describe asignaciones concurrentes (en paralelo) de señales.
· Estructural: se describe el circuito con instancias de componentes. Estas instancias forman un diseño de jerarquía superior, al conectar los puertos de estas instancias con las señales internas del circuito, o con puertos del circuito de jerarquía superior.
· Mixta: combinación de todas o algunas de las anteriores.
En VHDL también existen formas metódicas para el diseño de máquinas de estados, filtros digitales, bancos de pruebas etc.

4.3 Programación de circuitos secuenciales con HDL

Los circuitos de conmutación secuenciales tienen la propiedad de que la salida no sólo depende de la entrada actual, sino también de la secuencia de entradas anteriores. Son las siglas de Programable Logic Designo dispositivos de lógica programable. Estos circuitos integrados permiten generar dentro de las mismas funciones que no disponemos en los C.I. Comerciales (decodificadores, comparadores, sumadores, etc).Los PLD´s pueden reemplazar circuitos integrados de propósito especifico en el diseño de circuitos digitales. Un solo PLD es funcionalmente equivalente a dispositivos que tienen desde 5 hasta 10,000compuertas lógicas.
Estos dispositivos están basados en transistores bipolares transistores especiales que cuando se hace circular una fuerte corriente dejan de conducir ,pero pueden volver a conducir aplicando una diferencia de potencial en el circuito.

4.3.1 Por captura esquemática

Los programas de captura esquemática son aplicaciones creadas para esbozar circuitos electrónicos y exportar los esquemas como archivos netlist ; los cuales satisfacen la sintaxis de algún núcleo de simulación en particular.
Dentro de este grupo de programas, que delegan al usuario la tarea de enlazar los archivos netlist generados con el núcleo de simulación, se encuentran: XCircuit 11, y gschem 12; pertenecientes a los grupos Open Circuit Design y gEDA , respectivamente. La principal característica de ambos programas es que pueden generar dibujos decircuitos de gran calidad, debido a la tecnología utilizada en su implementación: el lenguaje Postscript para la descripción de diagramas. Sin embargo, se aprecia una ligera diferencia entre estas dos aplicaciones, locual podría ayudar a discriminar entre una y otra. Por una parte, el autor de gschem reconoce que XCircuit produce mejores salidas gráficas; y por otra, gschem está más orientado al diseño de circuitos que a dibujos de calidad en sí, lo cual se aprecia en su funcionalidad.
Lamentablemente, la desventaja de programas de este tipo es el hecho de tener que enlazar explícitamente el núcleo de simulación; lo cual incrementa la curva de aprendizaje de usuarios provenientes de ambientes más amigables.

4.3.2 Por tabla de verdad

La tabla de verdad es un instrumento utilizado para la simplificación de circuitos digitales a través de su ecuación booleana.
Las tablas de verdad pueden tener muchas columnas, pero todas las tablas funcionan de igual forma. Hay siempre una columna de salida (última columna a la derecha) que representa el resultado de todas las posibles combinaciones de las entradas.
El número total de columnas en una tabla de verdad es la suma de las entradas que hay + 1 (la columna de la salida).
El número de filas de la tabla de verdad es la cantidad de combinaciones que se pueden lograr con las entradas y es igual a 2n, donde n es el número de columnas de la tabla de verdad (sin tomar en cuenta la columna de salida) Ejemplo: en la siguiente tabla de verdad hay 3 columnas de entrada, entonces habrán: 23= 8 combinaciones (8 filas) Un circuito con 3 interruptores de entrada (con estados binarios "0" o "1"), tendrá 8 posibles combinaciones. Siendo el resultado (la columna salida) determinado por el estado de los interruptores de entrada.

4.3.3 Por ecuaciones booleanas

Los Números Reales lo conocemos muy bien, así como todas las operaciones definidas en él. Estamos acostumbrados a trabajar con ellos desde pequeños, por eso este tipo de Ecuaciones nos parecen intuitivas y sencillas, aunque no comprendamos lo que significan las variables usadas. Hemos dicho que los circuitos digitales trabajan con números, y que estos números se expresan en binario. Veremos más adelante cómo con un conjunto de ecuaciones podemos describir lo que hace un circuito, que transforma los números de la entrada y los saca por la salida. Sin embargo, puesto que estos números vienen expresados en binario, las variables y números utilizados NO SON REALES.
Para describir un circuito digital utilizaremos ecuaciones, Para describir un circuito digital utilizaremos ecuaciones matemáticas. Sin embargo, estas ecuaciones tienen variables y números que NO SON REALES, por lo que NO podemos aplicar las mismas propiedades y operaciones que conocemos. Hay que utilizar nuevas operaciones y propiedades, definidas en el ALGEBRA DE BOOLE.
Por tanto, vamos a trabajar con unas ecuaciones a las que NO estamos acostumbrados. Son muy sencillas, pero al principio pueden resultar poco intuitivas. En este capítulo aprenderemos a trabajar con ellas.
Las operaciones del Álgebra de Boole
En el Álgebra de Boole hay dos operaciones, denotadas con los símbolos + y ( - ) _ pero que ¡no tienen nada que ver con las operaciones que todos conocemos de suma y producto! ¡No hay que confundirlas! El + y el _ del Algebra de Boole se aplican a bits, es decir, a números que sólo pueden ser el ’0’ ó el ’1’.
La operación +
Esta operación se define de la siguiente manera:
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 1

4.3.4 Por descripción de comportamiento

Descripción VHDL de comportamiento.- Esta es quizás la etapa mas importante del diseño, ya que en ella se toman decisiones claves para el resultado final.
El método se clarifica con un ejemplo, en el cual se ha buscado también la aplicación de
los criterios de jerarquía, modularidad y regularidad. Para ello se trata de que todos los pasos de la secuencia sean iguales, cuando ello es posible. También se siguieron las recomendaciones de no usar lógica auxiliar en las señales de reloj (todos los cambios del sistema se producen sincronizados con la señal de reloj la cual es única para todos los Flip Flops.)
Síntesis.- Ya en la descripción inicial se halla presente la división del circuito en una parte de control y una parte de datos. Por lo tanto, la síntesis consistirá en pasar de la descripción de comportamiento a una descripción de estructura (y comportamiento) que contemple los requisitos expuestos.
En esta etapa son importantes la elección del tipo de lógica a utilizar y la estrategia de reloj, esto se podrá apreciar en el ejemplo que consiste en un circuito de control para un convertidor A/D de aproximaciones sucesivas. Comportamiento.
En una especificación de este tipo decimos cual es la función que cumple el sistema.

4.3.5 Por tabla de estado

Un circuito secuencial sincrónico puede venir especificado por una tabla de estados, por sus ecuaciones de estados. o por un diagrama de estados. Estas tres alternativas en realidad no brindan una información diferente, se diferencian solamente en la forma de describir el circuito secuencial. La tabla de estados describe el circuito en forma tabular, el diagrama de estados lo describe en forma gráfica y las ecuaciones de estados lo describen en forma algebraica. La práctica presente tiene como objetivo diseñar un circuito secuencial el cual viene especificado por una tabla de estados. En la solución del problema se utilizan los flip-flops JK del módulo DIGI-BOARD2 convertidos en flip-flops tipo D.
PLANTEAMIENTO DEL PROBLEMA
Diseñar un circuito secuencial sincrónico cuya tabla de estados se muestra a continuación utilizando flip-flops tipo D. Los flip-flops tipo D deben ser obtenidos a partir de los flip-flops JK disponibles en el módulo DIGI BOARD2 del laboratorio.
Estado presente
Q1 Q2
Entrada
x
Estado siguiente
Q1 Q2
Salida y
0 0 0 0 0 0
0 0 1 0 1 0
0 1 0 0 1 0
0 1 1 0 0 1
1 0 0 1 0 0
1 0 1 0 1 0
1 1 0 1 1 0
1 1 1 0 0 1

4.3.6 Por diagrama de transición
Son aquellos en los cuales las salidas en un instante de tiempo determinado dependen de las entradas en ese instante y en instantes anteriores de tiempo.
Como consecuencia de la definición anterior podemos llegar a la conclusión de que este tipo de circuitos son capaces de memorizar información y que esta información en un momento dado depende de las entradas ocurridas en el circuito hasta ese momento. El circuito no es capaz de memorizar todas las entradas ocurridas hasta un instante de tiempo determinado, sino solo una cierta parte. A la información almacenada se le denomina estado del sistema, y el número máximo de informaciones almacenables es el número de estados posibles del sistema.
El circuito secuencial recibe información binaria de su ambiente a través de las entradas E, las cuales, en combinación con el estado actual Q(t) (almacenado en los elementos de almacenamiento), determinan el valor binario de las salidas S y el siguiente estado Q(t+1). Las salidas de un circuito secuencial son las salidas del circuito combinacional.
Funciones de transición
Un circuito o sistema secuencial queda definido por dos funciones lógicas, llamadas funciones de transición:
1. Función de salida: nos indica cómo depende la salida o salidas, de las entradas actuales y del estado actual.
2. Función de transición de estado: nos indica como depende el nuevo estado del estado anterior y de las entradas al sistema.
Función de salida
Si designamos por:
S(t) = salidas en el mismo instante de tiempo t
E(t) = entradas en el mismo instante de tiempo t
Q(t) = estado en el instante de tiempo t
La función de salida puede expresarse:
S (t) = F [ E (t), Q (t) ]
Función de transición de estado
Nos indica si unas determinadas entradas producen un cambio en el estado y a qué estado se cambia. La función puede expresarse:
Q(t+1) = G [ E(t), Q(t) ]
Tanto F como G son funciones lógicas, exactamente iguales a las estudiadas hasta ahora. La única novedad, que confiere a los circuitos secuenciales propiedades totalmente distintas a los combinacionales, es el hecho de que existe realimentación. La función G nos da los valores Q en función de los propios valores Q anteriores. Las mismas variables son variables de entrada y salida de la función.
Las funciones F y G pueden expresarse mediante tablas de verdad. como cualquier otra función. Por el hecho de existir realimentación, se les denomina tablas de transición del circuito secuencial.