SISTEMAS DIGITALES I ACTIVIDAD ACT IVIDAD # 7 CAPÍTULO DEL CURSO: LENGUAJE DE DESCRIPCIÓN DE HARDWARE VHDL OBJETIVOS DE APRENDIZAJE: Aplicar conceptos conceptos relacionados a VHDL VHDL en en los circuitos combinatoriales. Describir circuitos digitales combinatoriales en lenguaje VHDL. • •
DURACIÓN: 120 minutos MATERIALES Y HERRAMIENTAS: HERRAMIENTAS: - Ejercicios realizados en las sesiones de clase. - Quartus II. MARCO TEÓRICO: Lenguaje de Descripc Descripc ión d el Hardw Hardware are
El Lenguaje de Descripción de Hardware (HDL) es similar a un lenguaje de programación de computadora, excepto que un HDL describe Hardware (circuito digital) que, luego de simulado puede ser construido. Existen dos lenguajes del tipo HDL que son estándares: el uno es el de IEEE, conocido como VHDL (Very High Speed Integrated Circuit Hardware Description Lenguage); y el otro es el de Verilog HDL. En HDL tenemos diferentes tipos de descripciones: Sistema, algorítmico, algorítmico, RTL, Lógico, Conmutación, Eléctrico, Físico. En VHDL se declara una caja negra (entity), con un identificador para el circuito, y sus terminales de entrada y salida. También se declaran las direcciones (modo) de los terminales (in, out) y el tipo de datos que admiten. Luego se describe describe el circuito en sí, dentro del del cuerpo de una arquitectura. arquitectura. Esta descripción difiere según el nivel. Estruc tura tur a de un programa pr ograma en VHD VHDL L
Cuando se utiliza VHDL, un sistema digital puede dividirse en varios bloques, para efectuar el proceso de la manera más comprensible y que sea fácil de probar y de dar mantenimiento. mantenimiento. En VHDL, cada porción del diseño es considerado un bloque, que es descrito en el lenguaje mediante una entidad y una arquitectura. La entidad Figura 1: Descomposición modular de un sistema
describe el exterior del circuito y la arquitectura su comportamiento interno. Ejemplo: Describa la entidad y arquitectura de una puerta NAND, según se muestra en la figura 2. ENTITY nand2 IS PORT(I1,I2: IN BIT; O : OUT BIT); END nand2; ARCHITECTURE C1 OF nand2 IS BEGIN O <= NOT(I1 AND I2);
Figura 2: Diagrama de bloque la puerta NAND
END C1;
Adicionalmente, debe tenerse en cuenta que el archivo de texto creado se graba con el mismo nombre de la entidad y con la extensión vhd. Para el ejemplo anterior, el archivo recibirá el nombre de: nand2.vhd Todo programa en VHDL se inicia declarando las bibliotecas que se usarán en el programa. Luego, en la entidad, se listan las señales, los modos y tipos de datos de cada una. Al final se describe la arquitectura. Los modos de las señales son los siguientes: Modo: IN OUT BUFFER Entrada Salida Salida realimentada Tipo: BIT, STD_LOGIC, STD_LOGIC_VECTOR
INOUT Bidireccional
La estructura general de un programa en VHDL es como sigue: LIBRARY ieee; USE ieee.std_logic_1164.all ; USE ieee.std_logic_unsigned.all ; ENTITY IS PORT(: ; : ); END ; ARCHITECTURE OF IS --Región de declaraciones BEGIN ; ; END ;
En VHDL, una arquitectura tiene dos partes: La sección de las declaraciones; y el cuerpo de la arquitectura. La parte de declaraciones precede la palabra clave BEGIN, la cual puede ser usada para declarar señales, variables y constantes. También puede ser usada para declarar componentes y especificar atributos. Luego de BEGIN,
se colocan las sentencias concurrentes o secuenciales que describen la solución del problema. Tipos de descripciones dentro de la arquitectura
En VHDL, las descripciones de una arquitectura difieren según el nivel de abstracción con el que se propone resolver el circuito. Las descripciones son: Estructural o lógica: Descripción exacta del esquema lógico que resuelve la función objeto del diseño. De flujo de datos o RTL. Comportamental o algorítmica (descripción funcional). •
• •
Descripc ión Estructural o lóg ica
En la descripción estructural, el cuerpo de la arquitectura se transforma en una descripción exacta del esquema lógico. Para ello, se usa las declaraciones de componentes. La cantidad de declaraciones de componentes está en relación con la cantidad de componentes distintas que formarán parte del circuito físico que se esté diseñando. La declaración component tiene una estructura similar a la de una entidad, pero no tiene la misma connotación. La forma de declarar un componente es la siguiente: component nombre_componente port (señales_entrada: modo tipo ; señales_salida: modo tipo ); end component; Además, en la sección de declaraciones de la arquitectura (región ubicada entre la palabra reservada architecture y la palabra begin), puede existir la necesidad de realizar algunas declaraciones de señales internas, las cuales intervienen en la descripción del circuito, pero no tienen acceso a los terminales externos del diseño (no están declaradas en la entidad). Ejemplo: Realizar la descripción en VHDL de tipo estructural de la operación EXOR
La operación exor se puede expresar como: Y = ENTITY XOR IS PORT (A,B: IN BIT; Y: OUT BIT); END XOR; Architect ure XOR1 of XOR is - declaración de señales signal AN, BN : bit; signal ANB, ABN : bit; - declaración de componentes component INV port (I: in bit; O: out bit); end component ;
A
A B.H=
AB+AB
AN
ANB
B
Y
BN
ABN
Figura 3: Circuito equivalente de exor con nombres de las señales internas.
component AND2 port (I1, I2: in bit; O: out bit); end component ; component OR2 port (I1, I2: in bit; O: out bit); end component ; begin - instanciación de componentes U1: INV port map(A,AN); U2: INV port map(B,BN); U3: AND2 port map(AN,B,ANB); U4: AND2 port map(A,BN,ABN); U5: OR2 port map(ANB,ABN,Y); end XOR1;
Como puede observarse en el ejemplo anterior, la instanciación de un componente (esto es, invocar al componente para usarlo dentro de la arquitectura de la puerta exor) se hace siempre usando la sentencia “port map”. Uno de los tipos de señales con que trabaja el VHDL es el arreglo de señales, tanto del tipo bit_vector, como del tipo std_logic_vector. Esto permite escribir de forma más compacta los diseños en VHDL. Ellos representan un arreglo de bits y se utilizan con dispositivos multiterminales. Ejemplo: Realizar la descripción VHDL de tipo estructural de un decodificador de 2 entradas y 4 salidas, activadas con el nivel bajo, y una entrada de habilitación, también activa en el nivel bajo. Entity decod2x4 is Port (A: in bit_vector(1 downto 0); NEN: in bit; NY: out bit_vector(3 downto 0)); End decod2x4; architecture decod_a of decod2x4 is -- declaración de señales signal AN(1),AN(0), EN: bit; -- declaración de componentes component INV port (I: in bit; O: out bit); end component ; component NAND3 port (I1, I2, I3: in bit; O: out bit); end component ; begin --instanciación de componentes
Figura 4: Circuito del decod2x4 con nombres de las señales internas.
U1: INV port map (A(1),AN(1)); U2: INV port map (A(0),AN(0)); U3: INV port map (NEN,EN); U4: NAND3 port map (AN(1), EN, AN(0), NY(0)); U5: NAND3 port map (AN(1), EN, A(0), NY(1)); U6: NAND3 port map (A(1), EN, AN(0), NY(2)); U7: NAND3 port map (A(1), EN, A(0), NY(3)); end decod_a; Descripci ón por flujo de datos (RTL)
En la descripción por flujo de datos, la arquitectura describe como fluyen las señales de entrada por el circuito, pasando por todas las funciones lógicas intermedias hasta las funciones finales, y de allí hacia los terminales de salida. Este estilo de escritura de la arquitectura es llamada descripción de transferencia de registros RTL (Register Transfer Language). Los diseños ejecutados en la descripción RTL son prácticas comunes en el diseño digital moderno. En la aproximación por flujo de datos se utilizan declaraciones de asignación de señales, así como operadores lógicos que no se emplean en el estilo de escritura estructural, volviendo la arquitectura más compacta. Después de la palabra clave begin, se produce la asignación del flujo de datos de las señales del miembro de la derecha (expresión) hacia la señal Y, del miembro de la izquierda (salida). El VHDL posee un conjunto de operadores que se usan con las señales o con las variables declaradas en sus diseños. Los operadores lógicos que tiene el VHDL en sus librerías son: not, and, or, nand, nor, xor y xnor. La figura 5, presentada a continuación contiene una clasificación de los operadores definidos en el lenguaje VHDL. Lógicos: AND, OR, XOR, NOT, NAND, NOR y XNOR Aritméticos: +, -, * (multiplicación solo por 2) De relación: =, /=, <, >, <=, >= De concatenación: &
Cuando los operadores lógicos se usan con los tipos de señales std_logic o bit, ellos tienen su significado usual. Los valores '0' y '1' son valores constantes y deben estar encerrados entre apóstrofes. Cuando el tipo de señal usada es declarada std_logic_vector o bit_vector, entonces los valores deben estar encerrados entre comillas. Un ejemplo de operaciones lógicas con el tipo de datos vector es el siguiente: ’’01100101’’xor’’10101101’’=’’11001000’’
El operador de concatenación en VHDL, cuyo símbolo es & permite realizar la unión de señales o variables de distinta “longitud”.
Ejemplo: Realizar la descripción de la arquitectura en RTL de una compuerta XOR. architecture XOR2 of XOR is begin --asignación de señales Y <= (not A and B) or (A and not B); end XOR2;
DESCRIPCIÓN DEL TALLER (REPASO)
1. Para cada uno de los siguientes ejercicios, describa en VHDL únicamente la entidad a partir de los siguientes diagramas de bloque. a)
b) 4
W.H
(X)2
(A)2
F.H 4
Circuito 1
2 F1 Circuito
4
B.H
(Y)2
c)
2
d)
P.H
R.H
F2.H
Circuito
Circuito 3
F3.H
4
S.H
4
(Q)2
2. Para cada uno de los siguientes ejercicios realice la descripción VHDL: a) El circuito tiene 4 variables lógicas de entrada y presenta en F4 el resultado en base a la siguiente función lógica, la cual deberá primero minimizarla: F4(A,B,C,D) = A.D + B.C + A.C b) El circuito digital recibe las palabras binarias A, B, C de 4 bits cada una, y presenta en F5 la siguiente función aritmética: 4
F5 = A – B + C
A
5 4
B C
4
F5
c) El circuito tiene 3 variables lógicas de entrada y presenta en F6 el resultado, con base en la siguiente función lógica, la cual debe primero minimizarla:
Bibliografía:
[1]. Fundamentos de Lógica Digital, Stephen Brown & Zvonco Vranesic, Segunda Edición, Mc.Graw Hill, 2009. [2]. Sistemas Digitales: Principios y Aplicaciones, Ronald Tocci, Octava Edición, Prentice Hall, 2003. [3]. Análisis y Diseño de Circuitos Lógicos Digitales, Víctor Nelson, Troy Nagle, Bill Carroll, David Irwin, Primera Edición, Prentice Hall, 2000. [4]. Digital Design with RTL Design, Verilog and VHDL, Frank Vahid, Second Edition, John Wiley and Sons, 2010. Elaborado por MSc. Sara Ríos Orellana
30/05/2017