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;