Sunteți pe pagina 1din 22

UNIVERSIDAD NACIONAL DE CHIMBORAZO FACULTAD DE INGENIERIA ESCUELA DE ELECTRONICA Y TELECOMUNICACIONES

INFORME DE SISTEMAS DIGITALES II Tema: Mux, Demux, Decos en Xilinx Nombres: Maria Jose Inca Karina Escudero Raul Samaniego Klever Allauca

OBJETIVOS: Aprender la forma de programacin de cada uno de los elementos. Implementar los multiplexores y decodificadores en el CMod C2

MATERIALES Software Xilinx Computador Cables de conexin Marco Terico. El sistema CAE de Xilinx es una herramienta de desarrollo que consiste en un conjunto integrado de herramientas software y hardware para crear, simular e implementar diseos digitales en una FPGA o CPLD. Todas las herramientas usan una interfaz de usuario grfica que permite usar todos los programas desde iconos, mens o barras de herramientas. Tambin se dispone de ayuda en lnea desde la mayora de ventanas. MULTIPLEXORES Un multiplexor digital es un circuito con 2n lneas de entrada de datos y una lnea de salida; tambin debe tener una manera de determinar la lnea de entrada de datos especfica que se va a seleccionar en cualquier momento. Esto se efecta con otras n lneas de entrada, denominadas entradas de seleccin, cuya funcin es elegir una de las 2n entradas de datos para la conexin con la salida. Multiplexores (Selectores) Existen dos tipos bsicos de Multiplexores: SISTEMAS DIGITALES II

De varias entradas a una salida, llamados de selectores de 2n a 1, o simplemente MUX (del ingls multiplexer) de 2n a 1. De una entrada a varias salidas, llamados selectores de 1 a 2n o simplemente DEMUX (del ingls demultiplexer) de 2n a 1.

El multiplexor 4 a 1 tiene seis entradas y una salida. Una tabla de verdad que describa el circuito necesitar 64 renglones, esta es una tabla excesivamente larga y no es prctica. Una manera ms prctica de describir el funcionamiento es por medio de una tabla de funcin.

DECODICADORES Las cantidades discretas de informacin se representan en sistemas digitales con cdigos binarios (ejemplo: BCD, EXCESO 3, 84-2-1, 2421, etc.). Un cdigo binario de n bits es capaz de representar hasta 2n elementos distintos de informacin codificada. Un decodificador es un circuito combinatorio que convierte informacin binaria de n lneas de entrada a un mximo de 2n lneas nicas de salida o menos. Estos decodificadores son denominados decodificadores n-a-m lneas, donde m 2n. Estos dispositivos normalmente cuentan con una entrada habilitadora. Cuando esta entrada vale 0, todas las salidas del codificador son 0. Cuando la entrada habilitadora vale 1, la salida correspondiente al mini trmino formado por la combinacin presente en las n entradas tomar el valor 1 y las dems tomarn el valor 0.

SISTEMAS DIGITALES II

De forma semejante a como se define el decodificador 2x4, pueden definirse decodificadores de 3x8, 4x16, 5x32 y en forma general de nx2n. La principal utilizacin de este dispositivo es cuando se tiene N alternativas que se pueden seleccionar, pero se desea seleccionar solamente una de ella. Tambin puede ser usado para construir funciones lgicas CODIFICADORES Un codificador es un circuito digital que ejecuta la operacin inversa de un decodificador. Un codificador tiene 2n (o menos) lneas de entrada y n lneas de salida. Las lneas de salida generan un cdigo binario correspondiente al valor de entrada binario. Ver codificador de octal a binario

SISTEMAS DIGITALES II

El codificador puede implantarse con compuertas OR cuyas entradas se determinan directamente de la tabla de verdad. Por ejemplo, la salida es A0 ser igual a 1 si el digito octal de entrada es 1 o 3 o 5 o 7. Las funciones de este codificador son las siguientes: A0 = D1+D3+D5+D7 A1 = D2+D3+D6+D7 A3 = D4+D5+D6+D7 APLICACIONES DEL DECODIFICADOR Su funcin principal es la de direccionar espacios de memoria. Un decodificador de N entradas puede direccionar 2N espacios de memoria. Para poder direccionar 1kb de memoria necesitara 10 bits, ya que la cantidad de salidas seria 210, igual a 1024. De esta manera: Con 20 bits tengo 220 que es 1Mb. Con 30 bits tengo 230 que es 1Gb. 1. GRFICOS

2. PROCEDIMIENTO Problema 1. Completar el circuito MUX 4:1 en dibujar los cables que faltan.

SISTEMAS DIGITALES II

CODIGO EN VHDL library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity multiplexer4_1 is port ( i0 : in std_logic; i1 : in std_logic; i2 : in std_logic; i3 : in std_logic; sel : in std_logic_vector(1 downto 0); bitout : out std_logic ); end multiplexer4_1; architecture Behavioral of multiplexer4_1 is begin process(i0,i1,i2,i3,sel) begin case sel is when "00" => bitout <= i0; when "01" => bitout <= i1; when "10" => bitout <= i2; SISTEMAS DIGITALES II

when others => bitout <= i3; end case; end process; end Behavioral; Problema 2. Completa la tabla de verdad y esquema del circuito para un mux 04:01. Al completar la tabla de verdad, hacer uso de no me importa es reducir el nmero de filas requeridas.
EN 1 0 0 0 0 S1 0 0 0 1 1 S0 0 0 1 0 1 Y 0 I0 I1 I2 I3

CODIGO EN VHDL library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity multi is port( a, b, c :in bit_vector(3 downto 0); enable :in bit; control :in bit_vector(1 downto 0); d :out bit_vector(3 downto 0) ); end multi; architecture Behavioral of multi is begin process (a, b, c, control, enable) begin SISTEMAS DIGITALES II

if enable='1' then d<="1111"; elsif enable='0' then case control is when "00" => d <= a; when "01" => d <= b; when "10" => d <= c; when others => d <= "1111"; end case; end if; end process; end Behavioral; Problema 4. Dibuje un mux 08:01 con dos muxes 04:01 y 02:01 un mux. Asegrese de etiquetar todas las entradas y salidas.

CODIGO EN VHDL

Multiplexor de 4:1

SISTEMAS DIGITALES II

Problema 5: Compite un esquema del circuito para mostrar cmo F = m (0, 2, 4, 5, 6) puede ser implementado utilizando el mux mostrado. (Sugerencia: preparar una ingresado variable K-map).
I0 I1 I2 I3 S1 S0 Y

Problema 6. Completar el esquema decodificador 03:08 a la derecha por dibujar los cables que faltan.
S2 S1 S0

Y0 S2 S1 S0 Y1 Y2 Y3 Y4 Y5 Y6 Y7

Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7

3:8 Decoder Symbol

3:8 Decoder Circuit

CODIGO EN VHDL
--libraries to be used are specified here library IEEE; use IEEE.STD_LOGIC_1164.ALL; --entity declaration with port definitions entity decoder is port( input : in std_logic_vector(2 downto 0); output : out std_logic_vector(7 downto 0) ); end decoder; --architecture of entity architecture Behavioral of decoder is begin output(0) <= (not input(2)) and (not input(1)) and (not input(0)); output(1) <= (not input(2)) and (not input(1)) and input(0); output(2) <= (not input(2)) and input(1) and (not input(0));

SISTEMAS DIGITALES II

output(3) <= (not input(2)) and input(1) and input(0); output(4) <= input(2) and (not input(1)) and (not input(0)); output(5) <= input(2) and (not input(1)) and input(0); output(6) <= input(2) and input(1) and (not input(0)); output(7) <= input(2) and input(1) and input(0); end Behavioral;

Problema 8: Complete la 4:16 decodificador construido a partir de 4 decodificadores 2:04 abajo por dibujar los cables que faltan. Marque todas las entradas y salidas.
CODIGO EN VHDL

EIN I0 I1

Y0 Y1 Y2 Y3

EIN I0 I1 EIN I0 I1 Y0 Y1 Y2 Y3 EIN I0 I1

Y0 Y1 Y2 Y3

Y0 Y1 Y2 Y3

EIN I0 I1

Y0 Y1 Y2 Y3

Problema 9. Completar un dibujo para mostrar cmo el decodificador 03:08 se puede utilizar para poner en prctica la ecuacin lgica F = m (1, 2, 4, 6) Entradas y salidas del decodificador estn afirmaron HIGH.

SISTEMAS DIGITALES II

Y0 S0 S1 S2 Y1 Y2 Y3 Y4 Y5 Y6 Y7

Problema 10. Completa la tabla de verdad. La tabla muestra los nueve dgitos decimales, sus equivalentes binarios, y siete columnas etiquetadas AG. Las columnas etiquetadas AG se pueden utilizar para grabar cuando un segmento debe estar iluminado para mostrar un dgito determinado. Por ejemplo, en la primera fila correspondiente al dgito '0 ', los segmentos A, B, C, D, E, y F se deben iluminar, por lo que un '1' debe ser colocado en esas columnas. Cuando se haya completado, la tabla puede servir como una tabla de verdad para el controlador de siete segmentos - que muestra la relacin lgica requerida entre las cuatro entradas y siete salidas. Tenga en cuenta que en la tabla de verdad, los ltimos seis patrones de entrada (1010 a 1111) no estn asociados con un dgito decimal. Por tanto, son las entradas "ilegales", lo que los resultados pueden recibir un "no me importa" para las filas. Digit Inputs
4-bit numbers B3 0 1 2 3 4 5 6 7 8 9 A b C d E 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 B2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 B1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 B0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 A 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0

Outputs
Segment-drive functions B 0 1 1 1 0 0 0 1 0 0 0 0 0 1 0 C 0 1 0 1 1 1 0 1 0 1 0 0 0 0 0 D 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 E 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 F 0 0 0 0 0 1 1 0 0 0 0 1 1 0 1 G 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0

SISTEMAS DIGITALES II

Problema 12. Completa la tabla de verdad de un codificador de prioridad de tres entradas. Al completar la tabla de verdad, tenga en cuenta que si I3 es un '1 ', no importa lo que I2, I1, I0 o son - la salida codificada ser "11". Esta informacin puede dar lugar a que no le importa en la tabla de verdad, lo que hace que el diseo mucho ms fcil (tenga en cuenta que X se han utilizado en la tabla de verdad para indicar que no se preocupan por las condiciones de entrada). Cuando la tabla de verdad se ha completado, escribir ecuaciones VHDL para definir los circuitos de codificador.

EIN 0 1 1 1

I3 X 1 0 0

I2 X X 1 0

I1 X X X 1

I0 X X X X

GS 0 1 0 0

Y1 0 0 1 1

Y0 0 0 1 0

EOUT 0 1 1 1

SISTEMAS DIGITALES II

1 1

0 0

0 0

0 0

1 0

0 0

0 0

1 0

1 1

CODIGO EN VHDL
library IEEE; use IEEE.STD_LOGIC_1164.all; entity prio_encoder is port( r : in STD_LOGIC_VECTOR(4 downto 1); pcode : out STD_LOGIC_VECTOR(2 downto 0) ); end prio_encoder; architecture arq_when of prio_encoder is begin pcode<="100" when r(4)='1' else "011" when r(3)='1' else "010" when r(2)='1' else "001" when r(1)='1' else "000"; end arq_when;

Problema 13. Completa la tabla de verdad para una palanca de cambios de 4 bits que no tiene entrada de habilitacin, hay entrada de rotacin, dos entradas que determinan si la entrada es para ser desplazado 0, 1, 2, o 3 bits, una entrada de direccin, y una entrada de llenado.

A1 A0

Y3

Y2

Y1

Y0

SISTEMAS DIGITALES II

Problema 14. Completa la tabla de abajo para mostrar los resultados numricos de la aplicacin de la operacin indicada con las caractersticas indicadas. Opcodes son nmeros de seis bits definidos como se muestra a continuacin. R = 1 para rotar, D = 1 para la derecha; F es llenado y A2-A0 define el nmero de bits. Mostrar todo el trabajo para ser elegible para el crdito parcial.

R Input(Base10) 47 96 16 111 63 188 Input(Base2/8-bit) 00101111


01100000 00010000 01101111 00111111 10111100

A2

A1

A0 Output(Base2/8-bit)) 01111000

Op Code 000011 110111 011001 100011 001111 110001

Output(Base10) 188

Problema 15. Modifique slo dos caracteres en el siguiente cdigo para aadir un pedacito de relleno.

SISTEMAS DIGITALES II

entity my_shift is port (din: r, d, f, en: dout: end my_shift;

in std_logic_vector (7 downto 0); in std_logic; out std_logic_vector (7 downto 0));

architecture my_shift_arch of my_shift is begin dout <= 00000000 when en = '0' else din(6 downto 0) & din(7) when (r = '1' and d = '0') else din(0) & din(7 downto 1) when (r = '1' and d = '1') else din(6 downto 0) & '0' when (r = '0' and d = '0') else '0' & din(7 downto 1); end my_shift_arch;
Corregido

3. RECOMENDACIONES SISTEMAS DIGITALES II

Podramos decir que al realizar las conexiones hacia el PLD Cmod- C2 tenemos que conocer de forma clara el datasheet de nuestro dispositivo ya que esta puede ser una de las razones que no funcione nuestro circuito de forma correcta. Tenemos que copilar y ver que el circuito en el programa funcione de forma correcta, especficamente la simulacin, ya que si no copilamos bien el circuito no puede funcionar. Debemos asignar de forma correcta los pines de nuestro PLD C Mod-C2 en el software xilinx. 4. CONCLUSIONES Aprendimos a reconocer y programar en el software XILIXNX de forma adecuada siguiendo todos los pasos necesarios para un correcto funcionamiento del simulado y al grabar en el PLD C Mod C2 no tengamos problemas. Comprendimos para que sirve el TEST BENCH as como su nombre lo dice el banco de pruebas, en donde programamos nuestros tiempos para poder simular en nuestro software xilinx ISE. Adems grabamos de forma correcta la asignacin de pines y conocimos la forma correcta de quemar nuestro programa en el PLD C-Mod C2 . 5. BIBLIOGRAFIA http://vhdlguru.blogspot.com/2010/03/how-to-write-testbench.html ece.wpi.edu/~rjduck/Xilinx VHDL Test Bench Tutorial_2.0.pdf http://www.digilentinc.com/Products/Detail.cfm?Prod=CMOD 6.

PROBLEMA 1_____________________________________________________________________ LIBRARY ieee; USE ieee.std_logic_1164.ALL;

-- Uncomment the following library declaration if using -- arithmetic functions with Signed or Unsigned values --USE ieee.numeric_std.ALL; ENTITY mux_tb IS END mux_tb; ARCHITECTURE behavior OF mux_tb IS -- Component Declaration for the Unit Under Test (UUT)

SISTEMAS DIGITALES II

COMPONENT mux PORT( a : IN std_logic_vector(3 downto 0); b : IN std_logic_vector(3 downto 0); c : IN std_logic_vector(3 downto 0); sel : IN std_logic_vector(1 downto 0); salida : OUT std_logic_vector(3 downto 0) ); END COMPONENT; --Inputs signal a : std_logic_vector(3 downto 0) := (others => '0'); signal b : std_logic_vector(3 downto 0) := (others => '0'); signal c : std_logic_vector(3 downto 0) := (others => '0'); signal sel : std_logic_vector(1 downto 0) := (others => '0'); --Outputs signal salida : std_logic_vector(3 downto 0); -- No clocks detected in port list. Replace <clock> below with -- appropriate port name constant <clock>_period : time := 10 ns; BEGIN -- Instantiate the Unit Under Test (UUT) uut: mux PORT MAP ( a => a, b => b, c => c, sel => sel, salida => salida ); -- Clock process definitions <clock>_process :process SISTEMAS DIGITALES II

begin <clock> <= '0'; wait for <clock>_period/2; <clock> <= '1'; wait for <clock>_period/2; end process;

-- Stimulus process stim_proc: process begin -- hold reset state for 100 ns. wait for 100 ns; wait for <clock>_period*10; insert stimulus here wait; end process; END; PROBLMA 7---------------------------------------------------------------------------------------------------------------library IEEE; use IEEE.STD_LOGIC_1164.ALL; -- Uncomment the following library declaration if using -- arithmetic functions with Signed or Unsigned values --use IEEE.NUMERIC_STD.ALL; -- Uncomment the following library declaration if instantiating -- any Xilinx primitives in this code. --library UNISIM; --use UNISIM.VComponents.all; entity decodificador_3_a_8 is SISTEMAS DIGITALES II

port ( H : in std_logic; S : in std_logic_vector(2 downto 0); D : out std_logic_vector(7 downto 0)); end decodificador_3_a_8; architecture estructural_1 of decodificador_3_a_8 is begin process(S,H) begin case s is when "000" => if H ='1' then D <= "00000001"; else D <= "00000000"; end if; when "001" => if H ='1' then D <= "00000010"; else D <= "00000000"; end if; when "010" => if H ='1' then D <= "00000100"; else D <= "00000000"; end if; when "011" => if H ='1' then D <= "00001000"; SISTEMAS DIGITALES II

else D <= "00000000"; end if; when "100" => if H ='1' then D <= "00010000"; else D <= "00000000"; end if; when "101" => if H ='1' then D <= "00100000"; else D <= "00000000"; end if; when "110" => if H ='1' then D <= "01000000"; else D <= "00000000"; end if; when "111" => if H ='1' then D <= "10000000"; else D <= "00000000"; end if; when others => D <= "00000000"; end case; SISTEMAS DIGITALES II

end process; end estructural_1;

PROBLEMA 6 ----------------------------------------------------------------------------------- Company: -- Engineer: --- Create Date: 10:02:04 04/02/2013 -- Design Name: -- Module Name: p6 - Behavioral -- Project Name: -- Target Devices: -- Tool versions: -- Description: --- Dependencies: --- Revision: -- Revision 0.01 - File Created -- Additional Comments: ----------------------------------------------------------------------------------library IEEE; use IEEE.STD_LOGIC_1164.ALL;

-- Uncomment the following library declaration if using -- arithmetic functions with Signed or Unsigned values --use IEEE.NUMERIC_STD.ALL; SISTEMAS DIGITALES II

-- Uncomment the following library declaration if instantiating -- any Xilinx primitives in this code. --library UNISIM; --use UNISIM.VComponents.all;

entity p6 is Port ( A : in STD_LOGIC_vector(2 downto 0); Y : out STD_LOGIC_vector(7 downto 0)); end p6;

architecture Behavioral of p6 is

begin with A select Y<= "00000001" when "000", "00000010" when "001", "00000100" when "010", "00001000" when "011", "00010000" when "100", "00100000" when "101", "01000000" when "110", "10000000" when "111", "11111111" when others; end Behavioral;

SISTEMAS DIGITALES II

Conclusiones: 1.-Es mejor utilizar el banco pe pruebas para no tener errores al momento de quemar el pld.

Bibliografa http://www.digilentinc.com/Products/Detail.cfm?Prod=CMOD http://es.wikipedia.org/wiki/PLD http://www.digilentinc.com

SISTEMAS DIGITALES II

S-ar putea să vă placă și