2016-03-07 34 views
0

我正在使用Quartus將一個組合電路綜合到FPGA。現在我想在不考慮資源消耗的情況下獲得最佳的最大頻率。如何使用Quartus優化組合邏輯?

res = a * b * c *d 

我想知道是否有可能的Quartus自動生成具有這樣短的關鍵路徑的等效組合邏輯:

ab = a * b 
cd = c * d 
res = ab * cd 
當前關鍵路徑是通過乘法這樣的序列組成的

在關鍵路徑上只有兩個乘法器。我發現從的Quartus在線文檔提到,這是可能的,但沒有對如何做到這一點說明:因爲我不想改變這種組合電路的時序UsingTimeQuestAnalyzer

流水線不在這裏工作了。

回答

1

像Quartus這樣的綜合工具通常會基於HDL(VHDL/Verilog)代碼構建初始內部結構,然後根據約束和區域重新組織和優化該結構,以使該工具具有處理結構。最後,該工具會進行時序檢查,以確定最終設計的時機。

爲了實現乘法*運營商,它顯示爲使用的Quartus的*左結合性,從而爲((a * b) * c) * d簡單地實現a * b * c * d,並不適用關聯的規則,使(a * b) * (c * d)爲了滿足時序要求。

所以,如果你想使乘數,如:

res = (a * b) * (c * d) 

你可以幫助綜合工具書寫HDL爲(使用VHDL):

ab <= a * b; 
cd <= c * d; 
res <= ab * cd; 

記住,使時序約束匹配要求,檢查結果的實現是否符合所需的時間。路徑的要求可以由等,用於ares具有最大12納秒的延遲:

set_max_delay -from [get_ports a[*]] -to [get_ports res[*]] 12 
... 

的RTL和技術結構隨後如在該圖中:

enter image description here

凡表達像res = a * b * c * d給出了這樣的結構:

enter image description here

並按照預期執行時間。

所以你經常可以控制通過HDL代碼的結構的實現中,如果您的結構通過建議HDL代碼將滿足時序和綜合工具無法爲區域進一步優化這個同時還能滿足時序要求。