SISTEMA DIDÁCTICO PARA EL AUTOAPRENDIZAJE DEL LENGUAJE VHDL A PARTIR DE LOS BLOQUES FUNCIONALES NORMALIZADOS ENRIQUE MANDADO1,2, YAGO MANDADO3, GIRALDO VALDÉS2,4 y LUIS M. MENÉNDEZ2,5 1 Departamento de Tecnología Electrónica. Universidad de Vigo. 2 Instituto de Electrónica Aplicada. Universidad de Vigo. 3 Escuela Técnica Superior de Ingenieros de Telecomunicación. Universidad de Vigo. 4 Departamento de Automática y Sistemas Computacionales. Universidad Central de Las Villas. 5 Técnicas Formativas, S.L. En este trabajo se presenta un sistema didáctico que facilita el autoaprendizaje del VHDL. Dicho sistema está basado en la presentación de los conceptos básicos de los lenguajes HDL en general y su concreción en el VHDL en particular. Mediante un conjunto de ejemplos adecuadamente seleccionados, se describen los circuitos digitales desde los más sencillos hasta los más complejos para lograr que el estudiante adquiera conocimientos que lo formen de acuerdo con las exigencias actuales de la tecnología. 1. Introducción La edición de esquemas fue, hasta la década de 1980, la única forma de realizar la descripción asistida por computador de los sistemas digitales. Actualmente continua siendo utilizada como etapa previa a la simulación de circuitos digitales sencillos [1], pero la elevación de la complejidad de estos últimos hizo necesario el desarrollo de los lenguajes de descripción de sistemas digitales, que reciben el nombre de HDL (acrónimo de Hardware Description Language) y describen los sistemas digitales mediante un texto. El aprendizaje de estos lenguajes no es tarea fácil [2] [3] porque utilizan numerosos conceptos interrelacionados y esto motivó la realización de este trabajo en el que se describe el método desarrollado para presentarlos de forma paulatina a partir de los símbolos lógicos normalizados. El método desarrollado consta de las dos etapas siguientes: - Presentación de los fundamentos de los lenguajes de descripción de los sistemas digitales. Presentación del lenguaje VHDL de descripción de los sistemas digitales. Cada una de estas etapas se divide a su vez en diversas fases que se indican a continuación. 2. Fundamentos de los lenguajes de descripción de sistemas digitales Los lenguajes de descripción de los sistemas digitales se fundamentan en las formas de describirlos mediante un texto y en el concepto de componente ligado a ellas. Por ello el método desarrollado se inicia mediante el análisis de ambos. 2.1 Formas de describir los sistemas digitales mediante un texto. En esta fase se presentan las formas de describir los sistemas digitales mediante un texto que son de dos tipos principales: - - Descripción estructural La descripción estructural (Structural specification of hardware) consiste en especificar la totalidad de los elementos que componen el sistema digital y las interconexiones entre ellos. Descripción funcional La descripción funcional, también denominada de comportamiento (Behavioural modeling), consiste, como su nombre indica, en describir el comportamiento del sistema digital en lugar de detallar los elementos que lo forman y su interconexión. Por su parte, el comportamiento de los sistemas digitales complejos se puede describir funcionalmente de dos formas diferentes: o Mediante la especificación de las transferencias de información entre registros que dio lugar a los lenguajes RTL [4] [5], que en la actualidad forman parte de un HDL bajo la denominación de descripción de flujo de datos (Data flow description) porque especifican las transferencias de información que se realizan, de forma controlada y a través de buses entre los distintos registros que forman el sistema digital y, a través de dicha especificación, establecen los elementos del sistema físico y las interconexiones entre ellos. Esta forma de describir el funcionamiento tiene por lo tanto una estrecha relación con el sistema físico. o Mediante un algoritmo que recibe la denominación de descripción de comportamiento del sistema físico (Behavioural description of hardware) y está formado por procesos que se ejecutan secuencial o simultáneamente. Este modelo de descripción se caracteriza por no establecer de forma unívoca el sistema físico. Cualquier sistema físico que tenga el comportamiento descrito mediante determinado algoritmo puede ser válido para implementar el sistema digital. 2.2. Concepto de componente de los lenguajes de descripción de los sistemas digitales Una vez analizadas las formas de describir los sistemas digitales mediante un texto, se pueden clasificar los lenguajes HDL en no estructurados y estructurados. Los primeros están orientados a la realización de un único circuito o módulo por fichero, fueron desarrollados para configurar los dispositivos lógicos programables [6] y han sido sustituidos paulatinamente por los estructurados. Estos últimos permiten definir submódulos y enlazarlos jerárquicamente en un único fichero y las herramientas de CAD asociadas con ellos permiten utilizar un fichero de texto como nivel superior de la jerarquía, lo que propicia la creación de bibliotecas de circuitos y operadores frecuentemente utilizados (puertas lógicas, bloques funcionales, operadores aritméticos, etc.), al igual que en los editores de esquemas. Para ello los lenguajes HDL estructurados parten del concepto de "Componente", que es un circuito digital, especificado mediante su descripción funcional, de comportamiento o estructural, que se identifica mediante un nombre y tiene asociado un conjunto de terminales de entrada/salida (señales de entrada/salida) que permiten establecer conexiones externas. El concepto de componente se presenta mediante un ejemplo, como el indicado en la figura 1, que tiene como entradas las señales "Entrada 1", "Entrada 2" y como salidas la señal "Salida 1". Dicho componente está formado por otros dos componentes (C1 y C2) que pertenecen a una jerarquía inferior. COMPONENTE 3 Entrada 1 Entrada 2 IN1 IN2 IN3 OUT1 IN1 C1 OUT1 Salida 1 C2 IN2 OUT2 Figura 1. Jerarquía de descripciones en un lenguaje HDL. A continuación se describe la organización de los ficheros de los lenguajes HDL estructurados que es similar en todos ellos y está formada por las siguientes secciones: - Definición de los componentes Incluye la definición del nombre y de las conexiones externas. Para definir el componente cada lenguaje utiliza denominaciones diferentes. Por ejemplo, en VHDL el componente se - llama entidad (Entity). Descripción lógica de los componentes Se puede realizar en el nivel de flujo de datos o en el algorítmico (comportamiento), en alguna de las formas permitidas por el lenguaje (ecuaciones lógicas, tablas de verdad, diagrama de estados en formato de texto, etc.), o en el nivel estructural, mediante la reutilización e interconexión de componentes previamente descritos. Por ejemplo, en VHDL la descripción de un componente se llama arquitectura (Architecture). Una vez adquiridos los fundamentos se pasa a presentar el lenguaje VHDL y a concretar como los implementa. 3. Metodología de aprendizaje del VHDL. En primer lugar se enfatizan las principales características del lenguaje VHDL que hacen posible: - - La realización de descripciones jerárquicas (multinivel) en las que un sistema digital se modela como un conjunto de componentes interconectados y cada componente, a su vez, como un conjunto de componentes de menor jerarquía interconectados (subcomponentes). La realización de descripciones parametrizables de los sistemas digitales mediante la utilización de parámetros genéricos. La utilización de los tres tipos diferentes de descripción o modelado de los sistemas digitales indicados en el apartado 1. La descripción de un sistema digital mediante la combinación de diferentes tipos de descripciones. Seguidamente se pone en práctica la metodología desarrollada para facilitar el aprendizaje del VHDL que consta de las siguientes fases: - - Análisis de los conceptos de biblioteca (Library), entidad (Entity) y arquitectura (Architecture) mediante un bloque funcional sencillo. Análisis de los conceptos generales del lenguaje VHDL. Definición básica de la entidad y de la arquitectura. Descripciones de flujo de datos, algorítmica y estructural de diversos circuitos digitales sencillos. Simulación de la descripción en VHDL de los circuitos digitales descritos en la fase anterior y verificación de su comportamiento mediante la versión de estudiante de un simulador comercial. Descripción y simulación de diversos bloques funcionales digitales. 3.1. Análisis de los conceptos de biblioteca, entidad y arquitectura El análisis de los conceptos biblioteca (Library), entidad (Entity) y arquitectura (Architecture) se lleva a cabo mediante la descripción de un bloque funcional sencillo como es un multiplexor de dos canales de entrada. Se obtiene a partir de ella la estructura del fichero representado en la tabla 1. 3.2. Análisis de los conceptos generales del lenguaje VHDL Antes de iniciar la descripción de diferentes circuitos digitales se presentan los conceptos más importantes utilizados en las mismas: - Identificadores (Identifiers) y palabras reservadas (Reserved words). Comentarios (Comments). Tipos de datos (Data types). Objetos de datos (Data objects). - Atributos (Attributes). Operadores (Operators). Componentes (Components) --Definición de las bibliotecas LIBRARY nombre_de_biblioteca; USE nombre_de_biblioteca. nombre_de_paquete.componentes; ----------------------------------------------------------------------------ENTITY nombre_de_entidad IS ...(Zona de declaraciones) END nombre_de_entidad ; -----------------------------------------------------------------------------ARCHITECTURE nombre_de_arquitectura OF nombre_de_entidad IS ...(Zona de declaraciones) BEGIN ...(Cuerpo de la arquitectura) END nombre_de_arquitectura; Tabla 1. Estructura de un fichero que contiene la descripción de un sistema digital en VHDL. 3.3. Definición básica de bibliotecas, entidades y arquitecturas Para realizarla se utiliza la descripción de flujo de datos de una puerta digital básica, como por ejemplo una puerta NAND, que se muestra en la tabla 2. Esto permite centrarse en las reglas básicas de los tres conceptos para comprenderlas perfectamente antes de abordar la descripción de circuitos más complejos. -- Descripción de flujo de datos en VHDL de la puerta NAND de dos entradas ---------------------------------------------------------------------------LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ----------------------------------------------------------------------------- Definición de la entidad de la puerta NAND de dos entradas ENTITY puerta_NAND2entradas IS PORT (a, b : IN std_logic; f : OUT std_logic); END puerta_NAND2entradas; ----------------------------------------------------------------------------- Definición de la arquitectura de flujo de datos -- de la puerta NAND de dos entradas ARCHITECTURE flujo_de_datos OF puerta_NAND2entradas IS BEGIN f <= a NAND b; END flujo_de_datos; Tabla 2. Descripción de flujo de datos de la puerta NAND de dos entradas. 3.4. Descripciones de flujo de datos, algorítmica y estructural de diversos circuitos digitales sencillos En esta fase se presentan, mediante ejemplos adecuadamente seleccionados, los tres tipos de modelos de descripción en los que se utilizan las principales instrucciones del VHDL: - Las instrucciones de asignación condicional de señales “WHEN-ELSE” y “WITHSELECT” en la descripción de flujo de datos. Las instrucciones secuenciales “WAIT”, “IF-THEN-ELSE” y “CASE-WHEN” en la descripción algorítmica. - La instrucción “PORT MAP” en la descripción estructural. En la tabla 3 se presenta como ejemplo la descripción de flujo de datos de un multiplexor de dos canales mediante la instrucción “WITH-SELECT” -- Descripción de flujo de datos en VHDL de un multiplexor de dos canales de entrada -- con la instrucción “WITH-SELECT” -----------------------------------------------------------------------LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ------------------------------------------------------------------------- Definición de la entidad de un multiplexor de dos canales ENTITY multiplexor_dos_canales IS PORT (D0,D1,S : IN std_logic; Q : OUT std_logic); END multiplexor_dos canales; ---------------------------------------------------------------------------------- Definición de la arquitectura de flujo de datos -- de un multiplexor de dos canales -- con la instrucción “WITH-SELECT” ARCHITECTURE flujo_de_datos OF multiplexor_dos canales IS BEGIN WITH (S) SELECT Q <= D0 WHEN '1'; D1 WHEN '0'; END flujo_de_datos; Tabla 3. Descripción de flujo de datos en VHDL de un multiplexor de dos canales de entrada, mediante la instrucción “WITH-SELECT”. 3.5. Simulación y verificación del funcionamiento de los circuitos digitales descritos en el lenguaje VHDL en la fase anterior En esta fase se describe: - La generación de los estímulos o vectores de prueba mediante las instrucciones “WAIT FOR” y “AFTER”. La sintaxis del programa de prueba mediante el cual los vectores se aplican al sistema digital descrito en VHDL. 3.6 Descripción y simulación de diversos bloques funcionales digitales Para consolidar los conocimientos adquiridos, en esta última fase se describen y simulan finalmente diferentes bloques funcionales tanto combinacionales como secuenciales mediante los tres tipos de descripciones indicadas anteriormente. 4. Conclusiones El método que se propone pone en práctica el aprendizaje del lenguaje VHDL mediante la presentación de los conceptos básicos y su combinación paulatina para sistematizar el diseño de los sistemas digitales, utilizando un texto en lugar de un esquema. Referencias [1] [2] Orcad. Cadence. Home Page: http//www.orcad.com. K. C. Chang. Digital design and Modeling with VHDL and Synthesis. Los Alamitos. IEEE Computer Society Press. 1997 [3] [4] [5] [6] The Institute of Electrical and Electronics Engineers. IEEE Standard VHDL Language Reference Manual. New York. 1993 F. J. Hill and G. R. Peterson. Digital systems: Hardware organization and design. John Wiley & Sons, Inc., 1973 M. A. Breuer. Digital system design automation: Languages, simulation and data base. Computer Science Press, Inc., 1975. E. Mandado, L. J. Álvarez, M.D. Valdés. Dispositivos Lógicos Programables y sus aplicaciones. Editorial Thomson Learning. 2002