我想在VHDL中为处理器开发一个移位寄存器。在处理器的指令寄存器(IR)中,有一个部分确定移位量。现在我想检查它以实现此操作。
例如,位数5到10表示移位量。如果有" 000001"在该部分中,当定时信号t1出现时,移位寄存器应该起作用并且t2定时信号到达。
但是为什么以下代码在使用modelsim运行时不会对移位寄存器产生任何影响?
IF sc=t1 AND R2 (10 DOWNTO 5)= "000001" THEN
R2<=R2(62 DOWNTO 0) & R2(63);
END IF;
答案 0 :(得分:0)
我认为你的方法是正确的。因为在VHDL中总是更好地使用尽可能多的常量值,所以合成可以更容易我会为你的案例编写代码
process(clk, reset)
begin
if reset then
--reset everything
elsif posedge(clk) then
if sc = t1 then
case R2(10 DOWNTO 5)
when "00001" =>
R2 <= R2(62 DOWNTO 0) & R2(63)
when "00010" =>
end if
end process
上面的代码只是想知道需要做些什么。我们需要显示您正在使用的更多实际代码。