關(guān)于我們
書單推薦
新書推薦
|
數(shù)字設(shè)計:原理與實踐(英文版 第5版)
本書是數(shù)字設(shè)計領(lǐng)域的經(jīng)典教材,是作者牢固的理論功底、嚴謹?shù)膶W術(shù)風范與豐富的實踐經(jīng)驗的完美融合。原理方面涵蓋高級(HDL)、低級(電子電路)以及“廣泛中間級”(門電路、觸發(fā)器和一些較高級的數(shù)字設(shè)計構(gòu)件)的多層次基礎(chǔ)知識,更加方便不同專業(yè)的教學內(nèi)容選取;實踐方面專注于Verilog一種實現(xiàn)語言,強調(diào)基于FPGA的設(shè)計,并且添加了更多應用實例。
前言
本書寫給所有需要設(shè)計和構(gòu)建真正的數(shù)字電路的讀者。為達到這個目的,讀者必須掌握數(shù)字電路的基本原理,同時理解它們在真實世界中是如何運轉(zhuǎn)的。正是基于這一理念,我們選取了“原理與實踐”這兩大主題。 在過去的30年里,隨著集成電路的速度和集成度的快速提高,數(shù)字設(shè)計實踐經(jīng)歷了重大轉(zhuǎn)變。過去,數(shù)字設(shè)計者用成千甚至上萬的門電路和觸發(fā)器來構(gòu)建系統(tǒng),因此專業(yè)課程的重點就是如何最小化和有效地利用芯片及板級資源。 今天,一個芯片可以包含幾千萬個晶體管,并且可以通過編程來構(gòu)建片上系統(tǒng)。過去要實現(xiàn)這樣的系統(tǒng),需要用幾百個包含上百萬單個門電路和觸發(fā)器的分立芯片。如今,產(chǎn)品開發(fā)能否成功更多地取決于設(shè)計團隊正確、完整地定義產(chǎn)品詳細功能的能力,而不是將需要的所有電路集成到一塊電路板或芯片上的能力。因此,現(xiàn)代專業(yè)課程的重點是設(shè)計方法論和軟件工具,包括硬件描述語言(HDL)。設(shè)計團隊利用HDL便可以完成超大型分層數(shù)字系統(tǒng)的設(shè)計。 借助HDL,一方面可以看到典型設(shè)計的抽象層次變得更高,超越了單個門電路和觸發(fā)器的層次。但與此同時,芯片級和電路板級數(shù)字電路的速度和集成度的提高,也迫使設(shè)計者必須在較低的電子電路級提升競爭力。 大多數(shù)優(yōu)秀的數(shù)字設(shè)計師都精通或者至少熟悉上述兩個抽象層次。本書提供了高級(HDL)、低級(電子電路)以及“廣泛中間級”(門電路、觸發(fā)器和一些較高級的數(shù)字設(shè)計構(gòu)件)的多層次基礎(chǔ)知識。 目標讀者本書可以作為電氣工程、計算機工程或計算機科學專業(yè)數(shù)字邏輯設(shè)計課程的入門教材或中級教材。對于計算機科學專業(yè)的學生,如果不熟悉基本電子學概念或者對數(shù)字器件的電氣特性不感興趣,可以跳過第14章,書中其他章節(jié)基本上都不需要這一章內(nèi)容作為預備知識。另一方面,具有基本電子學基礎(chǔ)的讀者,則可通過閱讀第14章來快速掌握數(shù)字電子學知識。 雖然本書是入門級的,但卻比普通的入門教材包含更多內(nèi)容。我希望常規(guī)課程采用書中不超過三分之二的材料,但是,每門課程所用到的是不同的三分之二。因此,請各位教師或讀者按照自己的需要決定閱讀內(nèi)容。為了幫助大家做選擇,我已經(jīng)在可選章節(jié)的標題上打了星號。一般情況下,可以跳過這些章節(jié)而不影響后續(xù)必選章節(jié)的內(nèi)容連貫性。此外,矩形文本框(如下所示)中的材料也是可以跳過的。 這是一個簡單一些讀者抱怨之前的版本太厚了,我縮減了這一版的篇幅,但依然要提醒大家注意: 的文本框示例不必一字不落地讀完所有內(nèi)容,打星號的章節(jié)都可以略過。 寫在這種框里的內(nèi)容通常也可以略過。 我要求出版社調(diào)大了字號(本書采用11磅字,而大部分科技類教材都采用10磅字),這樣不僅閱讀起來更加舒服,而且圖表的位置也更加合理。隨手翻開一頁,你會發(fā)現(xiàn)大部分圖表和對圖表內(nèi)容的講解都位于同一頁。(我親自做的排版工作,著實花了一番心血。)本書的主題非常全面,在學習后續(xù)課程時,你可以再回頭翻看相關(guān)知識點,甚至參加工作后,依然能從書里學到新東西。不過,教科書總會過時,難逃被丟進垃圾桶的厄運,但也有些“幸運兒”成了書架上的藏品,它的命運最終將系于讀者之手。 有些課程會把本書當作中級教程或?qū)嶒炚n本來使用。高年級學生可以跳過基礎(chǔ)內(nèi)容而直接進入感興趣的章節(jié)。一旦掌握了基礎(chǔ)知識,你會發(fā)現(xiàn)Verilog數(shù)字設(shè)計實例中包含更多重要的和有趣的知識。 建議讀者好好利用貫穿全書的頁邊注釋,這將幫助你把握重要的定義和知識點。 各章內(nèi)容概述接下來簡短介紹一下本書15章的主要內(nèi)容。這可能會讓你想起一般軟件指南中所說的,“寫給不喜歡閱讀手冊的人”。看過這部分后,也許你就不必閱讀本書的剩余內(nèi)容了。 第1章給出了一些基本定義和重要主題的預覽,還有一點關(guān)于數(shù)字電路的內(nèi)容,使讀者在不深入閱讀第14章的情況下可以順利學習其他內(nèi)容。 第2章介紹二進制數(shù)制和編碼。在軟件課程中已經(jīng)熟悉二進制數(shù)制的讀者,仍需要閱讀2.10~2.13節(jié),以便理解硬件是如何使用二進制編碼的。高年級學生可以閱讀2.14節(jié)和2.15節(jié),其中清楚地介紹了檢錯碼。每個讀者都應該閱讀2.16.1節(jié),因為在許多現(xiàn)代系統(tǒng)中都要用到它。 第3章講解組合邏輯設(shè)計原理,包括開關(guān)代數(shù)、組合電路分析、綜合與最小化。 第4章從文檔標準開始介紹各種數(shù)字設(shè)計實踐,文檔標準可能是設(shè)計者開始實踐時的第一步,也是很重要的一步。然后介紹定時的概念,特別是組合電路的定時,最后以關(guān)于HDL、設(shè)計流程和工具的討論結(jié)束。 第5章是關(guān)于Verilog的教程和參考資料,Verilog是本書剩余部分所采用的硬件描述語言。所有讀者都應該閱讀前幾節(jié)內(nèi)容,但是部分讀者可能希望跳過其余內(nèi)容,直到需要時再開始閱讀。這也是沒問題的,因為新的Verilog結(jié)構(gòu)集中在后續(xù)章節(jié)(主要是第6章),第一次用到時才會進行講述。 第6章描述了兩個通用的組合構(gòu)件ROM和PLD。然后介紹兩個最常用的功能構(gòu)件—譯碼器和多路復用器,每一個都會給出門級和基于Verilog的設(shè)計。讀者可以從這里直接跳到第9章的狀態(tài)機,然后再回到第7章和第8章。 第7章繼續(xù)討論門級和用Verilog實現(xiàn)的組合構(gòu)件,包括三態(tài)器件、優(yōu)先編碼器、異或門和奇偶函數(shù)以及比較器,然后用一個非平凡“隨機邏輯”函數(shù)的Verilog設(shè)計實例引出結(jié)論。 第8章討論實現(xiàn)算術(shù)功能的組合電路,包括加法和減法、移位、乘法和除法。 第9章介紹使用D觸發(fā)器的傳統(tǒng)狀態(tài)機,包括采用狀態(tài)表、狀態(tài)圖、ASM圖和Verilog的狀態(tài)機的分析和綜合。 第10章介紹其他時序元件,包括鎖存器、邊沿觸發(fā)器件及其Verilog行為模型。這一章還描述了用典型的FPGA實現(xiàn)的時序元件,并為感興趣的讀者準備了關(guān)于時序型PLD和反饋時序電路的章節(jié)。 第11章重點講解兩個最常用的時序電路構(gòu)件—計數(shù)器和移位寄存器,包括它們的應用,以及門級和基于Verilog的例子。 第12章包含關(guān)于如何采用Verilog對狀態(tài)機建模的更詳細的內(nèi)容,以及更多例子。 第13章討論時序電路設(shè)計的重要實際概念,包括同步系統(tǒng)結(jié)構(gòu)、時鐘和時鐘偏移、異步輸入和亞穩(wěn)定性,以及一個用Verilog實現(xiàn)的雙時鐘同步的詳細例子。 第14章介紹數(shù)字電路運算,重點在于邏輯器件的外部特性。學習起點是基礎(chǔ)的電子學知識,包括電壓、電流和歐姆定律。對于如何使真實電路運作起來不感興趣的讀者,或者有權(quán)把這項辛苦活交給別人完成的讀者可以跳過本章。 第15章全部都是關(guān)于存儲器件和FPGA的內(nèi)容。存儲器方面包括只讀存儲器以及靜態(tài)、動態(tài)讀/寫存儲器的內(nèi)部電路和功能行為特性。最后一節(jié)會詳細介紹Xilinx7系列的FPGA結(jié)構(gòu)。 大多數(shù)章節(jié)都包含參考資料、訓練題和練習題。訓練題通常是簡答題或“輕而易舉”的問題,可以直接根據(jù)書中材料給出答案,而練習題通常需要花時間仔細思考。第14章的訓練題尤其廣泛,是為了幫助非電子工程師能較容易地理解本章內(nèi)容而專門設(shè)計的。 與第4版的區(qū)別對于用過本書之前版本的讀者和教師而言,除了普通的更新之外,第5版還有以下關(guān)鍵的不同之處。 新版只涉及Verilog,沒有VHDL。在不同語言之間跳轉(zhuǎn)只會使人分神。另外,Verilog及其后繼SystemVerilog是目前非官方背景下所選擇的HDL。推薦大家閱讀SteveGolson和LeahClark的論文,“再論21世紀的語言之爭:Verilog與VHDL”(2016SynopsysUsersGroupConference)。這是一篇精彩紛呈且論據(jù)充足的論文,如果你不想閱讀全文的話,可以直接跳到最后一節(jié)。 新版有更多HDL的例子,更加強調(diào)設(shè)計流程和測試平臺,包括純粹的激勵和自檢信號。 對于并非旨在培養(yǎng)電子工程師的計算機工程專業(yè)的學生,為了使本書更容易閱讀,關(guān)于CMOS電路的詳細內(nèi)容移到了第14章,而在第1章中加入了最少量的電子學知識,這樣,學生就可以跳過整個關(guān)于CMOS的章節(jié)。 關(guān)于TTL、SSI、MSI、74系列邏輯、PLD以及CPLD的內(nèi)容都刪除了。 簡化了卡諾圖化簡的內(nèi)容。 盡管第5章依然是關(guān)于Verilog的綜合性教程和參考資料,但Verilog的概念也散布在第6章和第7章的文本框中。它們會在需要相關(guān)知識點的地方及時出現(xiàn),學生可以直接在那里找到“好東西”。 更強調(diào)基于FPGA的設(shè)計、FPGA結(jié)構(gòu)特性、綜合結(jié)果以及權(quán)衡。 原來關(guān)于組合邏輯元件的一章被分成了三章,以便有需要的讀者可以直接從一開始就跳到狀態(tài)機的內(nèi)容。而且,還可以在最后講解更多算術(shù)運算電路的內(nèi)容。 用一整章內(nèi)容講解如何用Verilog實現(xiàn)狀態(tài)機,包括許多例子。 關(guān)于同步設(shè)計方法論的章節(jié)目前包含一個詳細的控制單元加數(shù)據(jù)通路的例子,以及一個關(guān)于采用異步FIFO的交叉時鐘域的綜合例子。 希望我在書里開的玩笑不會太糟糕。 數(shù)字設(shè)計軟件工具書中所有Verilog的例子都是采用XilinxVivado套件編譯和測試的,這個套件包括以Xilinx7系列FPGA為目標器件的Verilog、SystemVerilog以及VHDL。然而,這些例子一般并不特別要求采用Vivado編譯,甚至不要求目標器件是Xilinx或任何其他FPGA。本書不包含關(guān)于Vivado的教程,而Xilinx有豐富的在線資源可供參考。因此,讀者可以將本書與任何Verilog工具一起使用,包括下面提及的工具。 可以從Xilinx下載免費的Vivado“Webpack”版本。這個版本支持較小型的7系列FPGA,帶有ZynqSoc的FPGA以及評估板。這是一個龐大的文件,超過10GB,但也是一個綜合工具套件。支持前7系列FPGA以及較小型ZynqFPGA的XilinxISE(IntegratedSoftwareEnvironment)也包含在免費的“Webpack”版本中。注意,“l(fā)egacy”模式支持ISE,而自從2013年后,ISE就再也沒有更新過。要獲取任何一種套件,可以登錄www.xilinx.com,搜索“Webpackdownload”。 如果你正在使用Altera(現(xiàn)在是Intel的一部分了)器件,他們還提供了不錯的“大學計劃”和工具。你可以搜索“Alterauniversitysupport”,然后導航到“ForStudent”網(wǎng)頁。免費的工具包括QuartusPrimeLite版本,用于以入門級FPGA和CPLD為目標器件的Verilog、SystemVerilog和VHDL設(shè)計。還有一個配套的ModelSim模擬軟件初始版本,這一版本也是符合工業(yè)標準的。 Altera和Xilinx都提供廉價的評估板,適用于直接或通過第三方等效實現(xiàn)基于FPGA的學生項目。這樣的評估板可以包括開關(guān)、LED、模擬/數(shù)字轉(zhuǎn)換器以及運動傳感器
約翰·F. 韋克利(John F. Wakerly) 于斯坦福大學獲得電子工程博士學位。他目前是思科系統(tǒng)公司廣域網(wǎng)業(yè)務(wù)部主管工程項目的副總裁,還是斯坦福大學的兼職教授。他在數(shù)字設(shè)計、微型計算機體系結(jié)構(gòu)、計算機可靠性等方面出版了50多部著作,并在電信與網(wǎng)絡(luò)領(lǐng)域擁有13項專利。
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
你還可能感興趣
我要評論
|