內容簡介
本書以Intel CycloneⅣ E系列FPGA 為例,系統介紹了FPGA 的硬體結構、電路設計以及邏輯設計和驗證流程。書中以若干個具有工程實用意義的案例為背景,詳細介紹了FPGA 數字邏輯設計中常見的功能模組設計思路、FPGA 片上資源的使用方法、開發軟體中各種調試工具的使用,包括SignaltapⅡ、In System Sources and Probes Editor、In System Memory Content Editor。本書最後通過若干個綜合性實例,講解了複雜數字系統的設計方法和驗證思路。作為實用型FPGA 教程,本書的每一個實驗都有完整的仿真和驗證過程,即強調了仿真驗證在FPGA設計中的重要作用。
本書可作為工程套用類、電子信息類專業本科生以及相關專業專科生的EDA 基礎類課程的教材;也可作為FPGA自學人員,以及從事FPGA開發的工程技術人員的培訓教材和參考用書。
圖書目錄
第1章 從頭認識FPGA ……………………………………………………………… 1
1.1 CycloneⅣ EFPGA原理與套用 ……………………………………………… 1
1.1.1 CycloneⅣ E概述 ………………………………………………………… 1
1.1.2 CycloneⅣ E擴展資源介紹 ……………………………………………… 4
1.1.3 重點電路設計 ……………………………………………………………… 5
1.2 IntelFPGA開發環境 ………………………………………………………… 17
1.2.1 Quartus軟體的發展史 …………………………………………………… 18
1.2.2 QuartusPrime的下載 …………………………………………………… 18
1.2.3 QuartusPrime的安裝 …………………………………………………… 21
1.2.4 QuartusPrime軟體的基本使用 ………………………………………… 27
第2章 FPGA開發軟硬體平台介紹 ………………………………………………… 39
2.1 AC620開發套件………………………………………………………………… 39
2.1.1 AC620開發板的功能特點 ………………………………………………… 39
2.1.2 AC620開發板的使用 ……………………………………………………… 43
2.2 IntelFPGA開發流程 ………………………………………………………… 57
2.2.1 建立工程 …………………………………………………………………… 57
2.2.2 設計輸入 …………………………………………………………………… 61
2.2.3 分析和綜合 ………………………………………………………………… 61
2.2.4 功能仿真 …………………………………………………………………… 62
2.2.5 綜合與布局布線 …………………………………………………………… 66
2.2.6 時序仿真 …………………………………………………………………… 66
2.2.7 I/O分配以及生成配置檔案 ……………………………………………… 67
2.2.8 配置FPGA下載…………………………………………………………… 67
2.3 FPGA設計的燒寫與投產 ……………………………………………………… 68
2.3.1 FPGA固件存儲方案 ……………………………………………………… 68
2.3.2 CycloneⅣ EFPGA固件燒寫方案 ……………………………………… 69
2.3.3 燒寫檔案JIC的產生 ……………………………………………………… 70
第3章 FPGA基本數字邏輯設計 …………………………………………………… 74
3.1 組合邏輯電路設計———解碼器 ………………………………………………… 74
3.1.1 譯_碼器工作原理 …………………………………………………………… 74
3.1.2 解碼器Verilog實現 ……………………………………………………… 75
3.1.3 激勵創建及仿真測試 ……………………………………………………… 76
3.2 時序邏輯電路設計———計數器 ………………………………………………… 79
3.2.1 計數器工作原理 …………………………………………………………… 80
3.2.2 計數器Verilog實現 ……………………………………………………… 81
3.2.3 仿真及板級驗證 …………………………………………………………… 82
3.3 IP核套用———計數器 ………………………………………………………… 85
3.3.1 IP核創建流程 ……………………………………………………………… 85
3.3.2 仿真及板級驗證 …………………………………………………………… 89
3.3.3 已生成IP核的參數修改 ………………………………………………… 90
3.3.4 QuartusⅡ中IP核參數的修改…………………………………………… 94
3.4 BCD計數器設計與驗證 ……………………………………………………… 95
3.4.1 BCD碼原理 ………………………………………………………………… 95
3.4.2 BCD計數器的 Verilog實現 ……………………………………………… 96
3.4.3 激勵創建及仿真測試 ……………………………………………………… 97
3.4.4 級聯BCD計數器設計與仿真 …………………………………………… 98
3.5 阻塞賦值與非阻塞賦值原理分析 …………………………………………… 103
3.5.1 不同賦值方式的對比與實現 …………………………………………… 103
3.5.2 不同賦值方式的仿真及測試 …………………………………………… 105
3.6 狀態機設計實例 ……………………………………………………………… 108
3.6.1 狀態機工作原理 ………………………………………………………… 108
3.6.2 字元串檢測狀態機實現 ………………………………………………… 110
3.6.3 激勵創建及仿真測試 …………………………………………………… 113
3.7 獨立按鍵消抖設計與驗證 …………………………………………………… 115
3.7.1 按鍵的物理結構及電路設計 …………………………………………… 115
3.7.2 硬體電路實現按鍵消抖 ………………………………………………… 116
3.7.3 狀態機實現按鍵消抖 …………………………………………………… 118
3.7.4 激勵創建及仿真測試 …………………………………………………… 124
3.7.5 任務及隨機函式的使用 ………………………………………………… 125
3.8 模組化設計基礎———加減法計數器 ………………………………………… 129
3.8.1 模組功能劃分 …………………………………………………………… 129
3.8.2 模組功能設計 …………………………………………………………… 129
3.8.3 仿真及板級驗證 ………………………………………………………… 132
3.9 8位7段數碼管驅動設計與驗證 …………………………………………… 134
3.9.1 數碼管驅動原理 ………………………………………………………… 134
3.9.2 三線制數碼管電路設計 ………………………………………………… 137
3.9.3 數碼管動態掃描驅動設計 ……………………………………………… 138
3.9.4 ISSP生成及使用 ………………………………………………………… 145
3.9.5 板級調試與驗證 ………………………………………………………… 149
3.9.6 QuartusⅡ中ISSP的使用方法 ………………………………………… 152
3.10 串口傳送模組設計與驗證 …………………………………………………… 153
3.10.1 異步串列通信原理及電路設計 ………………………………………… 154
3.10.2 UART異步串列通信傳送模組設計與實現…………………………… 157
3.10.3 激勵創建及仿真測試 …………………………………………………… 162
3.10.4 按鍵控制串口傳送設計 ………………………………………………… 163
3.11 串口接收模組的設計與驗證 ………………………………………………… 165
3.11.1 串口接收原理分析 ……………………………………………………… 166
3.11.2 UART異步串列通信接收模組設計與實現…………………………… 167
3.11.3 仿真及板級驗證 ………………………………………………………… 171
第4章 FPGA片上專用資源使用 …………………………………………………… 176
4.1 嵌入式RAM 的使用———雙連線埠RAM …………………………………… 176
4.1.1 CycloneⅣ體系結構及嵌入式存儲器原理 ……………………………… 176
4.1.2 IP核使用———dpram …………………………………………………… 178
4.1.3 激勵創建及仿真測試 …………………………………………………… 182
4.2 搭建串口收發與雙口RAM 存儲的簡易套用系統 ………………………… 185
4.2.1 系統模組功能劃分及接口設計 ………………………………………… 185
4.2.2 頂層檔案設計 …………………………………………………………… 185
4.2.3 控制模組設計 …………………………………………………………… 186
4.2.4 仿真及板級驗證 ………………………………………………………… 187
4.3 嵌入式RAM 的使用———ROM ……………………………………………… 190
4.3.1 IP核使用———ROM ……………………………………………………… 191
4.3.2 激勵創建及仿真測試 …………………………………………………… 193
4.3.3 SignaTapⅡ使用及板級驗證 …………………………………………… 195
4.4 嵌入式塊RAM 的使用———FIFO …………………………………………… 201
4.4.1 FIFO的相關知識 ………………………………………………………… 202
4.4.2 IP核的使用———FIFO…………………………………………………… 204
4.5 PLL鎖相環介紹與簡單套用 ………………………………………………… 213
4.5.1 PLL相關知識 …………………………………………………………… 213
4.5.2 IP核使用———PLL ……………………………………………………… 215
4.5.3 仿真及板級驗證 ………………………………………………………… 219
第5章 FPGA進階數字邏輯設計 …………………………………………………… 223
5.1 無源蜂鳴器驅動設計與驗證 ………………………………………………… 223
5.1.1 無源蜂鳴器電路設計 …………………………………………………… 223
5.1.2 無源蜂鳴器驅動原理 …………………………………………………… 224
5.1.3 PWM 發生器模組設計…………………………………………………… 225
5.1.4 仿真及板級驗證 ………………………………………………………… 227
5.2 線性序列機與串列接口DAC驅動設計與驗證……………………………… 232
5.2.1 DAC晶片概述及電路設計 ……………………………………………… 232
5.2.2 TLV5618型DAC晶片輸出電壓計算原理 …………………………… 234
5.2.3 TLV5618型DAC接口時序 …………………………………………… 235
5.2.4 線性序列機設計思想與接口時序設計 ………………………………… 236
5.2.5 基於線性序列機的DAC驅動設計 ……………………………………… 238
5.2.6 仿真及板級測試 ………………………………………………………… 241
5.3 線性序列機與串列接口ADC驅動設計與驗證……………………………… 243
5.3.1 ADC晶片概述及電路設計 ……………………………………………… 244
5.3.2 ADC128S022型ADC接口時序 ………………………………………… 245
5.3.3 ADC128S022接口時序設計 …………………………………………… 247
5.3.4 基於線性序列機的ADC驅動設計 ……………………………………… 249
5.3.5 仿真及板級測試 ………………………………………………………… 252
5.4 HT6221紅外遙控解碼設計與驗證 ………………………………………… 257
5.4.1 紅外遙控系統組成及電路設計 ………………………………………… 257
5.4.2 紅外遙控協定分析(NEC協定)………………………………………… 258
5.4.3 紅外解碼模組設計 ……………………………………………………… 260
5.4.4 仿真及板級驗證 ………………………………………………………… 265
5.5 TFT顯示屏驅動設計與驗證 ………………………………………………… 267
5.5.1 TFT觸控螢幕驅動電路設計 ……………………………………………… 268
5.5.2 RGB接口TFT屏掃描方式……………………………………………… 270
5.5.3 RGB接口TFT屏時序分析……………………………………………… 271
5.5.4 RGB接口TFT屏驅動設計……………………………………………… 272
5.5.5 仿真及板級驗證 ………………………………………………………… 275
第6章 FPGA綜合數字系統設計 …………………………………………………… 280
6.1 八通道數字電壓表 …………………………………………………………… 280
6.1.1 數字電壓表功能劃分 …………………………………………………… 280
6.1.2 按鍵輸入模組 …………………………………………………………… 281
6.1.3 通道選擇模組 …………………………………………………………… 281
6.1.4 ADC控制模組———ADC128S022 ……………………………………… 282
6.1.5 數據預處理模組 ………………………………………………………… 282
6.1.6 碼制轉換模組 …………………………………………………………… 284
6.1.7 數碼管驅動模組 ………………………………………………………… 287
6.1.8 頂層設計 ………………………………………………………………… 288
6.1.9 基於查找表的數據電壓換算 …………………………………………… 289
6.2 雙通道幅頻相可調DDS信號發生器 ………………………………………… 292
6.2.1 DDS原理與實現 ………………………………………………………… 293
6.2.2 數/模轉換器(DAC)驅動模組設計 ……………………………………… 299
6.2.3 串口命令接收與解析 ……………………………………………………303
6.2.4 信號發生器頂層設計 …………………………………………………… 315
6.2.5 系統測試 ………………………………………………………………… 316
6.3 串口讀/寫EEPROM ………………………………………………………… 317
6.3.1 I2C基本概念 ……………………………………………………………… 317
6.3.2 I2C協定時序介紹 ………………………………………………………… 318
6.3.3 I2C器件地址 ……………………………………………………………… 319
6.3.4 I2C存儲器地址 …………………………………………………………… 320
6.3.5 I2C寫時序 ………………………………………………………………… 321
6.3.6 I2C單位元組讀時序 ………………………………………………………… 323
6.3.7 I2C讀/寫器件控制器設計 ……………………………………………… 325
6.3.8 I2C控制器仿真驗證 ……………………………………………………… 335
6.3.9 串口讀/寫EEPROM 系統設計 ………………………………………… 341
6.3.10 串口讀/寫 EEPROM 仿真驗證 ……………………………………… 351
6.3.11 串口讀/寫EEPROM 板級驗證 ……………………………………… 355
6.4 基於串口獵人的虛擬示波器 ………………………………………………… 359
6.4.1 系統結構 ………………………………………………………………… 359
6.4.2 模組詳解 ………………………………………………………………… 361
6.4.3 仿真驗證 ………………………………………………………………… 375
6.4.4 基於串口獵人的板級驗證 ……………………………………………… 385
6.5 SDRAM 控制器設計 ………………………………………………………… 391
6.5.1 SDRAM 基本概念………………………………………………………… 391
6.5.2 SDRAM 存取原理………………………………………………………… 392
6.5.3 SDRAM 器件引腳說明…………………………………………………… 394
6.5.4 SDRAM 特性 …………………………………………………………… 395
6.5.5 SDRAM 操作命令介紹…………………………………………………… 396
6.5.6 SDRAM 操作時序………………………………………………………… 403
6.5.7 SDRAM 控制器設計……………………………………………………… 418
6.5.8 SDRAM 控制器仿真驗證………………………………………………… 425
6.5.9 SDRAM 控制器設計最佳化………………………………………………… 430
6.5.10 最佳化控制器仿真驗證 ……………………………………………………436
6.6 串口傳圖幀快取設計 ………………………………………………………… 440
6.6.1 系統結構 ………………………………………………………………… 440
6.6.2 仿真驗證 ………………………………………………………………… 446
6.6.3 板級驗證 ………………………………………………………………… 450
參考文獻………………………………………………………………………………… 454