本書采用ARM取代了早先使用MIPS作為核心處理器來介紹計算機組織和設計的基本概念,涵蓋了數字邏輯設計的主要內容。本書以一種流行的方式介紹了從計算機組織和設計到更細節(jié)層次的內容,涵蓋了數字邏輯設計的主要內容,并通過ARM微處理器的設計強化數字邏輯的概念。本書的典型特色是將數字邏輯和計算機體系結構融合,教學內容反映了當前數字電路設計的主流方法,并突出計算機體系結構的工程特點,書中的大量示例及習題也可以加強讀者對基本概念和技術的理解和記憶。
本書的獨特之處在于從計算機體系結構的角度呈現數字邏輯設計,從1和0開始,逐步引領讀者了解微處理器的設計。
我們相信,構建微處理器是工程和計算機科學專業(yè)學生的特殊“儀式”。處理器的內部工作對于不熟悉的人來說似乎是神奇的,但經過仔細解釋后,其實是直截了當的。數字設計本身就是一個強大而令人興奮的主題。匯編語言編程揭示了處理器所使用的內部語言。微體系結構(簡稱為微結構)將它們鏈接在一起。
在這本日益流行的圖書的前兩個版本中,包括了由Patterson和Hennessy所撰寫且被廣泛使用的體系結構書籍中討論的傳統(tǒng)MIPS體系結構。作為最初的精簡指令集計算體系結構之一,MIPS非常簡潔,易于理解和構建。今天,MIPS仍然是一個重要的體系結構,在2013年被Imagination Technologies收購后,又被注入了新的活力。
在過去的20年中,ARM體系結構由于其高效和豐富的生態(tài)系統(tǒng)而大受歡迎。這段時間出貨了超過500億個ARM處理器,并且全球超過75%的人都在使用帶有ARM處理器的產品。在撰寫本書時,幾乎所有在售的手機和平板電腦都包含一個或多個ARM處理器。有報道預測數百億的ARM處理器將很快控制物聯網。許多公司正在構建高性能ARM系統(tǒng),以在服務器市場挑戰(zhàn)Intel。由于其商業(yè)重要性和學生的興趣,我們撰寫了本書的ARM版本。
在教學上,MIPS和ARM版本的學習目標是相同的。ARM體系結構具有許多功能,包括尋址模式和條件執(zhí)行,這些功能有助于提高效率,但增加了少量的復雜性。它與MIPS的微體系結構也非常相似,而條件執(zhí)行和程序計數器是它們最大的差異。關于I/O的章節(jié)提供了大量使用Raspberry Pi的示例。Raspberry Pi是一種非常流行的基于ARM的嵌入式Linux單板計算機。
只要市場依然有需求,我們就希望能夠同時提供MIPS和ARM兩個版本。
特點
并列講述SystemVerilog和VHDL語言
硬件描述語言(Hardware Description Language,HDL)是現代數字設計實踐的中心,而設計者分成了SystemVerilog語言和VHDL語言兩個陣營。在介紹組合邏輯和時序邏輯設計后,本書緊接著就在第4章中介紹硬件描述語言,并將在第5章和第7章用其來設計處理器的模塊和整個處理器。然而,如果不講授硬件描述語言,第4章可以跳過去,不影響后續(xù)章節(jié)。
本書的特色在于使用并列的方式講述SystemVerilog語言和VHDL語言,使得讀者可以快速對比兩種語言。第4章描述了適用于這兩種硬件描述語言的原則,而且并列給出了這兩種語言的語法和實例。這種并列方法使得教師可以選擇其中一種硬件描述語言講述,同時,讀者在專業(yè)實踐中也可以很快從一種描述語言轉到另一種描述語言。
ARM體系結構和微體系結構
第6章和第7章首次深入介紹了ARM體系結構和微體系結構。ARM是一種理想的體系結構,因為它是一種每年應用于數百萬種產品中的真實體系結構,但又十分精簡且易于學習。此外,由于其在商業(yè)和業(yè)余愛好者世界中的流行,已有多種ARM體系結構的模擬和開發(fā)工具。在本書中,所有與ARM技術相關的材料均經ARM Limited許可復制。
現實世界視角
除了討論ARM體系結構的現實世界視角外,第6章還介紹了英特爾x86處理器的體系結構,以提供另一種視角。第9章(在線補充資料)還描述了Raspberry Pi單板計算機環(huán)境中的外圍設備,這是一個非常流行的基于ARM的平臺。這些現實世界視角的章節(jié)展示了該章中的概念與許多PC和消費電子產品中的芯片之間的關系。
高級微體系結構概覽
第7章介紹了現代高性能微結構的特征,包括分支預測、超標量、亂序執(zhí)行、多線程和多核處理器。這些內容對于第一次上體系結構課程的學生比較易于理解,展示了本書中的微結構原理是如何擴展到現代處理器設計中的。
章末的習題和面試問題
學習數字設計的最佳方式是實踐。每章末尾都有很多習題用于實踐所講述的內容。習題后面是一組由這個領域工業(yè)界的同事向申請工作的學生提出的面試問題。這些問題可以讓學生感受到面試過程中可能遇到的典型問題類型。習題的答案可以通過本書的配套網站和教師支持網站獲得。
在線補充資料
補充資料可以通過booksite.elsevier.com/9780128000564獲得。這個對所有讀者開放的配套網站包括以下內容:
奇數編號習題的答案;
Altera公司專業(yè)級計算機輔助設計工具的鏈接;
鏈接到Keil的ARM微控制器開發(fā)套件(MDK-ARM),這是一個用于編譯、匯編和模擬ARM處理器的C和匯編代碼的工具;
ARM處理器的硬件描述語言(HDL)代碼;
關于Altera Quartus Ⅱ工具的提示;
PPT格式的電子教案;
簡單的課程和實驗素材;
勘誤表。
教師網站包括:
所有習題的答案;
鏈接到Altera的專業(yè)級計算機輔助設計(CAD)工具;
PDF格式和PPT格式的書中插圖。
在線資料提供了在課程中使用Altera、Raspberry Pi和MDK-ARM工具的指南,同時也提供了關于構建實驗的詳細資料。
如何在課程中使用軟件工具
Altera Quartus Ⅱ
Quartus Ⅱ Web Edition是專業(yè)級Quartu Ⅱ FPGA設計工具的免費版本。基于此軟件,學生可以使用原理圖或者硬件描述語言(SystemVerilog或VHDL)完成數字邏輯設計。在完成設計后,學生可以使用Altera Quartus Ⅱ Web Edition中包含的ModelSim-Altera Star
---作者簡介---
莎拉·L. 哈里斯(Sarah L. Harris) 內華達大學電子與計算機工程系副教授,擁有斯坦福大學電子工程博士學位。她曾在惠普、圣地亞哥超算中心、英偉達公司和微軟亞洲研究院工作,擅長計算機體系結構設計和系統(tǒng)設計。
戴維·莫尼·哈里斯(David Money Harris) 哈維瑪德學院工程系教授,擁有斯坦福大學電子工程博士學位。他曾在英特爾公司從事Itanium和Pentium II處理器的邏輯和電路設計,并曾擔任Sun Microsystems、惠普、Evans & Sutherland等設計公司的顧問,獲得了12項專利。
---譯者簡介---
陳俊穎 華南理工大學軟件學院副教授,香港大學博士、浙江大學學士,教育部大數據與機器人智能粵港澳聯合實驗室、華南理工大學智能軟件與機器人科研團隊成員,主要從事高性能計算和智能圖像處理方面的科研及教學工作。
出版者的話
贊譽
譯者序
前言
第1章 二進制1
1.1 課程計劃1
1.2 管理復雜性的藝術1
1.2.1 抽象1
1.2.2 約束2
1.2.3 三條原則3
1.3 數字抽象3
1.4 數字系統(tǒng)4
1.4.1 十進制數4
1.4.2 二進制數5
1.4.3 十六進制數6
1.4.4 字節(jié)、半字節(jié)和字7
1.4.5 二進制加法8
1.4.6 有符號的二進制數8
1.5 邏輯門10
1.5.1 非門11
1.5.2 緩沖11
1.5.3 與門11
1.5.4 或門11
1.5.5 其他二輸入邏輯門12
1.5.6 多輸入門12
1.6 數字抽象之下13
1.6.1 電源電壓13
1.6.2 邏輯電平13
1.6.3 噪聲容限14
1.6.4 直流電壓傳輸特性14
1.6.5 靜態(tài)約束15
*1.7 CMOS晶體管16
1.7.1 半導體16
1.7.2 二極管17
1.7.3 電容17
1.7.4 nMOS和pMOS晶體管17
1.7.5 CMOS非門19
1.7.6 其他CMOS邏輯門19
1.7.7 傳輸門21
1.7.8 類nMOS邏輯21
*1.8 功耗22
1.9 總結和展望22
習題23
面試問題29
第2章 組合邏輯設計30
2.1 引言30
2.2 布爾表達式32
2.2.1 術語32
2.2.2 與或式32
2.2.3 或與式33
2.3 布爾代數34
2.3.1 公理34
2.3.2 單變量定理35
2.3.3 多變量定理36
2.3.4 定理的統(tǒng)一證明方法37
2.3.5 等式化簡37
2.4 從邏輯到門38
2.5 多級組合邏輯40
2.5.1 減少硬件40
2.5.2 推氣泡41
2.6 X和Z43
2.6.1 非法值X43
2.6.2 浮空Z43
2.7 卡諾圖44
2.7.1 畫圈的原理45
2.7.2 卡諾圖化簡邏輯45
2.7.3 無關項48
2.7.4 小結49
2.8 組合邏輯模塊49
2.8.1 多路選擇器49
2.8.2 譯碼器52
2.9 時序52
2.9.1 傳輸延遲和最小延遲53
2.9.2 毛刺55
2.10 總結57
習題57
面試問題62
第3章 時序邏輯設計63
3.1 引言63
3.2 鎖存器和觸發(fā)器63
3.2.1 SR鎖存器64
3.2.2 D鎖存器65
3.2.3 D觸發(fā)器66
3.2.4 寄存器67
3.2.5 帶使能端的觸發(fā)器67
3.2.6 帶復位功能的觸發(fā)器67
*3.2.7 晶體管級的鎖存器和觸發(fā)器的設計68
3.2.8 小結68
3.3 同步邏輯設計69
3.3.1 一些有問題的電路70
3.3.2 同步時序電路71
3.3.3 同步和異步電路72
3.4 有限狀態(tài)機72
3.4.1 有限狀態(tài)機設計實例73
3.4.2 狀態(tài)編碼77
3.4.3 Moore型狀態(tài)機和Mealy型狀態(tài)機79
3.4.4 狀態(tài)機的分解82
3.4.5 由電路圖導出狀態(tài)機83
3.4.6 小結86
3.5 時序邏輯電路的時序86
3.5.1 動態(tài)約束87
3.5.2 系統(tǒng)時序87
*3.5.3 時鐘偏移91
3.5.4 亞穩(wěn)態(tài)92
3.5.5 同步器93
*3.5.6 分辨時間的推導95
3.6 并行97
3.7 總結99
習題100
面試問題105
第4章 硬件描述語言107
4.1 引言107
4.1.1 模塊107
4.1.2 硬件描述語言的起源108
4.1.3 模擬和綜合109
4.2 組合邏輯110
4.2.1 位運算符110
4.2.2 注釋和空格112
4.2.3 縮減運算符112
4.2.4 條件賦值112
4.2.5 內部變量114
4.2.6 優(yōu)先級115
4.2.7 數字116
4.2.8 Z和X117
4.2.9 位混合118
4.2.10 延遲118
4.3 結構建模119
4.4 時序邏輯122
4.4.1 寄存器122
4.4.2 帶復位功能的寄存器123
4.4.3 帶使能端的寄存器124
4.4.4 多寄存器124
4.4.5 鎖存器125
4.5 更多組合邏輯126
4.5.1 case語句127
4.5.2 if語句129
4.5.3 帶有無關項的真值表130
4.5.4 阻塞式和非阻塞式賦值131
4.6 有限狀態(tài)機134
*4.7 數據類型137
4.7.1 SystemVerilog137
4.7.2 VHDL138
*4.8 參數化模塊140
4.9 測試程序142
4.10 總結145
習題145
面試問題152
第5章 常見數字模塊153
5.1 引言153
5.2 算術電路153
5.2.1 加法153
5.2.2 減法158
5.2.3 比較器159
5.2.4 算術邏輯單元160
5.2.5 移位器和循環(huán)移位器162
*5.2.6 乘法162
*5.2.7 除法164
5.2.8 拓展閱讀164
5.3 數制系統(tǒng)165
5.3.1 定點數系統(tǒng)165
*5.3.2 浮點數系統(tǒng)166
5.4 時序電路模塊169
5.4.1 計數器169
5.4.2 移位寄存器169
5.5 存儲器陣列171
5.5.1 概述171
5.5.2 動態(tài)隨機訪問存儲器173
5.5.3 靜態(tài)隨機訪問存儲器174
5.5.4 面積和延遲174
5.5.5 寄存器文件174
5.5.6 只讀存儲器175
5.5.7 使用存儲器陣列的邏輯176
5.5.8 存儲器HDL176
5.6 邏輯陣列178
5.6.1 可編程邏輯陣列178
5.6.2 現場可編程邏輯門陣列179
*5.6.3 陣列實現182
5.7 總結183
習題184
面試問題190
第6章 體系結構191
6.1 引言191
6.2 匯編語言192
6.2.1 指令192
6.2.2 操作數:寄存器、存儲器和常數193
6.3 編程196
6.3.1 數據處理指令196
6.3.2 條件標志198
6.3.3 分支200
6.3.4 條件語句201
6.3.5 循環(huán)202
6.3.6 存儲器204
6.3.7 函數調用207
6.4 機器語言215
6.4.1 數據處理指令215
6.4.2 存儲器指令218
6.4.3 分支指令219
6.4.4 尋址模式220
6.4.5 解釋機器語言代碼220
6.4.6 程序存儲221
*6.5 編譯、匯編與加載222
6.5.1 內存映射222
6.5.2 編譯223
6.5.3 匯編224
6.5.4 鏈接225
6.5.5 加載226
*6.6 其他主題227
6.6.1 加載文字227
6.6.2 NOP227
6.6.3 異常228
6.7 ARM體