Beruflich Dokumente
Kultur Dokumente
UNIDAD 3
mediante
mediante
En este captulo se disean los circuitos combinacionales ms utilizados en el diseo lgico a travs del lenguaje de descripcin en hardware. Esto permite introducir nuevos conceptos, palabras reservadas, reglas, algoritmos, etc., que muestran la potencia y profundidad del lenguaje VHDL. El desarrollo de cada una de las entidades de diseo descritas en este captulo se puede optimizar mediante el uso adecuado de las declaraciones secuenciales, concurrentes o ambas, utilizando en esta descripcin cualquiera de los tres tipos de arquitectura funcional, por flujo de datos y estructural vistos en el captulo anterior.
Las declaraciones concurrentes se encuentran fuera de la declaracin de un proceso y suelen usarse en las descripciones de flujo de datos y estructural. Esto se debe a que en una declaracin concurrente no importa el orden en que se escriban las seales, ya que el resultado para determinada funcin sera el mismo.
En VHDL existen tres tipos de declaraciones concurrentes: Declaraciones condicionales asignadas a una seal (whenelse). Declaraciones concurrentes asignadas a seales. Seleccin de una seal (with-select-when).
Declaraciones condicionales asignadas a una seal (when'else) La declaracin when'else se utiliza para asignar valores a una seal, determinando as la ejecucin de una condicin propia del diseo.
Diseo lgico combinacional mediante VHDL La entidad se puede programar mediante declaraciones condicionales (when-else), debido a que este modelo permite definir paso a paso el comportamiento del sistema.
1 Ejemplo combinacional bsico 2 library ieee; 3 use ieee.std_logic_1164.all ; 4 entity tabla is port( 5 a,b,c: in std_logic; 6 f: out std_logic); 7 end tabla; 8 architecture ejemplo of tabla is 9 begin 10 <= '1' when (a= '0' and b= '0' and c= '0' ) else 11 '1' when (a= '0' and b= V and c= '1' ) else 12 V when (a= '1' and b= '1' and c= '0' ) else 13 '1' when (a= '1' and b= '1' and c= '1' ) else 14 '0'; 15 end ejemplo;
Diseo lgico combinacional mediante VHDL Operadores lgicos Los operadores lgicos ms utilizados en la descripcin de funciones booleanas, y definidos en los diferentes tipos de datos bit, son los operadores and, or, nand, xor, xnor y not. En el momento de ser compilados los operadores lgicos presentan el siguiente orden y prioridad: 1) 2) 3) 4) Expresiones entre parntesis. Complementos. Funcin AND. Funcin OR.
En este tipo de declaracin encontraremos las funciones de salida mediante la ecuacin booleana que describe el comportamiento de cada una de las compuertas. Obsrvese que ahora el circuito de la figura 3.2 cuenta con tres salidas (xl, x2 y x3) en lugar de una.
Seleccin de una seal (with*select>when) La declaracin w i t h ' S e l e c t - w h e n se utiliza para asignar un valor a una seal con base en el valor de otra seal previamente seleccionada. Por ejemplo, en el listado correspondiente a la figura 3.3 se muestra el cdigo que representa a este tipo de declaracin. Como puede observarse, el valor de la salida C depende de las seales de entrada seleccionadas a(0) y a(l), de acuerdo con la tabla de verdad correspondiente.
Un ejemplo que ilustra este tipo de declaracin se encuentra en la siguiente figura 3.4.
Diseo lgico combinacional mediante VHDL Ejemplo 1 Implemente la TV en un dispositivo lgico programable
X Y
X,Y: F:
end ejemplo1; architecture ejemplo1_a1 of ejemplo1 is signal temp: BIT; Begin Concatenar temp<=X Y; F<=0 when temp=00 else 0 when temp=01 else 1 when temp=10 else 0; end ejemplo1_a1;
Flip Flop RS El flip flop RS es la unidad de memoria ms simple, y en base a l, se disean flip flops ms avanzados. El circuito tiene dos entradas,Set (s) y Reset (r), y dos salidas, llamadas q y notq (que es la negada de la salida q).
1 2 3 4 5 6 7 8
library ieee; use ieee.std_logic_1164.all; entity flipfloRS is port ( r,s,clk: in std_logic; q: buffer std_logic; notq: out std_logic ); end flipfloRS;