Verilog HDL 實用教程

王金明,徐程驥

  • 出版商: 電子工業
  • 出版日期: 2023-01-01
  • 售價: $414
  • 貴賓價: 9.5$393
  • 語言: 簡體中文
  • 頁數: 312
  • ISBN: 712144867X
  • ISBN-13: 9787121448676
  • 相關分類: Verilog
  • 立即出貨 (庫存 < 3)

買這商品的人也買了...

商品描述

本書系統講解Verilog HDL語言規則、語法體系,以Verilog-2001和Verilog-2005兩種語言標準為依據,精講語言,全面梳理,知識點系統全面。本書立足語言本身,按照語言體系編排內容,涵蓋所有常用語法規則,補充Verilog-2005中新的語言點,既適合作為必備語法資料查詢,也適合有一定設計基礎的讀者學習。主要內容包括Verilog HDL入門、數據類型、表達式、門級和開關級建模、數據流建模、行為級建模、層次結構、任務與函數、Test Bench測試與時序檢查、面向綜合的設計、有限狀態機設計、Verilog HDL設計實例等,重點聚焦Verilog HDL綜合和模擬,對語言、語法規則用案例進行闡釋,用綜合工具和模擬工具進行驗證,利於讀者加深理解。

目錄大綱

目 錄
第1章 Verilog HDL入門 1
1.1 Verilog HDL簡史 1
1.2 Verilog HDL描述的層級 2
1.3 Verilog HDL設計的流程 3
1.3.1 設計輸入 3
1.3.2 綜合 4
1.3.3 佈局布線 4
1.3.4 時序分析 4
1.3.5 功能模擬與時序模擬 5
1.3.6 編程與配置 5
1.4 Verilog HDL文字規則 5
1.4.1 詞法 5
1.4.2 空白符 5
1.4.3 註釋 6
1.4.4 操作符 6
1.4.5 字符串 6
1.4.6 關鍵字 7
1.5 數字 7
1.5.1 整數 8
1.5.2 實數 9
1.5.3 數的轉換 10
1.6 標識符 10
1.6.1 標識符簡介 10
1.6.2 轉義標識符 10
習題1 11
第2章 數據類型 12
2.1 值集合 12
2.2 net數據類型 12
2.2.1 wire型與tri型 13
2.2.2 其他net類型 13
2.3 variable數據類型 14
2.3.1 reg型 15
2.3.2 integer型與time型 15
2.3.3 real型與realtime型 16
2.4 向量 16
2.5 數組 17
2.5.1 數組簡介 17
2.5.2 存儲器 17
2.5.3 數組的賦值 17
2.6 參數 18
2.6.1 parameter參數 18
2.6.2 localparam局部參數 20
2.6.3 specparam參數 21
2.6.4 參數值修改 22
習題2 22
第3章 表達式 24
3.1 操作符 24
3.1.1 算術操作符 24
3.1.2 關系操作符 26
3.1.3 相等操作符 26
3.1.4 邏輯操作符 27
3.1.5 位操作符 27
3.1.6 縮減操作符 28
3.1.7 移位操作符 28
3.1.8 指數操作符 30
3.1.9 條件操作符 30
3.1.10 拼接操作符 30
3.1.11 操作符的優先級 31
3.2 操作數 31
3.2.1 整數 32
3.2.2 位選和段選 32
3.2.3 數組 34
3.2.4 字符串 34
3.3 表達式的符號 35
3.4 表達式的位寬 37
3.4.1 表達式位寬的規則 37
3.4.2 表達式位寬示例 38
3.5 賦值和截斷 40
習題3 42
第4章 門級和開關級建模 43
4.1 Verilog HDL門元件 43
4.2 門元件的例化 45
4.2.1 門元件的例化簡介 45
4.2.2 門延時 46
4.2.3 驅動強度 48
4.3 開關級元件 50
4.3.1 MOS開關 50
4.3.2 雙向導通開關 51
4.4 門級結構建模 52
4.5 用戶自定義元件 53
4.6 組合邏輯UDP元件 54
4.7 時序邏輯UDP元件 55
4.7.1 電平敏感時序UDP元件 55
4.7.2 邊沿敏感時序UDP元件 56
4.7.3 電平敏感和邊沿敏感行為的混合描述 56
4.8 時序UDP元件的初始化和例化 57
4.8.1 時序UDP元件的初始化 57
4.8.2 時序UDP元件的例化 58
習題4 59
第5章 數據流建模 60
5.1 連續賦值 60
5.1.1 連續賦值 60
5.1.2 net型變量聲明時賦值 60
5.1.3 賦值延時 61
5.1.4 驅動強度 62
5.2 數據流建模 63
5.3 加法器和減法器 64
5.4 格雷碼與二進制碼的轉換 68
5.5 三態邏輯設計 71
習題5 72
第6章 行為級建模 73
6.1 行為級建模概述 73
6.1.1 always過程語句 73
6.1.2 initial過程 75
6.2 過程時序控制 76
6.2.1 延時控制 76
6.2.2 事件控制 77
6.3 過程賦值 79
6.3.1 variable型變量聲明時賦值 79
6.3.2 阻塞過程賦值 79
6.3.3 非阻塞過程賦值 80
6.3.4 阻塞賦值過程與非阻塞過程賦值的區別 81
6.4 過程連續賦值 83
6.4.1 assign和deassign 83
6.4.2 force和release 83
6.5 塊語句 84
6.5.1 串行塊begin-end 84
6.5.2 並行塊fork-join 85
6.5.3 塊命名 86
6.6 條件語句 87
6.6.1 if-else語句 88
6.6.2 case語句 90
6.6.3 casez與casex語句 92
6.7 循環語句 94
6.7.1 for語句 94
6.7.2 repeat、while和forever語句 95
習題6 97
第7章 層次結構 99
7.1 模塊和模塊例化 99
7.2 帶參數模塊例化與參數傳遞 101
7.2.1 帶參數模塊例化 101
7.2.2 用parameter進行參數傳遞 102
7.2.3 用defparam進行參數重載 104
7.3 層次路徑名 105
7.4 generate生成語句 107
7.4.1 generate、for生成語句 107
7.4.2 generate、if生成語句 109
7.4.3 generate、case生成語句 110
7.5 屬性 112
習題7 113
第8章 任務與函數 115
8.1 任務 115
8.1.1 任務 115
8.1.2 任務示例 116
8.2 函數 119
8.2.1 函數 119
8.2.2 任務和函數的區別 122
8.3 automatic任務和函數 123
8.3.1 automatic任務 123
8.3.2 automatic函數 124
8.4 系統任務與系統函數 125
8.5 顯示類任務 126
8.5.1 $display與$write 126
8.5.2 $strobe與$monitor 128
8.6 文件操作類任務 129
8.6.1 $fopen與$fclose 129
8.6.2 $fgetc與$fgets 130
8.6.3 $readmemh與$readmemb 132
8.7 控制和時間類任務 133
8.7.1 $finish與$stop 133
8.7.2 $time、$stime與$realtime 134
8.7.3 $printtimescale與$timeformat 135
8.7.4 $signed與$unsigned 136
8.8 隨機數及概率分佈函數 137
8.8.1 $random 137
8.8.2 概率分佈函數 139
8.9 編譯指令 140
8.9.1 `timescale 140
8.9.2 `define和`undef 142
8.9.3 `ifdef、`else、`elsif、`endif和`ifndef 142
8.9.4 `include 144
8.9.5 `default_nettype 145
8.9.6 其他編譯指令 145
習題8 146
第9章 Test Bench測試與時序檢查 147
9.1 Test Bench測試 147
9.1.1 Test Bench 147
9.1.2 產生激勵信號 147
9.1.3 產生時鐘信號 148
9.1.4 讀寫文件 149
9.1.5 顯示結果 151
9.2 測試實例 152
9.2.1 乘法器測試 152
9.2.2 數據選擇器測試 153
9.2.3 格雷碼計數器 154
9.3 specify塊 156
9.3.1 specify塊簡介 156
9.3.2 模塊路徑延時 157
9.3.3 模塊路徑延時和分佈延時混合 159
9.4 時序檢查 159
9.4.1 $setup和$hold 160
9.4.2 $width和$period 161
9.5 SDF文件 162
習題9 163
第10章 面向綜合的設計 164
10.1 可綜合的設計 164
10.2 加法器設計 166
10.2.1 行波進制加法器 166
10.2.2 超前進制加法器 167
10.3 乘法器設計 171
10.3.1 用乘法操作符實現 171
10.3.2 布斯乘法器 172
10.3.3 查找表乘法器 176
10.4 有符號數的運算 181
10.5 ROM存儲器 184
10.5.1 用數組例化存儲器 184
10.5.2 例化lpm_rom實現存儲器 186
10.6 RAM存儲器 188
10.6.1 單口RAM 188
10.6.2 雙口RAM 191
10.7 流水線設計 194
10.8 資源共享 197
習題10 199
第11章 有限狀態機設計 200
11.1 有限狀態機簡介 200
11.2 有限狀態機的Verilog HDL描述 201
11.2.1 三段式狀態機描述 202
11.2.2 兩段式狀態機描述 203
11.2.3 單段式描述 204
11.3 狀態的編碼 206
11.3.1 常用的編碼方式 206
11.3.2 狀態編碼的定義 207
11.3.3 用屬性指定狀態編碼方式 211
11.3.4 多餘狀態的處理 211
11.4 用有限狀態機設計除法器 211
11.5 用有限狀態機控制流水燈 215
11.6 用狀態機控制字符液晶 217
習題11 225

第12章 Verilog HDL設計實例 227
12.1 標準PS/2鍵盤 227
12.2 超聲波測距 232
12.3 4×4矩陣鍵盤 237
12.4 漢字圖形點陣液晶 243
12.4.1 LCD12864B漢字圖形點陣液晶 243
12.4.2 漢字圖形點陣液晶靜態顯示 244
12.4.3 漢字圖形點陣液晶動態顯示 247
12.5 VGA顯示器 249
12.5.1 VGA顯示原理與時序 249
12.5.2 VGA彩條信號發生器 251
12.5.3 VGA圖像顯示 255
12.6 TFT液晶屏 261
12.6.1 TFT液晶屏 261
12.6.2 TFT液晶屏顯示彩色圓環 264
12.6.3 TFT液晶屏顯示動態矩形 269
12.7 音樂演奏電路 271
12.7.1 音符演奏 272
12.7.2 樂曲演奏 276
12.8 開方運算 281
12.9 Cordic算法及其實現 286
12.9.1 Cordic算法 286
12.9.2 Cordic算法的實現 288
習題12 295
附錄A Verilog HDL關鍵字 297
參考文獻 298