You are on page 1of 15

Cap.

2 Diseo de Circuitos Lgicos con VHDL

Ejemplo general- MUX

Diseo de:

2.2 Multiplexores 2.3 Demultiplexores 2.4 Decodificadores 2.5 Codificadores 2.6 Comparador 2.7 Sumador/restador 2.8 Unidad Lgica Aritmtica (ALU)

Cap. 2 Diseo de Circuitos Lgicos con VHDL

Decodificador

Ejemplo Ejemplo 15. 15. Decodificador: Decodificador: BCD BCD a a 7-Segmentos 7-Segmentos
a A0 A1 A2 A3 b 1 2 4 8 c d e f g d[6:0]

a f e d g b c

Cdigo BCD (A) A3 0 0 0 0 0 0 0 0 1 1 A2 0 0 0 0 1 1 1 1 0 0 A1 0 0 1 1 0 0 1 1 0 0 A0 0 1 0 1 0 1 0 1 0 1 d6 a 0 1 0 0 1 0 0 0 0 0

Segmentos del Display (d) d5 b 0 0 0 0 0 1 1 0 0 0 d4 c 0 0 1 0 0 0 0 0 0 0 d3 d 0 1 0 0 1 0 0 1 0 0 d2 e 0 1 0 1 1 1 0 1 0 1 d1 f 0 1 1 1 0 0 0 1 0 0 d0 g 1 1 0 0 0 0 0 0 0 0

Salidas en Activo-Bajo

Cap. 2 Diseo de Circuitos Lgicos con VHDL

Decodificador

Decodificadores: Decodificadores: BCD BCD a a 7-Segmentos 7-Segmentos


Ejemplo N 15 Decodificador BCD a 7-Segmnetos (Uso de construccin case-when) library ieee; use ieee.std_logic_1164.all; entity decobcd_7s is port (A: in std_logic_vector (3 downto 0); d: out std_logic_vector (6 downto 0)); end decobcd_7s; architecture arqdeco of decobcd_7s is begin process (A) begin case A is when 0000 => d <= 0000001; when 0001 => d <= 1001111; when 0010 => d <= 0010010; when 0011 => d <= 0000110; when 0100 => d <= 1001100; when 0101 => d <= 0100100; when 0110 => d <= 0100000; when 0111 => d <= 0001110; when 1000 => d <= 0000000; when 1001 => d <= 0000100; when others => d <= 1111111; end case; end process; end arqdeco;

Construccin case-when: En esta construccin se evalua la expresin especificada (case) y el valor que se obtenga se compara con los asociados a las diferentes opciones descritas. Aquella opcin (when) que coincida con dicho valor, le sern ejecutados sus enunciados secuenciales adyancentes.

Cap. 2 Diseo de Circuitos Lgicos con VHDL

Decodificador if x = 0000 then a <= 0; elsif x = 0001 then b <= 0; elsif x = 0010 then c <= 0; elsif x = 0011 then d <= 0; elsif x = 0100 then e <= 0; elsif x = 0101 then f <= 0; elsif x = 0110 then g <= 0; elsif x = 0111 then h <= 0; elsif x = 1000 then i <= 0; else j <= 0; end if; end process; end arqdeco;

Decodificadores: Decodificadores: BCD BCD a a Decimal Decimal


Ejemplo N 16 Decodificador de BCD a Decimal library ieee; use ieee.std_logic_1164.all; entity deco is port (x: in std_logic_vector (3 downto 0); a, b, c, d, e, f, g, h, i, j: out std_logic); end deco; architecture arqdeco of deco is begin BCD/DEC 0 process (x) begin 1 a <= 1; 2 b <= 1; 1 3 x0 c <= 1; 2 4 x1 d <= 1; 4 5 e <= 1; x2 f <= 1; 8 6 x3 g <= 1; 7 h <= 1; 8 Salidas en i <= 1; Activo-Bajo 9 j <= 1;

a b c d e f g h i j

Cap. 2 Diseo de Circuitos Lgicos con VHDL

Prctica 5

Prctica Prctica 5. 5. Decodificador Decodificador BCD BCD

7 7 segmentos segmentos

Objetivo: Objetivo: Disear Disear un un circuito circuito decodificador decodificador de de BCD BCD a a7 7 segmentos. segmentos. El El circuito circuito recibir recibir una entrada en cdigo BCD y deber decodificarla para que sea posible desplegarla una entrada en cdigo BCD y deber decodificarla para que sea posible desplegarla en en un un display display de de 7 7 segmentos. segmentos. El El diseo diseo ser ser realizado realizado mediante mediante ecuaciones ecuaciones When-Else When-Else With-Select-When With-Select-When If-Then If-Then Case-When Case-When del del lenguaje lenguaje VHDL, VHDL, a a travs travs del del IDE IDE Galaxy. Galaxy. Es Es posble posble descargar descargar la la prctica prctica del del sitio sitio de de internet: internet:

http://dsid.escom.ipn.mx/julio/cursos/Fun_dis_digital.html http://dsid.escom.ipn.mx/julio/cursos/Fun_dis_digital.html..

Cap. 2 Diseo de Circuitos Lgicos con VHDL

Codificador

Codificadores: Codificadores: Decimal Decimal a a BCD BCD


a0 a1 a2 a3 a4 a5 a6 a7 a8 a9

Ejemplo N 17 Codificador Decimal a BCD Entrada Decimal library ieee; use ieee.std_logic_1164.all; entity codif is port (a: in std_logic_vector (9 downto 0); d: out std_logic_vector (3 downto 0)); end codif; architecture arqcodif of codif is begin process (a) begin if a = 0000000000 then d <= 0000; elsif a = 0000000010 then d <= 0001; elsif a = 0000000100 then d <= 0010; elsif a = 0000001000 then d <= 0011; elsif a = 0000010000 then d <= 0100; elsif a = 0000100000 then d <= 0101;

DEC/BCD 0 1 2 3 1 4 2 5 4 6 8 7 8 9

elsif a = 0001000000 then d <= 0110; elsif a = 0010000000 then d <= 0111; elsif a = 0100000000 then d <= 1000; elsif a= 1000000000 then d <= 1001; else d <= 1111; end if; end process; end arqcodif;

Salida BCD

d0 d1 d2 d3

Cap. 2 Diseo de Circuitos Lgicos con VHDL

Cdigo de deteccin y correccin de error

Cdigos de deteccin y correccin de error:

Cdigo de deteccin de error Con paridad par Con paridad impar Cdigo de deteccin y correccin de error Hamming Con paridad par Con paridad impar

Disear en pizarrn

Cap. 2 Diseo de Circuitos Lgicos con VHDL

Prctica 6

Prctica Prctica 6. 6. Generador Generador del del cdigo cdigo de de Hamming Hamming
Objetivo: Objetivo: Disear Disear un un circuito circuito que que pueda pueda generar generar el el cdigo cdigo de de Hamming Hamming para para la la deteccin y correccin de error, a partir de una entrada de 4 bits. El diseo ser deteccin y correccin de error, a partir de una entrada de 4 bits. El diseo ser realizado realizado mediante mediante ecuaciones ecuaciones When-Else When-Else With-Select-When With-Select-When If-Then If-Then Case-When Case-When del del lenguaje lenguaje VHDL, VHDL, a a travs travs del del IDE IDE Galaxy. Galaxy.

Cap. 2 Diseo de Circuitos Lgicos con VHDL

Comparador

Tipos de comparadores:

Cuando el circuito indica si es igual o diferente Posee un nica salida Cuando el circuito indica si es igual, mayor o mayor Posee dos salidas o tres salidas 3 salidas: Cada salida indica uno de los posibles casos. 2 salidas: Los 3 posibles casos son codificados.
Disear en pizarrn

Cap. 2 Diseo de Circuitos Lgicos con VHDL

Comparador

La La construccin: construccin: if-then-else if-then-else

L 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

Ejemplo N 18 - La construccin if-then-else Comparador de dos palabras con long. de 2-bits library ieee; use ieee.std_logic_1164.all; entity comp is port (a,b: in std_logic_vector (1 downto 0); c: out std_logic); end comp; architecture funcional of comp is begin compara: process (a,b) begin if a = b then c <= 1; Lista-Sensitiva else Seales (incluyendo puertos) ledas por el proceso. c <=0; end if; end process compara; end funcional;

La construccin if-then-else sirve para seleccionar una operacin con base al anlisis (evaluacin lgica Cierto o Falso) de una condicin.

a b Comparador

Cap. 2 Diseo de Circuitos Lgicos con VHDL

Comparador L 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Ejemplo N 19 - La construccin if-then-elsif-then-else Comparador de Magnitud 2-Words de 4-bits library ieee; use ieee.std_logic_1164.all; entity comp4 is port (a,b: in std_logic_vector (3 downto 0); x,y,z: out std_logic); end comp4; architecture arq_comp4 of comp4 is begin process (a,b) begin if (a = b) then x <= 1; elsif (a > b) then Qu circuito es inferido? y <=1; else z <=1; end if; end process; end arq_comp4;

La La construccin: construccin:if-then-elsif-thenif-then-elsif-thenelse else

La construccin if-then-elsif-then-else se utiliza cuando se requiere analizar ms de una condicin de entrada.

a[3:0]

a=b

x y

a>b z b[3:0] a<b

Qu valores tienen las otras salidas en este instante?

Cap. 2 Diseo de Circuitos Lgicos con VHDL

Comparador L 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Ejemplo N 20 - La construccin when-else Comparador de Magnitud 2-palabras de 4-bits entity comp4 is port (a,b: in bit_vector (3 downto 0); x,y,z: out bit); end comp4; architecture arq_comp4 of comp4 is begin x <= 1 when a = b else 0; y <=1 when a > b else 0; z <=1 when a < b else 0; end arq_comp4;

La La construccin: construccin:when-else when-else

La construccin when-else permite definir paso a paso el comportamiento de un sistema.

a[3:0]

a=b

x y

a>b z b[3:0] a<b

Qu valores tienen las otras salidas en este instante?

Cap. 2 Diseo de Circuitos Lgicos con VHDL

Comparador

A1 A0 B1 B0 Z1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 0 0 1 1 0 0 1 1 1 0 1 1 1 1

Z0 1 1 1 1 0 1 1 1 0 0 1 1 0 0 0 1

Ejemplo N 21 - La construccin if-then-elsif-then-else Comparador de Magnitud 2-Words de 2-Bits / Salida Codificada library ieee; use ieee.std_logic_1164.all; entity comp is port (A,B: in std_logic_vector (1 downto 0); Z: out std_logic_vector (1 downto 0)); end comp; architecture a_comp of comp is begin process (A,B) begin if (A = B) then Operacin deseada: Z <= 11; Si: A = B entonces Z = 11 elsif (A < B) then Si: A < B entonces Z = 01 Z <= 01; Si: A > B entonces Z = 10 else Z <= 10; end if; end process; end a_comp; Ecs. Booleanas: Z1 = A0 A1 + B 0 B1 + A1B 0 + A1B1 + A0 B1

Z 0 = A0 A1 + B0 B1 + A0B1 + A1B1 + A1B0

Cap. 2 Diseo de Circuitos Lgicos con VHDL

Prctica 7

Prctica Prctica 7. 7. Cuadro Cuadro de de alarma alarma


Objetivo: Objetivo: Disear, Disear, construir construir y y probar probar un un sistema sistema capaz capaz de de elegir elegir 1 1 de de 4 4 entradas, entradas, compararla con un valor de umbral y mostrar en un display si es mayor, igual compararla con un valor de umbral y mostrar en un display si es mayor, igual menor menor que que dicho dicho umbral. umbral. El El circuito circuito ser ser hecho hecho en en una una GAL GAL (Generic (Generic Array Array Logic) Logic) usando usando el el mtodo mtodo de de With With select select when when If If then then Case Case when when del del lenguaje lenguaje VHDL VHDL a a travs travs del del IDE IDE Galaxy. Galaxy. Es Es posble posble descargar descargar la la prctica prctica del del sitio sitio de de internet: internet:

http://dsid.escom.ipn.mx/julio/cursos/Fun_dis_digital.html http://dsid.escom.ipn.mx/julio/cursos/Fun_dis_digital.html..

Cap. 2 Diseo de Circuitos Lgicos con VHDL

Buffer

Buffer-Salida Buffer-Salida de de 3-Estados 3-Estados habilitar (enable) entrada salida

Ejemplo N 22 Buffer Salida de 3-Estados library ieee; use ieee.std_logic_1164.all; entity tri_est is port (enable, entrada: in std_logic; salida: out std_logic); end tri_est; architecture arq_buffer of tri_est is begin process (enable, entrada) begin if (enable = 0) then salida <= Z; else salida <= entrada; end if; end process; end arq_buffer;

Tipos Lgicos Estndares U X 0 1 Z W L H - Valor No-Inicializado Valor Fuerte Desconocido 0 Fuerte 1 Fuerte Alta Impedancia Valor Dbil Desconocido 0 Dbil 1 Dbil No Importa (Dont Care)

El tipo de dato bit no soporta el valor Z, por lo que se debe utilizar el tipo std_logic, que si lo soporta.

You might also like