我正在用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));
但是随后它说我无法为类型转换的结果建立索引,这看起来很清楚,但是它没有指出实现此目的的任何其他方法。
有没有办法选择乘法的最低有效位而不必创建单独的信号?
谢谢。
答案 0 :(得分:0)
经过一番搜索,我开始相信这个问题的答案:“有没有办法在不创建单独信号的情况下选择乘法的最低有效位?”是否,因为我无法索引类似std_logic_vector的函数。
必须创建中间信号,例如
mult <= std_logic_vector(usigned(x) * unsigned (y));
然后
result <= mult(7 downto 0);