在VHDL Testcase上运行modelsim时出现以上错误,我无法理解它为什么是错误。转换函数“To_bit”必须只有一个形式参数
测试用例:
LIBRARY IEEE;
Use ieee.std_logic_1164.all;
entity a is
port (in11 : in std_logic
);
end a;
架构一个的是:
component b_1
port (in1 : in bit);
end component;
begin
inst : b_1 port map (in1=> **to_Bit**(in11));
end a;
如果我在包中编写一个包装函数来“to_bit”,然后如果我使用该函数,那么它就可以工作。 '代码 程序包: 程序包mgc_package为 函数mgc_to_Bit(p:std_ulogic)返回位; 封装; 包体mgc_package是 函数mgc_to_Bit(p:std_ulogic)返回位是 begin return to_bit(p); 结束; 封装体; VHDL案例: 图书馆工作; use work.mgc_package.all; 架构的是 .... 开始 研究所:B端口映射(IN11 => mgc_to_Bit(IN1)); end a; end a; ' 如果我能够在portmap中使用实际的函数,那么为什么我不能使用“to_bit”函数本身? – Dharmendra
to_bit在标准包中定义,所以实际上它是相同的情况...不知道为什么应该起作用 – BennyBarns
Christian U.答案说明了为什么转换函数可以工作。参见4.3.3.2关联列表*转换函数*(2007年的6.5.7.1),问题是在-2008(6.5.6.3端口子句)中通过将隐式声明的信号与正式的表达式值的并发赋值的目标(例如,针对返回类型标记的全局静态子类型的函数调用)。 – user1155120