內容簡介
《VerilogHDL與數字系統設計簡明教程》分3部分,第1部分(第1~6章)是語法部分,詳細講解VerilogHDL語法知識和基本套用;第2部分(第7~9章)是實例部分,通過從已公布的成熟原始碼中精選的50多個最具代表性的建模實例,輔以框圖和詳細注釋幫助讀者理解程式,從而學習典型電路單元的建模方法;第3部分(第10章)是系統設計實戰,為初學者展示了一個小型系統的詳細設計流程。
《VerilogHDL與數字系統設計簡明教程》內容豐富、實用性強,適合高等院校相關專業高年級學生和研究生學習和閱讀,對參加相關工作的工程技術人員也有很強的參考價值。
編輯推薦
VerilogHDL發展至今20多年中積累的文檔、書籍和各種資料可謂不計其數,《VerilogHDL與數字系統設計簡明教程》力圖從這些資料中,找到適合初學者學習的內容,用一種更好的組織方式,將之呈現給讀者。
實例豐富、注釋和分析詳盡,可以在設計階段直接使用書上的程式,從而節省時間。
目錄
第1章初識VerilogHDL 1
1.1什麼是VerilogHDL 1
1.2主要功能 1
1.3設計流程 2
1.4基本結構 2
1.4.1模組的概念 3
1.4.2模組調用 4
1.4.3測試模組 5
1.5程式設計基礎 6
1.5.1程式格式 7
1.5.2注釋語句 7
1.5.3標識符和關鍵字 8
1.5.4參數聲明 8
1.5.5預處理指令 8
第2章數據類型與表達式 12
2.1數據類型 12
2.1.1常量 12
2.1.2變數 14
2.2表達式 21
2.2.1運算元 21
2.2.2操作符 24
第3章行為建模方法 32
3.1數據流行為建模 32
3.1.1連續賦值語句 32
3.1.2線網聲明賦值 33
3.1.3時延的概念 34
3.1.4線網時延 35
3.1.5用數據流建模方式實現1位全加器 36
3.2順序行為建模 36
3.2.1過程結構語句 36
3.2.2時序控制 42
3.2.3語句塊 45
3.2.4過程性賦值 48
3.2.5if語句 55
3.2.6case語句 58
3.2.7循環語句 60
3.2.8握手協定實例 63
第4章結構建模方法 65
4.1VerilogHDL內置基元 66
4.1.1內置基本門 66
4.1.2上拉、下拉電阻 70
4.1.3MOS開關 71
4.1.4雙向開關 73
4.1.5給基元定義時延 74
4.1.6描述實例數組 74
4.1.7內置基元建模實例 74
4.2用戶定義基元 76
4.2.1UDP的定義 76
4.2.2組合電路UDP 77
4.2.3時序電路UDP 78
4.2.4VerilogHDL速記符號 80
4.2.5電平觸發和邊沿觸發混合的UDP 81
4.3模組實例化 83
4.3.1連線埠關聯方式 83
4.3.2懸空連線埠 85
4.3.3連線埠匹配 85
4.3.4模組參數值 86
4.3.5建模實例 88
4.4行為描述和結構描述的混合使用 90
第5章任務、函式及其他 91
5.1任務 91
5.1.1任務定義 91
5.1.2任務調用 92
5.2函式 94
5.2.1函式定義 94
5.2.2函式調用 95
5.3系統任務和函式 96
5.3.1顯示任務 96
5.3.2檔案輸入/輸出任務 99
5.3.3時間標度任務 101
5.3.4仿真控制任務 102
5.3.5時序驗證任務 102
5.3.6仿真時間函式 102
5.3.7實數變換函式 103
5.3.8隨機函式 103
5.4其他重要概念 104
5.4.1禁止語句 104
5.4.2命名事件 105
5.4.3層次路徑名 107
5.4.4共享任務和函式 109
5.4.5VCD檔案 111
5.4.6指定塊 117
5.4.7強度 117
第6章編寫測試程式 120
6.1測試模組 120
6.2產生輸入信號 121
6.2.1特定值序列 121
6.2.2重複模式 123
6.3從文本檔案中讀取向量 127
6.4向文本檔案中寫入向量 129
6.5測試程式實例 130
6.5.1半加器 130
6.5.25位計數器 131
6.5.32選1選擇器 133
6.5.42-4解碼器 134
6.5.5D觸發器 135
第7章初級建模實例 138
7.1觸發器 138
7.1.1上升沿觸發器 138
7.1.2帶異步復位端的上升沿觸發器 139
7.1.3帶異步置位端的上升沿觸發器 140
7.1.4帶異步復位端和異步置位端的上升沿觸發器 140
7.1.5帶同步復位端的上升沿觸發器 141
7.1.6帶同步置位端的上升沿觸發器 142
7.1.7帶異步復位端和輸出使能端的上升沿觸發器 142
7.2鎖存器 143
7.2.1帶使能端的鎖存器 143
7.2.2可異步選通數據的鎖存器 143
7.2.3可選通使能端的鎖存器 144
7.2.4帶異步復位端的鎖存器 145
7.3編碼器 145
7.4解碼器 146
7.5多路數據選擇器 147
7.5.1用if-else構造的4選1選擇器 147
7.5.2用case構造的4選1選擇器 148
7.5.3用case構造的12選1選擇器 149
7.5.4帶忽略位的多路選擇器 150
7.6計數器 151
7.6.1帶計數使能端和異步復位端的8位計數器 151
7.6.2可設定計數輸出並帶異步復位端的8位計數器 152
7.6.3可設定計數輸出並帶使能端、進位端和復位端的8位計數器 153
7.7輸入輸出緩衝器 154
7.7.1三態緩衝器 154
7.7.2雙向緩衝器 155
7.8加法器 156
7.8.1半加器 156
7.8.2全加器 157
7.8.3串列進位加法器 159
7.8.4超前進位加法器 160
7.9移位暫存器 165
7.10頻率轉換器 166
7.11模數轉換器 169
第8章高級建模實例 172
8.1狀態機建模 172
8.1.1乘法器狀態機 172
8.1.2互動狀態機 174
8.1.3Moore型有限狀態機 178
8.1.4Mealy型有限狀態機 180
8.2序列檢測器 182
8.3FIFO(先入先出電路) 185
8.3.116×16FIFO 185
8.3.24×16FIFO 187
8.4UART(通用異步收發器) 196
第9章程式綜合實例 208
9.1可綜合設計 208
9.1.1綜合的概念 208
9.1.2可綜合 209
9.1.3可綜合及不可綜合的結構 209
9.2綜合實例 210
9.2.1組合邏輯電路 210
9.2.2時序邏輯電路 211
9.2.3存儲器 224
9.2.4布爾方程 225
9.2.5有限狀態機 226
9.2.6通用移位暫存器 232
9.2.7算術邏輯單元(ALU) 233
9.2.8二進制計數器 236
9.2.9加法器 237
9.2.10數值比較器 237
9.2.11解碼器 238
9.2.12三態門 240
9.2.13序列檢測器 241
第10章系統設計實戰 244
10.1系統功能分析 244
10.1.1計算機的基本結構 245
10.1.2典型微處理器系統結構及工作原理 245
10.1.3普通計算器的基本結構 247
10.2系統設計規劃 247
10.2.1系統功能模組劃分 247
10.2.2鍵盤輸入模組 249
10.2.3暫存器組 251
10.2.4算術邏輯單元 252
10.2.5顯示部分 255
10.2.6系統結構 257
10.3程式設計與仿真 258
10.3.1鍵盤輸入模組程式與仿真 258
10.3.2ALU模組程式與仿真 263
10.3.3顯示部分程式與仿真 283
10.3.4頂層模組程式設計 292
10.4邏輯綜合 292
……
序言
HDL(HardwareDescriptionLanguage,硬體描述語言)是伴隨著積體電路設計複雜度和集成度的急劇上升而出現的。
硬體工程師們總要畫電路圖,用一個個小元件搭出或大或小的系統原理圖。當電路圖中的元件多達百個以上時,無論是畫圖還是分析都會有一定的難度。同樣的情形也發生在積體電路設計中,當一個晶片內必須包含上萬個甚至幾十萬、幾百萬個電晶體時(目前面市的頻率最高的CPU晶片內已經集成了近2億個電晶體),用原理圖的方式來設計和管理顯然是“不可能的任務”。於是出現了HDL設計方法,就像20世紀70年代高級程式語言迅速取代彙編語言一樣,從20世紀90年代以來,HDL逐漸取代了門級原理圖設計方法。
VerilogHDL是1983年由位於英格蘭阿克頓市的GDA公司開發出來的。VerilogHDL的具體物理建模能力強,語法類似c語言,容易學習。Verilog在工業界被套用廣泛,美國大多數公司的RTL級代碼都是用Verilog寫的。
本書主要針對初學者,在內容安排上主要以語法講解和程式分析為主,並沒有介紹複雜系統的設計方法。初學者應當從本書的基本結構和方法出發,打好基礎,一旦成為一個熟練的設計師,就會發現Verilog只是一個工具,而對系統功能的考慮和時序的精細設計才是最需要設計人員考慮的。
本書的寫作目標是讓初學者順利入門,希望您在閱讀本書的過程中逐漸了解到VerilogHDL,是什麼、如何寫、如何用,面對一段寫好的程式能夠做出正確分析,最終掌握設計流程和建模方法。
VerilogHDL發展至今20多年積累的文檔、書籍和各種資料可謂不計其數,本書作者試圖從這些資料中,找到更好的也是更適合初學者學習的內容,用一種更好的組織方式,呈現給讀者,讓讀者從中受益。
大量使用實例並帶有詳細的注釋和分析是本書的最大特點。書中提供大量程式實例,目的不僅僅是讓讀者在學習階段理解它們的建模方法和技巧,而且可以在設計階段把其中很多程式片段直接拿來使用,從而節省時間。
實踐是學好程式語言的最佳途徑,所以建議讀者在學習之餘儘量能多動手編程並做仿真。如果您能把本書給出的實例全都調試一次,一定可以事半功倍。
本書由吳戈編寫,參加資料整理的還有何偉、張兵、劉兆宏、季建華、劉福剛、趙文革、黃弦、鄧玉春、曾慶華、石昀、朱元斌、錢文杰、陳功傑、汪洪、劉超、鐘曉媛等,在此一併表示感謝!