數字系統設計與Verilog HDL(第9版)

王金明

  • 出版商: 電子工業
  • 出版日期: 2025-01-01
  • 定價: $414
  • 售價: 8.5$352
  • 語言: 簡體中文
  • 頁數: 376
  • ISBN: 7121496291
  • ISBN-13: 9787121496295
  • 相關分類: Verilog
  • 下單後立即進貨 (約4週~6週)

商品描述

本書根據電子信息類課程理論教學和實踐教學要求,以提高數字系統設計能力為目的,系統完整地闡述EDA技術、FPGA/CPLD器件、Verilog HDL語言和相關數字系統設計技術。全書以Quartus Prime、ModelSim軟件為工具,按"器件-軟件-語言-案例”為主線展開,內容緊貼教學和科研實際,以可綜合的設計為重點,通過諸多精選設計案例,闡述數字系統設計的方法與技術,由淺入深介紹Verilog工程開發的知識與技能。全書案例豐富,富於啟發性,並全部基於目標板進行了驗證。

目錄大綱

第1章 EDA技術概述 1
1.1 EDA技術及其發展歷程 1
1.2 Top-down設計思路 3
1.2.1 Top-down設計 3
1.2.2 Bottom-up設計 4
1.3 IP核復用 4
1.3.1 IP核復用技術 4
1.3.2 片上系統 5
1.4 EDA設計的流程 6
1.4.1 設計輸入 6
1.4.2 綜合(編譯) 7
1.4.3 佈局布線 7
1.4.4 時序分析 7
1.4.5 功能模擬與時序模擬 8
1.4.6 編程與配置 8
1.5 常用的EDA工具軟件 8
習題1 11
第2章 FPGA/CPLD器件 12
2.1 PLD器件概述 12
2.1.1 PLD器件的發展歷程 12
2.1.2 PLD器件的分類 12
2.2 PLD的原理與結構 14
2.3 低密度PLD的原理與結構 15
2.4 CPLD的原理與結構 18
2.4.1 宏單元結構 19
2.4.2 典型CPLD的結構 19
2.5 FPGA的原理與結構 20
2.5.1 查找表結構 20
2.5.2 FPGA的結構 23
2.5.3 MAX 10器件結構 24
2.5.4 Cyclone IV器件結構 27
2.6 FPGA/CPLD的編程工藝 28
2.6.1 熔絲型開關 28
2.6.2 反熔絲型開關 28
2.6.3 浮柵編程工藝 29
2.6.4 SRAM編程工藝 31
2.7 邊界掃描測試技術 32
2.8 FPGA/CPLD的編程與配置 33
2.8.1 在系統可編程 33
2.8.2 Cyclone IV器件的配置 34
2.8.3 MAX 10器件的配置 36
2.9 典型的FPGA/CPLD系列 37
習題2 40
第3章 原理圖與基於IP核的設計 41
3.1 設計流程 41
3.2 原理圖設計方式 42
3.2.1 半加器設計 42
3.2.2 1位全加器設計 45
3.2.3 編譯 46
3.2.4 模擬 47
3.2.5 下載 52
3.3 基於IP核的設計 55
3.4 鎖相環IP核 60
3.5 SignalTap II的使用方法 65
習題3 69
第4章 Verilog設計初步 72
4.1 Verilog HDL簡史 72
4.2 Verilog模塊初識 73
4.3 Verilog設計示例 75
4.3.1 Verilog組合電路設計 75
4.3.2 Verilog時序電路設計 77
4.4 Verilog文字規則 79
4.4.1 詞法 79
4.4.2 字符串 80
4.4.3 標識符 81
4.5 數字 83
4.5.1 整數 83
4.5.2 實數 84
4.5.3 數的轉換 85
4.5.4 整數用於表達式 85
4.6 數據類型 85
4.6.1 值集合 85
4.6.2 net數據類型 86
4.6.3 variable數據類型 87
4.7 向量 89
4.7.1 位選 89
4.7.2 常數段選 89
4.7.3 索引段選 90
4.8 數組 91
4.8.1 數組 91
4.8.2 存儲器 91
4.8.3 數組的賦值 91
4.9 參數 92
4.9.1 parameter參數 92
4.9.2 localparam局部參數 94
4.9.3 specparam參數 94
4.9.4 參數值修改 95
4.10 操作符 96
4.10.1 算術操作符 96
4.10.2 關系操作符 97
4.10.3 等式操作符 98
4.10.4 邏輯操作符 98
4.10.5 位操作符 99
4.10.6 縮減操作符 99
4.10.7 移位操作符 100
4.10.8 指數操作符 101
4.10.9 條件操作符 101
4.10.10 拼接操作符 102
4.10.11 操作符的優先級 102
習題4 103
第5章 Verilog行為描述 104
5.1 行為級建模 104
5.1.1 always過程語句 104
5.1.2 initial過程 106
5.2 過程時序控制 106
5.2.1 延時控制 106
5.2.2 事件控制 107
5.3 過程賦值 109
5.3.1 variable型變量聲明時賦值 109
5.3.2 阻塞過程賦值 109
5.3.3 非阻塞過程賦值 110
5.3.4 阻塞過程賦值與非阻塞過程賦值的區別 110
5.4 過程連續賦值 112
5.4.1 assign和deassign 112
5.4.2 force和release 113
5.5 塊語句 114
5.5.1 串行塊begin-end 114
5.5.2 並行塊fork-join 114
5.5.3 塊命名 115
5.6 條件語句 116
5.6.1 if-else語句 117
5.6.2 case語句 119
5.6.3 casez與casex語句 121
5.7 循環語句 122
5.7.1 for語句 122
5.7.2 repeat、while和forever語句 123
5.8 任務 125
5.8.1 任務 125
5.8.2 任務示例 126
5.9 函數 129
5.9.1 函數 129
5.9.2 任務和函數的區別 132
5.10 automatic任務和函數 133
5.10.1 automatic任務 133
5.10.2 automatic函數 134
5.11 編譯指令 135
5.11.1 `timescale 135
5.11.2 `define和`undef 137
5.11.3 `ifdef、`else、`elsif、`endif和`ifndef 137
5.11.4 `include 139
習題5 140
第6章 Verilog設計的層次與風格 141
6.1 Verilog描述的層級和方式 141
6.2 Verilog門元件 142
6.2.1 門元件 142
6.2.2 門元件的例化 143
6.3 門級結構描述 144
6.4 用戶自定義元件 145
6.4.1 組合邏輯UDP 146
6.4.2 時序邏輯UDP 147
6.4.3 時序UDP的初始化和例化 149
6.5 連續賦值 151
6.5.1 連續賦值 151
6.5.2 在net變量聲明時賦值 151
6.5.3 驅動強度 152
6.6 數據流描述 153
6.6.1 數據流描述加法器 153
6.6.2 數據流描述減法器 155
6.6.3 數據流描述觸發器 158
6.6.4 格雷碼與二進制碼相互轉換 161
6.7 多層次結構電路設計 163
6.7.1 帶參數模塊例化 163
6.7.2 用parameter進行參數傳遞 164
6.7.3 用defparam進行參數重載 165
6.8 generate生成語句 166
6.8.1 generate、for生成語句 166
6.8.2 generate、if生成語句 168
6.8.3 generate、case生成語句 168
6.9 三態邏輯設計 170
6.10 屬性 171
習題6 172
第7章 Verilog有限狀態機設計 174
7.1 引言 174
7.2 有限狀態機的Verilog描述 175
7.2.1 三段式狀態機描述 175
7.2.2 兩段式狀態機描述 176
7.2.3 單段式狀態機描述 177
7.3 狀態編碼 178
7.3.1 常用的編碼方式 178
7.3.2 狀態編碼的定義 179
7.3.3 用屬性語句指定狀態編碼 182
7.4 用有限狀態機實現除法器 184
7.5 用有限狀態機控制流水燈 187
7.5.1 流水燈控制器 187
7.5.2 引腳分配與鎖定 188
7.6 用狀態機控制字符液晶 192
習題7 198
第8章 Verilog驅動常用I/O外設 200
8.1 標準PS/2鍵盤 200
8.2 4×4矩陣鍵盤 204
8.3 漢字圖形點陣液晶 210
8.3.1 LCD12864B簡介 210
8.3.2 LCD12864B靜態顯示 211
8.3.3 LCD12864B動態顯示 213
8.4 VGA顯示器 214
8.4.1 VGA顯示原理與時序 214
8.4.2 VGA顯示彩條 216
8.4.3 VGA顯示彩色圓環 219
8.4.4 VGA顯示圖像 221
8.5 TFT-LCD液晶屏 225
8.5.1 TFT-LCD液晶屏 225
8.5.2 TFT-LCD屏顯示彩色圓環 228
8.5.3 TFT-LCD屏顯示動態矩形 230
8.6 音樂演奏電路 232
8.6.1 音符演奏 232
8.6.2 音樂演奏 236
8.7 數字鐘 240
習題8 243
第9章 Verilog設計進階 245
9.1 面向綜合的設計 245
9.2 加法器設計 247
9.2.1 行波進制加法器 247
9.2.2 超前進制加法器 248
9.3 乘法器設計 251
9.3.1 用乘法操作符實現 251
9.3.2 布斯乘法器 252
9.3.3 查找表乘法器 256
9.4 有符號數的運算 259
9.4.1 有符號數的加法運算 259
9.4.2 有符號數的乘法運算 260
9.4.3 絕對值運算 261
9.5 ROM存儲器 262
9.5.1 用數組例化存儲器 262
9.5.2 例化lpm_rom實現存儲器 264
9.6 RAM存儲器 265
9.6.1 單口RAM 266
9.6.2 異步FIFO 267
9.7 流水線設計 270
9.8 資源共享 273
9.9 奇數分頻與小數分頻 274
9.9.1 奇數分頻 274
9.9.2 半整數分頻 275
9.9.3 小數分頻 276
習題9 279
第10章 Test Bench測試與時序檢查 280
10.1 系統任務與系統函數 280
10.2 顯示類任務 281
10.2.1 $display與$write 281
10.2.2 $strobe與$monitor 282
10.3 文件操作類任務 283
10.3.1 $fopen與$fclose 284
10.3.2 $fgetc與$fgets 284
10.3.3 $readmemh與$readmemb 286
10.4 控制和時間類任務 287
10.4.1 $finish與$stop 287
10.4.2 $time、$stime與$realtime 288
10.4.3 $printtimescale與$timeformat 288
10.4.4 $signed與$unsigned 290
10.5 隨機數與概率分佈函數 291
10.5.1 $random 291
10.5.2 概率分佈函數 292
10.6 Verilog中的延時定義 293
10.6.1 門延時 294
10.6.2 賦值延時 296
10.7 specify塊與模塊路徑延時 296
10.7.1 specify塊 296
10.7.2 模塊路徑延時 297
10.7.3 模塊路徑延時和分佈延時混合 299
10.8 時序檢查 299
10.8.1 $setup和$hold 300
10.8.2 $width和$period 301
10.9 Test Bench測試 302
10.9.1 Test Bench 302
10.9.2 產生激勵信號 302
10.9.3 產生時鐘信號 303
10.9.4 讀寫文件 304
10.9.5 顯示結果 306
10.10 測試示例 306
10.11 ModelSim SE使用指南 309
10.11.1 圖形用戶界面方式的功能模擬 310
10.11.2 命令行方式的功能模擬 313
10.11.3 時序模擬 314
習題10 316
第11章 Verilog設計實例 317
11.1 超聲波測距 317
11.2 脈寬調制與步進電動機驅動 321
11.2.1 PWM信號 322
11.2.2 用PWM驅動蜂鳴器 323
11.2.3 用PWM驅動步進電動機 324
11.3 整數開方運算 327
11.4 頻率測量 331
11.5 FIR濾波器 337
11.5.1 FIR濾波器的參數設計 337
11.5.2 FIR濾波器的實現 341
11.6 Cordic算法及實現 344
11.6.1 Cordic算法 344
11.6.2 Cordic算法的實現 346
11.7 UART異步串口通信 350
11.8 I2C總線控制音頻編解碼器 353
習題11 359
附錄 Verilog HDL關鍵字 360
參考文獻 361