本書講述了利用硬件描述語言(VerilogHDL)設計復雜數字系統的方法。這種方法源自20世紀90年代的美國,在美國取得成效后迅速在其他先進工業國得到推廣和普及。利用硬件描述語言建模、通過仿真和綜合技術設計出極其復雜的數字系統是這種技術的*優勢。
本書從算法和計算的基本概念出發,講述如何用硬線邏輯電路實現復雜數字邏輯系統的方法。全書共四部分。*部分Verilog數字設計基礎與第二部分Verilog數字系統設計和驗證共18章;第三部分共12個上機練習實驗范例;第四部分是Verilog硬件描述語言參考手冊,可供讀者學習、查詢之用。本書第3版后,在語法篇中增加了IEEEVerilogl364 2001標準簡介,以反映Verilog語法的*變化。
本書的講授方式以每2學時講授一章為宜,每次課后需要花10h來復習思考。完成10章學習后,就可以開始做上機練習,從簡單到復雜,由典型到一般,循序漸進地學習VerilogHDL基礎知識。按照書上的步驟,可以使大學電子類及計算機工程類本科及研究生,以及相關領域的設計工程人員在半年內掌握VerilogHDL設計技術。
本書可作為電子工程類、自動控制類、計算機類的大學本科高年級及研究生教學用書,亦可供其他工程人員自學與參考。
緒 論…………………………………………………………………………………………… 1
第一部分 Verilog數字設計基礎
第1章 Verilog的基本知識 …………………………………………………………………… 10
1.1 硬件描述語言 HDL ………………………………………………………………… 10
1.2 VerilogHDL的歷史 ………………………………………………………………… 11
1.2.1 什么是VerilogHDL …………………………………………………………… 11
1.2.2 VerilogHDL的產生及發展 …………………………………………………… 11
1.3 VerilogHDL和 VHDL的比較 …………………………………………………… 12
1.4 Verilog的應用情況和適用的設計
………………………………………………… 13
1.5 采用 VerilogHDL設計復雜數字電路的優點 ……………………………………
13
1.5.1 傳統設計方法電路原理圖輸入法
………………………………………… 13
1.5.2 VerilogHDL設計法與傳統的電路原理圖輸入法的比較
…………………… 14
1.5.3 Verilog的標準化與軟核的重用
……………………………………………… 14
1.5.4 軟核、固核和硬核的概念及其重用
…………………………………………… 14
1.6 采用硬件描述語言(VerilogHDL)的設計流程簡介 ………………………………
15
1.6.1 自頂向下(Top_Down)設計的基本概念 ……………………………………… 15
1.6.2 層次管理的基本概念
…………………………………………………………… 16
1.6.3 具體模塊的設計編譯和仿真的過程
…………………………………………… 16
1.6.4 具體工藝器件的優化、映像和布局布線 ……………………………………… 16
小 結 ……………………………………………………………………………………… 17
思 考 題 …………………………………………………………………………………… 18
第2章 Verilog語法的基本概念 ……………………………………………………………… 19
概 述 ……………………………………………………………………………………… 19
2.1 Verilog模塊的基本概念 …………………………………………………………… 20
2.2 Verilog用于模塊的測試 …………………………………………………………… 23
小 結 ……………………………………………………………………………………… 24
思 考 題 …………………………………………………………………………………… 25
第3章 模塊的結構、數據類型、變量和基本運算符號
……………………………………… 26
概 述 ……………………………………………………………………………………… 26
3.1 模塊的結構 …………………………………………………………………………… 26
3.1.1 模塊的端口定義 ………………………………………………………………… 26
3.1.2 模塊內容 ………………………………………………………………………… 27
3.1.3 理解要點 ………………………………………………………………………… 28
3.1.4 要點總結 ………………………………………………………………………… 28
3.2 數據類型及其常量和變量
…………………………………………………………… 29
3.2.1 常 量 …………………………………………………………………………… 29
3.2.2 變 量 …………………………………………………………………………… 32
3.3 運算符及表達式 ……………………………………………………………………… 35
3.3.1 基本的算術運算符
……………………………………………………………… 35
3.3.2 位運算符 ………………………………………………………………………… 36
小 結 ……………………………………………………………………………………… 37
思 考 題 …………………………………………………………………………………… 38
第4章 運算符、賦值語句和結構說明語句…………………………………………………… 39
概 述 ……………………………………………………………………………………… 39
4.1 邏輯運算符…………………………………………………………………………… 39
4.2 關系運算符…………………………………………………………………………… 40
4.3 等式運算符…………………………………………………………………………… 40
4.4 移位運算符…………………………………………………………………………… 41
4.5 位拼接運算符………………………………………………………………………… 41
4.6 縮減運算符…………………………………………………………………………… 42
4.7 優先級別……………………………………………………………………………… 42
4.8 關 鍵 詞 ……………………………………………………………………………… 43
4.9 賦值語句和塊語句…………………………………………………………………… 43
4.9.1 賦值語句………………………………………………………………………… 43
4.9.2 塊語句…………………………………………………………………………… 45
小 結 ……………………………………………………………………………………… 48
思 考 題 …………………………………………………………………………………… 49
第5章 條件語句、循環語句、塊語句與生成語句
…………………………………………… 50
概 述 ……………………………………………………………………………………… 50
5.1 條件語句(if_else語句)……………………………………………………………… 50
5.2 case語句 ……………………………………………………………………………… 53
5.3 條件語句的語法 ……………………………………………………………………… 57
5.4 多路分支語句 ………………………………………………………………………… 58
2 Verilog數字系統設計教程(第3版)
5.5 循環語句 ……………………………………………………………………………… 60
5.5.1 forever語句……………………………………………………………………… 60
5.5.2 repeat語句 ……………………………………………………………………… 60
5.5.3 while語句 ……………………………………………………………………… 61
5.5.4 for語句 ………………………………………………………………………… 61
5.6 順序塊和并行塊 ……………………………………………………………………… 63
5.6.1 塊語句的類型 …………………………………………………………………… 63
5.6.2 塊語句的特點 …………………………………………………………………… 65
5.7 生成塊 ………………………………………………………………………………… 67
5.7.1 循環生成語句 …………………………………………………………………… 68
5.7.2 條件生成語句 …………………………………………………………………… 70
5.7.3 case生成語句 …………………………………………………………………… 71
5.8 舉 例 ………………………………………………………………………………… 72
5.8.1 四選一多路選擇器
……………………………………………………………… 72
5.8.2 四位計數器 ……………………………………………………………………… 73
小 結 ……………………………………………………………………………………… 74
思 考 題 …………………………………………………………………………………… 75
第6章 結構語句、系統任務、函數語句和顯示系統任務
…………………………………… 78
概 述 ……………………………………………………………………………………… 78
6.1 結構說明語句 ………………………………………………………………………… 78
6.1.1 initial語句 ……………………………………………………………………… 78
6.1.2 always語句 ……………………………………………………………………… 79
6.2 task和function說明語句…………………………………………………………… 82
6.2.1 task和function說明語句的不同點 …………………………………………… 82
6.2.2 task說明語句 …………………………………………………………………… 83
6.2.3 function說明語句 ……………………………………………………………… 84
6.2.4 函數的使用舉例 ………………………………………………………………… 86
6.2.5 自動(遞歸)函數 ………………………………………………………………… 88
6.2.6 常量函數 ………………………………………………………………………… 89
6.2.7 帶符號函數 ……………………………………………………………………… 90
6.3 關于使用任務和函數的小結
………………………………………………………… 90
6.4 常用的系統任務 ……………………………………………………………………… 91
6.4.1 $display和$write任務 ……………………………………………………… 91
6.4.2 文件輸出 ………………………………………………………………………… 94
6.4.3 顯示層次 ………………………………………………………………………… 96
6.4.4 選通顯示 ………………………………………………………………………… 96
6.4.5 值變轉儲文件 …………………………………………………………………… 97
6.5 其他系統函數和任務
……………………………………………………………… 98
小 結 ……………………………………………………………………………………… 98
思 考 題 …………………………………………………………………………………… 99
第7章 調試用系統任務和常用編譯預處理語句…………………………………………… 100
概 述……………………………………………………………………………………… 100
7.1 系統任務 $monitor ……………………………………………………………… 100
7.2 時間度量系統函數$time ………………………………………………………… 101
7.3 系統任務$finish…………………………………………………………………… 102
7.4 系統任務$stop …………………………………………………………………… 102
7.5 系統任務$readmemb和$readmemh …………………………………………… 103
7.6 系統任務$random ………………………………………………………………… 105
7.7 編譯預處理 ………………………………………………………………………… 106
7.7.1 宏定義 d?efine ………………………………………………………………… 106
7.7.2 文件包含處理 i?nclude …………………………………………………… 108
7.7.3 時間尺度 t?imescale…………………………………………………………… 111
7.7.4 條件編譯命令i?fdef、e?lse、e?ndif …………………………………………… 113
7.7.5 條件執行 ……………………………………………………………………… 114
小 結……………………………………………………………………………………… 115
思 考 題 …………………………………………………………………………………… 116
第8章 語法概念總復習練習………………………………………………………………… 117
概 述……………………………………………………………………………………… 117
小 結……………………………………………………………………………………… 128
第二部分 Verilog數字系統設計和驗證
第9章 VerilogHDL模型的不同抽象級別 ………………………………………………… 130
概 述……………………………………………………………………………………… 130
9.1 門級結構描述 ……………………………………………………………………… 130
9.1.1 與非門、或門和反向器及其說明語法
………………………………………… 130
9.1.2 用門級結構描述D觸發器 …………………………………………………… 131
9.1.3 由已經設計成的模塊構成更高一層的模塊
………………………………… 132
9.2 VerilogHDL的行為描述建模 …………………………………………………… 133
9.2.1 僅用于產生仿真測試信號的VerilogHDL行為描述建模 ………………… 134
9.2.2 VerilogHDL建模在Top Down設計中的作用和行為建模的可綜合性問題………………………………………………………………………………… 136
9.3 用戶定義的原語 …………………………………………………………………… 137
小 結……………………………………………………………………………………… 138
思 考 題 …………………………………………………………………………………… 139
第10章 如何編寫和驗證簡單的純組合邏輯模塊 ………………………………………… 140
概 述……………………………………………………………………………………… 140
10.1 加法器 ……………………………………………………………………………… 140
10.2 乘法器 ……………………………………………………………………………… 142
10.3 比較器 ……………………………………………………………………………… 145
10.4 多路器 ……………………………………………………………………………… 146
10.5 總線和總線操作 …………………………………………………………………… 148
10.6 流水線 ……………………………………………………………………………… 149
小 結……………………………………………………………………………………… 154
思 考 題 …………………………………………………………………………………… 155
第11章 復雜數字系統的構成 ……………………………………………………………… 156
概 述……………………………………………………………………………………… 156
11.1 運算部件和數據流動的控制邏輯
………………………………………………… 156
11.1.1 數字邏輯電路的種類
………………………………………………………… 156
11.1.2 數字邏輯電路的構成
………………………………………………………… 156
11.2 數據在寄存器中的暫時保存
……………………………………………………… 158
11.3 數據流動的控制 …………………………………………………………………… 160
11.4 在 VerilogHDL設計中啟用同步時序邏輯 ……………………………………
162
11.5 數據接口的同步方法
……………………………………………………………… 164
小 結……………………………………………………………………………………… 165
思 考 題 …………………………………………………………………………………… 165
第12章 同步狀態機的原理、結構和設計…………………………………………………… 166
概 述……………………………………………………………………………………… 166
12.1 狀態機的結構 ……………………………………………………………………… 166
12.2 Mealy狀態機和 Moore狀態機的不同點………………………………………… 167
12.3 如何用Verilog來描述可綜合的狀態機 ………………………………………… 168
12.3.1 用可綜合Verilog模塊設計狀態機的典型辦法 ……………………………
168
12.3.2 用可綜合的 Verilog模塊設計、用獨熱碼表示狀態的狀態機 ……………… 170
12.3.3 用可綜合的 Verilog模塊設計、由輸出指定的碼表示狀態的狀態機 ……… 171
12.3.4 用可綜合的 Verilog模塊設計復雜的多輸出狀態機時常用的方法 ……… 173
小 結……………………………………………………………………………………… 175
思 考 題 …………………………………………………………………………………… 176
第13章 設計可綜合的狀態機的指導原則 ………………………………………………… 177
概 述……………………………………………………………………………………… 177
13.1 用 VerilogHDL語言設計可綜合的狀態機的指導原則 ……………………… 177
目 錄 5
13.2 典型的狀態機實例
………………………………………………………………… 178
13.3 綜合的一般原則 …………………………………………………………………… 180
13.4 語言指導原則 ……………………………………………………………………… 180
13.5 可綜合風格的 VerilogHDL模塊實例 ………………………………………… 181
13.5.1 組合邏輯電路設計實例
……………………………………………………… 181
13.5.2 時序邏輯電路設計實例
……………………………………………………… 187
13.6 狀態機的置位與復位
……………………………………………………………… 189
13.6.1 狀態機的異步置位與復位
…………………………………………………… 189
13.6.2 狀態機的同步置位與復位
…………………………………………………… 191
小 結……………………………………………………………………………………… 192
思 考 題 …………………………………………………………………………………… 193
第14章 深入理解阻塞和非阻塞賦值的不同 ……………………………………………… 194
概 述……………………………………………………………………………………… 194
14.1 阻塞和非阻塞賦值的異同
………………………………………………………… 194
14.1.1 阻塞賦值 ……………………………………………………………………… 195
14.1.2 非阻塞賦值 …………………………………………………………………… 196
14.2 Verilog模塊編程要點 …………………………………………………………… 196
14.3 Verilog的層次化事件隊列
……………………………………………………… 197
14.4 自觸發always塊 ………………………………………………………………… 198
14.5 移位寄存器模型 …………………………………………………………………… 199
14.6 阻塞賦值及一些簡單的例子
……………………………………………………… 203
14.7 時序反饋移位寄存器建模
………………………………………………………… 203
14.8 組合邏輯建模時應使用阻塞賦值
………………………………………………… 205
14.9 時序和組合的混合邏輯使用非阻塞賦值 …………………………………… 207
14.10 其他阻塞和非阻塞混合使用的原則
…………………………………………… 208
14.11 對同一變量進行多次賦值
……………………………………………………… 209
14.12 常見的對于非阻塞賦值的誤解
………………………………………………… 210
小 結……………………………………………………………………………………… 212
思 考 題 …………………………………………………………………………………… 212
第15章 較復雜時序邏輯電路設計實踐
…………………………………………………… 213
概 述……………………………………………………………………………………… 213
小 結……………………………………………………………………………………… 224
思 考 題 …………………………………………………………………………………… 224
第16章 復雜時序邏輯電路設計實踐
……………………………………………………… 226
概 述……………………………………………………………………………………… 226
16.1 二線制I2CCMOS串行EEPROM 的簡單介紹 ………………………………… 226
16.2 I2C總線特征介紹 ………………………………………………………………… 226
6 Verilog數字系統設計教程(第3版)
16.3 二線制I2CCMOS串行EEPROM 的讀寫操作 ……………………………… 227
16.4 EEPROM 的VerilogHDL程序 ………………………………………………… 228
總 結……………………………………………………………………………………… 251
思 考 題 …………………………………………………………………………………… 251
第17章 簡化的 RISC_CPU設計 …………………………………………………………… 252
概 述……………………………………………………………………………………… 252
17.1 課題的來由和設計環境介紹
……………………………………………………… 252
17.2 什么是CPU ……………………………………………………………………… 253
17.3 RISC_CPU結構 ………………………………………………………………… 253
17.3.1 時鐘發生器 …………………………………………………………………… 255
17.3.2 指令寄存器 …………………………………………………………………… 257
17.3.3 累加器 ………………………………………………………………………… 258
17.3.4 算術運算器 …………………………………………………………………… 259
17.3.5 數據控制器 …………………………………………………………………… 260
17.3.6 地址多路器 …………………………………………………………………… 261
17.3.7 程序計數器 …………………………………………………………………… 261
17.3.8 狀態控制器 …………………………………………………………………… 262
17.3.9 外圍模塊 ……………………………………………………………………… 268
17.4 RISC_CPU 操作和時序…………………………………………………………… 269
17.4.1 系統的復位和啟動操作
……………………………………………………… 269
17.4.2 總線讀操作 …………………………………………………………………… 270
17.4.3 總線寫操作 …………………………………………………………………… 271
17.5 RISC_CPU尋址方式和指令系統………………………………………………… 271
17.6 RISC_CPU模塊的調試 ………………………………………………………… 272
17.6.1 RISC_CPU模塊的前仿真 …………………………………………………… 272
17.6.2 RISC_CPU模塊的綜合 ……………………………………………………… 286
17.6.3 RISC_CPU模塊的優化和布局布線
………………………………………… 292
小 結……………………………………………………………………………………… 302
思 考 題 …………………………………………………………………………………… 303
第18章 虛擬器件/接口、IP和基于平臺的設計方法及其在大型數字系統設計中的作用……………………………………………………………………………………
304
概 述……………………………………………………………………………………… 304
18.1 軟核和硬核、宏單元、虛擬器件、設計和驗證IP以及基于平臺的設計方法 …… 304
18.2 設計和驗證IP供應商 …………………………………………………………… 306
18.3 虛擬模塊的設計 …………………………………………………………………… 307
18.4 虛擬接口模塊的實例
……………………………………………………………… 311
小 結……………………………………………………………………………………… 312
思 考 題 …………………………………………………………………………………… 312
目 錄 7
第三部分 Verilog數字設計示范與實驗練習
概 述……………………………………………………………………………………… 313
練習一 簡單的組合邏輯設計…………………………………………………………… 314
練習二 簡單分頻時序邏輯電路的設計………………………………………………… 316
練習三 利用條件語句實現計數分頻時序電路………………………………………… 318
練習四 阻塞賦值與非阻塞賦值的區別………………………………………………… 320
練習五 用always塊實現較復雜的組合邏輯電路
…………………………………… 322
練習六 在VerilogHDL中使用函數 ………………………………………………… 324
練習七 在VerilogHDL中使用任務(task) ………………………………………… 326
練習八 利用有限狀態機進行時序邏輯的設計………………………………………… 329
練習九 利用狀態機實現比較復雜的接口設計………………………………………… 332
練習十 通過模塊實例調用實現大型系統的設計……………………………………… 337
練習十一 簡單卷積器的設計…………………………………………………………… 343
附錄一 A/D轉換器的 VerilogHDL模型機所需要的技術參數 ………………… 357
附錄二 2K*8位 異步 CMOS靜態RAM HM 65162模型 …………………… 361
練習十二 利用SRAM 設計一個FIFO ……………………………………………… 366
第四部分 Verilog簡明語法
語法篇1 關于VerilogHDL的說明 ………………………………………………………… 376
一、關于IEEE1364標準 ……………………………………………………………… 376
二、Verilog簡介 ………………………………………………………………………377
三、語法總結 ……………………………………………………………………………… 377
四、編寫 VerilogHDL源代碼的標準 ………………………………………………… 379
五、設計流程 ……………………………………………………………………………… 381
語法篇2 Verilog硬件描述語言參考手冊…………………………………………………… 382
一、VerilogHDL語句與常用標志符(按字母順序排列)………………………………
382
二、系統任務和函數(Systemtaskandfunction)……………………………………… 448
三、常用系統任務和函數的詳細使用說明 ……………………………………………… 452
四、CommandLineOptions命令行的可選項 ………………………………………… 463
五、IEEEVerilog1364
2001標準簡介 ……………………………………………… 464
參考文獻…………………………………………………………………………………………478
出版者的話………………………………………………………………………………………479