データ伝送回路のテストベンチ(信号値と時間の指定)

掲載ページ:86、リスト番号:4.13

【VHDL記述】


library IEEE;

use IEEE.std_logic_1164.all;


entity TESTBENCH_DT_1 is

end TESTBENCH_DT_1;


architecture SIM_DATA of TESTBENCH_DT_1 is


component MULTIPLEXER4

port ( D : in std_logic_vector(3 downto 0);

S : in std_logic_vector(1 downto 0);

Y : out std_logic );

end component;

component DEMULTIPLEXER4

port ( D : in std_logic;

S : in std_logic_vector(1 downto 0);

Y : out std_logic_vector(3 downto 0));

end component;


signal S_Y : std_logic;

signal S_S : std_logic_vector(1 downto 0);

signal S_A, S_B : std_logic_vector(3 downto 0);


begin

M1 : MULTIPLEXER4 port map (S_A, S_S, S_Y);

M2 : DEMULTIPLEXER4 port map (S_Y, S_S, S_B);


-- テストベクトル(信号値と時間の指定による記述)

P1 : process

begin

S_S <= "00"; wait for 10 ns;

S_S <= "01"; wait for 10 ns;

S_S <= "10"; wait for 10 ns;

S_S <= "11"; wait for 10 ns;

end process;

P2 : process

begin

S_A <= "0000"; wait for 40 ns;

S_A <= "0010"; wait for 40 ns;

S_A <= "0100"; wait for 40 ns;

S_A <= "0110"; wait for 40 ns;

S_A <= "1000"; wait for 40 ns;

S_A <= "1001"; wait for 40 ns;

end process;

end SIM_DATA;


configuration CFG_DT_1 of TESTBENCH_DT_1 is

for SIM_DATA

end for;

end CFG_DT_1;

【Verilog-HDL記述】


`timescale 1 ns / 10 ps


module TESTBENCH_DT_1;


reg[ 3 : 0 ] S_A;

wire[ 3 : 0 ] S_B;

reg[ 1 : 0 ] S_S;

wire S_Y;


MULTIPLEXER4 M1 (S_A, S_S, S_Y);

DEMULTIPLEXER4 M2 (S_Y, S_S, S_B);


// テストベクトル(信号値と時間の指定による記述)

always begin

S_S = 2'b00;

#10 S_S = 2'b01;

#10 S_S = 2'b10;

#10 S_S = 2'b11;

#10 ;

end


always begin

S_A = 4'b0000;

#40 S_A = 4'b0010;

#40 S_A = 4'b0100;

#40 S_A = 4'b0110;

#40 S_A = 4'b1000;

#40 S_A = 4'b1001;

#40 ;

end


// シミュレーション結果の表示(システム・タスク)

initial $monitor( $stime, " Y=%b S=%b A=%b B=%b", S_Y, S_S, S_A, S_B);

endmodule

【シミュレーション結果】