關(guān)于我們
書(shū)單推薦
新書(shū)推薦
|
數(shù)字設(shè)計(jì):原理與實(shí)踐(英文版 第5版)
本書(shū)是數(shù)字設(shè)計(jì)領(lǐng)域的經(jīng)典教材,是作者牢固的理論功底、嚴(yán)謹(jǐn)?shù)膶W(xué)術(shù)風(fēng)范與豐富的實(shí)踐經(jīng)驗(yàn)的完美融合。原理方面涵蓋高級(jí)(HDL)、低級(jí)(電子電路)以及“廣泛中間級(jí)”(門(mén)電路、觸發(fā)器和一些較高級(jí)的數(shù)字設(shè)計(jì)構(gòu)件)的多層次基礎(chǔ)知識(shí),更加方便不同專(zhuān)業(yè)的教學(xué)內(nèi)容選;實(shí)踐方面專(zhuān)注于Verilog一種實(shí)現(xiàn)語(yǔ)言,強(qiáng)調(diào)基于FPGA的設(shè)計(jì),并且添加了更多應(yīng)用實(shí)例。
前言
本書(shū)寫(xiě)給所有需要設(shè)計(jì)和構(gòu)建真正的數(shù)字電路的讀者。為達(dá)到這個(gè)目的,讀者必須掌握數(shù)字電路的基本原理,同時(shí)理解它們?cè)谡鎸?shí)世界中是如何運(yùn)轉(zhuǎn)的。正是基于這一理念,我們選取了“原理與實(shí)踐”這兩大主題。 在過(guò)去的30年里,隨著集成電路的速度和集成度的快速提高,數(shù)字設(shè)計(jì)實(shí)踐經(jīng)歷了重大轉(zhuǎn)變。過(guò)去,數(shù)字設(shè)計(jì)者用成千甚至上萬(wàn)的門(mén)電路和觸發(fā)器來(lái)構(gòu)建系統(tǒng),因此專(zhuān)業(yè)課程的重點(diǎn)就是如何最小化和有效地利用芯片及板級(jí)資源。 今天,一個(gè)芯片可以包含幾千萬(wàn)個(gè)晶體管,并且可以通過(guò)編程來(lái)構(gòu)建片上系統(tǒng)。過(guò)去要實(shí)現(xiàn)這樣的系統(tǒng),需要用幾百個(gè)包含上百萬(wàn)單個(gè)門(mén)電路和觸發(fā)器的分立芯片。如今,產(chǎn)品開(kāi)發(fā)能否成功更多地取決于設(shè)計(jì)團(tuán)隊(duì)正確、完整地定義產(chǎn)品詳細(xì)功能的能力,而不是將需要的所有電路集成到一塊電路板或芯片上的能力。因此,現(xiàn)代專(zhuān)業(yè)課程的重點(diǎn)是設(shè)計(jì)方法論和軟件工具,包括硬件描述語(yǔ)言(HDL)。設(shè)計(jì)團(tuán)隊(duì)利用HDL便可以完成超大型分層數(shù)字系統(tǒng)的設(shè)計(jì)。 借助HDL,一方面可以看到典型設(shè)計(jì)的抽象層次變得更高,超越了單個(gè)門(mén)電路和觸發(fā)器的層次。但與此同時(shí),芯片級(jí)和電路板級(jí)數(shù)字電路的速度和集成度的提高,也迫使設(shè)計(jì)者必須在較低的電子電路級(jí)提升競(jìng)爭(zhēng)力。 大多數(shù)優(yōu)秀的數(shù)字設(shè)計(jì)師都精通或者至少熟悉上述兩個(gè)抽象層次。本書(shū)提供了高級(jí)(HDL)、低級(jí)(電子電路)以及“廣泛中間級(jí)”(門(mén)電路、觸發(fā)器和一些較高級(jí)的數(shù)字設(shè)計(jì)構(gòu)件)的多層次基礎(chǔ)知識(shí)。 目標(biāo)讀者本書(shū)可以作為電氣工程、計(jì)算機(jī)工程或計(jì)算機(jī)科學(xué)專(zhuān)業(yè)數(shù)字邏輯設(shè)計(jì)課程的入門(mén)教材或中級(jí)教材。對(duì)于計(jì)算機(jī)科學(xué)專(zhuān)業(yè)的學(xué)生,如果不熟悉基本電子學(xué)概念或者對(duì)數(shù)字器件的電氣特性不感興趣,可以跳過(guò)第14章,書(shū)中其他章節(jié)基本上都不需要這一章內(nèi)容作為預(yù)備知識(shí)。另一方面,具有基本電子學(xué)基礎(chǔ)的讀者,則可通過(guò)閱讀第14章來(lái)快速掌握數(shù)字電子學(xué)知識(shí)。 雖然本書(shū)是入門(mén)級(jí)的,但卻比普通的入門(mén)教材包含更多內(nèi)容。我希望常規(guī)課程采用書(shū)中不超過(guò)三分之二的材料,但是,每門(mén)課程所用到的是不同的三分之二。因此,請(qǐng)各位教師或讀者按照自己的需要決定閱讀內(nèi)容。為了幫助大家做選擇,我已經(jīng)在可選章節(jié)的標(biāo)題上打了星號(hào)。一般情況下,可以跳過(guò)這些章節(jié)而不影響后續(xù)必選章節(jié)的內(nèi)容連貫性。此外,矩形文本框(如下所示)中的材料也是可以跳過(guò)的。 這是一個(gè)簡(jiǎn)單一些讀者抱怨之前的版本太厚了,我縮減了這一版的篇幅,但依然要提醒大家注意: 的文本框示例不必一字不落地讀完所有內(nèi)容,打星號(hào)的章節(jié)都可以略過(guò)。 寫(xiě)在這種框里的內(nèi)容通常也可以略過(guò)。 我要求出版社調(diào)大了字號(hào)(本書(shū)采用11磅字,而大部分科技類(lèi)教材都采用10磅字),這樣不僅閱讀起來(lái)更加舒服,而且圖表的位置也更加合理。隨手翻開(kāi)一頁(yè),你會(huì)發(fā)現(xiàn)大部分圖表和對(duì)圖表內(nèi)容的講解都位于同一頁(yè)。(我親自做的排版工作,著實(shí)花了一番心血。)本書(shū)的主題非常全面,在學(xué)習(xí)后續(xù)課程時(shí),你可以再回頭翻看相關(guān)知識(shí)點(diǎn),甚至參加工作后,依然能從書(shū)里學(xué)到新東西。不過(guò),教科書(shū)總會(huì)過(guò)時(shí),難逃被丟進(jìn)垃圾桶的厄運(yùn),但也有些“幸運(yùn)兒”成了書(shū)架上的藏品,它的命運(yùn)最終將系于讀者之手。 有些課程會(huì)把本書(shū)當(dāng)作中級(jí)教程或?qū)嶒?yàn)課本來(lái)使用。高年級(jí)學(xué)生可以跳過(guò)基礎(chǔ)內(nèi)容而直接進(jìn)入感興趣的章節(jié)。一旦掌握了基礎(chǔ)知識(shí),你會(huì)發(fā)現(xiàn)Verilog數(shù)字設(shè)計(jì)實(shí)例中包含更多重要的和有趣的知識(shí)。 建議讀者好好利用貫穿全書(shū)的頁(yè)邊注釋?zhuān)@將幫助你把握重要的定義和知識(shí)點(diǎn)。 各章內(nèi)容概述接下來(lái)簡(jiǎn)短介紹一下本書(shū)15章的主要內(nèi)容。這可能會(huì)讓你想起一般軟件指南中所說(shuō)的,“寫(xiě)給不喜歡閱讀手冊(cè)的人”?催^(guò)這部分后,也許你就不必閱讀本書(shū)的剩余內(nèi)容了。 第1章給出了一些基本定義和重要主題的預(yù)覽,還有一點(diǎn)關(guān)于數(shù)字電路的內(nèi)容,使讀者在不深入閱讀第14章的情況下可以順利學(xué)習(xí)其他內(nèi)容。 第2章介紹二進(jìn)制數(shù)制和編碼。在軟件課程中已經(jīng)熟悉二進(jìn)制數(shù)制的讀者,仍需要閱讀2.10~2.13節(jié),以便理解硬件是如何使用二進(jìn)制編碼的。高年級(jí)學(xué)生可以閱讀2.14節(jié)和2.15節(jié),其中清楚地介紹了檢錯(cuò)碼。每個(gè)讀者都應(yīng)該閱讀2.16.1節(jié),因?yàn)樵谠S多現(xiàn)代系統(tǒng)中都要用到它。 第3章講解組合邏輯設(shè)計(jì)原理,包括開(kāi)關(guān)代數(shù)、組合電路分析、綜合與最小化。 第4章從文檔標(biāo)準(zhǔn)開(kāi)始介紹各種數(shù)字設(shè)計(jì)實(shí)踐,文檔標(biāo)準(zhǔn)可能是設(shè)計(jì)者開(kāi)始實(shí)踐時(shí)的第一步,也是很重要的一步。然后介紹定時(shí)的概念,特別是組合電路的定時(shí),最后以關(guān)于HDL、設(shè)計(jì)流程和工具的討論結(jié)束。 第5章是關(guān)于Verilog的教程和參考資料,Verilog是本書(shū)剩余部分所采用的硬件描述語(yǔ)言。所有讀者都應(yīng)該閱讀前幾節(jié)內(nèi)容,但是部分讀者可能希望跳過(guò)其余內(nèi)容,直到需要時(shí)再開(kāi)始閱讀。這也是沒(méi)問(wèn)題的,因?yàn)樾碌腣erilog結(jié)構(gòu)集中在后續(xù)章節(jié)(主要是第6章),第一次用到時(shí)才會(huì)進(jìn)行講述。 第6章描述了兩個(gè)通用的組合構(gòu)件ROM和PLD。然后介紹兩個(gè)最常用的功能構(gòu)件—譯碼器和多路復(fù)用器,每一個(gè)都會(huì)給出門(mén)級(jí)和基于Verilog的設(shè)計(jì)。讀者可以從這里直接跳到第9章的狀態(tài)機(jī),然后再回到第7章和第8章。 第7章繼續(xù)討論門(mén)級(jí)和用Verilog實(shí)現(xiàn)的組合構(gòu)件,包括三態(tài)器件、優(yōu)先編碼器、異或門(mén)和奇偶函數(shù)以及比較器,然后用一個(gè)非平凡“隨機(jī)邏輯”函數(shù)的Verilog設(shè)計(jì)實(shí)例引出結(jié)論。 第8章討論實(shí)現(xiàn)算術(shù)功能的組合電路,包括加法和減法、移位、乘法和除法。 第9章介紹使用D觸發(fā)器的傳統(tǒng)狀態(tài)機(jī),包括采用狀態(tài)表、狀態(tài)圖、ASM圖和Verilog的狀態(tài)機(jī)的分析和綜合。 第10章介紹其他時(shí)序元件,包括鎖存器、邊沿觸發(fā)器件及其Verilog行為模型。這一章還描述了用典型的FPGA實(shí)現(xiàn)的時(shí)序元件,并為感興趣的讀者準(zhǔn)備了關(guān)于時(shí)序型PLD和反饋時(shí)序電路的章節(jié)。 第11章重點(diǎn)講解兩個(gè)最常用的時(shí)序電路構(gòu)件—計(jì)數(shù)器和移位寄存器,包括它們的應(yīng)用,以及門(mén)級(jí)和基于Verilog的例子。 第12章包含關(guān)于如何采用Verilog對(duì)狀態(tài)機(jī)建模的更詳細(xì)的內(nèi)容,以及更多例子。 第13章討論時(shí)序電路設(shè)計(jì)的重要實(shí)際概念,包括同步系統(tǒng)結(jié)構(gòu)、時(shí)鐘和時(shí)鐘偏移、異步輸入和亞穩(wěn)定性,以及一個(gè)用Verilog實(shí)現(xiàn)的雙時(shí)鐘同步的詳細(xì)例子。 第14章介紹數(shù)字電路運(yùn)算,重點(diǎn)在于邏輯器件的外部特性。學(xué)習(xí)起點(diǎn)是基礎(chǔ)的電子學(xué)知識(shí),包括電壓、電流和歐姆定律。對(duì)于如何使真實(shí)電路運(yùn)作起來(lái)不感興趣的讀者,或者有權(quán)把這項(xiàng)辛苦活交給別人完成的讀者可以跳過(guò)本章。 第15章全部都是關(guān)于存儲(chǔ)器件和FPGA的內(nèi)容。存儲(chǔ)器方面包括只讀存儲(chǔ)器以及靜態(tài)、動(dòng)態(tài)讀/寫(xiě)存儲(chǔ)器的內(nèi)部電路和功能行為特性。最后一節(jié)會(huì)詳細(xì)介紹Xilinx7系列的FPGA結(jié)構(gòu)。 大多數(shù)章節(jié)都包含參考資料、訓(xùn)練題和練習(xí)題。訓(xùn)練題通常是簡(jiǎn)答題或“輕而易舉”的問(wèn)題,可以直接根據(jù)書(shū)中材料給出答案,而練習(xí)題通常需要花時(shí)間仔細(xì)思考。第14章的訓(xùn)練題尤其廣泛,是為了幫助非電子工程師能較容易地理解本章內(nèi)容而專(zhuān)門(mén)設(shè)計(jì)的。 與第4版的區(qū)別對(duì)于用過(guò)本書(shū)之前版本的讀者和教師而言,除了普通的更新之外,第5版還有以下關(guān)鍵的不同之處。 新版只涉及Verilog,沒(méi)有VHDL。在不同語(yǔ)言之間跳轉(zhuǎn)只會(huì)使人分神。另外,Verilog及其后繼SystemVerilog是目前非官方背景下所選擇的HDL。推薦大家閱讀SteveGolson和LeahClark的論文,“再論21世紀(jì)的語(yǔ)言之爭(zhēng):Verilog與VHDL”(2016SynopsysUsersGroupConference)。這是一篇精彩紛呈且論據(jù)充足的論文,如果你不想閱讀全文的話,可以直接跳到最后一節(jié)。 新版有更多HDL的例子,更加強(qiáng)調(diào)設(shè)計(jì)流程和測(cè)試平臺(tái),包括純粹的激勵(lì)和自檢信號(hào)。 對(duì)于并非旨在培養(yǎng)電子工程師的計(jì)算機(jī)工程專(zhuān)業(yè)的學(xué)生,為了使本書(shū)更容易閱讀,關(guān)于CMOS電路的詳細(xì)內(nèi)容移到了第14章,而在第1章中加入了最少量的電子學(xué)知識(shí),這樣,學(xué)生就可以跳過(guò)整個(gè)關(guān)于CMOS的章節(jié)。 關(guān)于TTL、SSI、MSI、74系列邏輯、PLD以及CPLD的內(nèi)容都刪除了。 簡(jiǎn)化了卡諾圖化簡(jiǎn)的內(nèi)容。 盡管第5章依然是關(guān)于Verilog的綜合性教程和參考資料,但Verilog的概念也散布在第6章和第7章的文本框中。它們會(huì)在需要相關(guān)知識(shí)點(diǎn)的地方及時(shí)出現(xiàn),學(xué)生可以直接在那里找到“好東西”。 更強(qiáng)調(diào)基于FPGA的設(shè)計(jì)、FPGA結(jié)構(gòu)特性、綜合結(jié)果以及權(quán)衡。 原來(lái)關(guān)于組合邏輯元件的一章被分成了三章,以便有需要的讀者可以直接從一開(kāi)始就跳到狀態(tài)機(jī)的內(nèi)容。而且,還可以在最后講解更多算術(shù)運(yùn)算電路的內(nèi)容。 用一整章內(nèi)容講解如何用Verilog實(shí)現(xiàn)狀態(tài)機(jī),包括許多例子。 關(guān)于同步設(shè)計(jì)方法論的章節(jié)目前包含一個(gè)詳細(xì)的控制單元加數(shù)據(jù)通路的例子,以及一個(gè)關(guān)于采用異步FIFO的交叉時(shí)鐘域的綜合例子。 希望我在書(shū)里開(kāi)的玩笑不會(huì)太糟糕。 數(shù)字設(shè)計(jì)軟件工具書(shū)中所有Verilog的例子都是采用XilinxVivado套件編譯和測(cè)試的,這個(gè)套件包括以Xilinx7系列FPGA為目標(biāo)器件的Verilog、SystemVerilog以及VHDL。然而,這些例子一般并不特別要求采用Vivado編譯,甚至不要求目標(biāo)器件是Xilinx或任何其他FPGA。本書(shū)不包含關(guān)于Vivado的教程,而Xilinx有豐富的在線資源可供參考。因此,讀者可以將本書(shū)與任何Verilog工具一起使用,包括下面提及的工具。 可以從Xilinx下載免費(fèi)的Vivado“Webpack”版本。這個(gè)版本支持較小型的7系列FPGA,帶有ZynqSoc的FPGA以及評(píng)估板。這是一個(gè)龐大的文件,超過(guò)10GB,但也是一個(gè)綜合工具套件。支持前7系列FPGA以及較小型ZynqFPGA的XilinxISE(IntegratedSoftwareEnvironment)也包含在免費(fèi)的“Webpack”版本中。注意,“l(fā)egacy”模式支持ISE,而自從2013年后,ISE就再也沒(méi)有更新過(guò)。要獲取任何一種套件,可以登錄www.xilinx.com,搜索“Webpackdownload”。 如果你正在使用Altera(現(xiàn)在是Intel的一部分了)器件,他們還提供了不錯(cuò)的“大學(xué)計(jì)劃”和工具。你可以搜索“Alterauniversitysupport”,然后導(dǎo)航到“ForStudent”網(wǎng)頁(yè)。免費(fèi)的工具包括QuartusPrimeLite版本,用于以入門(mén)級(jí)FPGA和CPLD為目標(biāo)器件的Verilog、SystemVerilog和VHDL設(shè)計(jì)。還有一個(gè)配套的ModelSim模擬軟件初始版本,這一版本也是符合工業(yè)標(biāo)準(zhǔn)的。 Altera和Xilinx都提供廉價(jià)的評(píng)估板,適用于直接或通過(guò)第三方等效實(shí)現(xiàn)基于FPGA的學(xué)生項(xiàng)目。這樣的評(píng)估板可以包括開(kāi)關(guān)、LED、模擬/數(shù)字轉(zhuǎn)換器以及運(yùn)動(dòng)傳感器
約翰·F. 韋克利(John F. Wakerly) 于斯坦福大學(xué)獲得電子工程博士學(xué)位。他目前是思科系統(tǒng)公司廣域網(wǎng)業(yè)務(wù)部主管工程項(xiàng)目的副總裁,還是斯坦福大學(xué)的兼職教授。他在數(shù)字設(shè)計(jì)、微型計(jì)算機(jī)體系結(jié)構(gòu)、計(jì)算機(jī)可靠性等方面出版了50多部著作,并在電信與網(wǎng)絡(luò)領(lǐng)域擁有13項(xiàng)專(zhuān)利。
Contents
1 INTRODUCTION 1 1.1 About Digital Design1 1.2Analog versus Digital3 1.3Analog Signals7 1.4Digital Logic Signals7 1.5Logic Circuits and Gates9 1.6Software Aspects of Digital Design13 1.7Integrated Circuits16 1.8Logic Families and CMOS19 1.9CMOS Logic Circuits20 1.10Programmable Devices25 1.11Application-Specific ICs27 1.12Printed-Circuit Boards28 1.13Digital-Design Levels29 1.14The Name of the Game33 1.15Going Forward34 Drill Problems34 2 NUMBER SYSTEMS AND CODES 35 2.1Positional Number Systems36 2.2Binary, Octal, and Hexadecimal Numbers37 2.3Binary-Decimal Conversions39 2.4Addition and Subtraction of Binary Numbers42 2.5Representation of Negative Numbers44 2.5.1Signed-Magnitude Representation 2.5.2Complement Number Systems 2.5.3Two’s-Complement Representation 2.5.4Ones’-Complement Representation 2.5.5Excess Representations 2.6Two’s-Complement Addition and Subtraction48 2.6.1Addition Rules 2.6.2A Graphical View 2.6.3Overflow 2.6.4Subtraction Rules 2.6.5Two’s-Complement and Unsigned Binary Numbers 2.7Ones’-Complement Addition and Subtraction52 2.8Binary Multiplication54 2.9Binary Division56 2.10Binary Codes for Decimal Numbers57 2.11Gray Code602.12Character Codes62 2.13Codes for Actions, Conditions, and States64 2.14n-Cubes and Distance66 2.15Codes for Detecting and Correcting Errors67 2.15.1Error-Detecting Codes 2.15.2Error-Correcting and Multiple-Error-Detecting Codes 2.15.3Hamming Codes 2.15.4CRC Codes 2.15.5Two-Dimensional Codes 2.15.6Checksum Codes 2.15.7m-out-of-n Codes 2.16Codes for Transmitting and Storing Serial Data78 2.16.1Parallel and Serial Data 2.16.2Serial Line CodesReferences82 Drill Problems83 Exercises85 3SWITCHING ALGEBRA AND COMBINATIONAL LOGIC89 3.1Switching Algebra91 3.1.1Axioms 3.1.2Single-Variable Theorems 3.1.3Two- and Three-Variable Theorems 3.1.4n-Variable Theorems 3.1.5Duality 3.1.6Standard Representations of Logic Functions 3.2Combinational-Circuit Analysis104 3.3Combinational-Circuit Synthesis110 3.3.1Circuit Descriptions and Designs 3.3.2Circuit Manipulations 3.3.3Combinational-Circuit Minimization 3.3.4Karnaugh Maps 3.4Timing Hazards122 3.4.1Static Hazards 3.4.2Finding Static Hazards Using Maps 3.4.3Dynamic Hazards 3.4.4Designing Hazard-Free CircuitsReferences126 Drill Problems128Exercises129 4DIGITAL DESIGN PRACTICES133 4.1Documentation Standards133 4.1.1Block Diagrams 4.1.2Gate Symbols 4.1.3Signal Names and Active Levels 4.1.4Active Levels for Pins 4.1.5Constant Logic Signals 4.1.6Bubble-to-Bubble Logic Design 4.1.7Signal Naming in HDL Models 4.1.8Drawing Layout 4.1.9Buses 4.1.10Additional Schematic Information 4.2Circuit Timing154 4.2.1Timing Diagrams 4.2.2Propagation Delay 4.2.3Timing Specifications 4.2.4Sample Timing Specifications 4.2.5Timing Analysis Tools 4.3HDL-Based Digital Design165 4.3.1HDL History 4.3.2Why HDLs? 4.3.3EDA Tool Suites for HDLs 4.3.4HDL-Based Design FlowReferences172 Drill Problems 174Exercises176 5VERILOG HARDWARE DESCRIPTION LANGUAGE177 5.1Verilog Models and Modules179 5.2Logic System, Nets, Variables, and Constants184 5.3Vectors and Operators189 5.4Arrays193 5.5Logical Operators and Expressions194 5.6Compiler Directives197 5.7Structural Models198 5.8Dataflow Models203 5.9Behavioral Models (Procedural Code)205 5.9.1Always Statements and Blocks 5.9.2Procedural Statements 5.9.3Inferred Latches 5.9.4Assignment Statements 5.9.5begin-end Blocks 5.9.6if and if-else Statements 5.9.7case Statements 5.9.8Looping Statements 5.10Functions and Tasks220 5.11The Time Dimension224 5.12Simulation225 5.13Test Benches226 5.14Verilog Features for Sequential Logic Design232 5.15Synthesis232 References233 Drill Problems234 Exercises235 6BASIC COMBINATIONAL LOGICELEMENTS237 6.1Read-Only Memories (ROMs)240 6.1.1ROMs and Truth Tables 6.1.2Using ROMs for Arbitrary Combinational Logic Functions 6.1.3FPGA Lookup Tables (LUTs) 6.2Combinational PLDs246 6.2.1Programmable Logic Arrays 6.2.2Programmable Array Logic Devices 6.3Decoding and Selecti
你還可能感興趣
我要評(píng)論
|