Verilog HDL數(shù)字系統(tǒng)設計及仿真(第2版)
定 價:69 元
叢書名:工程設計與分析系列
- 作者:于斌
- 出版時間:2018/1/1
- ISBN:9787121330100
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP312
- 頁碼:
- 紙張:膠版紙
- 版次:2
- 開本:16開
Verilog HDL是一種使用廣泛的硬件描述語言,目前在國內(nèi)無論是集成電路還是嵌入式設計的相關(guān)專業(yè)都會使用到這種硬件描述語言。市面上介紹Verilog HDL的教材非常廣泛,各有不同的偏重。 在第1版廣泛應用的基礎(chǔ)上,吸收了眾多讀者的寶貴建議,大幅完善了第2版內(nèi)容。本書著重從設計角度入手,每章都力求讓讀者掌握一種設計方法,能夠利用本章知識進行完整的設計,從模塊的角度逐步完成對Verilog HDL語法的學習,從而在整體上掌握Verilog HDL語法。為了達到這個目的,每章中都會給出使用本章知識完成的實例,按照門級、數(shù)據(jù)流級、行為級、任務和函數(shù)、測試模塊、可綜合設計和完整實例的順序向讀者介紹Verilog HDL的語法和使用方式。書中出現(xiàn)的所有代碼均經(jīng)過仿真,力求準確,另外配套有書中所有實例源文件和實例操作的視頻講解。
(1)第1版出版以來,獲得讀者的廣泛歡迎,根據(jù)讀者的寶貴意見和建議,以及他們的具體應用的情況,進行改版。 (2)根據(jù)用戶建議、結(jié)合相關(guān)企業(yè)應用的需求和高校教學需求修訂了第1版內(nèi)容。相對第1版本,本書刪減了一些使用頻率較低的語法,減輕了讀者掌握語法的難度,同時增加了一些實例,使讀者有更多可以學習和揣摩的范例,能更好地理解代碼的設計。
再 版 前 言
Verilog HDL是一種使用非常廣泛的硬件描述語言,可以使用在電路和系統(tǒng)級的設計上,也可以作為嵌入式開發(fā)的編程語言之一。隨著集成電路產(chǎn)業(yè)在我國的蓬勃發(fā)展,HDL語言的教學工作也在很多高校展開,市面上也有很多國內(nèi)外的優(yōu)秀教材。
作者從事Verilog HDL課程教學多年,使用過十余種本版和引進版的教材,然而在教學課程結(jié)束之后,學生反饋回來的信息,往往是難以應用。造成這種情況的原因很多,一是部分教材過于偏重語法細節(jié),在一個細小的語法上糾結(jié)太多,使學生陷入了語法大于一切的迷途;二是在學習中與實際電路脫節(jié),寫出的代碼只適合仿真,不知硬件描述語言最終面向的對象是硬件,只能仿真的代碼用途有限;三是缺少直觀的認識,對編寫的代碼、模塊等只有紙面上的了解,不去追究其內(nèi)部的細節(jié)。這樣學習Verilog HDL語言之后,效果和沒學之前相比,只是多認識了一些語法而已。
自本書第1版2014年出版以來,獲得讀者的廣泛歡迎,已多次重印,并且,很多讀者來信介紹他們具體應用Verilog HDL的情況,對本書提出了很多寶貴意見和建議。在此基礎(chǔ)上,我們根據(jù)用戶建議,結(jié)合相關(guān)企業(yè)應用的需求和高校教學需求修訂了第1版內(nèi)容。相對于第1版本,本書刪減了一些使用頻率較低的語法,降低了讀者掌握語法的難度,同時增加了一些實例,使讀者有更多可以學習和揣摩的范例,能更好地理解代碼的設計。
本書在簡單地介紹了數(shù)字電路和Verilog HDL的相互關(guān)系之后,比較簡潔地介紹了基本語法,在介紹語法時給出了范例,以使語義明了,并且為每章出現(xiàn)的語法匹配了綜合實例,使讀者進一步加深認識。而在介紹語法之后,重點內(nèi)容放在如何編寫可綜合的設計模塊上,使讀者最后編寫的模塊可以在硬件電路上實現(xiàn),本書按如下結(jié)構(gòu)進行展開。
第1章,Verilog HDL入門簡介。主要回顧數(shù)字電路的設計過程,并介紹使用Verilog HDL進行電路設計的基本流程和簡單示例,使讀者有一個初步的了解。
第2章,Verilog HDL門級建模。介紹Verilog HDL門級建模的基本語法,主要講解基本邏輯門的使用方法和層次化建模思想,嘗試設計一個可以執(zhí)行的模塊,并補充了必需的語法,在章節(jié)的最后給出了四個門級建模的實例,供讀者參考。
第3章,Verilog HDL數(shù)據(jù)流級建模。介紹數(shù)據(jù)流級建模的相關(guān)語法,主要是一些操作數(shù)的定義和操作符的使用方法,這些操作數(shù)和操作符是Verilog HDL的建;A(chǔ),在實際設計中使用頻繁,所以在這些語法中給出了很多小例子,在學習時要注意例子間的細小差別。
第4章,Verilog HDL行為級建模。行為級建模,也是進行Verilog HDL設計的基本語法,主要介紹initial和always結(jié)構(gòu)在電路中的使用情況,以及一些語句,如if語句、case語句、for語句和循環(huán)語句,講解順序塊和并行塊的適用情況,并介紹命名塊和塊的禁用語法,最后通過幾個實例,用這些語法進行電路設計。
第5章,任務、函數(shù)與編譯指令。函數(shù)和任務是Verilog HDL中的重要組成部分,它們是一些具有實際功能的代碼片段,類似于子程序,可以在Verilog HDL代碼中直接調(diào)用,非常靈活。另外,編譯指令是仿真中的重要指令,也需要理解其用法。
第6章,Verilog HDL測試模塊。從仿真測試的角度編寫測試模塊,力圖用多種方式生成不同信號,給出同一種信號的多種表達形式,開闊讀者的設計思路,使讀者能夠按照自己習慣的思路來編寫測試信號,而不是局限在某一種寫法上。
第7章,可綜合模型設計。從本章開始,所有的模塊都是可以綜合成最終電路的,因為Verilog HDL語言就是要編寫可以生成實際電路的模塊代碼?删C合模型設計中需要注意許多問題,如阻塞和非阻塞賦值、多驅(qū)動問題、敏感列表問題等,還有一些語法根本不可以綜合,本章也一一列出。最后介紹了流水線的基本思想,并給出了一個雛形。
第8章,有限狀態(tài)機設計。狀態(tài)機的設計是時序電路設計的核心,越大型的時序電路狀態(tài)機就越顯得重要。本章不僅介紹了moore型和mealy型狀態(tài)機的區(qū)別,給出了一段式、兩段式和三段式的寫法,而且從硬件電路的角度對狀態(tài)機不同寫法得到的電路信號變化進行解釋,使讀者更明白所寫模塊變成電路后的工作狀況。
第9章,常見功能電路的HDL模型。本章一方面讓讀者對這些功能電路有一定的了解,另一方面也是希望讀者能在這些例子中進一步學習Verilog HDL編寫模塊的設計方法。
第10章,完整的設計實例。本章有三個綜合實例,從設計的提出開始,到最后的時序仿真結(jié)束,完成前端設計的基本流程,使讀者有一個整體的流程認知。
第11章,實驗。本章有七個實驗,實驗部分采用了比較新穎的方式,每個實驗都有一個主題,在完成這個主題的過程中,需要讀者編寫一些代碼,同時也給出了參考代碼。讀者一方面可以通過這些實驗來完成一些實例的設計,另一方面在設計中也可以進一步掌握實驗中涉及的語法。每個實驗都分成了學生版和輔導版兩個部分,學生版可以直接在實驗中給學生使用,輔導版則可以給教師作為參考或?qū)W生自學輔導使用。
第12章,課程設計。本章是一些規(guī)模中等的設計模塊,每個題目都給出了設計要求、實現(xiàn)代碼和仿真結(jié)果,部分題目還給出了引腳配置,每個題目的最后都提出了一些問題,還給出了功能擴展建議,當學生覺得題目簡單想要加大難度時可以使用這些擴展功能。
附錄A,課程測試樣卷。給出了測試題,可以檢查讀者的掌握情況。
附錄B,習題及樣卷答案。給出了習題和測試題的答案,以便參考。
在學習Verilog HDL的過程中,一定要多編寫代碼,多進行仿真,這樣可以幫助讀者更好地掌握語法和設計思想。另外,如果有條件的話,建議使用一些FPGA或CPLD的開發(fā)板,把設計的模塊用開發(fā)板實現(xiàn),對讀者的學習非常有益。
本書第1~6章和測試題部分由哈爾濱理工大學于斌編寫,第7~12章由哈爾濱理工大學黃海編寫。參與本書編寫和視頻開發(fā)的人員還有謝龍漢、蔡思祺、林偉、魏艷光、林木議、王悅陽、林偉潔、林樹財、鄭曉、吳苗、李翔、朱小遠、唐培培、耿煜、尚濤、鄧奕、張桂東、魯力等。由于時間倉促,書中疏漏之處,請讀者批評指正,可通過電子郵件yubin@hrbust.edu.cn與我們交流。本書配套素材光盤內(nèi)容。請在華信教育資源網(wǎng)(www.hxedu.com.cn)的本書頁面下載,或與本書作者和編輯聯(lián)系。
編著者
作者團隊主要負責人謝龍漢,華南理工大學機械與汽車工程學院,副院長,教授。2002年畢業(yè)于浙江大學過程裝備與控制工程專業(yè)本科,在浙江大學華工過程機械研究所取得碩士學位,之后在廣州本田汽車有限公司研發(fā)中心工作過兩年,2010年獲得香港中文大學機械與自動化工程系的博士學位。國內(nèi)外學術(shù)期刊上發(fā)表30多篇學術(shù)論文,寫作經(jīng)驗豐富,作品技術(shù)含量高,實用性強。
目 錄
第1章 Verilog HDL入門簡介1
1.1 集成電路設計流程簡介1
1.2 數(shù)字電路設計范例3
1.3 Verilog HDL建模范例5
1.4 兩種硬件描述語言9
第2章 Verilog HDL門級建模10
2.1 門級建模范例10
2.2 門級建;菊Z法12
2.2.1 模塊定義12
2.2.2 端口聲明13
2.2.3 門級調(diào)用14
2.2.4 模塊實例化17
2.2.5 內(nèi)部連線聲明20
2.3 MOS開關(guān)與UDP21
2.4 層次化設計22
2.5 應用實例22
實例2-14位全加器的門級建模22
實例2-22-4譯碼器的門級建模25
實例2-3主從D觸發(fā)器的門級建模27
實例2-41位比較器的門級建模28
2.6 習題30
第3章 Verilog HDL數(shù)據(jù)流級建模31
3.1 數(shù)據(jù)流級建模范例31
3.2 數(shù)據(jù)流級建模基本語法32
3.3 操作數(shù)33
3.3.1 數(shù)字33
3.3.2 參數(shù)35
3.3.3 線網(wǎng)37
3.3.4 寄存器38
3.4 操作符39
3.4.1 算術(shù)操作符39
3.4.2 按位操作符39
3.4.3 邏輯操作符40
3.4.4 關(guān)系操作符41
3.4.5 等式操作符41
3.4.6 移位操作符42
3.4.7 拼接操作符42
3.4.8 縮減操作符43
3.4.9 條件操作符43
3.4.10 操作符優(yōu)先級44
3.5 應用實例45
實例3-14位全加器的數(shù)據(jù)流級建模45
實例3-22-4譯碼器的數(shù)據(jù)流級建模47
實例3-3主從D觸發(fā)器的數(shù)據(jù)流級建模49
實例3-44位比較器的數(shù)據(jù)流級建模50
3.6 習題51
第4章 Verilog HDL行為級建模53
4.1 行為級建模范例53
4.2 initial結(jié)構(gòu)和always結(jié)構(gòu)56
4.2.1 initial結(jié)構(gòu)56
4.2.2 always結(jié)構(gòu)58
4.3 順序塊和并行塊61
4.3.1 順序塊61
4.3.2 并行塊62
4.3.3 塊的嵌套63
4.4 if語句64
4.5 case語句67
4.6 循環(huán)語句69
4.6.1 while循環(huán)69
4.6.2 for循環(huán)70
4.6.3 repeat循環(huán)71
4.6.4 forever循環(huán)71
4.7 過程性賦值語句72
4.7.1 阻塞性賦值語句72
4.7.2 非阻塞性賦值語句72
4.8 應用實例74
實例4-14位全加器的行為級建模74
實例4-2簡易ALU電路的行為級建模75
實例4-3下降沿觸發(fā)D觸發(fā)器的行為級建模77
實例4-4十進制計數(shù)器的行為級建模78
4.9 習題80
第5章 任務、函數(shù)與編譯指令81
5.1 任務81
5.1.1 任務的聲明和調(diào)用82
5.1.2 自動任務84
5.2 函數(shù)86
5.2.1 函數(shù)的聲明和調(diào)用87
5.2.2 任務與函數(shù)的比較89
5.3 系統(tǒng)任務和系統(tǒng)函數(shù)89
5.3.1 顯示任務90
5.3.2 監(jiān)視任務93
5.3.3 仿真控制任務94
5.3.4 隨機函數(shù)95
5.3.5 文件控制任務96
5.3.6 值變轉(zhuǎn)儲任務100
5.4 編譯指令102
5.4.1 `define102
5.4.2 `include104
5.4.3 `timescale105
5.5 完整的module參考模型108
5.6 應用實例109
實例5-1信號同步任務109
實例5-2階乘任務110
實例5-3可控移位函數(shù)111
實例5-4偶校驗任務112
實例5-5算術(shù)邏輯函數(shù)114
5.7 習題115
第6章 Verilog HDL測試模塊117
6.1 測試模塊范例117
6.2 時鐘信號119
6.3 復位信號120
6.4 測試向量122
6.5 響應監(jiān)控123
6.6 仿真中對信號的控制127
6.7 代碼覆蓋129
6.8 應用實例130
實例6-1組合邏輯的測試模塊130
實例6-2時序邏輯的測試模塊132
實例6-3除法器的測試模塊135
6.9 習題138
第7章 可綜合模型設計139
7.1 邏輯綜合過程139
7.2 延遲142
7.3 再談阻塞賦值與非阻塞賦值148
7.4 可綜合語法155
7.5 代碼風格157
7.5.1 多重驅(qū)動問題157
7.5.2 敏感列表不完整158
7.5.3 分支情況不全158
7.5.4 組合和時序混合設計159
7.5.5 邏輯簡化160
7.5.6 流水線思想160
7.6 應用實例164
實例7-1SR鎖存器延遲模型164
實例7-2超前進位加法器165
實例7-3移位除法器模型169
7.7 習題174
第8章 有限狀態(tài)機設計175
8.1 有限狀態(tài)機簡介175
8.2 兩種紅綠燈電路的狀態(tài)機模型176
8.2.1 moore型紅綠燈176
8.2.2 mealy型紅綠燈181
8.3 深入理解狀態(tài)機183
8.3.1 一段式狀態(tài)機184
8.3.2 兩段式狀態(tài)機188
8.3.3 三段式狀態(tài)機190
8.3.4 狀態(tài)編碼的選擇198
8.4 應用實例199
實例8-1獨熱碼狀態(tài)機199
實例8-2格雷碼狀態(tài)機203
實例8-3序列檢測模塊207
8.5 習題211
第9章 常見功能電路的HDL模型212
9.1 鎖存器與觸發(fā)器212
9.2 編碼器與譯碼器220
9.3 寄存器223
9.4 計數(shù)器228
9.5 分頻器232
9.6 乘法器238
9.7 存儲單元246
9.8 習題250
第10章 完整的設計實例251
10.1 異步FIFO251
10.1.1 異步FIFO的介紹與整體結(jié)構(gòu)251
10.1.2 亞穩(wěn)態(tài)的處理253
10.1.3 空滿狀態(tài)的判斷254
10.1.4 子模塊設計257
10.1.5 整體仿真結(jié)果265
10.2 三角函數(shù)計算器268
10.2.1 設計要求的提出268
10.2.2 數(shù)據(jù)格式268
10.2.3 算法的選擇與原理結(jié)構(gòu)269
10.2.4 確定總體模塊272
10.2.5 內(nèi)部結(jié)構(gòu)的劃分272
10.2.6 分頻器模塊274
10.2.7 控制模塊274
10.2.8 迭代設計模塊279
10.2.9 功能仿真與時序仿真293
10.3 簡易CPU模型296
10.3.1 教學模型的要求296
10.3.2 指令格式的確定297
10.3.3 整體結(jié)構(gòu)劃分298
10.3.4 控制模塊設計299
10.3.5 其余子模塊設計304
10.3.6 功能仿真與時序仿真308
第11章 實驗312
實驗一 簡單組合邏輯電路設計(學生版)312
實驗一 輔導版314
實驗二 行為級模型設計(學生版)319
實驗二 輔導版321
實驗三 利用FPGA驗證設計功能(學生版)326
實驗三 輔導版327
實驗四 任務與函數(shù)的設計(學生版)332
實驗四 輔導版334
實驗五 流水線的使用(學生版)337
實驗五 輔導版339
實驗六 信號發(fā)生器設計(學生版)342
實驗六 輔導版344
實驗七 有限狀態(tài)機的設計(學生版)347
實驗七 輔導版348
第12章 課程設計356
選題一 出租車計費器356
選題二 智力搶答器362
選題三 點陣顯示369
選題四 自動售貨機373
選題五 籃球24秒計時379
選題六 乒乓球游戲電路384
選題七 CRC檢測398
選題八 堆棧設計404
選題九 數(shù)字鬧鐘410
選題十 漢明碼編譯碼器418
附錄A 課程測試樣卷424
附錄B 習題及樣卷答案429