【发布时间】:2017-11-22 09:10:46
【问题描述】:
在 VHDL-2008 中使用 to_01 转换函数时,我遇到了一些意外行为。我的期望是可以清楚地解释为高或低的向量位分别映射到“1”和“0”。剩余的向量位应转换为“0”位。
但是,使用下面描述的代码,我将整个向量转换为全 '0'。
这种行为正确吗?或者这是模拟器软件(ALDEC Riviera-PRO)中的错误?
是否有任何符合我期望的 IEEE 函数,还是我必须编写自己的函数来实现?
library ieee;
use ieee.std_logic_1164.all;
entity test_to_01 is
end entity test_to_01;
architecture rtl of test_to_01 is
signal s_test_in : std_logic_vector(8 downto 0) := "UX01ZWLH-";
signal s_test_out : std_logic_vector(8 downto 0);
begin
s_test_out <= to_01(s_test_in);
end architecture rtl;
【问题讨论】:
-
to__01 function 对元数据(或“Z”)进行了测试。当找到任何它返回一个由(在这种情况下默认为'0')xmap参数组成的数组值。您可以下载 -2008 Supplemental Material,其中包含 IEEE 软件包的源代码,位于 zip 中,1076-2008_machine_readable/ieee/std_logic_1164-body.vhdl。您在 s_test_in 的初始值中有两次错误列出“Z”)。更新 - 指向 Jim 的来源,我注意到链接不正确。
-
to_X01 会将其他值映射到 X 而不是 0。
标签: vhdl