dsd lab practical file

31
Q 1:– Design All Logical Gates Using VHDL. Solution: - AND Gate:- Source Code: - -------------------------------------------------- -- AND gate -- two descriptions provided -------------------------------------------------- library ieee; use ieee.std_logic_1164.all; -------------------------------------------------- entity AND_ent is port( x: in std_logic; y: in std_logic; F: out std_logic ); end AND_ent; -------------------------------------------------- architecture AND_behav1 of AND_ent is begin process(x, y) begin -- compare to truth table if ((x='1') and (y='1')) then F <= '1'; else F <= '0'; end if; end process;

Upload: soumya-behera

Post on 06-May-2015

2.092 views

Category:

Education


17 download

DESCRIPTION

Digital System Design Final Practical File!!!3rd year CSE!!!

TRANSCRIPT

Page 1: Dsd lab Practical File

Q 1:– Design All Logical Gates Using VHDL. Solution: - AND Gate:-

Source Code: -

--------------------------------------------------

-- AND gate

-- two descriptions provided

--------------------------------------------------

library ieee;

use ieee.std_logic_1164.all;

--------------------------------------------------

entity AND_ent is

port( x: in std_logic;

y: in std_logic;

F: out std_logic

);

end AND_ent;

--------------------------------------------------

architecture AND_behav1 of AND_ent is

begin

process(x, y)

begin

-- compare to truth table

if ((x='1') and (y='1')) then

F <= '1';

else

F <= '0';

end if;

end process;

Page 2: Dsd lab Practical File

end behav1;

architecture AND_behav2 of AND_ent is

begin

F <= x and y;

end behav2;

Sample Waveform Output: -

OR Gate:- Source Code: -

--------------------------------------

-- OR gate

--

-- two descriptions provided

--------------------------------------

library ieee;

use ieee.std_logic_1164.all;

--------------------------------------

entity OR_ent is

port( x: in std_logic;

y: in std_logic;

F: out std_logic

Page 3: Dsd lab Practical File

);

end OR_ent;

---------------------------------------

architecture OR_arch of OR_ent is

begin

process(x, y)

begin

-- compare to truth table

if ((x='0') and (y='0')) then

F <= '0';

else

F <= '1';

end if;

end process;

end OR_arch;

architecture OR_beh of OR_ent is

begin

F <= x or y;

end OR_beh;

Sample Waveform Output: -

NOT Gate:- Source Code: -

Page 4: Dsd lab Practical File

--------------------------------------

-- NOT gate

--

-- two descriptions provided

--------------------------------------

library ieee;

use ieee.std_logic_1164.all;

--------------------------------------

entity NOT_ent is

port( x: in std_logic;

F: out std_logic

);

end NOT_ent;

---------------------------------------

architecture NOT_arch of NOT_ent is

begin

F <= not x;

end NOT_beh;

Sample Waveform Output: -

NAND Gate:-

Page 5: Dsd lab Practical File

Source Code: -

-----------------------------------------

-- NAND gate

--

-- two descriptions provided

-----------------------------------------

library ieee;

use ieee.std_logic_1164.all;

------------------------------------------

entity NAND_ent is

port( x: in std_logic;

y: in std_logic;

F: out std_logic

);

end NAND_ent;

------------------------------------------

architecture behv1 of NAND_ent is

begin

process(x, y)

begin

-- compare to truth table

if (x='1' and y='1') then

F <= '0';

else

F <= '1';

end if;

end process;

end behv1;

Page 6: Dsd lab Practical File

-----------------------------------------

architecture behv2 of NAND_ent is

begin

F <= x nand y;

end behv2;

Sample Waveform Output: -

NOR Gate:- Source Code: -

-----------------------------------------

-- NOR gate

--

-- two descriptions provided

-----------------------------------------

library ieee;

use ieee.std_logic_1164.all;

-----------------------------------------

entity NOR_ent is

port( x: in std_logic;

y: in std_logic;

F: out std_logic

);

Page 7: Dsd lab Practical File

end NOR_ent;

------------------------------------------

architecture behv1 of NOR_ent is

begin

process(x, y)

begin

-- compare to truth table

if (x='0' and y='0') then

F <= '1';

else

F <= '0';

end if;

end process;

end behv1;

architecture behv2 of NOR_ent is

begin

F <= x nor y;

end behv2;

Sample Waveform Output: -

XOR Gate:-

Page 8: Dsd lab Practical File

Source Code: -

--------------------------------------

-- XOR gate

--

-- two descriptions provided

--------------------------------------

library ieee;

use ieee.std_logic_1164.all;

--------------------------------------

entity XOR_ent is

port( x: in std_logic;

y: in std_logic;

F: out std_logic

);

end XOR_ent;

--------------------------------------

architecture behv1 of XOR_ent is

begin

process(x, y)

begin

-- compare to truth table

if (x/=y) then

F <= '1';

else

F <= '0';

end if;

end process;

Page 9: Dsd lab Practical File

end behv1;

architecture behv2 of XOR_ent is

begin

F <= x xor y;

end behv2;

Sample Waveform Output: -

XNOR Gate:- Source Code: -

--------------------------------------

-- XOR gate

--

-- two descriptions provided

--------------------------------------

library ieee;

use ieee.std_logic_1164.all;

--------------------------------------

entity XNOR_ent is

port( x: in std_logic;

y: in std_logic;

F: out std_logic

Page 10: Dsd lab Practical File

);

end XNOR_ent;

---------------------------------------

architecture behv1 of XNOR_ent is

begin

process(x, y)

begin

-- compare to truth table

if (x/=y) then

F <= '0';

else

F <= '1';

end if;

end process;

end behv1;

architecture behv2 of XNOR_ent is

begin

F <= x xnor y;

end behv2;

---------------------------------------

Sample Waveform Output: -

Page 11: Dsd lab Practical File

Q 2:– Write VHDL Programs for the following and check simulation – 1. Half Adder 2. Full Adder Solution: - Half Adder:-

Source Code: -

-- =============================================================================

-- file name is : ha (ha=half adder)

-- Author : Soumya

-- =============================================================================

library ieee;

use ieee.std_logic_1164.ALL;

use ieee.std_logic_unsigned.ALL;

entity ha is

port (X : in std_logic;

Y : in std_logic;

Z : out std_logic; -- sum out of X+Y

C : out std_logic -- carry out from X+Y

);

end ha;

-- =============================================================================

-- =============================================================================

architecture rtl of ha is

-- =============================================================================

begin

Z <= (X XOR Y);

C <= X AND Y; -- the logical operator "AND" and "XOR" is defined in VHDL.

end rtl;

Sample Waveform Output: -

Full Adder:- Source Code: -

-- =============================================================================

-- file name is : fa (fa=full adder)

-- Author : Soumya

-- =============================================================================

Page 12: Dsd lab Practical File

library ieee;

use ieee.std_logic_1164.ALL; -- can be different dependent on tool used.

use ieee.std_logic_unsigned.ALL; -- can be different dependent on tool used.

entity fa is

port (a : in std_logic;

b : in std_logic;

c_in : in std_logic;

sum : out std_logic; -- sum out of X+Y

c_out : out std_logic -- carry out

);

end fa;

-- =============================================================================

-- =============================================================================

architecture rtl of fa is

-- Define internal signals

signal sum_low : std_logic;

signal c_low : std_logic;

signal c_high : std_logic;

-- Define the entity of the half adder to instansiate

component ha -- "ha" must be same name as used in the entity for the file

port (X : in std_logic;

Y : in std_logic;

Z : out std_logic; -- sum out of X+Y

C : out std_logic -- carry out

);

end component; --------- end of entity for ha ----------

-- =============================================================================

begin

ha_low : ha

port map (

-- ha-side fa-side

X => a,

Y => b,

Z => sum_low,

C => c_low

); --------- end of port map for "ha_low" ----------

ha_high : ha

port map (

-- ha-side fa-side

X => sum_low,

Y => c_in,

Z => sum,

C => c_high

); --------- end of port map for "ha_high" ----------

c_out <= (c_low OR c_high);

end rtl;

Page 13: Dsd lab Practical File

Sample Waveform Output: -

Page 14: Dsd lab Practical File

Q 3:– Write VHDL Programs for the following and check simulation – 1. Multiplexer 2. Demultiplexer Solution: - Multiplexer (4 X 1):-

Source Code: -

-------------------------------------------------

-- VHDL code for 4:1 multiplexor

-- Multiplexor is a device to select different

-- inputs to outputs. we use 3 bits vector to

-- describe its I/O ports

-------------------------------------------------

library ieee;

use ieee.std_logic_1164.all;

-------------------------------------------------

entity Mux is

port( I3: in std_logic_vector(2 downto 0);

I2: in std_logic_vector(2 downto 0);

I1: in std_logic_vector(2 downto 0);

I0: in std_logic_vector(2 downto 0);

S: in std_logic_vector(1 downto 0);

O: out std_logic_vector(2 downto 0)

);

end Mux;

-------------------------------------------------

architecture behv1 of Mux is

begin

process(I3,I2,I1,I0,S)

begin

Page 15: Dsd lab Practical File

-- use case statement

case S is

when "00" => O <= I0;

when "01" => O <= I1;

when "10" => O <= I2;

when "11" => O <= I3;

when others => O <= "ZZZ";

end case;

end process;

end behv1;

architecture behv2 of Mux is

begin

-- use when.. else statement

O <= I0 when S="00" else

I1 when S="01" else

I2 when S="10" else

I3 when S="11" else

"ZZZ";

end behv2;

Sample Waveform Output: -

Page 16: Dsd lab Practical File

Demultiplexer (1 X 4):- Source Code: -

library ieee;

use ieee.std_logic_1164.all;

entity Demux_4_to_1 is

port( E : in std_logic; -- the signal source

S0, S1 : in std_logic; -- the selector switches

D0, D1, D2, D3 : out std_logic);-- the output data lines

end Demux_4_to_1;

--

architecture Func of Demux_4_to_1 is

component andGate is --import AND Gate entity

port( A, B, C : in std_logic;

F : out std_logic);

end component;

component notGate is --import NOT Gate entity

port( inPort : in std_logic;

outPort : out std_logic);

Page 17: Dsd lab Practical File

end component;

signal invOut0, invOut1 : std_logic;

begin

--Just like the real circuit, there are

--four components: G1 to G4

GI1: notGate port map(S0, invOut0);

GI2: notGate port map(S1, invOut1);

GA1: andGate port map(E, invOut1, invOut0, D0); -- D0

GA2: andGate port map(E, S0, invOut1, D1); -- D1

GA3: andGate port map(E, invOut0, S1, D2); -- D2

GA4: andGate port map(E, S0, S1, D3); -- D3

end Func;

---------------------------------------------------------END

---------------------------------------------------------END

Sample Waveform Output: -

Page 18: Dsd lab Practical File

Q 4:– Write VHDL Programs for the following and check simulation – 1. Decoder 2. Encoder Solution: - DECODER (2 to 4 line):-

Source Code: -

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

entity decoder is

port( input : in std_logic_vector(2 downto 0); --3 bit input

output : out std_logic_vector(7 downto 0) -- 8 bit ouput

);

end decoder;

architecture arch 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));

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 arch;

Sample Waveform Output: -

Page 19: Dsd lab Practical File

ENCODER (4 Input Priority Encoder):- Source Code: -

library ieee;

use ieee.std_logic_1164.all;

entity Encoder_8x3 is

port(d0,d1,d2,d3,d4,d5,d6,d7:in std_logic;

a0,a1,a2:out std_logic);

end Encoder_8x3;

architecture arch of Encoder_8x3 is

begin

a2<= d4 or d5 or d6 or d7;

a1<= d2 or d3 or d6 or d7;

a0<= d1 or d3 or d5 or d7;

end arch;

Sample Waveform Output: -

Page 20: Dsd lab Practical File
Page 21: Dsd lab Practical File

Q 5:– Write a VHDL Program for a Comparator and check the simulation. Solution: - COMPARATOR:-

Source Code: -

LIBRARY ieee ;

USE ieee.std_logic_1164.all ;

USE ieee.std_logic_arith.all ;

ENTITY compare IS

PORT ( A, B : IN SIGNED(3 DOWNTO 0) ;

AeqB, AgtB, AltB : OUT STD_LOGIC ) ;

END compare ;

ARCHITECTURE Behavior OF compare IS

BEGIN

AeqB <= '1' WHEN A = B ELSE '0' ;

AgtB <= '1' WHEN A > B ELSE '0' ;

AltB <= '1' WHEN A < B ELSE '0' ;

END Behavior ;

Sample Waveform Output: -

Page 22: Dsd lab Practical File

Q 6:– Write a VHDL Program for a Code Convertor and check the simulation. Solution: - BCD to BINARY CODE CONVERTOR:-

Source Code: - library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

entity BCD2BIN is

Port ( bcd : in STD_LOGIC_VECTOR (4 downto 0);

binary : out STD_LOGIC_VECTOR (3 downto 0));

end BCD2BIN;

architecture Behavioral of BCD2BIN is

begin

process (bcd)

begin

case bcd is

when "00000" => binary <= "0000";

when "00001" => binary <= "0001";

when "00010" => binary <= "0010";

when "00011" => binary <= "0011";

when "00100" => binary <= "0100";

when "00101" => binary <= "0101";

when "00110" => binary <= "0110";

when "00111" => binary <= "0111";

when "01000" => binary <= "1000";

when "01001" => binary <= "1001";

when "10000" => binary <= "1010";

when "10001" => binary <= "1011";

when "10010" => binary <= "1100";

when "10011" => binary <= "1101";

when "10100" => binary <= "1110";

when "10101" => binary <= "1111";

Page 23: Dsd lab Practical File

when others => binary <= "XXXX";

end case;

end process;

end Behavioral;

Sample Waveform Output: -

Page 24: Dsd lab Practical File

Q 7:– Write a VHDL Program for a Flip-Flop and check the simulation. Solution: - JK FLIP FLOP:-

Source Code: - library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

entity jk is

Port ( J : in STD_LOGIC;

K : in STD_LOGIC;

clock : in STD_LOGIC;

reset : in STD_LOGIC;

Q : out STD_LOGIC;

Qbar : out STD_LOGIC);

end jk;

architecture Behavioral of jk is

signal state: std_logic;

signal input: std_logic_vector(1 downto 0);

begin

input <= J & K;

p: process(clock, reset) is

begin

if (reset='1') then

state <= '0';

elsif (rising_edge(clock)) then

case (input) is

when "11" =>

state <= not state;

when "10" =>

state <= '1';

when "01" =>

state <= '0';

Page 25: Dsd lab Practical File

when others =>

null;

end case;

end if;

end process;

Q <= state;

Qbar <= not state;

end Behavioral;

Sample Waveform Output: -

Page 26: Dsd lab Practical File

Q 8:– Write a VHDL Program for a Counter and check the simulation. Solution: - N BIT COUNTER:-

Source Code: - ---------------------------------------------------- -- VHDL code for n-bit counter -- -- this is the behavior description of n-bit counter -- another way can be used is FSM model. ---------------------------------------------------- library ieee ; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; ---------------------------------------------------- entity counter is generic(n: natural :=2); port( clock: in std_logic; clear: in std_logic; count: in std_logic; Q: out std_logic_vector(n-1 downto 0) ); end counter; ---------------------------------------------------- architecture behv of counter is signal Pre_Q: std_logic_vector(n-1 downto 0); begin -- behavior describe the counter process(clock, count, clear) begin if clear = '1' then Pre_Q <= Pre_Q - Pre_Q; elsif (clock='1' and clock'event) then if count = '1' then Pre_Q <= Pre_Q + 1; end if; end if; end process; -- concurrent assignment statement Q <= Pre_Q; end behv;

Sample Waveform Output: -

Page 27: Dsd lab Practical File
Page 28: Dsd lab Practical File

Q 9:– Write VHDL Programs for the following and check simulation – 1. Register 2. Shift Register Solution: - N-Bit Register:-

Source Code: - --------------------------------------------------- -- n-bit Register (ESD book figure 2.6) -- -- KEY WORD: concurrent, generic and range --------------------------------------------------- library ieee ; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; --------------------------------------------------- entity reg is generic(n: natural :=2); port( I: in std_logic_vector(n-1 downto 0); clock: in std_logic; load: in std_logic; clear: in std_logic; Q: out std_logic_vector(n-1 downto 0) ); end reg; ---------------------------------------------------- architecture behv of reg is signal Q_tmp: std_logic_vector(n-1 downto 0); begin process(I, clock, load, clear) begin if clear = '0' then -- use 'range in signal assigment Q_tmp <= (Q_tmp'range => '0'); elsif (clock='1' and clock'event) then if load = '1' then Q_tmp <= I; end if; end if; end process;

Page 29: Dsd lab Practical File

-- concurrent statement Q <= Q_tmp; end behv; ---------------------------------------------------

Sample Waveform Output: -

3-Bit Shift Register:-

Source Code: - --------------------------------------------------- -- 3-bit Shift-Register/Shifter -- -- reset is ignored according to the figure --------------------------------------------------- library ieee ; use ieee.std_logic_1164.all; --------------------------------------------------- entity shift_reg is port( I: in std_logic; clock: in std_logic; shift: in std_logic; Q: out std_logic ); end shift_reg; --------------------------------------------------- architecture behv of shift_reg is -- initialize the declared signal signal S: std_logic_vector(2 downto 0):="111"; begin

Page 30: Dsd lab Practical File

process(I, clock, shift, S) begin -- everything happens upon the clock changing if clock'event and clock='1' then if shift = '1' then S <= I & S(2 downto 1); end if; end if; end process; -- concurrent assignment Q <= S(0); end behv;

Sample Waveform Output: -

Page 31: Dsd lab Practical File

PRACTICAL FILE

DIGITAL SYSTEMDIGITAL SYSTEMDIGITAL SYSTEMDIGITAL SYSTEM

DESIGN LABDESIGN LABDESIGN LABDESIGN LAB

Softwares Used – 1. Xilinx 13.4 2. ActiveHDL 7.2 SE

Submitted To:- Submitted By:- Mr. Manoj Ahlawat Soumya S. Behera Asst. Professor 1826

6th Semester, CSE UIET, Mdu, Rohtak