本書是為“數(shù)字邏輯設(shè)計”課程編寫的入門教材,這門課是電氣工程和計算機(jī)專業(yè)的基礎(chǔ)課程。本書著重闡述了數(shù)字邏輯基礎(chǔ)與邏輯電路的基本設(shè)計技術(shù),通過許多例子來引入基本概念,強(qiáng)調(diào)綜合電路及如何在實(shí)際芯片上實(shí)現(xiàn)電路。主要內(nèi)容包括:邏輯電路、算術(shù)運(yùn)算電路、編碼器、譯碼器、多路選擇器、移位寄存器、計數(shù)器、同步時序電路、異步時序電路、數(shù)字系統(tǒng)設(shè)計、邏輯函數(shù)的優(yōu)化、計算機(jī)輔助設(shè)計工具等。
本書面向數(shù)字邏輯設(shè)計的入門課程,這門課程是大多數(shù)電子和計算機(jī)工程專業(yè)的一門基礎(chǔ)課程。一個成功的數(shù)字邏輯電路設(shè)計者首先必須深入了解其基本概念,并且能夠牢固掌握基于計算機(jī)輔助設(shè)計(CAD)工具的現(xiàn)代設(shè)計方法。
本書的主要目的為:1)通過典型的數(shù)字電路手工設(shè)計方法教給學(xué)生基本概念;2)清晰地展示當(dāng)今采用CAD工具設(shè)計數(shù)字電路的方法。雖然目前除了少數(shù)情況外已經(jīng)不再采用手工方法進(jìn)行設(shè)計,但我們?nèi)韵胪ㄟ^教授這些手工設(shè)計技術(shù),使學(xué)生對如何設(shè)計數(shù)字電路有一個感性的認(rèn)識;并且手工設(shè)計方法能對CAD工具實(shí)現(xiàn)的功能進(jìn)行很好的解釋,使學(xué)生體會到自動設(shè)計的優(yōu)勢。本書通過簡單的電路設(shè)計案例引出其基本概念,這些案例都同時采用手工方法和現(xiàn)代CAD方法設(shè)計。在建立了基本概念后,提供了更多基于CAD工具的復(fù)雜例子。因此,本書的重點(diǎn)仍然放在現(xiàn)代設(shè)計方法上,以說明當(dāng)今數(shù)字電路是如何設(shè)計的。
技術(shù)本書將討論現(xiàn)代數(shù)字電路實(shí)現(xiàn)技術(shù),重點(diǎn)為教科書中最適合采用的可編程邏輯器件(PLD),其原因主要表現(xiàn)在兩個方面:第一,PLD在實(shí)際設(shè)計中被廣泛采用,并且適合于各種數(shù)字電路設(shè)計,事實(shí)上,從某些方面看學(xué)生們在他們的職業(yè)生涯中更喜歡基于PLD進(jìn)行設(shè)計而不是任何別的技術(shù);第二,可以通過最終用戶的編程在PLD上實(shí)現(xiàn)電路。因此,在實(shí)驗(yàn)室中可以提供給學(xué)生一個機(jī)會,即基于實(shí)際芯片來實(shí)現(xiàn)書中的設(shè)計例子;學(xué)生也可以用自己的計算機(jī)仿真所設(shè)計電路的性能。為了達(dá)到設(shè)計目的,我們采用最常見的PLD:復(fù)雜可編程邏輯器件(CPLD)和現(xiàn)場可編程邏輯陣列(FPGA)。
在邏輯電路的具體設(shè)計中,我們強(qiáng)調(diào)硬件描述語言(HDL)的使用,因?yàn)榛贖DL的方法在實(shí)際應(yīng)用中是最有效的。我們還詳細(xì)介紹了IEEE標(biāo)準(zhǔn)的Verilog HDL語言,并且在例子中廣泛使用。
本書內(nèi)容本書第3版的結(jié)構(gòu)進(jìn)行了較大的改進(jìn),第1~6章覆蓋一個學(xué)期內(nèi)該課程所需講述的所有內(nèi)容,而第7~11章則介紹更先進(jìn)的內(nèi)容。
第1章概述了數(shù)字系統(tǒng)的設(shè)計流程,討論了設(shè)計流程中的關(guān)鍵步驟,解釋了如何運(yùn)用CAD工具自動實(shí)現(xiàn)所要求的眾多工作;同時介紹了數(shù)字信息的表示方式。
第2章介紹了邏輯電路的基本知識,展示了如何使用布爾代數(shù)表示邏輯電路;介紹了邏輯電路綜合和優(yōu)化的概念,展示了如何使用邏輯門實(shí)現(xiàn)簡單電路。第一次向讀者展現(xiàn)Verilog,一個可用于描述邏輯電路的硬件描述語言例子。
第3章重點(diǎn)講述了算術(shù)運(yùn)算電路,討論了數(shù)字系統(tǒng)中數(shù)字的表示方式,并說明了這樣的數(shù)字如何運(yùn)用到邏輯電路中。另外,該章還闡述了如何使用Verilog詳細(xì)描述所期望的功能,以及CAD工具如何提供開發(fā)所期望電路的機(jī)制。
第4章介紹了用作構(gòu)建模塊的組合電路,包括編碼器、譯碼器及多路選擇器。這些電路非常便于闡明眾多借助Verilog構(gòu)建的應(yīng)用,給讀者提供了一個揭示Verilog更多高級特性的機(jī)會。
第5章介紹了存儲單元,討論了采用觸發(fā)器實(shí)現(xiàn)的規(guī)則結(jié)構(gòu),如移位寄存器和計數(shù)器,并給出了這些結(jié)構(gòu)的Verilog描述。
第6章詳細(xì)闡明了同步時序電路(有限狀態(tài)機(jī)),解釋了這些電路的行為,并介紹了用手工和自動兩種方法進(jìn)行實(shí)際設(shè)計開發(fā)的技術(shù)。
第7章討論了系統(tǒng)設(shè)計中經(jīng)常遇到的問題及其解決辦法,介紹了一個較大規(guī)模的數(shù)字系統(tǒng)層次化設(shè)計的例子,并給出了完整的Verilog代碼。
第8章介紹了邏輯功能優(yōu)化實(shí)現(xiàn)的更加先進(jìn)的技術(shù),提供了優(yōu)化算法;解釋了如何與二元決策圖一樣使用一種立方體表示法指定邏輯功能。
第9章討論了異步時序電路。雖然沒有面面俱到地敘述,但清晰展示了時序電路的主要特性。盡管異步時序電路在實(shí)際中的應(yīng)用并不是很廣泛,但是它們提供了一個深刻理解數(shù)字電路操作的非常好的途徑。該章還展示了可能存在于電路結(jié)構(gòu)內(nèi)部的傳播延遲和冒險競爭。
第10章給出了設(shè)計者在設(shè)計、實(shí)現(xiàn)及測試數(shù)字電路過程中經(jīng)歷的一個完整的CAD流程。
第11章介紹了電路的測試。邏輯電路的設(shè)計者必須清楚意識到電路測試的必要性,至少應(yīng)熟悉測試最基本的知識。
附錄A總結(jié)了完整的Verilog特性。整本書中都使用了Verilog,該附錄便于讀者在編寫Verilog代碼時隨時查閱與參考。
附錄B給出了數(shù)字電路的電特性,展示了如何采用晶體管搭建基本的門電路,介紹了影響電路性能的各種因素。該附錄重點(diǎn)討論了最新的技術(shù),同時介紹了CMOS工藝和可編程邏輯器件。
課程內(nèi)容建議書中大部分內(nèi)容適用于兩個季度的課程。在不需要花費(fèi)太多時間教授Verilog和CAD工具時,1個學(xué)期甚至1個季度的課程也可以涵蓋大部分最重要的內(nèi)容。為了達(dá)到這個目的,我們按照模塊化方式組織了Verilog內(nèi)容以便于自學(xué)。多倫多大學(xué)不同班級的教學(xué)實(shí)踐表明,只須用3~4個學(xué)時介紹Verilog,即代碼如何編寫,包括使用設(shè)計層次結(jié)構(gòu)、標(biāo)量、矢量,以及指定時序電路所需的代碼形式。本書給出的Verilog例子帶有大量的說明,學(xué)生很容易理解。
本書也適用于不涉及Verilog的邏輯設(shè)計課程。然而,了解某些Verilog知識,即使是入門水平,對學(xué)生也是有益的,并且對于設(shè)計工程師日后的工作也非常有幫助。
1個學(xué)期的課程課程需要教授的內(nèi)容如下:
第1章:每一節(jié)第2章:每一節(jié)第3章:3.1~3.5節(jié)第4章:每一節(jié)第5章:每一節(jié)第6章:每一節(jié)1個季度的課程課程需要教授的內(nèi)容如下:
第1章:每一節(jié)第2章:每一節(jié)第3章:3.1~3.3節(jié)和3.5節(jié)第4章:每一節(jié)第5章:每一節(jié)第6章:6.1~6.4節(jié)VerilogVerilog是一種復(fù)雜的語言,有些教師感到初學(xué)者掌握起來很困難,我們完全同意這個觀點(diǎn),并且試圖解決這個問題。教師在教學(xué)過程中沒有必要介紹Verilog語言的全部。本書只介紹對于邏輯電路設(shè)計和綜合有用的重要的Verilog語言結(jié)構(gòu),略去了許多其他語言結(jié)構(gòu),如那些僅用于仿真的語言結(jié)構(gòu)。并且僅在相關(guān)電路設(shè)計中用到Verilog更高級的特性時才會介紹這些知識。
本書包含了120多個示例的Verilog代碼:從只包含一些門電路到某些表示整個數(shù)字系統(tǒng)的電路(如一個簡單處理器),以說明如何采用Verilog語言描述不同的邏輯電路。
本書給出的所有Verilog示例的代碼可參考作者的網(wǎng)站:www.eecg.totonto.edu/~brown/Verilog_3e。
問題求解每一章中都包含解決問題的實(shí)例,通過這些實(shí)例可以求解典型的習(xí)題。
課外習(xí)題本書提供了400多道習(xí)題,書的最后給出了部分習(xí)題的答案。與本書配套的《答案手冊》中提供了本書中所有習(xí)題的解答,以供老師參考。關(guān)于本書教輔資源,用書教師可向麥格勞·希爾教育出版公司北京代表處申請,電話:8008101936/010.62790299.108,電子郵件。——編輯注幻燈片和《答案手冊》讀者可以在作者的網(wǎng)站www.mhhe.com/brownvranesic上獲得本書所有圖的幻燈片。老師可以申請獲得這些幻燈片以及本書的《答案手冊》。
CAD工具現(xiàn)代數(shù)字系統(tǒng)非常龐大,很多復(fù)雜的邏輯電路若不使用CAD工具是難以設(shè)計的。本書對于Verilog的闡述有助于讀者編寫Verilog代碼以描述不同復(fù)雜度的邏輯電路。為了獲得適當(dāng)?shù)脑O(shè)計過程方法,使用商用CAD工具是非常有益的。一些很好的CAD工具是免費(fèi)的,比如,Altera公司的Quartus Ⅱ CAD軟件,它廣泛應(yīng)用于基于諸如FPGA類的可編程邏輯器件的設(shè)計中。Quartus Ⅱ軟件的網(wǎng)絡(luò)版本可以從Altera的網(wǎng)站上下載并且免費(fèi)使用,而不需要許可證。本書先前版本的附錄中給出了使用Quartus Ⅱ軟件的教程,這些教程可以在作者的網(wǎng)站上找到,也可以通過Altera的編程網(wǎng)站上找到另一些有用的Quartus Ⅱ教程,其網(wǎng)址為www.altera.com/eduction/univ。
致謝對于在本書準(zhǔn)備期間給予幫助的人們表達(dá)深深的謝意,其中Dan Vranesic提供了大量插圖,他和Deshanand Singh也參與了《答案手冊》的準(zhǔn)備;Tom Czajkowski幫助檢查一些答案。Thomas Bradicich,North Carolina State University;James Clark,McGill University;Stephen DeWeerth,Georgia Institute of Technology;Sander Eller,CalPoly Pomona;Clay Gloster,Jr.,North Carolina State University (Raleigh);Carl Hamacher,Queen’s University;Vincent Heuring,University of Colorado;Yu Hen Hu,University of Wisconsin;Wei.Ming Lin, University of Texas(San Antonio);Wayne Loucks,University of Waterloo;Kartik Mohanram,Rice University;Jane Morehead,Mississippi State University;Chris Myers,Univesity of Utah;Vojin Oklobdzija,Univesity of California(Davis);James Palmer,Rochester Institute of Technology;Gandhi Puvvada,University of Southern California;Teodoro Robles,Milwaukee School of Engineering;Tatyana Roziner,Boston University;Rob Rutenbar,Carnegie Mellon University;Eric Schwartz,University of Florida;Wen.Tsong Shiue,Oregon State University; Peter Simko,Miami University;Scott Smith,University of Missouri(Rolla);Arun Somani,Iowa State University;Bernard Svihel,University of Texas(Arlington);以及Zeljko Zilic,McGill University給出了有益的批評與很好的改進(jìn)建議。
感謝McGraw.Hill的工作人員的支持,我們非常感激Raghu Srinivasan、Vincent Bradshaw、Darlene Schueller、Curt Reynolds以及Michael Lange的幫助,也感謝由Techsetters公司提供的排版支持。
Stephen Brown和Zvonko Vranesic
斯蒂芬·布朗(Stephen Brown),本科畢業(yè)于加拿大布倫斯維克大學(xué),獲得電子工程學(xué)士學(xué)位,此后就讀于多倫多大學(xué)并取得電子工程碩士和博士學(xué)位,于1992年進(jìn)入多倫多大學(xué)任教,目前為該校電子與計算機(jī)工程系教授,同時在Altera公司發(fā)起的國際大學(xué)計劃中擔(dān)任理事職務(wù)。
研究領(lǐng)域包括現(xiàn)場可編程VLSI技術(shù)以及計算機(jī)結(jié)構(gòu),曾獲得由加拿大自然科學(xué)與工程研究委員會頒發(fā)的1992年佳博士論文獎,并且發(fā)表了超過100篇的科研論文。
在電子工程、計算機(jī)工程以及計算機(jī)科學(xué)相關(guān)課程方面獲得過5次優(yōu)異教學(xué)成果獎,并且與他人合編了兩本知名教材:《Fundamentals of Digital Logic with VHDL Design》(第3版)以及《FieldProgrammable Gate Arrays》。
斯萬克·瓦拉納西(Zvonko Vranesic)擁有多倫多大學(xué)電子工程學(xué)士、碩士和博士學(xué)位。1963~1965年在位于安大略省布拉馬里的北方電力有限公司擔(dān)任設(shè)計工程師;1968年進(jìn)入多倫多大學(xué)任教,現(xiàn)為該校電子與計算機(jī)工程系以及計算機(jī)科學(xué)系的榮譽(yù)退休教授;1978~1979年為英國劍橋大學(xué)的高級訪問學(xué)者;1984~1985年為巴黎第六大學(xué)的訪問學(xué)者;1995~2000年擔(dān)任多倫多大學(xué)工程科學(xué)部主席,同時還參與了Altera公司多倫多科技中心組織的研發(fā)工作。
目前的研究領(lǐng)域包括計算機(jī)架構(gòu)以及現(xiàn)場可編程VLSI技術(shù)研究。
除了本書之外,與他人合編了另外3本知名教材:《Computer Organization and Embedded Systems》(第6版),《Microcomputer Structures》與《FieldProgrammable Gate Arrays》。1990年由于指導(dǎo)本科生實(shí)驗(yàn)的創(chuàng)新和杰出貢獻(xiàn)而獲得懷頓(Wighton)獎金;2004年獲得由多倫多大學(xué)應(yīng)用科學(xué)和工程教師組織頒發(fā)的教學(xué)獎。
此外,他曾多次代表加拿大出席國際象棋大賽,并被冠以“國際象棋大師”的頭銜。
出版者的話
譯者序
前言
作者簡介
第1章引言1
1.1數(shù)字硬件1
1.2設(shè)計流程3
1.3計算機(jī)結(jié)構(gòu)4
1.4本書中的邏輯電路設(shè)計5
1.5信息的數(shù)字化表示5
1.6理論與實(shí)踐9
習(xí)題10
參考文獻(xiàn)10
第2章邏輯電路導(dǎo)論11
2.1變量與函數(shù)11
2.2反相12
2.3真值表13
2.4邏輯門和網(wǎng)絡(luò)14
2.5布爾代數(shù)17
2.6利用“與”門、“或”門和“非”門進(jìn)行綜合23
2.7“與非”和“或非”邏輯網(wǎng)絡(luò)電路28
2.8設(shè)計實(shí)例31
2.9CAD工具介紹34
2.10Verilog簡介37
2.11最簡化和卡諾圖41
2.12最小化策略46
2.13和之積形式的最簡式49
2.14非完整定義函數(shù)(無關(guān)項(xiàng))50
2.15多輸出電路51
2.16小結(jié)53
2.17解決問題的實(shí)例53
習(xí)題58
參考文獻(xiàn)61
第3章數(shù)的表示方法和算術(shù)運(yùn)算電路62
3.1按位計數(shù)法(數(shù)的位置表示法)62
3.2無符號數(shù)的加法運(yùn)算64
3.3有符號數(shù)67
3.4快速加法器75
3.5使用CAD工具設(shè)計算術(shù)運(yùn)算電路79
3.6乘法88
3.7其他數(shù)的表示方式90
3.8解決問題的實(shí)例94
習(xí)題97
參考文獻(xiàn)99
第4章組合電路模塊100
4.1多路選擇器100
4.2譯碼器105
4.3編碼108
4.4代碼轉(zhuǎn)換器109
4.5算術(shù)比較電路109
4.6用Verilog設(shè)計組合邏輯電路110
4.7小結(jié)121
4.8解決問題的實(shí)例121
習(xí)題126
參考文獻(xiàn)128
第5章觸發(fā)器、寄存器和計數(shù)器129
5.1基本鎖存器129
5.2門控SR鎖存器131
5.3門控D鎖存器132
5.4邊沿觸發(fā)的D觸發(fā)器134
5.5T觸發(fā)器139
5.6JK觸發(fā)器139
5.7術(shù)語小結(jié)140
5.8寄存器140
5.9計數(shù)器142
5.10復(fù)位同步147
5.11其他類型的計數(shù)器149
5.12用CAD工具設(shè)計含存儲元件的電路151
5.13用Verilog構(gòu)建寄存器和計數(shù)器156
5.14設(shè)計舉例160
5.15觸發(fā)器電路的時序分析164
5.16小結(jié)167
5.17解決問題的實(shí)例167
習(xí)題171
參考文獻(xiàn)174
第6章同步時序電路175
6.1基本設(shè)計步驟176
6.2狀態(tài)分配問題183
6.3Mealy狀態(tài)模型185
6.4采用CAD工具設(shè)計有限狀態(tài)機(jī)188
6.5串行加法器實(shí)例193
6.6狀態(tài)最小化197
6.7基于時序電路的計數(shù)器設(shè)計202
6.8仲裁電路的FSM207
6.9同步時序電路的分析209
6.10算法狀態(tài)機(jī)流程圖211
6.11時序電路的形式模型213
6.12小結(jié)214
6.13解決問題的實(shí)例214
習(xí)題219
參考文獻(xiàn)220
第7章數(shù)字系統(tǒng)設(shè)計222
7.1總線結(jié)構(gòu)222
7.2簡單的處理器227
7.3位計數(shù)電路234
7.4移位和加乘法器238
7.5除法器242
7.6算術(shù)平均248
7.7排序操作251
7.8時鐘同步和時序問題258
7.9小結(jié)260
習(xí)題261
參考文獻(xiàn)262
第8章邏輯函數(shù)的優(yōu)化實(shí)現(xiàn)264
8.1多級綜合264
8.2多級電路分析271
8.3邏輯函數(shù)的其他表示方法273
8.4基于立方體表示法的優(yōu)化技術(shù)279
8.5小結(jié)288
8.6解決問題的實(shí)例289
習(xí)題293
參考文獻(xiàn)294
第9章異步時序電路296
9.1異步行為296
9.2異步電路分析298
9.3異步電路綜合303
9.4狀態(tài)化簡309
9.5狀態(tài)分配316
9.6冒險324
9.7一個完整的設(shè)計實(shí)例328
9.8小結(jié)331
9.9解決問題的實(shí)例332
習(xí)題335
參考答案337
第10章計算機(jī)輔助設(shè)計工具338
10.1綜合338
10.2物理設(shè)計342
10.3小結(jié)345
參考文獻(xiàn)345
第11章邏輯電路測試346
11.1故障模型346
11.2測試集的復(fù)雜度347
11.3路徑敏化348
11.4樹形結(jié)構(gòu)電路350
11.5隨機(jī)測試351
11.6時序電路的測試353
11.7內(nèi)建自測試355
11.8印制電路板359
11.9小結(jié)361
習(xí)題362
參考文獻(xiàn)363
附錄AVerilog參考364
附錄B實(shí)現(xiàn)技術(shù)391
部分習(xí)題參考答案440