內容簡介
本書以實例講解的方式對HDL語言的設計方法進行介紹。全書共分9章,第1章至第3章主要介紹了Verilog HDL語言的基本概念、設計流程、語法及建模方式等內容;第4章至第6章主要討論如何合理地使用Verilog HDL語言描述高性能的可綜合電路;第7章和第8章重點介紹了如何編寫測試激勵以及Verilog的仿真原理;第9章展望HDL語言的發展趨勢。本書配有一張光碟,光碟中收錄了書中示例的工程檔案、設計源檔案及說明檔案等。另外為了配合讀者進一步學習,光碟中還提供了Verilog 1995和Verilog 2001這兩個版本的IEEE標準文獻,讀者可以從中查閱Verilog的語法細節。本書圍繞設計和驗證兩大主題展開討論,內容豐富,實用性強,可作為高等院校通信工程、電子工程、計算機、微電子和半導體等相關專業的教材,也可作為硬體工程師和IC工程師的參考書。
圖書目錄
第1章hdl設計方法簡介1
1.1設計方法的變遷1
1.2verilog語言的特點2
1.2.1verilog的由來2
1.2.2hdl與原理圖2
1.2.3verilog和vhdl3
1.2.4verilog和c語言4
1.3hdl的設計與驗證流程5
1.4問題與思考7
第2章verilog語言基礎9
2.1top-down和bottom-up9
2.2verilog的3種描述方法10
2.2.1實例10
2.2.23種描述方法13
2.3基本詞法14
2.4模組和連線埠15
2.5編譯指令16
2.6邏輯值與常量17
2.6.1邏輯值17
2.6.2常量18
2.7變數類型19
2.7.1線網類型19
2.7.2暫存器類型19
2.7.3變數的物理含義20
2.7.4驅動和賦值20
2.8參數22
2.9verilog中的並發與順序22
2.10運算元、操作符和表達式23
2.10.1操作符23
2.10.2二進制數值26
2.10.3運算元26
2.11系統任務和系統函式28
2.11.1顯示任務28
2.11.2檔案輸入/輸出任務28
2.11.3其他系統任務和系統函式29
2.12小結29
2.13問題與思考29
第3章描述方式和設計層次31
3.1描述方式31
3.2數據流描述31
3.2.1數據流31
3.2.2連續賦值語句31
3.2.3延時33
3.2.4多驅動源線網34
3.3行為描述36
3.3.1行為描述的語句格式36
3.3.2過程賦值語句40
3.3.3語句組43
3.3.4高級編程語句44
3.4結構化描述50
3.4.1實例化模組的方法52
3.4.2參數化模組53
3.5設計層次57
3.5.1系統級和行為級57
3.5.2rtl級59
3.5.3門級60
3.5.4電晶體級60
3.5.5混合描述60
3.6實例:crc計算與校驗電路60
3.6.1crc10校驗,行為級61
3.6.2crc10計算電路,rtl級62
3.7小結64
3.8問題與思考64
第4章rtl概念與rtl級建模65
4.1rtl與綜合的概念65
4.2rtl級設計的基本要素和步驟65
4.3常用的rtl級建模67
4.3.1阻塞賦值、非阻塞賦值和連續賦值67
4.3.2暫存器電路建模68
4.3.3組合邏輯建模70
4.3.4雙向連線埠與三態信號建模72
4.3.5mux建模73
4.3.6存儲器建模74
4.3.7簡單的時鐘分頻電路75
4.3.8串並轉換建模77
4.3.9同步復位和異步復位77
4.3.10使用case和if...else語句建模81
4.3.11可綜合的verilog語法子集87
4.4設計實例:cpu讀寫pld暫存器接口87
4.5小結92
4.6問題與思考92
第5章rtl設計與編碼指導93
5.1一般性指導原則93
5.1.1面積和速度的平衡與互換原則94
5.1.2硬體原則103
5.1.3系統原則105
5.2同步設計原則和多時鐘處理107
5.2.1同步設計原則107
5.2.2亞穩態109
5.2.3異步時鐘域數據同步111
5.3代碼風格113
5.3.1代碼風格的分類113
5.3.2代碼風格的重要性113
5.4結構層次設計和模組劃分114
5.4.1結構層次化編碼(hierarchicalcoding)114
5.4.2模組劃分的技巧(designpartitioning)115
5.5組合邏輯的注意事項116
5.5.1always組合邏輯信號敏感表116
5.5.2組合邏輯反饋環路117
5.5.3脈衝產生器118
5.5.4慎用鎖存器(latch)119
5.6時鐘設計的注意事項120
5.6.1內部邏輯產生的時鐘120
5.6.2ripplecounter121
5.6.3時鐘選擇121
5.6.4門控時鐘121
5.6.5時鐘同步使能端122
5.7rtl代碼最佳化技巧123
5.7.1使用pipelining技術最佳化時序123
5.7.2模組復用與資源共享123
5.7.3邏輯複製125
5.7.4香農擴展運算127
5.8小結129
5.9問題與思考130
第6章如何寫好狀態機131
6.1狀態機的基本概念131
6.1.1狀態機是一種思想方法131
6.1.2狀態機的基本要素及分類133
6.1.3狀態機的基本描述方式133
6.2如何寫好狀態機134
6.2.1評判fsm的標準134
6.2.2rtl級狀態機描述常用的語法135
6.2.3推薦的狀態機描述方法138
6.2.4狀態機設計的其他技巧151
6.3使用synplifypro分析fsm154
6.4小結157
6.5問題與思考157
第7章邏輯驗證與testbench編寫159
7.1概述159
7.1.1仿真和驗證159
7.1.2什麼是testbench160
7.2建立testbench,仿真設計161
7.2.1編寫仿真激勵162
7.2.2搭建仿真環境172
7.2.3確認仿真結果173
7.2.4編寫testbench時需要注意的問題175
7.3實例:cpu接口仿真177
7.3.1設計簡介177
7.3.2一種testbench178
7.3.3另外一種testbench182
7.4結構化testbench183
7.4.1任務和函式184
7.4.2匯流排功能模型(bfm)184
7.4.3測試套具(harness)185
7.4.4測試用例(testcase)185
7.4.5結構化testbench186
7.5實例:結構化testbench的編寫188
7.5.1單頂層testbench188
7.5.2多頂層testbench191
7.6擴展verilog的高層建模能力192
7.7小結193
7.8問題與思考193
第8章verilog語義和仿真原理195
8.1從一個問題說起195
8.2電路與仿真196
8.2.1電路是並行的196
8.2.2verilog是並行語言197
8.2.3verilog仿真語義197
8.3仿真原理198
8.3.1verilog的仿真過程198
8.3.2仿真時間202
8.3.3事件驅動203
8.3.4進程203
8.3.5調度204
8.3.6時序控制(timingcontrol)205
8.3.7進程、事件和仿真時間的關係205
8.3.8verilog語言的不確定性205
8.4分層事件佇列與仿真參考模型206
8.4.1分層事件佇列206
8.4.2仿真參考模型206
8.5時序模型與延時207
8.5.1仿真模型(simulationmodel)207
8.5.2時序模型(timingmodel)208
8.5.3案例分析208
8.5.4在verilog語言中增加延時210
8.6再談阻塞與非阻塞賦值213
8.6.1本質213
8.6.2案例分析216
8.7如何提高代碼的仿真效率219
8.8防止仿真和綜合結果不一致219
8.9小結220
8.10問題與思考220
第9章設計與驗證語言的發展趨勢221
9.1設計與驗證語言的發展歷程221
9.1.1hdl語言221
9.1.2c/c和私有的驗證語言222
9.1.3accellera和ieee的標準化工作222
9.2硬體設計語言的發展現狀和走向223
9.2.1hdl的競爭223
9.2.2一些嘗試223
9.2.3下一代的verilog語言223
9.2.4systemc224
9.3驗證語言的發展現狀和走向225
9.3.1驗證方法225
9.3.2hvl標準化進程225
9.3.3hvl的新需求226
9.4總結和展望226
9.5小結226
9.6問題與思考226
附錄verilog關鍵字列表227