【发布时间】:2012-07-24 09:07:33
【问题描述】:
如果我有以下 VHDL-200X 架构:
architecture my_arc of my_entity is
signal test_char : std_logic_vector(7 downto 0);
signal test_char_c : character;
signal test_char_i : integer;
begin
test_char <= "01001010";
test_char_i <= to_integer(unsigned(test_char));
test_char_c <= character'val(test_char_i);
end architecture my_arc;
...并对其进行仿真(在 Xilinx iSim 14.1 中),test_char_c 不会从其初始值 NUL 改变,即使 test_char_i 采用值 74。但是,如果我将架构中的最后一行替换为:
process(test_char_i)
begin
test_char_c <= character'val(test_char_i);
end process;
...然后test_char_c 采用我所期望的值J。
我认为如果右侧的 any 信号发生变化,那么裸信号分配将同时更新。换句话说,它相当于一个对分配中涉及的所有信号都敏感的过程。
为什么test_char_c 不首先更新?
编辑:将test_char_i 更改为natural 不会改变结果。
【问题讨论】:
-
您的想法是正确的,这是 iSim 的错误/不符合项。
-
@wap26:我不太确定,因为 Isim 被要求做一些它不能做的事情。它可能只需要一条错误消息...
-
@MartinThompson:似乎没关系,我已经用 Xilinx 打开了一个 webcase,看看他们的想法。
标签: vhdl