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