現場可編程邏輯陣列(Field
Programmable Gate Array,FPGA)器件廣泛應用於汽車電子、多媒體廣播、計算機和存儲、消費電子、工業、醫療、軍事、航空航天、通信、測量等領域。FPGA既廣泛使用在通信基站、大型路由器等高端網絡設備中,也使用在顯示器(電視)、投影儀等日常家用電器裡,FPGA已經從早的隻應用於輔助功能和膠合邏輯(連接各種功能塊以及集成電路的邏輯電路)的簡單器件,發展到現今成為眾多產品的核心器件。使用FPGA器件,可以使開發時間縮短1/2~1/3,因此FPGA成為實現“少量多品種”和“產品周期短”市場中不可缺少的器件之一。
針對FPGA器件的使用和開發離不開EDA工具的支持,因此,一般FPGA器件廠商也會提供相應的EDA開發工具,比如Altera公司的Quartus Ⅱ/Qsys開發平臺、Xilinx公司的ISE/Vivado開發平臺。其他公司器件都有自己的開發工具,但開發流程基本保持一致。熟悉這些工具對FPGA的開發無疑是基礎和重要的,因此本書的結尾部分主要側重於通過一些實驗來讓大家了解和熟悉Quartus與Vivado工具的使用。
一般而言,使用FPGA有兩個層次: 電路級和繫統級。簡單來說,電路級側重於在FPGA上實現某些功能電路,或者實現信號處理算法,如FFT、CORDIC、OFDM,或者實現通信繫統中部分通信協議,如基站與射頻覆蓋設備中用得廣泛的通用公眾無線接口協議(CPRI)。繫統級這裡主要是指FPGA中使用CPU,如Nios Ⅱ、MicroBlaze、ARM、PowerPC等軟核、硬核,構成一個比較大的SoC繫統,在此基礎上可以進一步進行軟件應用開發。
因此,本書的編寫也主要遵從這個思路,繫統描述了從電路到繫統的FPGA設計方法、流程、技巧以及工具使用。
第1章簡要介紹了FPGA設計概論。
第2章對硬件描述語言Verilog
HDL進行了簡單介紹。
第3章對使用Verilog
HDL對包括加法器在內的基礎電路設計進行了概述。
第4章主要介紹了邏輯綜合的概念以及Synplify、DC工具。
第5章主要介紹了測試平臺的撰寫以及行為級仿真工具ModelSim的使用。
第6章描述了在通信調制中使用較多的CORDIC算法。
第7章對無線通信繫統中的CPRI等協議進行了闡述,並詳述了其FPGA實現。
第8章描述了通信繫統直放站中數字接口電路部分的FPGA設計。
第9章通過一個電機控制實例來描述FPGA繫統級的設計過程,以Nios Ⅱ為核心處理器來搭建一個SoC繫統。
由於FPGA器件的廣泛應用,對於FPGA器件組成的繫統的測試與認證也成了非常重要的一個課題,故第10章介紹了航空航天領域的一個硬件繫統設計標準DO254,側重介紹其適應於FPGA器件的流程與準則。
為了便於讀者實踐操作,第11章給出了豐富的FPGA設計實驗,包括基礎實驗和基於Qsys、SOPC的綜合實驗,如μClinux在Nios Ⅱ上的移植; 還特別介紹了Vivado
HLS工具的使用。HLS作為一種目前商業化的高層次綜合工具,對繫統級設計人員及算法設計人員都具有非常大的吸引力。書中給出的源代碼都經過了實際項目的檢驗,讀者可在清華大學出版社網站下載相關的源代碼。
本書可作為電子、通信、自動化、計算機科學與技術等相關專業的高年級本科生及研究生的教學用書,也可作為從事FPGA設計工作的工程師的參考圖書。
在編寫本書的過程中,引用了大量參考文獻,對此表示感謝。書中不少資料來自Altera和Xilinx公司,Altera大學計劃負責人陳衛中博士和Xilinx大學計劃負責人謝凱年博士均為本書的編寫提供了大量資料與幫助,對兩位致以謝意。感謝清華大學出版社的工作人員為本書順利出版所付出的辛勤勞動。本科生張駿盛對Vivado
HLS實驗進行了驗證,研究生李靜園、林卓勝為本書提供了相關協助,謝志纔、林燕雲同學對本書亦有貢獻,一並表示感謝。
由於作者水平有限,書中難免會有紕漏之處,敬請專家和讀者批評指正。
蔡述庭
2014年5月