-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

FPGA應用開發和仿真

( 簡體 字)
作者:王貞炎 編著類別:1. -> 電子工程 -> FPGA
譯者:
出版社:機械工業出版社FPGA應用開發和仿真 3dWoo書號: 49002
詢問書籍請說出此書號!

有庫存
NT售價: 395

出版日:5/1/2018
頁數:370
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787111582786
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

筆者2004年開始學習FPGA,并被其強大的靈活性所吸引,從此一切成本不敏感的項目能用FPGA的,則不會考慮其他方案。從簡單的邏輯控制、MCU替代到高速的信號處理、網絡與通信應用,沒有什么是一片FPGA(或含有處理器核)不能駕馭的,“一片不行,那就兩片!”在成本不敏感的領域,如科研、產品或芯片原型研發和驗證中,FPGA扮演了極其重要的角色,因為在這些領域往往包含大量特殊的、創新的定制邏輯和功能,或者具備極高的數據傳輸帶寬,并非MCU、MPU(DSP是MPU的一種)或應用處理器所能勝任。

即使是MCU或MPU能夠勝任的工作,若使用FPGA來完成,你可以肆意揮灑自己的創意,構建符合自己習慣的邏輯接口和功能,創造符合特殊要求的功能模塊和處理器外設,而不必像使用通用MCU或MPU那樣,需要學習為了功能通用而設置的紛繁復雜的接口、控制寄存器或API函數。當然,一切的前提是項目成本不敏感,并且你具備深厚的FPGA開發功力——這比MCU或MPU開發要難很多。

但終端產品領域是FPGA尚無法觸及的,主要限制是成本、功耗和開發難度。在成本和功耗上,FPGA靈活的本質決定了它無法與MCU或MPU抗衡,同時終端產品往往出貨量也很大,因而在高帶寬或特殊定制邏輯方面,也可以由ASIC勝任——ASIC在量大時成本極低。

而開發難度大則源于多個方面。在理論方面,想要學好FPGA,甚至說想要入門FPGA,都必須掌握扎實的數字邏輯基礎知識。在語言方面,用于FPGA開發的硬件描述語言(HDL)描述的數字邏輯電路是并行的,與人類思維的串行性(即一步一步的思考)不符,而MCU等開發使用的程序語言則符合人類思維的串行性,相對易于入門和掌握。依筆者淺見,“程序”一詞含有“依序執行的過程”之意,與可綜合的硬件描述語言的并行性不符,因而本書盡量避免使用“程序”一詞指代可綜合的硬件描述語言代碼。

開發困難還源于FPGA技術近年來的快速發展和FPGA相關教育的滯后。

筆者自六年前開始面向華中科技大學啟明學院電工電子科技創新中心(以下簡稱“創新中心”)的學生開設與FPGA應用相關的選修課,并為他們設計開發板,無論課程內容還是開發板,每年都可能會變動以跟進新的技術發展。

創新中心的學生主要來自全校各電類相關院系,并經過嚴格的考核選入,都是理論成績和實踐能力兼優并對電子技術有著濃厚興趣的學生。即便如此,筆者依然感受到FPGA應用教學的困難,特別是在引導和幫助他們使用FPGA實現具備一定難度和深度的功能的時候,或者在實現一個完備的電子電路系統,比如將FPGA用作大學生電子設計競賽作品主控或者各類研究、雙創項目的主要實現平臺的時候。

筆者以為,FPGA應用教學的困難直接反映了數字電路應用教學的困難,這與傳統數字電路課程設置不無關系。在電子技術子領域日趨細分、國內大學電類專業日趨細分的當代,側重數字電路應用的專業(如通信、電氣、自動化等)仍然在深入學習SR鎖存器的電路構成,深入學習如何用74系列IC設計異步時序邏輯電路。筆者并不認為這些不重要,但以為這些應該是側重數字電路理論的專業(如電子、電信等)才需要深入學習的內容,畢竟側重數字電路應用的專業的學生以后一般不需要設計IC;不需要在數字邏輯電路中做晶體管級的優化;也不需要為少數關鍵路徑而動用異步邏輯、鎖存器邏輯。相應地,在側重數字電路應用的專業中,現代數字電路應用中的同步時序邏輯內容并沒有提升到應有的地位,與之相關的時鐘概念和知識、常用的時序邏輯功能單元、基礎的時序分析概念和知識也是比較缺失的。

在本書中,筆者提煉和擴展了傳統數字電路課程中與FPGA應用相關的部分,形成了本書的第1章,便于讀者快速強化FPGA應用設計所需的數字電路基礎知識,尚未學習數字電路課程的低年級讀者也可以通過學習第1章來入門數字電路基礎。

第2章則是SystemVerilog(IEEE 1800—2012)簡明語法講解,主要側重可綜合(即可以在FPGA中實現)的語法,最新的IEEE 1800—2012標準較早期版本引入了不少“漂亮”的語法元素,讓筆者急切地想與讀者分享,后果是少數理應可綜合的語法在目前主流開發工具中尚不支持,或許它們還需要一點時間來跟進,遇到這些特例,書中均會給出解決方法。

第3章是使用ModelSim進行Verilog功能仿真的簡單教程。

第4章是Verilog的基本應用,這一章主要介紹各種數字邏輯基本功能單元的描述,并著重介紹了時鐘、使能的概念和跨時鐘域處理。從這一章起,我們正式開始了FPGA應用設計之旅。

第5章介紹IO規范,首先通識性地介紹了IO連接的常識和常見電平規范,而后以四種常見外部邏輯接口規范為例,介紹了通用接口邏輯的設計和實現。希望讀者能在學習過程中領會到此類設計的一般思路和處理方法。

第6章介紹片上系統的內部互連。片上系統(SoC)結合了通用處理器和FPGA邏輯的優勢,實現了軟硬件協同設計,是當下FPGA應用技術的熱門。而要充分利用SoC的優勢,發揮軟硬件協同的潛力,處理器系統與FPGA邏輯的高速互連至關重要。此章從一種簡單的互連接口入手,逐步過渡到目前應用最為廣泛的AXI互連協議。

第7章介紹Verilog在數字信號處理中的基本應用,主要介紹了一些基礎數字信號處理算法的實現,包括頻率合成、FIR和IIR濾波器、采樣率變換、傅里葉變換和常見于數字控制系統的PID控制器。

第8章介紹Verilog在數字通信中的基本應用,主要介紹了基帶編解碼、各類基礎調制解調的實現。

這些章節的依賴關系如下圖所示。



本書側重Verilog在FPGA中的應用基礎,對于特定FPGA芯片、特定開發工具、特定外部連接和具體系統案例,請關注即將出版的本書的姊妹篇。

本書特別注重理論與工程實現的結合,以實現為主,以相關理論的結論為指導,讀者應著重理解理論與實現的對應關系,注意培養將理論轉換為工程實現的能力。

本書中的代碼均為可綜合代碼,均是從筆者多年教學和工程實踐中實際應用過的代碼中提煉而來的,具備極高的實踐參考價值,并大量采用參數化設計方法,大量采用生成塊和常量表達式/函數,具備極高的可重用性。書中不可綜合的代碼只有:明確說明為測試平臺;明確說明有些開發工具尚不支持的某些新語法,但一般會給出修改方法。

本書是筆者多年FPGA開發和教學經驗的總結,彌補了多年來面向創新中心學生講授FPGA應用課程時的教材缺失——雖然優秀教材有很多,但并沒有特別吻合筆者思路和學生要求的。希望本書能對正在學習FPGA應用技術的本、專科學生給予有力的幫助,也希望能給正在使用FPGA進行項目開發的在校研究生、在業工程師一點借鑒和提示。

書中涉及少數較新的英文術語,因未見到廣泛統一或權威的翻譯,筆者嘗試對其進行了翻譯并在文中保留了英文,便于讀者對照理解。

筆者水平有限,書中難免有偏頗謬誤之處,歡迎廣大讀者批評指正!

最后,感謝創新中心尹仕、肖看老師和電氣與電子工程學院實驗教學中心的同事們!感謝我的父母、女友!感謝創新中心605實驗室的同學們!由于他們的支持和幫助,本書才得以順利完成。特別感謝姜鑫同學通讀了書稿,并協助我完成了部分審校工作;特別感謝我的女友幫助繪制了書中電路圖的國標版本,特別感謝出版社的編輯們進一步修訂了這些電路圖。
內容簡介:

全書Verilog模塊均從實際教學和工程應用中提煉而來,參考價值高,可重用性好。本書前四章首先講述FPGA應用設計相關的數字電路基礎知識,然后介紹SystemVerilog語法和常用測試平臺語法,接著講解常用基本數字邏輯功能的Verilog描述和仿真。后續章節更是層層遞進,自成一體,第5章和第6章分別講解常用外部總線功能和SoC內部互連功能的實現,第7章和第8章分別討論數字信號處理應用和數字通信應用。本書可作為電子工程師的技術參考書,也適合作為高校學生學習FPGA應用開發的教材和參考書。
目錄:

前言
第1章 數字電路基礎1
 1.1 模擬電路與數字電路1
 1.2 二進制相關知識3
  1.2.1 二進制和其他進制3
  1.2.2 進制間的相互轉換4
  1.2.3 二進制的四則運算5
 1.3 二進制在電路中的表達6
  1.3.1 有限字長和補碼6
  1.3.2 負數、有符號數和無符號數6
 1.4 門電路和基本邏輯運算10
  1.4.1 非門、與門和或門11
  1.4.2 與非門和或非門12
  1.4.3 異或門和同或門12
  1.4.4 三種表達形式的轉換13
  1.4.5 基本門的電路實現14
  1.4.6 三態輸出和漏極開路輸出15
  1.4.7 波形圖17
  1.4.8 門電路的一些非典型應用18
 1.5 邏輯代數22
  1.5.1 基本定律22
  1.5.2 表達式的代數化簡法23
  1.5.3 卡諾圖化簡法23
 1.6 基本組合邏輯24
  1.6.1 編碼器和譯碼器24
  1.6.2 未定義的輸入狀態26
  1.6.3 數據選擇器27
  1.6.4 延遲和競爭冒險27
  1.6.5 加法器28
  1.6.6 乘法器31
  1.6.7 數值比較器32
 1.7 鎖存器32
  1.7.1 SR鎖存器32
  1.7.2 D鎖存器33
 1.8 觸發器34
  1.8.1 D觸發器、時鐘和使能34
  1.8.2 D觸發器的異步和同步復位36
  1.8.3 D觸發器的建立時間、保持時間和傳輸延遲37
  1.8.4 其他觸發器38
 1.9 時序邏輯40
  1.9.1 移位寄存器和串-并互換40
  1.9.2 延遲鏈42
  1.9.3 分頻器43
  1.9.4 計數器44
  1.9.5 同步時序邏輯46
  1.9.6 累加器48
 1.10 存儲器49
  1.10.1 存儲器容量和類型49
  1.10.2 SRAM50
  1.10.3 雙端口SRAM54
  1.10.4 同步SRAM54
 1.11 小數55
  1.11.1 定點小數及其范圍和誤差55
  1.11.2 定點小數的運算56
  1.11.3 浮點小數58
第2章 Verilog HDL和SystemVerilog60
 2.1 硬件描述語言簡介60
 2.2 設計方法和流程62
 2.3 標識符和關鍵字63
 2.4 值、數和字面量63
  2.4.1 整型常數64
  2.4.2 浮點常數65
  2.4.3 時間常數和字符串常數65
 2.5 線網66
 2.6 變量67
 2.7 參數和常量68
 2.8 類型和位寬轉換70
 2.9 操作符和表達式71
  2.9.1 位選取操作符74
  2.9.2 位拼接和流運算符74
  2.9.3 按位邏輯運算符76
  2.9.4 縮減運算符76
  2.9.5 移位77
  2.9.6 自增賦值和自減賦值77
  2.9.7 條件判斷相關運算符78
  2.9.8 條件運算符79
  2.9.9 let語句79
 2.10 結構和聯合80
 2.11 數組82
 2.12 賦值、過程和塊83
  2.12.1 賦值的延遲84
  2.12.2 賦值的強度85
  2.12.3 流程控制語句86
  2.12.4 always過程88
  2.12.5 阻塞和非阻塞賦值91
 2.13 模塊93
 2.14 接口97
 2.15 生成塊100
 2.16 任務和函數101
 2.17 包102
 2.18 系統任務和函數103
  2.18.1 顯示相關104
  2.18.2 文件相關105
  2.18.3 存儲器相關106
  2.18.4 仿真相關107
  2.18.5 錯誤和信息107
  2.18.6 類型轉換和數學函數107
 2.19 編譯指令108
第3章 ModelSim和仿真111
 3.1 仿真和測試的相關概念111
 3.2 測試代碼編寫112
  3.2.1 時鐘的產生112
  3.2.2 復位的產生114
  3.2.3 一般輸入的產生115
 3.3 ModelSim軟件仿真流程118
  3.3.1 主界面簡介118
  3.3.2 創建工程119
  3.3.3 向工程中添加文件121
  3.3.4 開始仿真122
  3.3.5 帶有信號和波形的例子124
 3.4 波形和格式127
第4章 Verilog基本應用130
 4.1 代碼風格130
 4.2 常用組合邏輯單元的描述132
  4.2.1 編碼器和譯碼器132
  4.2.2 數據選擇器133
 4.3 常用時序邏輯單元的描述133
  4.3.1 移位寄存器133
  4.3.2 延遲鏈134
  4.3.3 計數器134
  4.3.4 累加器136
 4.4 時鐘域和使能137
 4.5 跨時鐘域問題138
  4.5.1 域外慢速跳沿138
  4.5.2 域間狀態傳遞140
  4.5.3 域間事件傳遞142
  4.5.4 域間數據傳遞144
 4.6 存儲器及其初始化144
  4.6.1 各種模式的存儲器描述145
  4.6.2 存儲器的初始化148
 4.7 用存儲器實現延遲鏈151
 4.8 單時鐘FIFO152
 4.9 雙時鐘FIFO156
 4.10 用戶按鍵和數碼LED157
  4.10.1 用戶按鍵處理157
  4.10.2 數碼LED159
 4.11 PWM和死區161
  4.11.1 單端PWM161
  4.11.2 差分PWM162
  4.11.3 死區165
 4.12 正交增量編碼器接口166
 4.13 有限狀態機170
  4.13.1 秒表例子171
  4.13.2 數字示波器觸發采樣例子175
第5章 IO規范與外部總線182
 5.1 單端信號和地182
 5.2 傳輸線與端接184
 5.3 差分信號185
 5.4 高速串行接口188
 5.5 UART189
  5.5.1 UART規范介紹189
  5.5.2 發送器的設計190
  5.5.3 接收器的設計193
  5.5.4 UART收發仿真195
 5.6 SPI197
  5.6.1 SPI規范介紹197
  5.6.2 通用SPI主機設計199
  5.6.3 通用SPI從機設計202
  5.6.4 通用SPI主從機仿真205
 5.7 I2C207
  5.7.1 I2C規范介紹207
  5.7.2 通用I2C主機設計211
  5.7.3 通用I2C從機設計219
  5.7.4 通用I2C主從機仿真224
 5.8 I2S227
  5.8.1 I2S接口介紹227
  5.8.2 I2S收發器設計和仿真229
第6章 片上系統的內部互連232
 6.1 簡單存儲器映射接口232
  6.1.1 從接口233
  6.1.2 與主機互連238
  6.1.3 主接口與仿真241
 6.2 流水線與流式數據245
 6.3 等待、延遲和握手248
  6.3.1 等待和延遲248
  6.3.2 握手248
 6.4 AXI4-Lite接口250
  6.4.1 AXI4-Lite接口介紹250
  6.4.2 從機范例252
  6.4.3 主機范例255
  6.4.4 主從機仿真256
 6.5 AXI4接口257
 6.6 AXI4-Stream接口263
  6.6.1 AXI4-Stream接口介紹263
  6.6.2 范例和仿真263
第7章 數字信號處理應用268
 7.1 基礎知識簡介268
  7.1.1 信號、系統和傳輸函數268
  7.1.2 基本元件的傳輸函數270
  7.1.3 采樣率和采樣定律270
  7.1.4 離散量化信號的信噪比272
 7.2 數值計算273
  7.2.1 乘法273
  7.2.2 除法275
  7.2.3 平方根277
  7.2.4 定點小數279
 7.3 數字頻率合成281
  7.3.1 DDS282
  7.3.2 坐標旋轉機285
 7.4 FIR濾波器290
 7.5 IIR濾波器293
 7.6 采樣率變換297
  7.6.1 升采樣297
  7.6.2 降采樣298
  7.6.3 插零和抽取器299
  7.6.4 CIC濾波器300
  7.6.5 采樣率變換范例304
 7.7 快速傅里葉變換308
  7.7.1 多周期實現311
  7.7.2 流水線實現319
 7.8 PID控制器324
第8章 數字通信應用329
 8.1 線性反饋移位寄存器329
 8.2 循環冗余校驗331
 8.3 基帶編解碼333
 8.4 基帶通道的范例和仿真336
 8.5 混頻和相干解調339
 8.6 AM和ASK340
  8.6.1 調制340
  8.6.2 解調341
  8.6.3 調制解調仿真344
 8.7 PM和PSK346
  8.7.1 調制346
  8.7.2 解調348
  8.7.3 調制解調仿真349
 8.8 FM和FSK351
  8.8.1 調制351
  8.8.2 解調353
  8.8.3 調制解調仿真354
 8.9 QPSK和QAM356
  8.9.1 QAM調制357
  8.9.2 QAM解調360
  8.9.3 位同步和判決361
  8.9.4 調制解調仿真363
 8.10 載波同步和數字鎖相環366
  8.10.1 數字鎖相環恢復載波367
  8.10.2 QAM載波恢復仿真369
附錄A SystemVerilog關鍵字373
附錄B 全書模塊依賴關系377
序: