所以基本上我试图在VHDL中使用2位N位输入,输出2 * N位进行乘法运算。我只是这种语言的初学者所以我试图制作一个简单的代码而不使用一些高级工具/术语。所以这就是我所拥有的:
它们是变量初始化和循环之间的错误。我认为循环之后的所有内容都是正确编写的,因此问题只能是变量。我希望变量可以像条目一样,具有可变位数,具体取决于N(在Generic中初始化)。我还想将它们的一些位初始化为0。
变量只是位的一半(MSB),另一半取Y的位。
Pvariable的所有位都为0。
有些变量的附加信息可供需要更多说明的人使用:
1.变量是B,具有更多位并在循环中向左移位。
2.P变量是P但我们在将其归因于P之前不断改变他的值。
这是我的问题。希望你能帮我找到答案。另外,如果相对简单(比如使用信号而不是变量),请随意提出另一种方法来构建乘法器。
感谢您的时间。
您只需对现有的unsigned使用resize函数:
variable Bvariable : unsigned(2*N-1 downto 0) := resize(Y, Bvariable'length);
或整数文字的to_unsigned函数
variable Pvariable : unsigned(2*N-1 downto 0) := to_unsigned(0, Pvariable'length);