VHDL 信号分配没有明显的原因不起作用
Posted
技术标签:
【中文标题】VHDL 信号分配没有明显的原因不起作用【英文标题】:VHDL signal assigement doesnt work for no apparent reason 【发布时间】:2015-08-06 14:38:19 【问题描述】:我在我的测试平台中为一个简单的 2out/1in reg 文件实体编写了这个过程,这里是测试平台的相关部分: (注意 - 这些信号是 std_logic_vector(X downto 0))
input : process is
begin
wait for 30 ns;
input_adr1 <= "00000";
input_adr3 <= "00000";
input_data3 <= "00000000000000000000000000000000";
input_en3 <= '1';
wait for 10 ns;
input_en3 <= '0';
wait for 10 ns;
input_adr1 <= "00001";
input_adr3 <= "00001";
input_data3 <= "00000000000000000000000000000001";
input_en3 <= '1';
wait for 10 ns;
input_en3 <= '0';
wait for 10 ns;
input_adr1 <= "00010";
input_adr3 <= "00010";
input_data3 <= "00000000000000000000000000000010";
input_en3 <= '1';
wait for 10 ns;
input_en3 <= '0';
wait for 10 ns;
wait;
end process input;
但是,当我转到 ModelSim 检查波形时,信号 input_data3
永远不会改变 - 即使我在顺序代码中为其分配了值 0000、0001、0002(十六进制)。请注意,input_en3
、input_adr3
信号都表现正常。检查它:
drivers input_data3
Drivers for /procesor_tstbnch/input_data3(31:0):
U : Signal /procesor_tstbnch/input_data3(31)
0 : Driver /procesor_tstbnch/input
U : Element /procesor_tstbnch/register_file/in_data3(31)
U : Signal /procesor_tstbnch/input_data3(30)
0 : Driver /procesor_tstbnch/input
U : Element /procesor_tstbnch/register_file/in_data3(30)
U : Signal /procesor_tstbnch/input_data3(29)
0 : Driver /procesor_tstbnch/input
U : Element /procesor_tstbnch/register_file/in_data3(29)
U : Signal /procesor_tstbnch/input_data3(28)
0 : Driver /procesor_tstbnch/input
U : Element /procesor_tstbnch/register_file/in_data3(28)
U : Signal /procesor_tstbnch/input_data3(27)
0 : Driver /procesor_tstbnch/input
U : Element /procesor_tstbnch/register_file/in_data3(27)
U : Signal /procesor_tstbnch/input_data3(26)
0 : Driver /procesor_tstbnch/input
U : Element /procesor_tstbnch/register_file/in_data3(26)
U : Signal /procesor_tstbnch/input_data3(25)
0 : Driver /procesor_tstbnch/input
U : Element /procesor_tstbnch/register_file/in_data3(25)
U : Signal /procesor_tstbnch/input_data3(24)
0 : Driver /procesor_tstbnch/input
U : Element /procesor_tstbnch/register_file/in_data3(24)
U : Signal /procesor_tstbnch/input_data3(23)
0 : Driver /procesor_tstbnch/input
U : Element /procesor_tstbnch/register_file/in_data3(23)
U : Signal /procesor_tstbnch/input_data3(22)
0 : Driver /procesor_tstbnch/input
U : Element /procesor_tstbnch/register_file/in_data3(22)
U : Signal /procesor_tstbnch/input_data3(21)
0 : Driver /procesor_tstbnch/input
U : Element /procesor_tstbnch/register_file/in_data3(21)
U : Signal /procesor_tstbnch/input_data3(20)
0 : Driver /procesor_tstbnch/input
U : Element /procesor_tstbnch/register_file/in_data3(20)
U : Signal /procesor_tstbnch/input_data3(19)
0 : Driver /procesor_tstbnch/input
U : Element /procesor_tstbnch/register_file/in_data3(19)
U : Signal /procesor_tstbnch/input_data3(18)
0 : Driver /procesor_tstbnch/input
U : Element /procesor_tstbnch/register_file/in_data3(18)
U : Signal /procesor_tstbnch/input_data3(17)
0 : Driver /procesor_tstbnch/input
U : Element /procesor_tstbnch/register_file/in_data3(17)
U : Signal /procesor_tstbnch/input_data3(16)
0 : Driver /procesor_tstbnch/input
U : Element /procesor_tstbnch/register_file/in_data3(16)
U : Signal /procesor_tstbnch/input_data3(15)
0 : Driver /procesor_tstbnch/input
U : Element /procesor_tstbnch/register_file/in_data3(15)
U : Signal /procesor_tstbnch/input_data3(14)
0 : Driver /procesor_tstbnch/input
U : Element /procesor_tstbnch/register_file/in_data3(14)
U : Signal /procesor_tstbnch/input_data3(13)
0 : Driver /procesor_tstbnch/input
U : Element /procesor_tstbnch/register_file/in_data3(13)
U : Signal /procesor_tstbnch/input_data3(12)
0 : Driver /procesor_tstbnch/input
U : Element /procesor_tstbnch/register_file/in_data3(12)
U : Signal /procesor_tstbnch/input_data3(11)
0 : Driver /procesor_tstbnch/input
U : Element /procesor_tstbnch/register_file/in_data3(11)
U : Signal /procesor_tstbnch/input_data3(10)
0 : Driver /procesor_tstbnch/input
U : Element /procesor_tstbnch/register_file/in_data3(10)
U : Signal /procesor_tstbnch/input_data3(9)
0 : Driver /procesor_tstbnch/input
U : Element /procesor_tstbnch/register_file/in_data3(9)
U : Signal /procesor_tstbnch/input_data3(8)
0 : Driver /procesor_tstbnch/input
U : Element /procesor_tstbnch/register_file/in_data3(8)
U : Signal /procesor_tstbnch/input_data3(7)
0 : Driver /procesor_tstbnch/input
U : Element /procesor_tstbnch/register_file/in_data3(7)
U : Signal /procesor_tstbnch/input_data3(6)
0 : Driver /procesor_tstbnch/input
U : Element /procesor_tstbnch/register_file/in_data3(6)
U : Signal /procesor_tstbnch/input_data3(5)
0 : Driver /procesor_tstbnch/input
U : Element /procesor_tstbnch/register_file/in_data3(5)
U : Signal /procesor_tstbnch/input_data3(4)
0 : Driver /procesor_tstbnch/input
U : Element /procesor_tstbnch/register_file/in_data3(4)
U : Signal /procesor_tstbnch/input_data3(3)
0 : Driver /procesor_tstbnch/input
U : Element /procesor_tstbnch/register_file/in_data3(3)
U : Signal /procesor_tstbnch/input_data3(2)
0 : Driver /procesor_tstbnch/input
U : Element /procesor_tstbnch/register_file/in_data3(2)
U : Signal /procesor_tstbnch/input_data3(1)
1 : Driver /procesor_tstbnch/input
U : Element /procesor_tstbnch/register_file/in_data3(1)
U : Signal /procesor_tstbnch/input_data3(0)
0 : Driver /procesor_tstbnch/input
U : Element /procesor_tstbnch/register_file/in_data3(0)
我错过了什么?我不确定我是否理解为什么这个信号分配没有通过。
编辑:我还尝试将所有分配移动到另一个进程中的 input_data3 ,它仍然永远不会改变。
这里是input_data3的驱动:
【问题讨论】:
波形中显示的信号是您分配的确切测试台信号,还是 UUT 内部的信号? 您可以将您的问题发到electronics.stackexchange.com。 那些来自测试台@Hanno,谢谢,下次记住了:) 您是否有另一个分配给input_data3
的其他地方导致了多个冲突的驱动程序问题?
否 - 只有这 3 个(两者都没有发生)。 input_data3 出现在我的代码中的唯一其他时间是在端口映射中
【参考方案1】:
查看您的驱动程序列表。例如,对于第 1 位,您的进程 (Driver /procesor_tstbnch/input
) 正在驱动 1
。然而,信号也由一个叫做/procesor_tstbnch/register_file/in_data3(1)
的东西驱动,它正在驱动一个U
。总体结果是该位未定义 (U
)。
register_file/in_data3
是什么?
【讨论】:
register_file : 实体 work.reg_file 端口映射 (... in_data3 => input_data3, ...); 所以in_data
是您模块的输入/输出,并且正在将数据(恰好未定义)驱动到您的模块中。但是您也从流程中驱动相同的信号 inside 您的模块 - 您不能这样做。或者,准确地说,您可以,因为这些是已解析的信号,但您不应该这样做。以上是关于VHDL 信号分配没有明显的原因不起作用的主要内容,如果未能解决你的问题,请参考以下文章