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