2017-07-01 54 views
-2

我想为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; 
+1

此代码片段不足以理解问题。 [如何创建一个最小化,完整和可验证的示例](https://stackoverflow.com/help/mcve) – ahmedus

+1

Stackoverflow使用在[Tour](https://stackoverflow.com/tour)中引入的结构化格式, 。 [帮助中心](https://stackoverflow.com/help)为[问](https://stackoverflow.com/help/asking)问题提供了指导。 VHDL是强类型的,取决于详细阐述的声明和流程(包括精心设计的并发语句),通过网络相互连接,需要[MCVe](https://stackoverflow.com/help/mcve)提供明确具体的刺激问题,你的问题没有一个是按原样展示的。 – user1155120

回答

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 

上面的代码只是需要做的事情的想法。我们需要显示更多您正在使用的实际代码。

+0

非常感谢您的回复。我的书面代码是正确的。事实上,我在别的地方发现了错误。我应该比较指令寄存器中的移位量,而不是R2。 – Kooh

相关问题