《Xilinx FPGA開發(fā)實用教程(第2版)(配光盤)(EDA工程技術(shù)叢書)》系統(tǒng)地論述了Xilinx FPGA開發(fā)方法、開發(fā)工具、實際案例及開發(fā)技巧,內(nèi)容涵蓋Xilinx器件概述、Verilog HDL開發(fā)基礎(chǔ)與進階、Xilinx FPGA電路原理與系統(tǒng)設(shè)計、基于ISE Foundation的邏輯設(shè)計、時序分析、邏輯開發(fā)專題、基于EDK的嵌入式系統(tǒng)設(shè)計、基于System Generator的DSP系統(tǒng)設(shè)計、數(shù)字信號處理專題以及SERDES技術(shù)專題共10章。各章均以實戰(zhàn)開發(fā)為目的,結(jié)合最新版本的軟硬件特征,覆蓋了FPGA的各主要應(yīng)用領(lǐng)域。配套光盤中包含了書中所有的實例代碼,便于讀者快速動手實踐。書中融匯了作者多年的工程開發(fā)經(jīng)驗,希望能夠極力幫助讀者提高工程開發(fā)能力。
《Xilinx FPGA開發(fā)實用教程(第2版)(配光盤)(EDA工程技術(shù)叢書)》適合作為電子信息工程、通信工程、自動化、計算機科學(xué)與技術(shù)等相關(guān)專業(yè)的高年級本科生及研究生的教學(xué)用書,也可以作為從事FPGA設(shè)計工作的工程師的參考圖書。
賽靈思(Xilinx)公司作為可編程器件(PLD)的領(lǐng)導(dǎo)廠商,占有超過50%的市場份額,為客戶提供可編程邏輯芯片(CPLD、FPGA和PROM)、軟件設(shè)計工具、不同等級的知識產(chǎn)權(quán)核(IP Core)以及系統(tǒng)級的完整解決方案。
隨著工藝和設(shè)計水平的不斷提高,F(xiàn)PGA在數(shù)字系統(tǒng)中所扮演的角色也從邏輯膠合者提升到處理核心。從2006年起,賽靈思公司的FPGA就涵蓋了邏輯應(yīng)用、數(shù)字信號處理以及嵌入式三大應(yīng)用領(lǐng)域。到目前為止,賽靈思已成為完整的解決方案提供者。例如,量產(chǎn)的Spartan 6系列FPGA采用45nm工藝,廣泛應(yīng)用在中低規(guī)模系統(tǒng)中,如機器視覺、機頂盒以及廣泛的多媒體處理等; 量產(chǎn)的Virtex5/6系列FPGA分別采用65nm、40nm工藝,主要面向高端應(yīng)用,如高速互聯(lián)網(wǎng)絡(luò)、無線通信、寬帶接入以及汽車工業(yè)等。28nm的7系列FPGA(Artix、Kintex和Virtex三個低、中、高系列)也已逐漸量產(chǎn),進一步提升FPGA系統(tǒng)設(shè)計能力。此外,Zynq7000可擴展處理平臺(EPP)將ARM CortexA9 雙核處理器系統(tǒng)與可編程邏輯緊密集成在一起,為業(yè)界帶來革命性的創(chuàng)新解決方案。
基于賽靈思公司的領(lǐng)先技術(shù),更多的工程師和研究人員已加入到賽靈思FPGA的開發(fā)隊伍中。在過去四年中,賽靈思公司通過大學(xué)和開源社區(qū)OpenHard,開展了三屆開源硬件創(chuàng)新大賽以及多個網(wǎng)絡(luò)研討會,但切入點都比較零散,不能形成系統(tǒng)化知識體系。 《Xilinx FPGA開發(fā)實用教程》第一版于2008年出版,彌補了上述不足,幫助廣大技術(shù)人員、在校的研究生和高年級本科生盡快掌握Xilinx FPGA的開發(fā)流程,連續(xù)印刷4次,深受讀者歡迎。由于FPGA技術(shù)發(fā)展迅速,因此作者更新了原書內(nèi)容,并以最新的ISE13.x版本和量產(chǎn)的6系列器件為例進行介紹,更加符合FPGA發(fā)展趨勢。
整體而言,本書具有以下三項特色: 首先,從邏輯設(shè)計、數(shù)字信號處理、嵌入式系統(tǒng)設(shè)計和高速連接四個方面系統(tǒng)地介紹了Xilinx FPGA的開發(fā)與應(yīng)用,條理清晰、思路明確,符合FPGA目前和未來的發(fā)展趨勢; 其次,較為詳細地介紹了Xilinx FPGA的開發(fā)技巧,融入了作者的工程開發(fā)經(jīng)驗,對于初學(xué)者和工程開發(fā)人員來講都具有較強的可讀性; 最后,極為全面地介紹了賽靈思公司的ISE、System Generator以及EDK開發(fā)軟件,非常系統(tǒng)和完整。
因此,對于在校研究生、高年級本科生及從事FPGA開發(fā)的工程師來說,本書是一本較為理想的EDA教材和工程工具書,我鄭重地將其推薦給大家!希望通過本書的出版,使更多的讀者掌握賽靈思FPGA的開發(fā)技能,更好地促進FPGA開發(fā)技術(shù)的普及和推廣。
賽靈思(Xilinx)公司中國區(qū)大學(xué)計劃經(jīng)理謝凱年博士2012年6月
2008年10月,作者有幸聆聽了Xilinx公司全球CTO Ivo Bolsens先生在清華大學(xué)所作的題為“FPGA:The future platform for transforming, transporting and computing”的演講,感觸頗深。Ivo Bolsens先生指出了FPGA的三大應(yīng)用領(lǐng)域:數(shù)字處理中的信號變換、高速交換中的數(shù)據(jù)收發(fā)以及求解中的復(fù)雜計算。作者帶著感慨基于當時的ISE 9.1軟件版本,編寫了《Xilinx FPGA開發(fā)實用教程》一書,受到讀者青睞,多次重印。經(jīng)過3年多的發(fā)展,Xilinx公司的軟、硬件均有大幅升級,ISE軟件已升級到13.x版本,F(xiàn)PGA已經(jīng)發(fā)展到28nm的“7”系列芯片。因此作者在第1版的基礎(chǔ)上,結(jié)合ISE軟件和FPGA特征,重新整理了原稿,刪除了部分冗余、陳舊的內(nèi)容,形成了此次的修訂版版本。
同第1版一樣,修訂版版本中的全部內(nèi)容都是作者實際項目開發(fā)經(jīng)驗和Xilinx公司各類文檔、書籍的結(jié)合體,全部信息幾乎都可以從Xilinx網(wǎng)站以及Google上找到淵源,不過我們?nèi)匀幌蚰扑]本書,因為網(wǎng)絡(luò)的信息是分散的、雜亂的,且正確性不是100%的,本書各章內(nèi)容的安排是從大量的實踐中總結(jié)出來的,循序漸進,條理清楚,且都經(jīng)過作者驗證,我們的目的就是從Ivo Bolsens先生的觀點出發(fā),結(jié)合項目開發(fā),將網(wǎng)絡(luò)上盡可能多的相關(guān)信息以相對較高的質(zhì)量組合起來。
本書適合電子、通信以及計算機等相關(guān)專業(yè)的研究生和高年級本科生使用,同時也適合于從事Xilinx系列FPGA設(shè)計和開發(fā)的工程師。毫無疑問,市場上已經(jīng)有很多關(guān)于FPGA設(shè)計的書籍,我們也不認為本書是其中最重要的一本,但我們意識到FPGA開發(fā)一定要結(jié)合芯片特點以及提供商的諸多建議和協(xié)議,只有這樣才能真正掌握其開發(fā)之道。
在第1版中,由于未配備光盤,缺少實際的工程和電子版本代碼,不利于快速學(xué)習(xí),廣大讀者多次給作者指出這一不足。因此,在修訂版本中,我們將全書所有內(nèi)容都移植在小巧的S6 CARD板卡(基于Spartan 6 LX9的開發(fā)板,和身份證大小一樣,通過USB供電和調(diào)試,無須下載線纜)上,并將所有的工程文件附在光盤上,為讀者提供通用的驗證平臺。S6 CARD板卡的詳細信息可參考與非網(wǎng)相關(guān)介紹(http://www.openhw.org/shop/index.php?action=productandid=248)。
全書各章由徐文波、田耘共同完成編寫。此外,在成文過程中參考了較多的書籍、論文和網(wǎng)絡(luò)文獻,在此向廣大作者表示深深謝意。
FPGA技術(shù)博大精深且發(fā)展迅猛,不可能通過一本書進行全方位的詳細介紹,更多還需要讀者自己動手實踐。由于作者水平有限,F(xiàn)PGA技術(shù)發(fā)展迅速,書中難免存在不妥之處,敬請廣大讀者指正。
作者
2012年5月
1.2.3軟核、硬核及固核
1.2.4Xilinx主流FPGA
1.3Xilinx軟件工具
1.3.1ISE Foundation軟件
1.3.2EDK開發(fā)工具
1.3.3System Generator DSP工具
1.3.4ChipScope Pro
1.3.5PlanAhead
1.4本書案例驗證平臺--S6 CARD開發(fā)板
1.4.1S6 CARD開發(fā)板的組成與功能
1.4.2S6 CARD板卡引腳約束說明
本章小結(jié)
第2章Verilog HDL開發(fā)基礎(chǔ)與進階
2.1Verilog HDL語言
2.1.1Verilog HDL語言的歷史
2.1.2Verilog HDL的主要功能
2.1.3Verilog HDL和VHDL的區(qū)別
2.1.4Verilog HDL設(shè)計方法
2.2Verilog HDL基本程序結(jié)構(gòu)
2.3Verilog HDL語言的數(shù)據(jù)類型和運算符
2.3.1標志符
2.3.2數(shù)據(jù)類型
2.3.3模塊端口
2.3.4常量集合
2.3.5運算符和表達式
2.4Verilog HDL語言的描述語句
2.4.1結(jié)構(gòu)描述形式
2.4.2數(shù)據(jù)流描述形式
2.4.3行為描述形式
2.4.4混合設(shè)計模式
2.5Verilog HDL建模與調(diào)試技巧
2.5.1雙向端口的使用和仿真
2.5.2阻塞賦值與非阻塞賦值
2.5.3輸入值不確定的組合邏輯電路
2.5.4數(shù)學(xué)運算中的擴位與截位操作
2.5.5利用塊RAM來實現(xiàn)數(shù)據(jù)延遲
2.5.6測試向量的生成
2.6Verilog HDL常用程序示例
2.6.1數(shù)字電路中基本單元的FPGA實現(xiàn)
2.6.2基本時序處理模塊
2.7Xilinx器件原語的使用
本章小結(jié)
第3章Xilinx FPGA電路原理與系統(tǒng)設(shè)計
3.1FPGA配置電路
3.1.1Xilinx FPGA配置電路
3.1.2Xilinx FPGA常用的配置引腳
3.1.3Xilinx FPGA配置電路分類
3.2JTAG電路的原理與設(shè)計
3.2.1JTAG電路的工作原理
3.2.2Xilinx JTAG下載線
3.3FPGA的常用配置電路
3.3.1主串模式--最常用的FPGA配置模式
3.3.2SPI串行Flash配置模式
3.3.3從串配置模式
3.3.4主字節(jié)寬度并行配置模式
3.3.5JTAG配置模式
3.3.6System ACE配置方案
3.4iMPACT軟件使用
3.4.1iMPACT軟件
3.4.2iMPACT中的JTAG配置操作
3.4.3iMPACT中的Xilinx PROM配置操作
3.4.4iMPACT中的SPI Flash配置操作
3.4.5FPGA配置失敗的常見問題
3.5從配置PROM中讀取用戶數(shù)據(jù)
3.5.1從PROM中引導(dǎo)數(shù)據(jù)
3.5.2硬件電路設(shè)計方法
3.5.3軟件操作流程
本章小結(jié)
第4章基于ISE Foundation的邏輯設(shè)計
4.1ISE套件
4.1.1ISE的特點
4.1.2ISE的功能
4.1.3ISE的安裝
4.1.4ISE的用戶界面
4.2基于ISE的設(shè)計輸入
4.2.1新建工程
4.2.2代碼輸入
4.2.3代碼模板的使用
4.2.4Xilinx IP Core的原理與應(yīng)用
4.3ISE基本操作
4.3.1基于Xilinx XST的綜合
4.3.2基于ISim的仿真
4.3.3基于ISE的實現(xiàn)
4.3.4基于目標和策略的設(shè)計方法
4.3.5基于SmartGuide的設(shè)計方法
4.3.6比特文件的生成
4.3.7基于IMPACT的芯片配置
4.3.8功耗分析以及XPower的使用
4.4約束
4.4.1約束文件
4.4.2UCF文件的語法說明
4.4.3引腳和區(qū)域約束語法
4.4.4時序約束語法
4.5調(diào)試利器--ChipScope Pro
4.5.1ChipScope Pro工作原理
4.5.2ChipScope Pro操作流程
4.5.3ChipScope Pro開發(fā)實例
4.6ISE與第三方EDA軟件
4.6.1ModelSim軟件的使用
4.6.2ModelSim和ISE的聯(lián)合開發(fā)流程
4.6.3MATLAB軟件的使用
4.6.4ISE與MATLAB的聯(lián)合使用
4.6.5MATLAB、ModelSim和ISE聯(lián)合開發(fā)實例
本章小結(jié)
第5章時序分析
5.1時序分析的作用和原理
5.1.1時序分析的作用
5.1.2靜態(tài)時序分析原理
5.1.3時序分析的基礎(chǔ)知識
5.2Xilinx FPGA中的時鐘資源
5.2.1全局時鐘資源
5.2.2第二全局時鐘資源
5.3ISE時序分析器
5.3.1時序分析器的特點
5.3.2時序分析器的文件類型
5.3.3時序分析器的調(diào)用與用戶界面
5.3.4提高時序性能的手段
本章小結(jié)
第6章邏輯開發(fā)專題
6.1Verilog HDL設(shè)計進階
6.1.1面向硬件的程序設(shè)計思維
6.1.2“面積”和“速度”的轉(zhuǎn)換原則
6.1.3同步電路的設(shè)計原則
6.2Xilinx FPGA芯片底層單元的使用
6.2.1Xilinx全局時鐘網(wǎng)絡(luò)的使用
6.2.2CMT時鐘管理模塊的使用
6.2.3Xilinx內(nèi)嵌塊存儲器的使用
6.2.4硬核乘加器的使用
6.3代碼風(fēng)格
6.3.1代碼風(fēng)格的含義
6.3.2代碼書寫風(fēng)格
6.3.3通用設(shè)計代碼風(fēng)格
6.3.4Xilinx專用設(shè)計代碼風(fēng)格
6.4UART接口開發(fā)實例
6.4.1串口接口與RS?232協(xié)議
6.4.2串口通信控制器的Verilog HDL實現(xiàn)
6.4.3RS?232設(shè)計板級調(diào)試
本章小結(jié)
第7章基于EDK的嵌入式系統(tǒng)設(shè)計
7.1可配置嵌入式系統(tǒng)(EDK)
7.1.1基于FPGA的可編程嵌入式開發(fā)系統(tǒng)
7.1.2Xilinx公司的解決方案
7.2Xilinx嵌入式開發(fā)系統(tǒng)組成
7.2.1片內(nèi)微處理器軟核MicroBlaze
7.2.2PLB總線系統(tǒng)結(jié)構(gòu)
7.2.3IP核以及設(shè)備驅(qū)動
7.3EDK軟件
7.3.1EDK設(shè)計的實現(xiàn)流程
7.3.2EDK的文件管理架構(gòu)
7.4XPS軟件典型操作
7.4.1XPS的啟動
7.4.2利用BSB創(chuàng)建新工程
7.4.3XPS的用戶界面
7.4.4XPS的目錄結(jié)構(gòu)與硬件平臺
7.4.5在XPS加入IP Core
7.4.6XPS工程的綜合與實現(xiàn)
7.5SDK軟件典型操作
7.5.1SDK的用戶界面
7.5.2SDK的典型操作
7.5.3IP外設(shè)的API函數(shù)查閱和使用方法
7.5.4GPIO外設(shè)開發(fā)實例
7.5.5其他外設(shè)開發(fā)實例
本章小結(jié)
第8章基于System Generator的DSP系統(tǒng)設(shè)計
8.1System Generator的特點與安裝
8.1.1System Generator的主要特點
8.1.2System Generator的安裝和配置
8.2System Generator的使用基礎(chǔ)
8.2.1System Generator開發(fā)流程
8.2.2Simulink的應(yīng)用
8.3基于System Generator的DSP系統(tǒng)設(shè)計
8.3.1System Generator的應(yīng)用
8.3.2System Generator中的信號類型
8.3.3自動代碼生成
8.3.4編譯MATLAB設(shè)計生成FPGA代碼
8.3.5子系統(tǒng)的建立與ISE調(diào)用
8.4基于System Generator的硬件協(xié)仿真
8.4.1硬件協(xié)仿真平臺的特點與平臺安裝
8.4.2硬件協(xié)仿真的基本操作
8.4.3共享存儲器的操作
8.5System Generator的高級應(yīng)用
8.5.1導(dǎo)入外部的HDL程序模塊
8.5.2設(shè)計在線調(diào)試
8.5.3系統(tǒng)中的多時鐘設(shè)計
8.5.4FPGA設(shè)計的高級技巧
本章小結(jié)
第9章數(shù)字信號處理專題
9.1數(shù)字信號
9.1.1數(shù)字信號的產(chǎn)生
9.1.2采樣定理
9.1.3數(shù)字系統(tǒng)的主要性能指標
9.1.4A/D轉(zhuǎn)換的字長效應(yīng)
9.2常用DSP IP Core及其應(yīng)用
9.2.1DDS模塊IP Core的應(yīng)用
9.2.2FFT算法IP Core的應(yīng)用
9.2.3Cordic算法IP Core的應(yīng)用
9.2.4FIR濾波器IP Core的應(yīng)用
9.3多速率濾波器的FPGA實現(xiàn)
9.3.1多速率信號處理的意義
9.3.2多速率信號濾波器的基本操作
9.3.3CIC濾波器的FPGA實現(xiàn)
9.3.4HB濾波器的FPGA實現(xiàn)
本章小結(jié)
第10章SERDES技術(shù)專題
10.1高速數(shù)據(jù)連接功能
10.1.1高速數(shù)據(jù)傳輸
10.1.2Xilinx公司高速連接功能的解決方案
10.2實現(xiàn)吉比特高速串行I/O的相關(guān)技術(shù)
10.2.1吉比特高速串行I/O的特點和應(yīng)用
10.2.2吉比特串行I/O系統(tǒng)的組成
10.2.3吉比特串行I/O的設(shè)計要點
10.3Rocket I/O收發(fā)器原理與開發(fā)
10.3.1Rocket I/O硬核組成與工作原理
10.3.2GTP硬核組成與工作原理
10.3.3GTP Wizard開發(fā)實例
10.4PCI?Express G1端點接口設(shè)計
10.4.1PCI Express G1技術(shù)
10.4.2Xilinx PCI Express G1端點模塊
10.4.3PCI Express G1端點接口實例解讀
本章小結(jié)
參考文獻
7.內(nèi)嵌專用硬核
內(nèi)嵌專用硬核是相對底層嵌入的軟核而言的,指FPGA處理能力強大的硬核(Hard Core),等效于ASIC電路。為了提高FPGA性能,芯片生產(chǎn)商在芯片內(nèi)部集成了一些專用的硬核。例如,為了提高FPGA的乘法速度,主流的FPGA中都集成了專用乘法器;為了適用通信總線與接口標準,很多高端的FPGA內(nèi)部都集成了串并收發(fā)器(SERDES),可以達到數(shù)十吉比特/秒的收發(fā)速度。
例如,Xilinx公司的高端產(chǎn)品不僅集成了Power PC或者ARM A9系列高性能CPU,還內(nèi)嵌了DSP Core模塊,其相應(yīng)的系統(tǒng)級設(shè)計工具是EDK和Platform Studio,并以此提出了片上系統(tǒng)SoC的概念。通過Power PC、Miroblaze、Pieoblaze等處理器平臺,能夠開發(fā)標準的DSP處理器及其相關(guān)應(yīng)用,達到SoC的開發(fā)目的。
1.2.3軟核、硬核及固核
IP(Intelligent Property)核是具有知識產(chǎn)權(quán)核的集成電路芯核總稱,是經(jīng)過反復(fù)驗證過的、具有特定功能的宏模塊,與芯片制造工藝無關(guān),可以移植到不同的半導(dǎo)體工藝中。到了SoC階段,IP核設(shè)計已成為ASIC電路設(shè)計公司和FPGA提供商的重要任務(wù),也是其實力體現(xiàn)。對于FPGA開發(fā)軟件,其提供的IP核越豐富,用戶的設(shè)計就越方便,其市場占有率就越高。目前,IP核已經(jīng)變成系統(tǒng)設(shè)計的基本單元,并作為獨立設(shè)計成果被交換、轉(zhuǎn)讓和銷售。
從IP核的提供方式上,通常將其分為軟核、硬核和固核三類。從完成IP核所花費的成本來講,硬核代價最大;從使用靈活性來講,軟核的可復(fù)用性最高。在FPGA領(lǐng)域中,最常用的是軟核和硬核這兩類IP。
1.軟核
軟核在EDA設(shè)計領(lǐng)域指的是綜合之前的寄存器傳輸級(RTL)模型;具體在FPGA設(shè)計中指的是對電路的硬件語言描述,包括邏輯描述、網(wǎng)表和幫助文檔等。軟核只經(jīng)過功能仿真,需要經(jīng)過綜合以及布局布線才能使用。其優(yōu)點是靈活性高、可移植性強,允許用戶自配置;缺點是對模塊的預(yù)測性較低,在后續(xù)設(shè)計中存在發(fā)生錯誤的可能性,有一定的設(shè)計風(fēng)險。軟核是IP核應(yīng)用最廣泛的形式。
Xilinx公司一直以來提供的軟核IP資源比其他廠家都更為豐富,全部集成在開發(fā)組件Core Generator中,本書將在4.2.4節(jié)對其進行詳細說明。
2.固核
固核在EDA設(shè)計領(lǐng)域指的是帶有平面規(guī)劃信息的網(wǎng)表;具體在FPGA設(shè)計中可以看做帶有布局規(guī)劃的軟核,通常以RTL代碼和對應(yīng)具體工藝網(wǎng)表的混合形式提供。將RTL描述結(jié)合具體標準單元庫進行綜合優(yōu)化設(shè)計,形成門級網(wǎng)表,再通過布局布線工具即可使用。和軟核相比,固核的設(shè)計靈活性稍差,但在可靠性上有較大提高。目前,固核也是IP核的主流形式之一。
……