从VHDL中的字节x字节乘法中选择一个字节

时间:2019-05-07 01:07:41

标签: vhdl multiplication 8-bit

我正在用VHDL编写一个非常简单的处理器,该处理器可与8位流一起使用。我想在我的ALU中包含一个乘法指令,但是只能使用不及15的tu乘法数,因为两个8位数字的乘法将导致16位数字。因此,例如,如果我想将4和7相乘,我将得到0000 0100 x 0000 0111,结果将为00011000。

所以我写了以下内容:

DateTime.ParseExact(s, "yyMMdd", CultureInfo.InvariantCulture);

但是,由于我在8位系统中工作,因此我的结果信号是8位标准逻辑向量,当我尝试执行此分配时,ISE给我一个错误消息。由于我只想要数字的8个最低有效位,所以我尝试了

result <= std_logic_vector(unsigned(x)*unsigned(y));

但是随后它说我无法为类型转换的结果建立索引,这看起来很清楚,但是它没有指出实现此目的的任何其他方法。

有没有办法选择乘法的最低有效位而不必创建单独的信号?

谢谢。

1 个答案:

答案 0 :(得分:0)

经过一番搜索,我开始相信这个问题的答案:“有没有办法在不创建单独信号的情况下选择乘法的最低有效位?”是,因为我无法索引类似std_logic_vector的函数。

必须创建中间信号,例如

mult <= std_logic_vector(usigned(x) * unsigned (y));

然后

result <= mult(7 downto 0);