本書是電子信息工程、計算機科學與技術、自動化等電子、電氣類一級學科的EDA教學必備基礎教材,全書從硬件描述語言VerilogHDL簡介入手,重點闡述了硬件描述語言的基礎語法、高級語法和與之匹配的硬件電路設計基礎、高級電路設計案例等;除了對VerilogHDL語法基礎詳細闡述外,對邏輯電路、時序綜合和狀態(tài)機等復雜電路設計問題也進行了介紹。本書根據國家全日制電子信息類教學大綱要求匹配了對應的實驗實習,并對復雜數字系統(tǒng)也進行了案例講解。全書共11章,主要包含VerilogHDL語言基礎、邏輯電路結構、狀態(tài)機與時序綜合、驗證等高級主題的內容。
本書可作為普通高等學校、科研院所電子信息工程、電氣工程、計算機等相關專業(yè)的本科生或研究生的教材,還可作為上述領域工程技術人員的參考書。
第1章 電子系統(tǒng)與硬件描述語言……………………………………………………………… 1
1.1 電子系統(tǒng)的集成化……………………………………………………………………… 1
1.2 硬件描述語言與設計方法……………………………………………………………… 3
1.3 數字電路/系統(tǒng)實現……………………………………………………………………… 7
1.4 集成化設計發(fā)展趨勢…………………………………………………………………… 11
1.5 數字集成應用前景……………………………………………………………………… 14
習 題……………………………………………………………………………………… 14
第2章 硬件描述語言基礎…………………………………………………………………… 16
2.1 VerilogHDL語言概況………………………………………………………………… 17
2.1.1 模 塊……………………………………………………………………………… 17
2.1.2 模塊名……………………………………………………………………………… 18
2.1.3 模塊組成……………………………………………………………………………… 18
2.2 基本語法………………………………………………………………………………… 19
2.2.1 標識符……………………………………………………………………………… 20
2.2.2 關鍵字……………………………………………………………………………… 20
2.2.3 操作符……………………………………………………………………………… 21
2.2.4 數字聲明……………………………………………………………………………… 21
2.2.5 注釋與空白符………………………………………………………………………… 22
2.3 系統(tǒng)任務與編譯指令…………………………………………………………………… 23
2.3.1 字符串……………………………………………………………………………… 23
2.3.2 系統(tǒng)任務……………………………………………………………………………… 23
2.3.3 編譯指令……………………………………………………………………………… 25
習 題……………………………………………………………………………………… 26
第3章 語法與要素…………………………………………………………………………… 28
3.1 數據類型………………………………………………………………………………… 28
3.1.1 數 值……………………………………………………………………………… 28
3.1.2 線網類型……………………………………………………………………………… 29
3.1.3 變量聲明……………………………………………………………………………… 31
3.1.4 寄存器類型…………………………………………………………………………… 32
3.1.5 陣 列……………………………………………………………………………… 33
3.1.6 標量與矢量…………………………………………………………………………… 34
3.1.7 參 數……………………………………………………………………………… 35
3.2 端 口…………………………………………………………………………………… 36
3.2.1 端口命名……………………………………………………………………………… 36
3.2.2 端口聲明……………………………………………………………………………… 37
3.2.3 連接方式……………………………………………………………………………… 38
3.3 表達式…………………………………………………………………………………… 41
3.3.1 運算表達……………………………………………………………………………… 41
3.3.2 操作符……………………………………………………………………………… 42
3.3.3 操作數……………………………………………………………………………… 48
3.4 標準主要差別…………………………………………………………………………… 52
習 題……………………………………………………………………………………… 57
第4章 建模與用戶原語……………………………………………………………………… 59
4.1 基礎建模………………………………………………………………………………… 59
4.1.1 門級建模……………………………………………………………………………… 59
4.1.2 開關級建模…………………………………………………………………………… 61
4.2 數據流建模……………………………………………………………………………… 64
4.2.1 連續(xù)賦值語句………………………………………………………………………… 64
4.2.2 數據流建模實例……………………………………………………………………… 65
4.3 模塊與層次……………………………………………………………………………… 66
4.3.1 模塊劃分……………………………………………………………………………… 66
4.3.2 帶參數模塊…………………………………………………………………………… 68
4.3.3 層次命名……………………………………………………………………………… 71
4.4 用戶定義原語(UDP) ………………………………………………………………… 72
4.4.1 UDP的含義………………………………………………………………………… 72
4.4.2 組合邏輯UDP ……………………………………………………………………… 73
4.4.3 時序電路UDP ……………………………………………………………………… 73
習 題……………………………………………………………………………………… 75
第5章 行為描述……………………………………………………………………………… 77
5.1 行為級建模……………………………………………………………………………… 77
5.1.1 過程塊……………………………………………………………………………… 78
5.1.2 語句塊……………………………………………………………………………… 79
5.1.3 時序控制……………………………………………………………………………… 82
5.2 過程賦值語句…………………………………………………………………………… 84
5.2.1 阻塞賦值語句………………………………………………………………………… 85
5.2.2 非阻塞賦值語句……………………………………………………………………… 86
5.2.3 過程連續(xù)賦值語句…………………………………………………………………… 89
5.3 行為語句………………………………………………………………………………… 90
5.3.1 條件語句……………………………………………………………………………… 90
5.3.2 多路分支語句………………………………………………………………………… 91
5.3.3 循環(huán)語句……………………………………………………………………………… 93
5.3.4 其他語句……………………………………………………………………………… 96
5.3.5 生成塊……………………………………………………………………………… 98
2 Verilog硬件描述語言與設計
5.4 任務和函數…………………………………………………………………………… 101
5.4.1 任 務……………………………………………………………………………… 101
5.4.2 函 數……………………………………………………………………………… 103
習 題……………………………………………………………………………………… 107
第6章 測試、仿真和驗證…………………………………………………………………… 109
6.1 測試平臺……………………………………………………………………………… 109
6.1.1 測試向量…………………………………………………………………………… 110
6.1.2 測試模塊…………………………………………………………………………… 111
6.2 波形生成……………………………………………………………………………… 113
6.2.1 值序列……………………………………………………………………………… 113
6.2.2 重復信號…………………………………………………………………………… 116
6.2.3 時鐘的建立………………………………………………………………………… 117
6.3 數據顯示與文件訪問………………………………………………………………… 120
6.3.1 數據顯示…………………………………………………………………………… 120
6.3.2 文件訪問…………………………………………………………………………… 123
6.3.3 從文本文件中讀取向量……………………………………………………………… 127
6.3.4 向文本文件中寫入向量……………………………………………………………… 128
6.4 典型仿真驗證實例…………………………………………………………………… 129
6.4.1 3 8譯碼器………………………………………………………………………… 129
6.4.2 序列檢測器………………………………………………………………………… 131
6.4.3 時鐘分頻器………………………………………………………………………… 132
習 題……………………………………………………………………………………… 133
第7章 基礎邏輯電路………………………………………………………………………… 137
7.1 組合電路設計………………………………………………………………………… 137
7.1.1 門級結構設計……………………………………………………………………… 137
7.1.2 連續(xù)賦值語句設計…………………………………………………………………… 141
7.1.3 過程塊語句設計…………………………………………………………………… 143
7.1.4 組合電路不完全描述………………………………………………………………… 145
7.1.5 典型組合電路設計實例……………………………………………………………… 147
7.2 時序電路設計………………………………………………………………………… 150
7.2.1 時序電路設計方法…………………………………………………………………… 150
7.2.2 時序電路單元……………………………………………………………………… 152
7.2.3 時序電路不同描述風格……………………………………………………………… 156
7.2.4 時序電路設計常見錯誤……………………………………………………………… 159
7.2.5 典型時序電路設計實例……………………………………………………………… 162
習 題……………………………………………………………………………………… 163
第8章 有限狀態(tài)機及設計…………………………………………………………………… 165
8.1 狀態(tài)機基礎…………………………………………………………………………… 165
8.1.1 基本概念…………………………………………………………………………… 165
8.1.2 狀態(tài)機分類………………………………………………………………………… 167
8.2 狀態(tài)機設計…………………………………………………………………………… 173
8.2.1 狀態(tài)機描述方法…………………………………………………………………… 173
8.2.2 狀態(tài)機狀態(tài)編碼…………………………………………………………………… 185
8.2.3 狀態(tài)機優(yōu)化設計…………………………………………………………………… 190
8.2.4 狀態(tài)機容錯和設計準則……………………………………………………………… 192
習 題……………………………………………………………………………………… 195
第9章 時序、綜合及驗證…………………………………………………………………… 196
9.1 時序與延遲…………………………………………………………………………… 196
9.1.1 時序概念…………………………………………………………………………… 196
9.1.2 延遲模型…………………………………………………………………………… 200
9.1.3 延遲種類…………………………………………………………………………… 200
9.1.4 路徑延遲建模……………………………………………………………………… 203
9.1.5 時序檢查…………………………………………………………………………… 206
9.1.6 延遲反標…………………………………………………………………………… 207
9.2 邏輯綜合……………………………………………………………………………… 209
9.2.1 概 念……………………………………………………………………………… 209
9.2.2 邏輯綜合過程……………………………………………………………………… 209
9.2.3 代碼可綜合設計…………………………………………………………………… 212
9.3 驗證方法……………………………………………………………………………… 214
9.3.1 驗 證……………………………………………………………………………… 214
9.3.2 測試驗證種類……………………………………………………………………… 216
9.3.3 測試驗證平臺實例…………………………………………………………………… 220
習 題……………………………………………………………………………………… 228
第10章 仿真實驗…………………………………………………………………………… 231
10.1 硬件描述語言仿真器………………………………………………………………… 231
10.1.1 ModelSim 仿真……………………………………………………………………… 231
10.1.2 邏輯綜合后仿真…………………………………………………………………… 237
10.2 Verilog基礎模塊設計……………………………………………………………… 241
10.2.1 組合邏輯建模……………………………………………………………………… 241
10.2.2 時序邏輯建模……………………………………………………………………… 247
10.3 復雜邏輯設計………………………………………………………………………… 256
10.3.1 阻塞賦值和非阻塞賦值…………………………………………………………… 256
10.3.2 任務與函數………………………………………………………………………… 258
10.3.3 有限狀態(tài)機………………………………………………………………………… 262
習 題……………………………………………………………………………………… 266
第11章 設計案例…………………………………………………………………………… 270
11.1 異步FIFO設計……………………………………………………………………… 270
11.1.1 實驗目的與實驗要求……………………………………………………………… 270
4 Verilog硬件描述語言與設計
11.1.2 基于最高兩位判決的異步FIFO設計………………………………………………… 271
11.1.3 基于四象限判決的異步FIFO設計………………………………………………… 276
11.2 全雙工UART接口設計…………………………………………………………… 283
11.2.1 實驗目的與實驗要求……………………………………………………………… 283
11.2.2 UART通信協(xié)議…………………………………………………………………… 283
11.2.3 UART發(fā)送器的實現……………………………………………………………… 286
11.2.4 UART接收器的設計……………………………………………………………… 289
11.2.5 UART接收器的仿真測試………………………………………………………… 300
11.3 循環(huán)碼編譯碼器設計………………………………………………………………… 305
11.3.1 實驗目的與實驗要求……………………………………………………………… 305
11.3.2 (7,3)循環(huán)碼……………………………………………………………………… 305
11.3.3 (7,3)循環(huán)碼的編碼器……………………………………………………………… 307
11.3.4 (7,3)循環(huán)碼的譯碼器……………………………………………………………… 311
習 題……………………………………………………………………………………… 320
附 錄………………………………………………………………………………………… 324
參考文獻………………………………………………………………………………………… 327