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