《深入浅出玩转FPGA》笔记
關于這本書,算是囫圇吞棗地讀完了。網上很多人推薦這本書,評價很不錯。以我的觀點來看,確實是本不錯的關于FPGA方面的書,作者確實經驗豐富,書中有很多值得學習的東西,但是可能不是很適合初學者看,比較適合有一定項目經驗的人讀。因為這本書本身就是將作者許多自己的親身經歷總結出來的經驗編纂出來的,可能作者也是看煩了市面上一眾讀物都秉持著介紹某類知識一定要事無巨細地從頭說到尾的風格,所以作者對基礎的介紹非常少。初學者學習FPGA的開發和調試去看作者另一本《FPGA/CPLD邊練邊學--快速入門Verilog/VHDL》比較好。
說到底,我作為菜鳥,這本書很多內容我也還是一知半懂,可能還需要更多的積累。在這里記錄一下這本書給我的新收獲。
一、關于時鐘的設計要點:
(1)避免使用門控時鐘或系統內部邏輯產生的時鐘,多用使能時鐘去替代。
門控時鐘指的是在數據無效時,將寄存器時鐘關閉的技術,能夠有效降低功耗,是低功耗設計的重要方法之一。組合邏輯中多用門控時鐘,一般驅動門控時鐘的邏輯都是只包含一個與門(或門)。如果有其它的附加邏輯,容易因競爭產生不希望的毛刺。
(2)對于需要分頻或倍頻的時鐘,用器件內部的專用時鐘管理(如PLL或DLL)單元去生成。
我的理解是FPGA內部邏輯資源寶貴,用來做時鐘管理太浪費,而且有專用的干嘛不用呢。
(3)盡量對輸入的異步信號用時鐘進行鎖存。
所謂異步信號,是指兩個處于不同時鐘頻率或相位控制下的信號。這樣的信號在相互接口的時候如果沒有可靠的同步機制,則存在很大的隱患,甚至極有可能導致數據的誤采集。所以需要學習一些異步信號的同步機制。
(4)避免使用異步信號進行復位或置位控制。
這一點很顯然,異步信號會增加毛刺出現的可能性。
?
二、提升系統性能的代碼風格
(1)減少關鍵路徑的邏輯等級
很多時候時序不達要求是因為有幾條關鍵路徑內部邏輯門延時太長,可以通過修改代碼減少某些路徑的層級,但通常會導致其他路徑多出一個或幾個邏輯門,“面積換速度”。
(2)邏輯復制(減少重載信號的散出)與資源共享
如果某個信號扇出比較大,插入buffer可以解決,但是會增加延時。通過邏輯復制,即復制產生這個信號的邏輯來驅動后續電路,既使平均扇出降低又不增加延時,但面積會增大。
資源共享是邏輯復制的逆過程,可以節省面積,但以犧牲速度為代價。
(3)消除組合邏輯的毛刺
引入時序邏輯,即添加寄存器來鎖存輸出結果,在時鐘有效沿再輸出。
?
三、異步復位、同步釋放
異步復位不穩定,同步復位消耗額外資源。這種異步復位、同步釋放的雙緩沖電路根本思想是將異步信號同步化。
綜合后的電路:
四、乒乓操作及串并轉換設計
FPGA設計的重要思想有:面積換速度、乒乓操作及串并轉換設計、流水線設計、邏輯復制和模塊復用、模塊化設計等。
乒乓操作:一種數據流控制的處理技巧。
第一個周期,數據進入緩沖區1;第二個周期,數據進入緩沖區2,同時輸出數據選擇控制將緩沖區1內的數據送出去;第三個周期,數據進入緩沖區1,緩沖區2內的數據被送出。如此循環,可以實現數據的無縫緩沖和處理。
串并轉換:高速數據流處理的重要技巧之一。
串行輸入的數據通過FPGA內部的n個移位寄存器后,最后并行輸出的是一個n位寬的并行總線數據。
?
五、同步設計的好處:
目前經驗尚淺,很多體會不是很深。
?
六、專用握手信號
握手通信原理,即通信雙方使用了專用控制信號進行狀態指示,是一種常用的跨時鐘域信號處理方式。
使用握手協議方式處理跨時鐘域數據傳輸時,只需要雙方的握手信號(req和ack)分別使用脈沖檢測法進行同步。具體實現:發送域先將數據放入總線,然后發送req有效信號給接收域;接收域收到req有效信號后鎖存數據總線,然后回送ack有效信號給發送域;發送域接收到ack有效信號后撤銷當前req信號,接受域再檢測到req信號撤銷后也撤銷ack信號,此時完成一次正常握手通信。
?
七、關于變量的定義
在編寫testbench時,關于變量的定義一個常犯的錯誤就是將一個定義好的全局變量應用到了兩個不同的always塊中(如EX1C),由于兩個always獨立并行工作,會產生意想不到的后果。
解決方法是可以在begin...end之間定義always的塊名,這樣兩個always塊中的變量i就互不相關了。
八、HDL的三個最基本思想
連通性(Connectivity)、時間性(Time)和并行性(Concurrency)。
?
九、Testbench書寫技巧
十、建立時間、保持時間
建立時間滿足:
?即?
保持時間滿足:
時鐘滿足:??由此可以計算FPGA的最大頻率,系統時序優化主要是對傳輸路徑延時??做文章。
?
十一、邏輯仲裁設計要點
十二、FPGA+CPU
- 潛在優勢:
- 更易于滿足大多數系統的功能性要求;
- 潛在的改善了系統的性能;
- 在某些應用中的靈活性和可升級性大大提高;
- 處理器連接到外設的接口能夠得到優化;
- 軟硬件互聯的接口性能獲得極大的提升;
- 有利于設計的重用和新設計的快速成型;
- 簡單化芯片甚至整板的PCB布局布線。
?
其實這本書我還有很多地方沒看明白,應該需要多看幾遍。
參考文獻:
《深入淺出玩轉FPGA》第三版,吳厚航編著
總結
以上是生活随笔為你收集整理的《深入浅出玩转FPGA》笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: FPGA边沿检测Verilog实现(包含
- 下一篇: 生成设备树Blob