FPGA設計實戰演練(高級技巧篇)

FPGA設計實戰演練(高級技巧篇)

《FPGA設計實戰演練(高級技巧篇)》是2015年10月1日出版的圖書,作者是王敏志。

內容簡介

現代FPGA的結構越來越複雜,多時鐘域的設計現在已是常態。對於功能電路來說,復位結構都必不可少。在同步邏輯設計中如何很好地處理異步復位,甚至在多時鐘域之間傳遞(異步)復位信號也是邏輯工程師經常面臨的挑戰。本書除專門介紹了上述電路的設計方法外,還介紹了狀態機的設計。在介紹這些通用電路結構的基礎上,還介紹了代碼最佳化以及如何對設計進行綜合與布局布線最佳化方面的相關內容。 本書可供通信工程、電子工程、計算機、微電子等專業並有一定FPGA開發基礎的在校大學生、研究生參考,也可作為硬體工程師、FPGA工程師的工具書。

王敏志,曾就職於多家科研院所,從事過雷達、通信以及醫療電子方面的研發工作。在電子期刊網站,多以coyoo、湘攸客為名發布技術文章或學習部落格。參與過多型艦載雷達的研發工作,主要負責數字電路方面的開發,包括電路設計、DSP以及FPGA編程;後從事Altera代理商現場技術支撐工作多年。目前專心投入研發工作。方向是數字醫療開發、派特(PET)的數位訊號處理部分以及基於FPGA的TDC實現。

圖書目錄

第1章從PCB開始研究FPGA設計問題

1.1基於FPGA的高速電路板設計

1.1.1PCB材料選擇

1.1.2PCB上的傳輸線走線

1.1.3阻抗計算

1.1.4降低串擾和維持信號完整性的布線方法

1.2FPGA的電源供電

1.2.1供電要求

1.2.2PCB設計的電源和地疊層分布

1.3退耦電容

1.3.1為何需要退耦電容

1.3.2計算電容值

1.3.3電容的擺放

1.4小結

第2章如何處理邏輯設計中的時鐘域

2.1PLL對時鐘域的管理

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多時鐘域設計分區劃分

FPGA設計實戰演練(高級技巧篇)

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.4Recovery和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.3if語句嵌套case語句的情況

9.2.4case語句嵌套if語句的情況

9.3提高設計性能的代碼技巧

9.3.1通過複製數據路徑提高設計性能

9.3.2如何更好地處理if條件語句中的算術操作

9.4代碼可綜合常用指導原則

9.4.1避免創建不必要的鎖存器

9.4.2進程中的敏感列表一定要完備

9.4.3for循環的使用以及避免組合邏輯迴環

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小結

相關詞條

熱門詞條

聯絡我們