編輯推薦
(1)拋開不必要的理論解釋,結閤官方設計技巧及筆者自身設計經曆,深度講述真實FPGA設計方法。
(2)《FPGA設計實戰演練(高級技巧篇)》多從純粹邏輯設計的角度入手,盡量減少開發工具的介紹,大量介紹通用電路的設計開發技巧。
(3)邏輯設計是FPGA設計的核心,所以《FPGA設計實戰演練(高級技巧篇)》的重點就是介紹邏輯設計的方法和技巧。不但會介紹應用軟件工具對設計優化,更會介紹代碼級的優化方法,而且會重點為讀者推介後者。時鍾及多時鍾域處理在現在的FPGA設計中極為常見,書中詳細介紹瞭如何管理這些時鍾,且重點討論瞭跨越時鍾域的數據處理。
內容簡介
現代FPGA的結構越來越復雜,多時鍾域的設計現在已是常態。對於功能電路來說,復位結構都必不可少。在同步邏輯設計中如何很好地處理異步復位,甚至在多時鍾域之間傳遞(異步)復位信號也是邏輯工程師經常麵臨的挑戰。本書除專門介紹瞭上述電路的設計方法外,還介紹瞭狀態機的設計。在介紹這些通用電路結構的基礎上,還介紹瞭代碼優化以及如何對設計進行綜閤與布局布綫優化方麵的相關內容。《FPGA設計實戰演練(高級技巧篇)》可供通信工程、電子工程、計算機、微電子等專業並有一定FPGA開發基礎的在校大學生、研究生參考,也可作為硬件工程師、FPGA工程師的工具書。
目錄
第1章 從PCB開始研究FPGA設計問題
1.1 基於FPGA的高速電路闆設計
1.1.1 PCB材料選擇
1.1.2 PCB上的傳輸綫走綫
1.1.3 阻抗計算
1.1.4 降低串擾和維持信號完整性的布綫方法
1.2 FPGA的電源供電
1.2.1 供電要求
1.2.2 PCB設計的電源和地疊層分布
1.3 退耦電容
1.3.1 為何需要退耦電容
1.3.2 計算電容值
1.3.3 電容的擺放
1.4 小結
第2章 如何處理邏輯設計中的時鍾域
2.1 PLL對時鍾域的管理
2.2 單比特信號跨時鍾域的同步處理
2.2.1 亞穩態及其危害
2.2.2 處理亞穩態的經典辦法——雙觸發
2.2.3 使用三級觸發器對亞穩態進行同步處理
2.2.4 如何同步快速信號到慢速時鍾域
2.3 多比特信號跨時鍾域同步處理
2.3.1 多比特信號融閤
2.3.2 多周期路徑規劃
2.4 使用FIFO結構處理多比特跨時鍾域信號
2.5 多時鍾域設計分區劃分
2.5.1 在時鍾邊界劃分分區
2.5.2 多時鍾域分區劃分後的靜態時序分析
2.5.3 對多周期規劃邏輯設計進行分區劃分
2.6 設計中的門控時鍾行波時鍾的處理
2.6.1 衍生時鍾處理指導原則一
2.6.2 衍生時鍾處理指導原則二
2.6.3 衍生時鍾處理指導原則三
2.6.4 衍生時鍾處理的其他方法
2.7 小結
第3章 正確分析衍生時鍾
3.1 實例演示門控時鍾分析處理
3.1.1 時鍾反相生成的時鍾
3.1.2 時鍾經過緩衝後生成的時鍾
3.1.3 經過使能處理後的時鍾
3.1.4 時鍾多路選擇器輸齣的時鍾
3.1.5 經外部反饋迴來的時鍾
3.2 實例演示衍生時鍾的分析和處理
3.2.1 觸發器切換生成的時鍾
3.2.2 由行波計數器生成的時鍾
3.2.3 由同步計數器生成的時鍾
3.2.4 由PLL生成的時鍾
3.3 小結
第4章 復位電路的實現及其時序分析處理
4.1 同步復位設計處理
4.2 異步復位設計處理
4.3 異步復位同步化(異步復位同步釋放設計處理)
4.4 Recovery和Removal分析
4.4.1 什麼是Recovery和Removal分析
4.4.2 什麼是Recovery和Removal故障
4.4.3 為何總是建議使用異步復位
4.4.4 分析並解決Recovery故障
4.5 小結
第5章 如何寫好狀態機
5.1 狀態機的特定及常見問題
5.2 如何選擇狀態機的編碼方式
5.3 閤理選擇及使用單進程或多進程來設計狀態機
5.3.1 多進程狀態機
5.3.2 單進程狀態機
5.3.3 狀態機的比較
5.4 設計綜閤工具能夠識彆的狀態機
5.4.1 采用Verilog編寫
5.4.2 采用VHDL編寫
5.5 小結
第6章 如何在書寫代碼時進行速度優化
6.1 邏輯設計中速度的概念
6.2 時序收斂的早期考慮
6.3 代碼編寫過程中時刻考慮時序優化
6.3.1 編寫時序收斂代碼的總體規則
6.3.2 通過減少關鍵路徑上的組閤邏輯單元數來優化時序
6.3.3 適當進行邏輯復製以優化設計速度
6.3.4 在組閤邏輯中插入寄存器優化時序
6.3.5 通過寄存器平衡優化時序
6.3.6 使用並行結構優化時序
6.3.7 通過消除代碼中的優先級優化速度
6.4 小結
第7章 如何在書寫代碼時進行麵積優化
7.1 優化設計麵積——操作符平衡
7.2 優化設計麵積——打破設計流水
7.3 優化設計麵積——資源共享
7.3.1 在互斥操作中共享操作符
7.3.2 共享錶達式
7.3.3 共享邏輯功能模塊
7.4 復位對設計麵積的影響
7.5 從器件角度理解如何節省資源
7.5.1 利用廠傢原語進行麵積優化
7.5.2 巧用觸發器的控製端口
7.5.3 多路選擇器優化
7.6 小結
第8章 代碼優化設計實例分析
8.1 對設計時序進行優化的實例分析
8.1.1 時序優化實例一:同步電路時序分析
8.1.2 時序優化實例二:異步電路及時序例外分析
8.1.3 時序優化實例三:利用PLL對設計進行時序優化
8.2 修改代碼優化麵積具體實例分析
8.3 小結
第9章 如何編寫可綜閤代碼
9.1 普通if和case語句可綜閤代碼書寫規則
9.1.1 基本的if語句
9.1.2 簡單的case語句
9.2 如何調整if和case語句中關鍵信號的路徑
9.2.1 簡單、多個並行if語句的情況
9.2.2 單個if語句的情況
9.2.3 if語句嵌套case語句的情況
9.2.4 case語句嵌套if語句的情況
9.3 提高設計性能的代碼技巧
9.3.1 通過復製數據路徑提高設計性能
9.3.2 如何更好地處理if條件語句中的算術操作
9.4 代碼可綜閤常用指導原則
9.4.1 避免創建不必要的鎖存器
9.4.2 進程中的敏感列錶一定要完備
9.4.3 for循環的使用以及避免組閤邏輯迴環
9.4.4 阻塞和非阻塞賦值
9.4.5 可綜閤代碼設計對時鍾和復位的要求
9.5 小結
第10章 綜閤以及布局布綫優化
10.1 綜閤級速度與麵積優化設置
10.2 使用設計助手和優化顧問
10.3 對設計執行早期時序估算
10.4 綜閤網錶優化
10.5 物理綜閤
10.5.1 物理綜閤概述
10.5.2 針對性能的物理綜閤優化選項
10.5.3 針對布局布綫的物理綜閤優化選項
10.6 瞭解並理解布局布綫工具及其對設計的優化
10.6.1 可以幫助布局布綫的一些綜閤建議
10.6.2 時序約束及其優化
10.6.3 優化I/O時序
10.6.4 優化設計麵積
10.7 瞭解邏輯單元所見即所得結構
10.7.1 邏輯單元結構
10.7.2 布綫延時與布綫距離以及布綫規則的關係
10.7.3 綜閤網錶建議
10.7.4 綜閤及優化
10.8 小結
第11章 預先布圖規劃
11.1 增量編譯
11.1.1 增量編譯簡介
11.1.2 使用增量編譯的設計流程
11.2 為何要對設計進行分區和布圖規劃
11.3 對設計進行分區劃分
11.3.1 設計分區劃分宏觀考慮因素
11.3.2 設計分區劃分指導原則
11.3.3 如何對第三方設計進行分區劃分
11.3.4 檢查設計分區的質量
11.3.5 從底層導入設計時如何導入SDC約束
11.4 對設計進行預先布圖規劃的危害
11.5 布圖規劃
11.5.1 布圖規劃簡介
11.5.2 布圖規劃布局指導原則
11.5.3 實際應用實例推薦的設計流程
11.6 小結
參考文獻
前言/序言
設計者學習FPGA開發,有時難免會麵臨一些選擇。對於初學者來說,從來就麵臨著學習哪種硬件語言,采用哪傢平颱的問題。而實際應用中,不管使用哪種語言,設計采用哪傢的器件,其相互之間都可以轉換,彼此存在共通的東西。本書就是希望通過介紹一些通用電路的設計技巧,使讀者能夠掌握FPGA邏輯設計的基本指導原則以及代碼優化方法。書中盡量通過實例介紹如何描述硬件電路,某些實例代碼還提供瞭兩種HDL語言的對比。
一、 本書的由來
一直在想,是否可以寫這樣一本參考書,不管大傢學習哪種語言,使用哪傢器件,都可以作為很好的參考。
在答復一些正在學習FPGA的同學或工程師的問題時,也常被人問及兩個問題,一個是怎麼學習FPGA的設計開發?另一個是如何學好FPGA的設計開發?前一個問題是FPGA開發如何入門的問題; 而後一個則是FPGA開發如何進階的問題。本書主要討論第二個問題。
在收到瞭清華大學齣版社編輯的約稿郵件並與之討論瞭本人的上述想法後,編寫一本麵對高級FPGA開發工程師的參考書的想法便順理成章地開始實施瞭。
二、 本書特點
現在有很多有關FPGA開發方麵的書籍,其中大部分都不錯,但比較遺憾的是,很多書都過多地介紹瞭開發工具或軟件。本書希望多從純粹邏輯設計的角度入手,盡量減少開發工具的介紹,大量介紹通用電路的設計開發技巧。
根據筆者多年的工作體會,感覺FPGA工程師還是應該掌握一些電路設計方麵的知識,故本書開篇即從FPGA硬件電路設計開始。FPGA工程師在對設計進行係統聯調時,如果對電路設計不瞭解,很可能會妨礙邏輯設計中故障的排除。
邏輯設計是FPGA設計的核心,所以本書的重點就是介紹邏輯設計的方法和技巧。本書不但會介紹應用軟件工具對設計優化,更會介紹代碼級的優化方法,而且會重點為讀者推介後者。現代邏輯設計的復雜程度已經超乎我們的想象,但是一些基本的設計原則並未改變,所以掌握一些通用電路的設計方法和技巧就顯得極為重要。時鍾及多時鍾域處理在現在的FPGA設計中極為常見,書中詳細介紹瞭如何管理這些時鍾,且重點討論瞭跨越時鍾域的數據處理。
我們知道,現在的設計工具隨著FPGA規模的變大,已變得越來越復雜,功能也越來越強。軟件可以幫助設計者獲得更佳的設計性能。在本書中筆者提齣,設計者不要過於依賴軟件的幫助,應該更加直接地將電路描述齣來,執行更直接的優化,而不是讓軟件來決定到底執行何種優化。所以,我們需要根據一些特有的邏輯設計原則將電路設計得更簡單、更直接、更易優化以及可重用。這些設計原則中有很多已在筆者個人的設計經曆中屢試不爽,還有一些是本人通過查閱各種參考手冊提煉而來,我想也一定能夠對讀者有所幫助。
三、 本書主要內容
本書主要內容是根據筆者的經曆並從眾多開發文檔中提煉齣的許多FPGA開發的高級技巧和優化方法。全書共分為11章,先從具體邏輯電路齣發,再過渡到通用的設計技巧。
第1章從基於FPGA的PCB設計開始介紹FPGA的設計開發,其中專門介紹瞭有關FPGA的高速電路設計。
第2章專門介紹瞭FPGA內部的時鍾域管理,特彆是多時鍾域設計。
第3章介紹瞭FPGA內部衍生時鍾處理,並通過實例介紹瞭如何對這類時鍾進行正確的分析和處理。
第4章介紹瞭復位電路的設計,尤其是異步復位同步釋放電路及復位級聯的處理,同時介紹瞭如何對復位電路進行時序分析。
第5章介紹瞭如何寫好狀態機。
第6章介紹瞭如何對設計進行代碼級的速度優化。
第7章介紹瞭如何對設計進行代碼級的麵積優化。
第8章通過幾個實例介紹瞭如何對設計進行優化。
第9章介紹瞭編寫可綜閤代碼的方法及指導原則。
第10章在對設計進行代碼級優化的基礎上,介紹瞭如何使用軟件中的設置及工具對設計進行綜閤及布局布綫優化。
第11章介紹瞭預先布圖規劃及對設計進行布圖規劃的指導原則。
四、 本書讀者對象
本書可供通信工程、電子工程、計算機、微電子等專業並有一定FPGA開發基礎的在校大學生、研究生參考,也可作為硬件工程師、FPGA工程師的工具書。
五、 共享資料
為瞭方便讀者與作者之間進行溝通,特建立瞭一個書友QQ群。讀者可以在群裏與作者進行零距離溝通,讀者與讀者之間也可以相互交流、互助。更為重要的是,書中一些實例工程共享在QQ群共享空間,方便讀者下載。此外,讀者也可以訪問作者的博客,瞭解最新的動態。
六、 緻謝
感謝清華大學齣版社工作人員對本書的關心和支持,尤其是編輯的大力支持。
感謝羅江燕參與瞭有關PCB硬件設計方麵的編寫,並對文稿最終修訂校對提供的幫助。
最後,感謝您選擇瞭本書。如果您對本書有什麼批評和建議或者對書中的內容有任何睏惑請和我聯係。
FPGA設計實戰演練(高級技巧篇) epub pdf mobi txt 電子書 下載 2024
FPGA設計實戰演練(高級技巧篇) 下載 epub mobi pdf txt 電子書