⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 82_output_shifter_stim.vhd

📁 北京里工大学ASIC设计研究所的100个 VHDL程序设计例子
💻 VHD
字号:
--------------------------------------------------------------------------------
--
--   AM2901 Benchmark - test patterns for output shifter
--
-- Source: AMD data book
--
--------------------------------------------------------------------------------

library l2901_lib;
use l2901_lib.TYPES.all;
use l2901_lib.MVL7_functions.all;

entity out_and_shift_E is
end;

architecture out_and_shift_A of out_and_shift_E is

 component output_and_shifter_inst
  port (
         I :  in MVL7_vector(8 downto 0);
         A, F, Q : in MVL7_vector(3 downto 0);
         OEbar : in MVL7;
         Y :  out MVL7_vector(3 downto 0);
         RAM0, RAM3, Q0, Q3 : out MVL7
       );
 end component;

 signal I :   MVL7_vector(8 downto 0);
 signal A, F, Q :  MVL7_vector(3 downto 0);
 signal OEbar : MVL7;
 signal Y :   MVL7_vector(3 downto 0);
 signal RAM0, RAM3, Q0, Q3 :  MVL7;

 for all : output_and_shifter_inst use entity 
                          work.output_and_shifter(output_and_shifter);

begin

output_and_shifter_inst1 : output_and_shifter_inst port map(
                                                            I,
                                                            A, F, Q,
                                                            OEbar,
                                                            Y ,
                                                            RAM0, RAM3, Q0, Q3);

process

begin

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

F <= "0101";             --#1						
A <= "1110";
Q <= "0000";           -- Y gets F.
I <= "000000000";
OEBAR <= '0';

wait for 1 ns;

assert (Y = "0101")
report
"Assert a1 : < Y /= '0101'> "
severity warning;

assert (RAM0 = 'Z')
report
"Assert a1 : < RAM0 /= 'Z'> "
severity warning;

assert (RAM3 = 'Z')
report
"Assert a1 : < RAM3 /= 'Z'> "
severity warning;

assert (Q0 = 'Z')
report
"Assert a1 : < Q0 /= 'Z'> "
severity warning;

assert (Q3 = 'Z')
report
"Assert a1 : < Q3 /= 'Z'> "
severity warning;

wait for 1 ns;

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

F <= "0101";             --#2
A <= "0111";
Q <= "0000";            -- Y gets tri-stated.
I <= "000000000";
OEBAR <= '1';

wait for 1 ns;

assert (Y = "ZZZZ")
report
"Assert b1 : < Y /= 'ZZZZ'> "
severity warning;

assert (RAM0 = 'Z')
report
"Assert b1 : < RAM0 /= 'Z'> "
severity warning;

assert (RAM3 = 'Z')
report
"Assert b1 : < RAM3 /= 'Z'> "
severity warning;

assert (Q0 = 'Z')
report
"Assert b1 : < Q0 /= 'Z'> "
severity warning;

assert (Q3 = 'Z')
report
"Assert b1 : < Q3 /= 'Z'> "
severity warning;

wait for 1 ns;

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

F <= "1110";             --#3
A <= "0110";
Q <= "0000";           -- Y gets F.
I <= "001000000";
OEBAR <= '0';

wait for 1 ns;

assert (Y = "1110")
report
"Assert c1 : < Y /= '1110'> "
severity warning;

assert (RAM0 = 'Z')
report
"Assert c1 : < RAM0 /= 'Z'> "
severity warning;

assert (RAM3 = 'Z')
report
"Assert c1 : < RAM3 /= 'Z'> "
severity warning;

assert (Q0 = 'Z')
report
"Assert c1 : < Q0 /= 'Z'> "
severity warning;

assert (Q3 = 'Z')
report
"Assert c1 : < Q3 /= 'Z'> "
severity warning;

wait for 1 ns;

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

F <= "1110";             --#4
A <= "0110";
Q <= "0000";           -- Y gets A.
I <= "010000000";
OEBAR <= '0';

wait for 1 ns;

assert (Y = "0110")
report
"Assert d1 : < Y /= '0110'> "
severity warning;

assert (RAM0 = 'Z')
report
"Assert d1 : < RAM0 /= 'Z'> "
severity warning;

assert (RAM3 = 'Z')
report
"Assert d1 : < RAM3 /= 'Z'> "
severity warning;

assert (Q0 = 'Z')
report
"Assert d1 : < Q0 /= 'Z'> "
severity warning;

assert (Q3 = 'Z')
report
"Assert d1 : < Q3 /= 'Z'> "
severity warning;

wait for 1 ns;

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

F <= "1110";             --#5						
A <= "0111";
Q <= "0000";           -- Y gets F.
I <= "011000000";
OEBAR <= '0';

wait for 1 ns;

assert (Y = "1110")
report
"Assert e1 : < Y /= '1110'> "
severity warning;

assert (RAM0 = 'Z')
report
"Assert e1 : < RAM0 /= 'Z'> "
severity warning;

assert (RAM3 = 'Z')
report
"Assert e1 : < RAM3 /= 'Z'> "
severity warning;

assert (Q0 = 'Z')
report
"Assert e1 : < Q0 /= 'Z'> "
severity warning;

assert (Q3 = 'Z')
report
"Assert e1 : < Q3 /= 'Z'> "
severity warning;

wait for 1 ns;

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

F <= "1001";             --#6
A <= "1000";
Q <= "0100";           -- Y gets F. RAM0 gets F(0). Q0 gets Q(0)
I <= "100000000";
OEBAR <= '0';

wait for 1 ns;

assert (Y = "1001")
report
"Assert f1 : < Y /= '1001'> "
severity warning;

assert (RAM0 = '1')
report
"Assert f1 : < RAM0 /= '1'> "
severity warning;

assert (RAM3 = 'Z')
report
"Assert f1 : < RAM3 /= 'Z'> "
severity warning;

assert (Q0 = '0')
report
"Assert f1 : < Q0 /= '0'> "
severity warning;

assert (Q3 = 'Z')
report
"Assert f1 : < Q3 /= 'Z'> "
severity warning;

wait for 1 ns;

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

F <= "0110";             --#7
A <= "1110";
Q <= "1101";    -- Y gets F. RAM0 gets F(0). Q0 gets Q(0)
I <= "101000000";
OEBAR <= '0';

wait for 1 ns;

assert (Y = "0110")
report
"Assert g1 : < Y /= '0110'> "
severity warning;

assert (RAM0 = '0')
report
"Assert g1 : < RAM0 /= '0'> "
severity warning;

assert (RAM3 = 'Z')
report
"Assert g1 : < RAM3 /= 'Z'> "
severity warning;

assert (Q0 = '1')
report
"Assert g1 : < Q0 /= '1'> "
severity warning;

assert (Q3 = 'Z')
report
"Assert g1 : < Q3 /= 'Z'> "
severity warning;

wait for 1 ns;

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

F <= "0100";             --#8						
A <= "0010";
Q <= "1000";         -- Y gets F. RAM3 gets F(3). Q3 gets Q(3)
I <= "110000000";
OEBAR <= '0';

wait for 1 ns;

assert (Y = "0100")
report
"Assert h1 : < Y /= '0100'> "
severity warning;

assert (RAM0 = 'Z')
report
"Assert h1 : < RAM0 /= 'Z'> "
severity warning;

assert (RAM3 = '0')
report
"Assert h1 : < RAM3 /= '0'> "
severity warning;

assert (Q0 = 'Z')
report
"Assert h1 : < Q0 /= 'Z'> "
severity warning;

assert (Q3 = '1')
report
"Assert h1 : < Q3 /= '1'> "
severity warning;

wait for 1 ns;

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

F <= "0001";             --#9
A <= "1100";
Q <= "1000";        -- Y gets F. RAM3 gets F(3). Q3 gets Q(3)
I <= "111000000";
OEBAR <= '0';

wait for 1 ns;

assert (Y = "0001")
report
"Assert i1 : < Y /= '0001'> "
severity warning;

assert (RAM0 = 'Z')
report
"Assert i1 : < RAM0 /= 'Z'> "
severity warning;

assert (RAM3 = '0')
report
"Assert i1 : < RAM3 /= '0'> "
severity warning;

assert (Q0 = 'Z')
report
"Assert i1 : < Q0 /= 'Z'> "
severity warning;

assert (Q3 = '1')
report
"Assert i1 : < Q3 /= '1'> "
severity warning;

wait for 1 ns;

assert false
report "---End of Simulation---"
severity error;

-------------------------------------------------------------------------
end process;

end out_and_shift_A;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -