2013-03-25 73 views
0

只需具有這樣的代碼:變量賦值和綜合代碼

if(rising_edge(clk)) then 
    temp(0):="001"; 
    temp(1):="011"; 
    temp(2):="101"; 
    temp(3):="000"; 
    temp(0):=temp(3)xor temp(5); 
end if 

對於上面所有這些變量賦值的示例將在1個時鐘週期,這是相當不實用的來完成。在行爲模擬中,它可以很好地工作,但是在後期合成中它很糟糕。我可以像延遲一樣添加一個延遲或等待(等待語句是不可綜合的),以使其等待util變量在跳到下一行之前獲取它的值嗎?

+1

你是什麼意思的「搞砸」?結果是什麼樣的?你的發佈代碼中的temp(5)在哪裏? – baldyHDL 2013-03-26 06:48:57

回答

0

在一個時鐘週期內完成所有這些事情很簡單。硬件速度非常快,相對於處理器而言,FPGA時鐘速率並不高。

由於您正在使用變量,因此會立即使用中間結果。如果你想要更明確的延遲,你可以使用一個信號。上述帶有信號的代碼將使用前一個上升沿的temp(3)

0

綜合你不能讓延遲等待。只有在流水線化(時鐘週期作爲延遲單元)時才能進行明確定義的,可控制的綜合延遲。