2017-07-01 94 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

相關問題