本書從理論教學和實際應用出發(fā),結合現代數字系統(tǒng)設計技術的發(fā)展現狀,在系統(tǒng)介紹數字邏輯電路的分析設計的基本理論、基本方法的基礎上,重點介紹了采用Verilog HDL進行數字系統(tǒng)設計和實現的方法。本書的主要內容包括數字系統(tǒng)設計概述、數字邏輯基礎、邏輯代數基礎、邏輯門電路、Verilog HDL語法基礎、組合邏輯電路、觸發(fā)器、時序邏輯電路、半導體存儲器與可編程邏輯器件、數/模及模/數轉換器、Vivado集成開發(fā)環(huán)境介紹、Verilog HDL設計實例等,并將Verilog HDL的介紹滲透于數字邏輯電路的設計的各章節(jié)。本書既有數字邏輯的系統(tǒng)理論,又有Verilog HDL設計實現,在內容上由淺入深,實用性強,既可以作為高等院校通信與電子類、計算機類專業(yè)本科生的教材或參考書,也可以作為各類電子系統(tǒng)設計科研人員和硬件工程師的參考書。
本書在全面系統(tǒng)地介紹數字電路基礎知識上,把現代數字系統(tǒng)設計中廣泛使用的可編程邏輯器件、硬件描述語言、EDA開發(fā)技術等內容有機地融合在本教材中。理論與實踐結合,為學生畢業(yè)后從事集成電路設計等相關工作打下良好的基礎。
前言在教學中能夠將*新的專業(yè)理論和技術講授給學生一直都是筆者的愿望,作為一名長期從事數字邏輯電路教學的教師,切身感受到了教材滯后的事實。在進行傳統(tǒng)的數字邏輯設計課程講解后,學生只能用傳統(tǒng)電路設計方法實現系統(tǒng),而不會使用現代的EDA工具和硬件描述語言來進行數字系統(tǒng)設計。在電子設計大賽、課程設計、畢業(yè)設計等教學環(huán)節(jié)又會涉及硬件描述語言、EDA 和可編程邏輯器件等問題,這時往往需要進行額外的教學或者讓學生自學,學生畢業(yè)后在實際工作中也經常面臨同樣的問題。因此,筆者希望編寫一本融合現代數字系統(tǒng)設計方法、硬件描述語言、EDA技術、可編程邏輯器件等內容的教材。硬件描述語言是一種用形式化方法來描述數字電路和數字邏輯系統(tǒng)的語言。數字邏輯電路設計者可利用這種語言來描述自己的設計思想,然后利用EDA工具進行仿真,再自動綜合到門級電路,*后用ASIC或FPGA實現其功能。到20世紀80年代,先后出現了上百種硬件描述語言,*終VHDL 和 Verilog兩種硬件描述語言先后被 IEEE 采納,成為了標準的硬件描述語言。目前,國內有許多關于硬件描述語言的教材,其中大部分都是用 VHDL 語言來實現的。本書選用 Verilog 硬件編程語言有兩方面的原因,一方面是Verilog HDL的使用者眾多;另一方面是 Verilog 與 C 語言有很多的相同點,這給教學帶來很大方便。本書以數字電路系統(tǒng)的設計原理為主線,同時也系統(tǒng)地闡述了采用 Verilog 作為硬件編程語言進行 EDA 設計的方法,保持了數字邏輯電路理論的系統(tǒng)性和內容的完整性。本書包括數制與編碼、邏輯代數基礎、邏輯門電路、組合邏輯電路、觸發(fā)器、時序邏輯電路等基本內容。為了使讀者掌握 EDA 技術,書中增加了Verilog 語言基礎、可編程邏輯電路等有關內容,同時以Xilinx公司的 Vivado開發(fā)環(huán)境為例,詳細說明了進行 EDA 開發(fā)的流程和編程方法。為了使讀者全面系統(tǒng)地掌握 VerilogHDL 設計方法,書中*后兩章介紹了Vivado工程設計流程和Verilog HDL的實例,詳細說明了 EDA 設計實現的全過程。本書共由12章組成。第1章介紹了數字系統(tǒng)的基本概念和數字系統(tǒng)的設計方法,并對電子設計自動化(EDA)技術做了簡要說明。第2章介紹了數制和編碼,不同進制的轉換方法,數值型數據在計算機中的表示方法及常用的幾種編碼。第3章介紹了數字電路分析和設計的數學基礎邏輯代數,介紹了邏輯代數的基本定理、公式、邏輯函數及邏輯函數的化簡。第4章介紹了邏輯門電路,講解了基本邏輯門電路的組成、邏輯符號,以及由基本門電路構成的復合門電路,*后介紹了集成邏輯門電路的工作原理和外部特性。第5章介紹了硬件描述語言 Verilog 的基本概念,語法規(guī)則,模塊結構,并對結構建模、數據流建模、行為建模,函數和任務等進行了說明。第6章詳細闡述了組合邏輯電路的分析、設計方法,對常用組合邏輯單元電路的功能和應用進行了說明,并且給出了每種單元電路的 Verilog 描述和仿真結果。第7章詳細闡述了常用的觸發(fā)器的電路結構與特點、不同觸發(fā)器的轉換,并給出了觸發(fā)器電路的 Verilog 描述和仿真結果。第8章詳細闡述了時序邏輯電路的基本理論、分析和設計方法,并且給出了運用 Verilog HDL 實現典型單元電路的例子。第9章介紹了半導體存儲器和可編程邏輯器件,存儲器的分類、特點,存儲器的擴展,存儲器的Verilog HDL實現,可編程門陣列 FPGA 的原理與結構,并對可編程邏輯器件的編程方法進行了簡要說明。第10章 介紹了D/A、A/D轉換器的工作原理和性能指標。第11章 介紹了Vivado集成開發(fā)環(huán)境,包括Vivado的安裝、Vivado工程設計基本流程等方面的內容。第12章 介紹了Verilog HDL設計實例, 包括分頻器、按鍵防抖電路、串行乘法器、串口通信、安全散列算法等實例。本書由游龍、木昌洪、宋敏、葉炯耀、合作編寫。游龍和木昌洪負責第1、2、10章的編寫,木昌洪負責第3、4、5、6、7章的編寫,宋敏負責第8、9章的編寫,葉炯耀負責第11、12章的編寫。另外,博士生侯金成參與第10章的編寫、碩士生王楷元參與第11章的編寫、博士生段威和碩士生楊硯祺參與第12章的編寫;同時,博士生周晨希、曹真、侯金成和段威,以及碩士生王楷元、林捷、占煒參與部分章節(jié)的修訂和畫圖工作;段威和楊楊硯祺參與全書的程序驗證、編寫及仿真。書中所有的 Verilog 源代碼都經過調試。本書從教學和工程的兩個方面出發(fā),努力做到理論嚴謹、理論和實踐結合,將 EDA 工具和Verilog HDL應用于數字邏輯系統(tǒng)設計和教學中,縮短了高校教學與實際應用的距離,為學生今后進行項目開發(fā)打下良好的基礎。同時也希望此書能夠對電子工程人員和高校相關專業(yè)師生有所幫助。由于作者水平有限,加之時間倉促,本書可能有疏漏和不足之處,敬請廣大讀者批評指正。作者的電子郵箱為:lyou@ hust.edu.cn。作者2023年9月
游龍,第十二批國家青年計劃專家、華中科技大學集成電路學院、量子科學與工程研究院教授。二十年來一直從事與自旋電子學以及低功耗電子器件相關的國際技術前沿課題研究。其中十多年在海外一流自旋電子研究機構學習和工作如:美國加州大學伯克利分校、日本理化學研究所、法國國家科學研究院和日本名古屋大學等。在自旋隨機存儲器、自旋傳感器、自旋神經形態(tài)器件、自旋邏輯計算電路和信息安全器件等領域開創(chuàng)性地提出了多項重要的新技術概念和設計方案,并在實驗中得到驗證。近五年來,以通訊作者在Nature Electronics,IEEE IEDM和IEEE Electron Device Letters等期刊發(fā)表多篇論文,并被Science、MRAM-Info、News & Views of Nat. Nanotechnol、Phy.Org、科技日報、央視新聞等媒體作為高新技術報道。實驗室畢業(yè)生多在高科技公司如:華為、長江存儲等和高校工作。
第1章數字系統(tǒng)設計概述/1
1.1數字系統(tǒng)的基本概念/1
1.1.1模擬量與數字量/1
1.1.2數字信號/1
1.1.3數字邏輯電路/2
1.1.4數字系統(tǒng)及層次結構/3
1.2數字系統(tǒng)的設計方法/5
1.2.1常用芯片/5
1.2.2數字系統(tǒng)的設計過程/6
1.3EDA技術/9
1.3.1硬件描述語言/9
1.3.2EDA軟件開發(fā)工具/12
1.3.3設計開發(fā)流程/13
本章思維導圖/15
習題/16
第2章數字邏輯基礎/17
2.1數制及數制間的轉換/17
2.1.1進位計數制/17
2.1.2常用數制/18
2.1.3常用數制間的轉換/19
2.2二進制數的運算/21
2.2.1算術運算/21
2.2.2關系運算/23
2.2.3邏輯運算/23
2.3數值型數據在計算機中的表示方式/23
2.3.1無符號數/23
2.3.2有符號數/24
2.3.3原碼、反碼和補碼/24
2.4常用的幾種編碼/26
2.4.1BCD碼/26
2.4.2可靠性編碼/27
2.4.3字符編碼/30
本章思維導圖/31
習題/32
第3章邏輯代數基礎/34
3.1邏輯代數的基本概念/34
3.1.1基本邏輯運算/34
3.1.2復合邏輯運算/38
3.1.3邏輯函數/40
3.1.4邏輯函數的表示方法/43
3.2邏輯代數的基本公理、定理和規(guī)則/46
3.2.1邏輯代數的基本公理/46
3.2.2邏輯代數的基本定理/47
3.2.3三個重要規(guī)則/48
3.2.4邏輯函數的基本形式/49
3.2.5邏輯函數的表達式的標準形式/49
3.3邏輯函數的化簡/54
3.3.1代數化簡法/55
3.3.2卡諾圖化簡法/56
本章思維導圖/63
習題/64
第4章邏輯門電路/66
4.1概述/66
4.1.1數字集成電路的分類/66
4.1.2邏輯電平/67
4.1.3正邏輯與負邏輯/67
4.2半導體二極管和三極管的開關特性/67
4.2.1半導體二極管的開關特性/68
4.2.2雙極型三極管的開關特性/70
4.3邏輯門電路/73
4.3.1基本邏輯門電路/74
4.3.2TTL集成邏輯門電路/76
4.3.3CMOS門電路/86
本章思維導圖/93
習題/94
第5章Verilog HDL語法基礎/96
5.1Verilog的基本概念/96
5.1.1硬件描述語言HDL/96
5.1.2Verilog HDL簡介/96
5.1.3數字電路的設計方法/97
5.1.4設計方法學/98
5.1.5Verilog HDL模塊的基本概念/98
5.1.6Verilog HDL模塊的測試/101
5.2模塊的結構/103
5.2.1模塊的端口定義/103
5.2.2模塊內容/104
5.2.3理解要點/108
5.3Verilog HDL基本語法/109
5.3.1標識符/109
5.3.2注釋/110
5.3.3格式/110
5.3.4常量/111
5.3.5變量/115
5.3.6運算符、表達式和語句/117
5.4結構建模/125
5.4.1模塊定義結構/125
5.4.2模塊端口/125
5.4.3實例化語句/126
5.5數據流建模/129
5.5.1連續(xù)賦值語句/129
5.5.2阻塞賦值語句/129
5.5.3數據流建模具體實例/130
5.6行為建模/130
5.6.1簡介/130
5.6.2順序語句塊/130
5.6.3過程賦值語句/131
5.6.4行為建模具體實例/133
5.7其他方面/134
5.7.1任務和函數的使用/134
5.7.2編譯預處理命令/136
本章思維導圖/139
習題/140
第6章組合邏輯電路/142
6.1概述/142
6.2組合邏輯電路的分析/143
6.2.1組合邏輯電路的分析方法/143
6.2.2組合邏輯電路的分析舉例/144
6.3組合邏輯電路的手工設計/146
6.3.1手工設計方法步驟/147
6.3.2設計舉例/147
6.4組合邏輯電路的自動設計方法/150
6.4.1概述/150
6.4.2設計舉例/150
6.5常用組合邏輯電路及其設計方法/153
6.5.1算術運算電路/153
6.5.2編碼器/158
6.5.3譯碼器/167
6.5.4數據選擇器/179
6.5.5數值比較器/187
6.5.6奇偶校驗器/191
6.6組合邏輯電路的競爭與險象/195
6.6.1競爭與險象的概念和分類/196
6.6.2電路中的險象判別/197
6.6.3險象的消除和減弱/198
本章思維導圖/200
習題/200
第7章觸發(fā)器/203
7.1觸發(fā)器的特點與分類/203
7.2基本RS觸發(fā)器/203
7.2.1由與非門構成的基本RS觸發(fā)器/204
7.2.2由或非門構成的基本RS觸發(fā)器/206
7.2.3基本RS觸發(fā)器的HDL設計/207
7.2.4基本RS觸發(fā)器的特點小結/209
7.3鐘控觸發(fā)器/209
7.3.1鐘控RS觸發(fā)器/209
7.3.2鐘控D觸發(fā)器/212
7.3.3鐘控JK觸發(fā)器/213
7.3.4鐘控T觸發(fā)器/216
7.3.5鐘控T觸發(fā)器/218
7.4集成觸發(fā)器/219
7.4.1主從JK觸發(fā)器/219
7.4.2邊沿JK觸發(fā)器/222
7.4.3維持阻塞D觸發(fā)器/225
7.5觸發(fā)器之間的轉換/230
7.5.1JK觸發(fā)器轉換為其他類型的觸發(fā)器/230
7.5.2D觸發(fā)器轉換為其他類型的觸發(fā)器/232
本章思維導圖/234
習題/234
第8章時序邏輯電路/237
8.1概述/237
8.1.1時序邏輯電路的描述方法/237
8.1.2時序邏輯電路的分類/238
8.2時序邏輯電路的分析方法/239
8.2.1具體分析方法/239
8.2.2分析舉例/239
8.3時序邏輯電路設計方法/243
8.3.1同步時序邏輯電路的傳統(tǒng)設計方法/243
8.3.2異步時序邏輯電路的傳統(tǒng)設計方法/254
8.3.3基于有限狀態(tài)機的Verilog HDL時序電路設計/257
8.4常用的時序邏輯電路寄存器及其應用/270
8.4.1寄存器/270
8.4.2數據鎖存器/272
8.4.3移位寄存器(移存器)/273
8.5常用的時序電路計數器及其應用/279
8.5.1同步計數器/280
8.5.2異步計數器/284
8.5.3集成計數器/291
8.5.4反饋復位法與預置法/297
8.6基于Verilog HDL的常用時序邏輯電路設計/300
8.6.1數碼寄存器的設計/300
8.6.2移位寄存器的設計/302
8.6.3計數器的設計/303
8.6.4順序脈沖發(fā)生器的設計/310
8.6.5序列信號發(fā)生器的設計/311
8.6.6序列信號檢測器的設計/313
8.6.7綜合舉例/313
本章思維導圖/316
習題/317
第9章半導體存儲器與可編程邏輯器件/319
9.1概述/319
9.1.1程序邏輯電路的結構及特點/319
9.1.2半導體存儲器的結構/320
9.1.3半導體存儲器的分類/323
9.2隨機存儲器/325
9.2.1靜態(tài)隨機存儲器SRAM/325
9.2.2動態(tài)隨機存儲器DRAM/326
9.2.3RAM典型芯片/328
9.2.4RAM芯片擴展/331
9.3只讀存儲器ROM/334
9.3.1ROM的結構/334
9.3.2ROM的應用/337
9.4基于Verilog HDL的存儲器設計/341
9.4.1RAM的HDL設計/341
9.4.2ROM的HDL設計/342
9.5基于PLD的數字系統(tǒng)設計/344
9.5.1PLD概述/344
9.5.2四類低密度PLD器件/346
9.5.3復雜可編程邏輯器件/352
9.5.4現場可編程門陣列/356
9.5.5基于PLD的設計方法/364
9.5.6基于PLD的設計流程/365
本章思維導圖/366
習題/367
第10章D/A、A/D轉換器/368
10.1概述/368
10.2D/A轉換器/369
10.2.1權電阻網絡D/A轉換器/369
10.2.2倒T形電阻網絡D/A轉換器/371
10.2.3權電流型D/A轉換器/372
10.2.4D/A轉換器的轉換精度與轉換速度/374
10.3A/D轉換器/375
10.3.1A/D轉換的基本原理/375
10.3.2取樣保持電路/377
10.3.3直接A/D轉換器/377
10.3.4間接A/D轉換器/381
10.3.5A/D轉換器的轉換精度與轉換速度/384
本章思維導圖/385
習題/386
第11章Vivado集成開發(fā)環(huán)境介紹/388
11.1Vivado安裝流程/388
11.2Vivado工程設計基本流程/392
11.2.1創(chuàng)建新工程/392
11.2.2Vivado設計主界面及功能/397
11.2.3創(chuàng)建并添加新的設計文件/400
11.2.4RTL描述和分析/402
11.2.5設計綜合與分析/403
11.2.6設計行為級仿真/405
11.2.7添加約束條件/407
11.2.8生成bit文件并下載到FPGA上/411
本章思維導圖/413
習題/413
第12章Verilog HDL設計實例/414
12.1分頻器/414
12.1.1偶數分頻器/414
12.1.2奇數分頻器/416
12.1.3小數分頻器/419
12.2按鍵消抖電路/421
12.3串行乘法器/424
12.4串口通信/428
12.4.1UART協(xié)議原理/429
12.4.2接收電路設計/429
12.4.3發(fā)送電路設計/433
12.4.4數據收發(fā)測試/435
12.5安全散列算法/439
12.5.1SHA256算法原理/439
12.5.2基礎邏輯運算電路/441
12.5.3單層循環(huán)電路/443
12.5.4算法頂層電路設計/445
12.5.5算法功能測試驗證/448
本章思維導圖/449
習題/450
參考文獻/451