lab12

20
Problem 2 tb ---------------------------------------------------------------------- ---------- -- Company: -- Engineer: -- -- Create Date: 18:35:37 04/17/2014 -- Design Name: -- Module Name: H:/spring 2014/lab12/problem2tb.vhd -- Project Name: lab12 -- Target Device: -- Tool versions: -- Description: --

Upload: nawinnawmu1026

Post on 13-May-2017

212 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: lab12

Problem 2 tb

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

-- Company:

-- Engineer:

--

-- Create Date: 18:35:37 04/17/2014

-- Design Name:

-- Module Name: H:/spring 2014/lab12/problem2tb.vhd

-- Project Name: lab12

-- Target Device:

-- Tool versions:

-- Description:

--

-- VHDL Test Bench Created by ISE for module: problem2

--

Page 2: lab12

-- Dependencies:

--

-- Revision:

-- Revision 0.01 - File Created

-- Additional Comments:

--

-- Notes:

-- This testbench has been automatically generated using types std_logic and

-- std_logic_vector for the ports of the unit under test. Xilinx recommends

-- that these types always be used for the top-level I/O of a design in order

-- to guarantee that the testbench will bind correctly to the post-implementation

-- simulation model.

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

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;

Page 3: lab12

ENTITY problem2tb IS

END problem2tb;

ARCHITECTURE behavior OF problem2tb IS

-- Component Declaration for the Unit Under Test (UUT)

COMPONENT problem2

PORT(

clk : IN std_logic;

rst : IN std_logic;

tc : OUT std_logic;

Page 4: lab12

B : INOUT std_logic_vector(3 downto 0)

);

END COMPONENT;

--Inputs

signal clk : std_logic := '0';

signal rst : std_logic := '0';

--BiDirs

signal B : std_logic_vector(3 downto 0);

--Outputs

signal tc : std_logic;

-- Clock period definitions

Page 5: lab12

constant clk_period : time := 10 ns;

BEGIN

-- Instantiate the Unit Under Test (UUT)

uut: problem2 PORT MAP (

clk => clk,

rst => rst,

tc => tc,

B => B

);

-- Clock process definitions

clk_process :process

Page 6: lab12

begin

clk <= '0';

wait for clk_period/2;

clk <= '1';

wait for clk_period/2;

end process;

-- Stimulus process

stim_proc: process

begin

-- hold reset state for 100 ns.

rst <= '1';

Page 7: lab12

wait for 10 ns;

rst <= '0';

-- insert stimulus here

wait;

end process;

END;

Problem 2 vhd

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

-- Company:

-- Engineer:

--

-- Create Date: 18:34:42 04/17/2014

-- Design Name:

-- Module Name: problem2 - Behavioral

-- Project Name:

-- Target Devices:

-- Tool versions:

-- Description:

Page 8: lab12

--

-- Dependencies:

--

-- Revision:

-- Revision 0.01 - File Created

-- Additional Comments:

--

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

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.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.

Page 9: lab12

--library UNISIM;

--use UNISIM.VComponents.all;

entity problem2 is

Port ( clk : in STD_LOGIC;

rst : in STD_LOGIC;

tc : out STD_LOGIC;

B : inout STD_LOGIC_VECTOR (3 downto 0));

end problem2;

architecture Behavioral of problem2 is

begin

process (clk, rst)

begin

Page 10: lab12

if rst = '1' then B <= "0000";

elsif (clk'event and clk='1') then

B <= B + 1;

if (B = "1110") then tc<='1';

else tc<='0';

end if;

end if;

end process;

end Behavioral;

Page 11: lab12

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

-- Company:

-- Engineer:

--

-- Create Date: 19:02:44 04/17/2014

-- Design Name:

-- Module Name: problem1 - Behavioral

-- Project Name:

-- Target Devices:

-- Tool versions:

-- Description:

--

-- Dependencies:

--

-- Revision:

-- Revision 0.01 - File Created

-- Additional Comments:

Page 12: lab12

--

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

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 problem1 is

Port ( cen : in STD_LOGIC;

clk : in STD_LOGIC;

rst : in STD_LOGIC;

b: inout STD_lOGIC_VECTOR (3 downto 0));

end problem1;

architecture Behavioral of problem1 is

begin

Page 13: lab12

process (clk,rst)

begin

if rst='1' then b<="0000";

elsif (cen = '1') then

if(clk 'event and clk='1') then

b(3)<= ((b(3) and not b(1)) or (b(3) and not b(2)) or (b(3) and b(1) and not b(0)) or (not b(3) and b(2) and b(1) and b(0))) ;

b(2)<= ((b(2) and not b(0)) or (b(2) and not b(1)) or (b(0) and b(1) and not b(2))) ;

b(1)<= (b(1) xor b(0)) ;

b(0)<= not b(0) ;

end if;

end if;

end process;

end Behavioral;

vhdl tb

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

-- Company:

-- Engineer:

--

-- Create Date: 19:34:13 04/17/2014

-- Design Name:

-- Module Name: H:/spring 2014/lab12/tb1-2.vhd

-- Project Name: lab12

Page 14: lab12

-- Target Device:

-- Tool versions:

-- Description:

--

-- VHDL Test Bench Created by ISE for module: problem1

--

-- Dependencies:

--

-- Revision:

-- Revision 0.01 - File Created

-- Additional Comments:

--

-- Notes:

-- This testbench has been automatically generated using types std_logic and

-- std_logic_vector for the ports of the unit under test. Xilinx recommends

-- that these types always be used for the top-level I/O of a design in order

-- to guarantee that the testbench will bind correctly to the post-implementation

-- simulation model.

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

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;

Page 15: lab12

ENTITY tb1 IS

END tb1;

ARCHITECTURE behavior OF tb1 IS

-- Component Declaration for the Unit Under Test (UUT)

COMPONENT problem1

PORT(

cen : IN std_logic;

clk : IN std_logic;

rst : IN std_logic;

b : INOUT std_logic_vector(3 downto 0)

);

END COMPONENT;

--Inputs

signal cen : std_logic := '1';

signal clk : std_logic := '0';

signal rst : std_logic := '0';

--BiDirs

signal b : std_logic_vector(3 downto 0);

Page 16: lab12

BEGIN

-- Instantiate the Unit Under Test (UUT)

uut: problem1 PORT MAP (

cen => cen,

clk => clk,

rst => rst,

b => b

);

-- Stimulus process

stim_proc: process

begin

rst<='1';

clk<='0';

wait for 10 ns;

clk<='1';

wait for 10 ns;

Page 17: lab12

clk<='0';

wait for 10 ns;

rst<='0';

clk<='1';

wait for 10 ns;

clk<='0';

wait for 10 ns;

clk<='1';

wait for 10 ns;

clk<='0';

wait for 10 ns;

clk<='1';

wait for 10 ns;

clk<='0';

wait for 10 ns;

clk<='1';

wait for 10 ns;

clk<='0';

wait for 10 ns;

clk<='1';

wait for 10 ns;

Page 18: lab12

clk<='0';

wait for 10 ns;

clk<='1';

wait for 10 ns;

clk<='0';

wait for 10 ns;

clk<='1';

wait for 10 ns;

clk<='0';

wait for 10 ns;

clk<='1';

wait for 10 ns;

clk<='0';

wait for 10 ns;

clk<='1';

wait for 10 ns;

wait;

end process;

Page 19: lab12

END;