如何在VHDL中切片表达式

时间:2018-03-08 23:04:31

标签: vhdl slice

使用VHDL包numeric_std,乘法产生比其操作数位更多的位。在大多数情况下,结果将被削减到最低位。

signal A : unsigned(7 downto 0);
signal B : unsigned(7 downto 0);
signal C : unsigned(15 downto 0);
signal D : unsigned(7 downto 0);

C <= A * B;
D <= C(D'range);

不幸的是,表达式无法切片:

D <= (A * B)(D'range);

另一方面,人们可以编写这样的虚函数:

function dummy(A : unsigned) return unsigned is
begin
    return A;
end function;

现在,它可以连锁经营:

D <= dummy(A * B)(D'range);

以下是我的问题:

  • 为什么函数返回值可以被切片,但表达式不是?
  • 禁止对表达式进行操作链接的技术原因是什么,而函数调用(顺便说一下,这也是表达式)支持它?

0 个答案:

没有答案