return vhdl 中的无约束数组

return unconstrained array in vhdl

在 vhdl 中 return 无约束向量的最佳方法是什么?

function func(selector : natural) return std_logic_vector is
begin
    case selector is
        when 3 => return std_logic_vector("11");
        when 4 => return std_logic_vector("101");
        when others => return std_logic_vector("0");
    end case;
end function;

在这种情况下,我得到的字符串文字不能是类型转换操作数,所以它不起作用。信号选择器是通用的,因此它不必是可合成的。

你不能这样做。函数中的 return 值在调用时需要与某些东西相关联,并且某些东西必须具有固定宽度。换句话说,你必须这样说:

s <= func(n);

s 将具有固定宽度,因此函数中的所有 return 值都必须具有相同的宽度。