gpt4 book ai didi

vhdl - 右移和左移 (SLL/SRL)

转载 作者:行者123 更新时间:2023-12-04 06:22:00 62 4
gpt4 key购买 nike

所以,我正在为 MIPS 架构开发一个 ALU,我正在尝试左移和右移,以便 ALU 可以移动任意数量的位。

我的想法是将移位值转换为整数并选择结果中的条目(整数存储在 X 中),但 Quartus 不接受变量值,只接受常量。

我该怎么做才能做到这一点?
(案例位于“WHEN "1000"=>..."和 "WHEN "1001"=>..."行上)

谢谢。

PROCESS ( ALU_ctl, Ainput, Binput, X )
BEGIN
-- Select ALU operation
--ALU_output_mux <= X"00000000"; --padrao
CASE ALU_ctl IS
WHEN "1000" => ALU_output_mux(31 DOWNTO X) <= (Ainput( 31-X DOWNTO 0 ));
WHEN "1001" => ALU_output_mux(31-X DOWNTO 0) <= (Ainput( 31 DOWNTO X ));
WHEN OTHERS => ALU_output_mux <= X"00000000";
END CASE;
END PROCESS;

最佳答案

如果 Quartus 不喜欢它,您有两个选择:

  • 以 Quartus 喜欢的方式编写它 - 您正在尝试推断桶形移位器,因此您可以手写一个然后实例化它。时间上可能很贵
  • 获得一个可以接受它的不同合成器。可能在金钱上很贵。
  • 关于vhdl - 右移和左移 (SLL/SRL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6440363/

    62 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com