如何降低FPGA資源消耗

 

 

各位大俠,最近一直很頭疼的一個事:如何降低FPGA的資源消耗。
      由於入門FPGA設計的時間不是很長,對verilog hdl的理解不是很深入,在進行算法設計的時候,不是很注重編程方式和具體實現的結合,導致現在綜合後的資源消耗比較畸形。
      我用的是spartan-6的xc6slx150,現在LUTs消耗特別多,遠遠超過其他資源,並且fully-used LUT-FF不是很多,但是找不到具體是哪塊消耗LUTs多,哪些消耗reg多,希望大俠們能提供一些解決思路,或者參考書籍什麼的。
      我不確定是綜合的問題還是代碼風格的問題,所以不知道如何下手去降低資源啊。附圖是綜合的報告,求指導,在線等!

 

回答1:節省資源的方法有很多,推薦ken chapman的兩片文章,WP272 WP275

回答2:好的,非常感謝,我今天嘗試了設置XST的屬性,但是效果不是很明顯,現在還是懷疑coding style的問題。我還有個疑問:在綜合和MAP的時候,給出的資源消耗不一致。綜合給出的是估計值,但是有具體的Technology Schematic,對應的是FPGA的Primitive(LUT和Register等),這已經比較具體了,可是和MAP後的資源消耗統計不一致,不知道爲什麼?MAP給出的是具體的資源消耗,對應的是硬件佈局,是不是前者比較通用些,細緻些,所以只能估計,而後者則專用些,將多個小單元劃到一個大的邏輯單元中?這樣導致的不一樣?

回答3:多數的xilinx器件在MAP階段都會有佈局操作。MAP階段會完成很多工作,一般情況下,MAP後的資源消耗就是最終的資源消耗了。
綜合階段的資源消耗只是估計值,最終的結果還是要看MAP的結果。
至於綜合和MAP的結果不一樣,原因有很多,最主要的還是在MAP階段會考慮到佈局的因素,增加一些lut作爲佈線使用,還會優化掉很多冗餘邏輯。

最重要的一點,要精簡資源,不能靠軟件,要靠設計。

回答4:十分感謝閣下的教導,對於你給出的觀點我十分贊同,這也是我最近才漸漸意識到的問題。之前比較依賴綜合軟件,導致問題累積到不知道如何下手。還是想問問有沒有推薦的進階學習書籍或者着重點?我最近在看XST User Guide中推薦的coding style,另外計劃閱讀J.Bhasker的《Verilog HDL綜合實用教程》,再詳細看看Spartan-6的內部資源組成,試圖將Spartan-6的CLB和代碼建立聯繫,但是沒有看到有介紹這方面的書籍。
另外我還是沒有抓住大方向,面對大型的設計還是手足無措,不知道如何去規劃程序,怎麼樣將程序設計到優良?請問一下,有沒有那種介紹FPGA設計思路的書?

回答5:你好,我個人覺得,如果要深入學習,必須要看xilinx和altera的官方文檔,國內的書不建議看,我至今沒有看到一本深層次的書。
    我覺得能力的提升最主要的是通過做項目,而不是看書。只有完整做完幾個項目之後,纔會碰到具體的問題,纔會瞭解到深層次的東西。
    你可以先看看spartan-6的config手冊、CLB手冊、時鐘手冊等等。要想成爲一個高手,FPGA內部的各種資源都必須牢牢掌握,這不是1 2年能做到的。

回答6:樓主,我最近面試也遇到這個問題,一直沒有考慮過,搜索了一些答案整理一下:
更改綜合策略,採用資源共享;如果某個某塊大量使用寄存器時可以考慮是否可以採用RAM代替;從架構上分析冗餘並進行優化,之後再結合個別FPGA的實現特徵,如果實在對資源比較在意而對性能要求不高,就可以考慮用時間換空間,用並行替串行;良好的代碼習慣和風格

暫時就那麼多,樓主現在對這個問題怎麼理解的呢。還望賜教啊,謝謝了啊

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章