本書結(jié)合作者多年工作實踐,以開發(fā)流程為主線,通過大量實例詳細介紹了FPGA開發(fā)、調(diào)試方面的一些基本方法和獨特技巧;提出了一種“自動化”開發(fā)設(shè)計的理念,即通過批處理加腳本的方式自動完成FPGA設(shè)計工程的建立、編譯和轉(zhuǎn)移,以及在使用ModelSim設(shè)計仿真時,一鍵式完成整個仿真流程的方法。對于FPGA設(shè)計調(diào)試和測試方面,則詳細介紹了SignalTap II的使用,并重點介紹了Virtual JTAG(虛擬JTAG)。
本書可作為高等院校通信工程、電子工程、計算機、微電子等專業(yè)有一定FPGA開發(fā)基礎(chǔ)的學生的參考用書,也可作為硬件工程師、FPGA工程師的工具書。
王敏志【網(wǎng)名:coyoo、湘攸客】,曾就職于多家科研院所,從事過雷達、通信以及醫(yī)療電子方面的研發(fā)工作,主要負責數(shù)字電路方面開發(fā),包括電路設(shè)計、DSP以及FPGA編程。
第1章好好準備你的FPGA設(shè)計1
1.1FPGA設(shè)計要求“軟硬兼施”嗎1
1.2如何選擇一個合適的FPGA3
1.3教你如何從頂層規(guī)劃你的設(shè)計7
1.4進行早期功耗估算避免FPGA動力不足9
1.4.1早期功耗估算9
1.4.2精確功耗估算13
1.5規(guī)劃并選擇片內(nèi)調(diào)試工具16
1.6小結(jié)17
第2章快速建立你的第一個FPGA工程18
第1章好好準備你的FPGA設(shè)計1
1.1FPGA設(shè)計要求“軟硬兼施”嗎1
1.2如何選擇一個合適的FPGA3
1.3教你如何從頂層規(guī)劃你的設(shè)計7
1.4進行早期功耗估算避免FPGA動力不足9
1.4.1早期功耗估算9
1.4.2精確功耗估算13
1.5規(guī)劃并選擇片內(nèi)調(diào)試工具16
1.6小結(jié)17
第2章快速建立你的第一個FPGA工程18
2.1FPGA設(shè)計基本流程18
2.2手把手教你用QuartusII建立FPGA工程20
2.3教你如何利用腳本創(chuàng)建工程24
2.3.1Quartus II各個設(shè)計流程對應的腳本命令24
2.3.2Quartus II TCL包(Package)25
2.3.3執(zhí)行與QuartusII有關(guān)腳本的入口26
2.3.4利用腳本創(chuàng)建工程27
2.4利用腳本約束你的工程28
2.5利用腳本自動化完成FPGA設(shè)計29
2.6實例分析31
2.7小結(jié)37
第3章采用Altera的建議進行FPGA設(shè)計38
3.1利用QuartusII模板開始邏輯設(shè)計38
3.2同步FPGA設(shè)計方法及指導39
3.2.1同步設(shè)計的基本原則39
3.2.2異步設(shè)計的危害40
3.3使用Altera的宏函數(shù)41
3.4在FPGA中實現(xiàn)除法功能41
3.4.1二進制快速除法41
3.4.2使用Altera除法函數(shù)43
3.5Altera推薦的代碼風格45
3.6在代碼中使用寄存器而不是鎖存器53
3.6.1鎖存器電路結(jié)構(gòu)53
3.6.2邏輯設(shè)計中哪些情況會產(chǎn)生鎖存器54
3.6.3鎖存器分析實例56
3.7使用Altera“原語”模塊59
3.7.1如何讓設(shè)計中的LCELL不被軟件優(yōu)化60
3.7.2進位鏈以及如何應用在自己的設(shè)計中62
3.8小結(jié)65
第4章使用ModelSim進行仿真66
4.1ModelSim仿真工具介紹66
4.2使用ModelSim軟件進行仿真68
4.2.1仿真基礎(chǔ)——利用GUI完成仿真68
4.2.2通過創(chuàng)建仿真工程來設(shè)計仿真72
4.3為ModelSim獨立版本提取Altera仿真庫75
4.3.1提取Altera仿真庫的步驟75
4.3.2仿真Altera器件到底需要提取哪些庫77
4.4教你如何用腳本完成ModelSim的自動化仿真流程81
4.5ModelSim使用問題實例82
4.6教你如何寫TestBench86
4.7實例練習88
4.7.1練習前準備88
4.7.2GUI方式仿真實例91
4.7.2自動化創(chuàng)建工程仿真實例92
4.8小結(jié)93
第5章教你如何用TiemeQuest來分析你的設(shè)計94
5.110分鐘學會使用TimeQuest94
5.1.1時序分析的基本概念94
5.1.2教你使用TimeQuest95
5.2時序分析的基礎(chǔ)98
5.3了解什么是時序約束104
5.3.1時鐘約束104
5.3.2I/O約束105
5.4約束例外111
5.4.1多周期路徑約束111
5.4.2假路徑約束114
5.5TimeQuest使用實例116
5.6小結(jié)124
第6章對你的FPGA設(shè)計進行優(yōu)化125
6.1增量編譯使設(shè)計加速125
6.1.1什么是增量編譯125
6.1.2認識什么是邏輯鎖128
6.1.3開始使用增量編譯132
6.2選擇使用合適的設(shè)置和約束來優(yōu)化設(shè)計144
6.2.1優(yōu)化之前145
6.2.2時序優(yōu)化146
6.2.3面積優(yōu)化151
6.3小結(jié)152
第7章對你的FPGA設(shè)計進行調(diào)試和測試153
7.1SignalTap II153
7.1.1教你快速認識SignalTapII 調(diào)試模塊153
7.1.2教你快速創(chuàng)建第一個SignalTapII 調(diào)試模塊并調(diào)試154
7.1.3教你使用SignalTapII高級功能——StorageQualification161
7.1.4教你使用SignalTapII高級功能——PowerupTrigger165
7.2FPGA測試利器VirtualJTAG168
7.2.1你所要了解的JTAG168
7.2.2告訴你什么是VirtualJTAG172
7.2.3教你如何在設(shè)計中使用VirtualJTAG Interface (VJI)175
7.2.4教你用腳本創(chuàng)建自己的GUI虛擬JTAG測試平臺180
7.2.5單個JTAG連接多條電纜、多FPGA在虛擬JTAG中的應用185
7.3工程更改管理(ECO)187
7.3.1ECO及其基本操作流程187
7.3.2ECO那些事兒之屬性編輯器189
7.3.3ECO那些事兒之LE與ALM194
7.3.4ECO那些事兒之ALM的DATAF端口200
7.4對你的FPGA進行正確配置204
7.5小結(jié)216
第8章設(shè)計實例應用分析217
8.1如何設(shè)計應用Altera的FIFO217
8.1.1教你如何設(shè)計自己的同步FIFO218
8.1.2教你如何使用Altera的同步FIFO222
8.1.3教你如何使用Altera的異步FIFO227
8.2教你如何向他人轉(zhuǎn)移設(shè)計時保護自己的知識產(chǎn)權(quán)228
8.2.1FPGA安全性設(shè)計——Altera方案229
8.2.2如何加密轉(zhuǎn)移自己的設(shè)計233
8.3FPGA外掛接口之SDRAM235
8.3.1SDRAM芯片235
8.3.2SDRAM控制器邏輯設(shè)計239
8.4高速串行接口設(shè)計沒有看上去那么難259
8.4.1GXB模塊介紹259
8.4.2GXB應用實例265
8.5教你如何在FPGA中設(shè)計TDC272
8.5.1告訴你到底什么是TDC273
8.5.2基于FPGA的TDC那些事兒之3大難題277
8.5.3基于FPGA的TDC那些事兒之設(shè)計資源LAB280
8.5.4基于FPGA的TDC那些事兒之粗細時間285
8.5.5基于FPGA的TDC那些事兒之自動校準及測量精度292
8.6利用FPGATDC測量PLL核抖動實例295
8.7小結(jié)300
第9章Altera FPGA高級設(shè)計技巧301
9.1器件結(jié)構(gòu)對代碼風格的影響301
9.2基本邏輯結(jié)構(gòu)分析302
9.3可采用的設(shè)計技巧309
9.4專有資源利用以及優(yōu)化關(guān)鍵路徑318
9.5使用QuartusII的物理綜合對設(shè)計進行優(yōu)化319
9.5.1針對性能的物理綜合優(yōu)化選項323
9.5.2布線的物理綜合優(yōu)化325
9.6了解什么是寄存器打包325
9.7探索設(shè)計的高級手段——DSE332
9.8小結(jié)336
參考文獻337
FPGA的規(guī)模越來越大,F(xiàn)PGA的設(shè)計也越來越復雜,我們看到,F(xiàn)PGA不但部分代替了DSP的功能,同時加速了和CPU的融合速度,F(xiàn)PGA設(shè)計工程師面臨既要充當硬件工程師又要充當軟件工程師的要求。隨著工藝的進步,F(xiàn)PGA除了向更加高端的方向發(fā)展,同時也擴展了其在低端的應用市場,掌握FPGA開發(fā)技術(shù)可以提高電子工程師的競爭能力,同時也能擴展工程師崗位適應空間。
本書特點
EDA本身就是指電子自動化設(shè)計,在本書中,筆者根據(jù)多年的實際工作經(jīng)驗總結(jié)了一個自動化設(shè)計開發(fā)理念:設(shè)計開發(fā)過程中存在許多需要重復操作的流程,而這些的操作都有相關(guān)的指令,所以我們可以將這些操作的指令組織在一個腳本文件里,然后通過批處理的方式達到“自動化”地跑這些需要重復操作的流程。這種“批處理加腳本”的開發(fā)、仿真和調(diào)試方法,是本書介紹的一大重點。而且實踐證明,實際工作中也大大提高了筆者的效率。
合理地使用批處理可以提高設(shè)計的效率。開發(fā)后期占用讀者更多時間的是設(shè)計的調(diào)試和測試,本書在介紹了常規(guī)的調(diào)試工具(SignalTap II)之后,使用了虛擬JTAG這個調(diào)試測試利器,這是因為在項目設(shè)計完成后進行系統(tǒng)測試的時候,虛擬JTAG可以讓讀者擺脫額外的測試接口,直接利用FPGA現(xiàn)成的JTAG口完成系統(tǒng)的測試工作。筆者借助虛擬JTAG完成了多通道TDC、多通道ADC以及PMT能譜等測試,大大提高了測試效率和效果。
正是這些可以提高我們設(shè)計效率的技巧和組件,構(gòu)成了本書的一大特色,也是筆者特別希望介紹給廣大讀者的。FPGA的設(shè)計開發(fā)是一種應用工程,本書更多是在告訴大家“怎么做”和“怎么做會更好”;當然如果可能,也會盡量給出“為什么”要這樣做,但這并不是我們工程應用的重點。
本書主要內(nèi)容
本書以Altera的FPGA開發(fā)流程為基礎(chǔ),詳細介紹Altera FPGA開發(fā)過程以及一些開發(fā)技巧,分為9章:
第1章 在介紹FPGA設(shè)計基本要求的基礎(chǔ)上,主要介紹FPGA開發(fā)前的準備事項。
第2章 介紹如何快速建立自己的第一個Quartus II工程,重點介紹應用TCL腳本來操作Quartus II工程。
第3章 重點介紹Altera推薦的FPGA開發(fā)技巧。
第4章 介紹了使用ModelSim仿真Altera FPGA設(shè)計,重點推薦自動化仿真的概念和方法。
第5章 介紹了時序分析,并使用TimeQuest對Altera FPGA設(shè)計進行時序分析。
第6章 介紹了如何對FPGA進行優(yōu)化,重點介紹了Altera的增量式編譯方法。
第7章 介紹了如何對FPGA設(shè)計進行調(diào)試和測試,在SignalTap II工具的基礎(chǔ)上,推薦使用Virtual JTAG對Altera FPGA設(shè)計進行測試。
第8章 介紹了幾個筆者項目實踐中用到的實例,其中包括FIFO和SDRAM的特殊應用、高速串行接口(GXB)的仿真(特別是Byte Ordering模塊的仿真)以及FPGA TDC設(shè)計實例。
第9章 介紹了Altera FPGA設(shè)計開發(fā)的一些比較高級的技巧,在了解FPGA器件結(jié)構(gòu)的基礎(chǔ)上使用一些優(yōu)化手段,還可以了解到如何使用物理綜合以及DSE工具對Altera FPGA設(shè)計工程進行優(yōu)化。
本書讀者對象
本書可作為高等院校通信工程、電子工程、計算機、微電子等專業(yè)有一定FPGA開發(fā)基礎(chǔ)的學生的參考用書,也可作為硬件工程師、FPGA工程師的工具書。
配套資料
本書提供各章實例完整工程文件、設(shè)計源文件,讀者可以從北京航空航天大學出版社網(wǎng)站(www.buaapress.com.cn)的“下載專區(qū)”免費下載。
致謝
在此需要特別感謝北京航空航天大學出版社工作人員對本書的關(guān)心和支持,尤其是編輯的大力支持。
最后感謝您選擇了這本書,如果對書里的內(nèi)容有什么批評、建議或者對書中的內(nèi)容有任何的困惑都歡迎大家和我聯(lián)系。
電子郵件:keyou123@sina.com
博客:http://bbs.ednchina.com/BLOG_coyoo_41415.HTM
http://blog.chinaaet.com/coyoo/
討論小組
http://group.ednchina.com/GROUP_GRO_14596_3000001722.HTM