Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vhdl 位运算符测试台_Vhdl - Fatal编程技术网

Vhdl 位运算符测试台

Vhdl 位运算符测试台,vhdl,Vhdl,有人能帮我为下面的程序创建一个测试台程序吗 library ieee; use ieee.std_logic_1164.all; entity bitwise is port( a,b : in std_logic_vector(4 downto 0); result1, result2, result3, result4, result5, result6 : out std_logic_vector(4 downto 0)); end bitwise

有人能帮我为下面的程序创建一个测试台程序吗

library ieee; 
use ieee.std_logic_1164.all;  

entity bitwise is 
  port( a,b    : in std_logic_vector(4 downto 0);  
        result1, result2, result3, result4, result5, result6 : out std_logic_vector(4 downto 0)); 
end bitwise;  

architecture arch of bitwise is 
begin  
  result1   <= a and b; 
  result2   <= a or b;
  result3   <= a xor b;
  result4   <= not a;
  result5   <= to_stdlogicvector(to_bitvector(a) sll 1);
  result6   <= to_stdlogicvector(to_bitvector(a) srl 1);
end arch;
ieee库;
使用ieee.std_logic_1164.all;
按位实体是
端口(a,b:标准逻辑向量(4到0);
结果1、结果2、结果3、结果4、结果5、结果6:输出标准逻辑向量(4到0);
按位结束;
按位的建筑拱门是
开始

结果1正如其他人在评论中所说,您应该自己提供一些意见。你尝试过什么,为什么没有成功?如果您很难找到要尝试的内容以及如何开始,您可以从以下步骤开始。如果你没有成功,你可以编辑你的问题或发布一个新的问题,这样其他成员可以帮助你

使用for循环迭代每个可能性。手工编写所有可能的测试值会让人筋疲力尽

  • 因为您有两个输入,所以在流程中为
  • 循环使用两个嵌套的
    。一个迭代输入
    a
    的值,另一个迭代
    b
    的值。for循环是如何编写的

  • 在循环内部,为信号分配值
    tb_a
    tb_b
    。循环索引是整数,因此在赋值之前必须将它们转换为
    std\u logic\u vector
    类型。有关VHDL转换的简短教程

  • 使用
    等待
    在每次迭代后添加一些延迟

  • 例如,使用
    报告
    将输出值打印到模拟器控制台,或者您甚至可以使用
    断言
    语句


  • 看起来像是学校的作业。你试过什么?你试过自己写一本吗?有什么问题吗?@还没有,但我在想,既然有这么多的输入,我是应该做一个循环还是只放一些随机数。但是,由于我在同一个文件中编写了所有运算符,我不确定如何启动中间部分这似乎是一个功能覆盖率问题,请查找OSVVM或UVVM,这应该会有所帮助:)也可能会更容易
    LIBRARY ieee;
    USE ieee.std_logic_1164.all;
    
      entity test_bitwise is
         end test_bitwise;
    
      architecture behavior of test_bitwise is
        component bitwise;
           port( a,b    : in std_logic_vector(4 downto 0);  
            result1, result2, result3, result4 : out std_logic_vector(4 downto 0)); 
        end component;
    
        --INPUTS
        signal tb_a  : std_logic_vector(4 downto 0) := (others => '0');
         `signal tb_b  : std_logic_vector(4 downto 0) := (others => '0');
    
        --OUTPUTS
       signal tb_result1 : std_logic_vector(7 downto 0);
         signal tb_result2 : std_logic_vector(7 downto 0);
         signal tb_result3 : std_logic_vector(7 downto 0);
         signal tb_result4 : std_logic_vector(7 downto 0);  
    
        begin
          -- INSTANTIATE THE UNIT UNDER TEST (UUT)
          U1_Test : entity work.test_bitwise(behavioral)
            port map (a         => tb_a,
                      b             => tb_b,
                                  result1   <= tb_result1,
                                  result2   <= tb_result2,
                                  result3   <= tb_result3,
                                  result4   <= tb_result4);
    
                  --STIMULUS PROCESS
                    stim_proc : process
          begin
    
            -- CODE HERE
    
                end process;
        end behavior;