繼MIPS版和ARM版之后,本書與時俱進地推出了RISC-V版。全書從計算機體系結構的角度介紹數字邏輯設計的基礎知識,從基本的二進制數開始,詳細討論RISC-V處理器的設計原則、技術與方法。本書首先介紹數字邏輯門,接著講解組合電路和時序電路的設計,并以這些基本的數字邏輯設計概念為基礎,重點介紹如何設計真實的處理器。書中包含大量示例,并分別用SystemVerilog和VHDL給出相應數字系統設計的實現。本書不僅反映了當前數字電路設計的主流方法,而且突出了計算機體系結構的工程特點,適合高等院校計算機相關專業的學生閱讀,也適合從事處理器設計的技術人員參考。
繼MIPS版和ARM版之后,本書與時俱進地推出了RISC-V版。本書從計算機體系結構的角度,由最基礎的二進制數開始,系統介紹數字邏輯設計的基礎知識,引導讀者逐步了解RISC-V微處理器的設計,并在硬件仿真、軟件仿真和真實硬件中對其進行編程。通過將輕松的寫作風格和數字設計的實踐方法相結合,本書引領讀者從數字邏輯的基礎知識開始,逐步學習真實的處理器設計。希望讀者通過閱讀本書,能夠設計出自己的RISC-V微處理器,并對其工作原理有自頂向下的理解。本書從數字邏輯門開始,逐步深入到組合電路和時序電路的設計,并利用這些基本構件作為設計RISC-V處理器的基礎。全書包含大量實例,并列講解基本功能模塊的SystemVerilog和VHDL設計,并完整地討論了單周期、多周期和流水線版本的RISC-V體系結構的實現方法。
前 言
Digital Design and Computer Architecture, RISC-V Edition
這本書的獨特之處在于從計算機體系結構的角度介紹數字邏輯設計,從基本的二進制數開始介紹,直到完成微處理器的設計。
我們一直堅信,構建一個微處理器是電子工程和計算機科學專業的學生求學生涯中一段特殊且重要的旅程。對于外行而言,處理器內部的工作原理幾乎像魔法一樣神奇,但是事實證明,經過詳細解釋之后,處理器的工作原理是非常易于理解的。數字邏輯設計本身是一門令人興奮的學科,匯編語言程序是處理器內部所用的語言,而微體系結構是將兩者聯系在一起的紐帶。
這本日益流行的書的前兩版分別為MIPS體系結構版和ARM體系結構版。作為最初的RISC體系結構之一,MIPS是清晰并且非常易于理解和構建的。因為受MIPS啟發才有了包括RISC-V在內的眾多后續體系結構,所以它目前仍是一種重要的體系結構。ARM體系結構則由于其高效性和豐富的生態環境,在過去幾十年中迅速流行起來。目前生產的ARM處理器已超過500億個,地球上超過75%的人在使用含ARM處理器的相關產品。
在過去的十年中,無論是在教學還是在商業價值方面,RISC-V都已經發展成一種日益重要的計算機體系結構。作為首個被廣泛使用的開源計算機體系結構,RISC-V具備MIPS的簡便性,也兼顧了現代處理器的靈活性和功能性。
在教學方面,MIPS、ARM和RISC-V三版書籍的學習目標都是相同的。RISC-V體系結構具有可擴展性并提供壓縮指令功能,這些特性雖提高了效率但也增加了少量復雜性。MIPS、ARM和RISC-V這三種微體系結構有許多相似之處。只要市場需要,我們希望能同時提供MIPS、ARM和RISC-V三種版本的書籍。
特點
并列講解SystemVerilog和VHDL
硬件描述語言(hardware description language,HDL)是現代數字邏輯設計實踐的中心,但設計者分布在SystemVerilog和VHDL兩個語言陣營。本書在介紹組合邏輯和時序邏輯設計后,緊接著在第4章介紹了HDL,然后在第5章和第7章介紹使用HDL設計更大的電路模塊和整個處理器。如果不講授HDL,可以跳過第4章,直接學習后續的章節。
本書的獨特之處在于同時介紹SystemVerilog和VHDL,使讀者能夠同時學習這兩種語言。第4章描述了適用于這兩種HDL的原則,然后并列提供了兩種語言的語法和示例。這種并列方式使教師能輕松地選擇其中一種進行教學,也使讀者在專業實踐中能較為方便地從一種HDL轉換到另一種HDL。
RISC-V體系結構和微體系結構
第6章和第7章深入介紹了RISC-V體系結構和微體系結構。因為RISC-V體系結構已廣泛應用于實際產品,并且高效、易于學習,所以它是一種理想的體系結構。此外,它在商業界和業余愛好者社區中深受歡迎,相關仿真工具和開發工具也十分完備。
現實視角
第6章除了從現實視角討論RISC-V體系結構之外,還從另一個視角闡釋了Intel x86 處理器的體系結構。第 9 章還介紹了 SparkFun的RED-V RedBoard中的外設,這是一種以SiFive的Freedom E310 RISC-V處理器為中心的很受歡迎的開發板。這兩章揭示了如何將書中所講的概念應用到很多PC內部芯片和消費電子產品的設計中。
高級微體系結構概覽
第7章概述了現代高性能微體系結構的特征,包括分支預測、超標量、亂序執行操作、多線程和多核處理器。這些內容對于第一次上體系結構課程的學生很有用。還說明了本書介紹的微體系結構原理是如何擴展到現代處理器的設計中的。
章末的習題和面試題
學習數字邏輯設計的最佳方法就是實踐。每章的最后有很多習題,供讀者實際應用所學習的內容。習題后面是同行向申請這個領域工作的學生提出的一些面試題。這些問題有助于學生了解求職者在面試過程中可能遇到的典型問題。習題答案可以通過本書的配套網站和教師網站獲取。
在線補充資料
補充資料可通過ddcabook.com或出版商網站https://www.elsevier.com/books-and-journals/
book-companion/9780128200643獲取。本書配套網站(對所有讀者開放)包括:
視頻講解鏈接。
奇數編號習題的答案。
PDF格式和PPTX格式的插圖。
Intel公司專業版計算機輔助設計工具的鏈接。
關于如何使用PlatformIO(Visual Studio Code的擴展)對RISC-V處理器進行編譯、匯編以及模擬C和匯編代碼的說明。
RISC-V處理器的HDL代碼。
Intel Quartus使用提示。
PPT格式的電子教案。
課程示例和實驗素材。
勘誤表。
教師網站(僅提供給在https://inspectioncopy.elsevier.com注冊的使用者)包括:
所有習題的答案。
實驗解決方案。
EdX MOOC
本書還通過EdX提供了配套的MOOC。課程包括視頻講解、互動練習、交互式問題集和實驗。MOOC分為數字邏輯設計(ENGR 85A)和計算機體系結構(ENGR 85B)兩部分,它們由HarveyMuddX提供(在EdX上搜索“Digital Design HarveyMuddX”和“Computer Architecture HarveyMuddX”)。EdX不對訪問視頻收費,但對互動練習和證書收費,并為有經濟困難的學生提供折扣。
如何使用課程中的軟件工具
Quartus軟
莎拉·L. 哈里斯(Sarah L. Harris)內華達大學拉斯維加斯分校電氣與計算機工程系教授。曾在惠普、圣地亞哥超級計算機中心和NVIDIA工作。研究領域包括仿生假肢設計和在硬件中部署機器學習算法。她擁有斯坦福大學電氣工程博士學位。
戴維·哈里斯(David Harris)哈維·穆德學院工程系教授。曾在英特爾公司從事Itanium和Pentium II處理器的邏輯和電路設計,并曾擔任Broadcom、Sun Microsystems、惠普、Evans & Sutherland等設計公司的顧問,獲得了十余項專利。他擁有斯坦福大學電氣工程博士學位。
目 錄
Digital Design and Computer Architecture, RISC-V Edition
譯者序
前言
第1章 數字系統 1
1.1 寫在最前面 1
1.2 管理復雜性的技術 1
1.2.1 抽象 1
1.2.2 準則 2
1.2.3 三Y原則 3
1.3 數字抽象 3
1.4 數制系統 4
1.4.1 十進制數 4
1.4.2 二進制數 5
1.4.3 十六進制數 6
1.4.4 字節、半字和字 7
1.4.5 二進制加法 8
1.4.6 有符號二進制數 8
1.5 邏輯門 11
1.5.1 非門 11
1.5.2 緩沖器 11
1.5.3 與門 11
1.5.4 或門 12
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 靜態準則 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 功耗* 21
1.9 本章總結和后續章節概覽 23
習題 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 單變量定律 34
2.3.3 多變量定律 35
2.3.4 定律的統一證明方法 36
2.3.5 表達式化簡 37
2.4 從邏輯到門 37
2.5 多級組合邏輯 39
2.5.1 邏輯門量的精簡 39
2.5.2 推氣泡法 40
2.6 非法值和浮空值 42
2.6.1 非法值X 42
2.6.2 浮空值Z 42
2.7 卡諾圖 43
2.7.1 畫圈的原理 44
2.7.2 用卡諾圖最小化邏輯 44
2.7.3 無關項 46
2.7.4 小結 47
2.8 組合邏輯模塊 47
2.8.1 多路選擇器 47
2.8.2 譯碼器 50
2.9 時序 50
2.9.1 傳輸延遲和最小延遲 50
2.9.2 毛刺 53
2.10 本章總結 54
習題 55
面試題 59
第3章 時序邏輯設計 60
3.1 引言 60
3.2 鎖存器和觸發器 60
3.2.1 SR鎖存器 61
3.2.2 D鎖存器 62
3.2.3 D觸發器 63
3.2.4 寄存器 63
3.2.5 帶使能端的觸發器 63
3.2.6 帶復位功能的觸發器 64
3.2.7 晶體管級的鎖存器和觸發器
設計* 64
3.2.8 小結 65
3.3 同步邏輯設計 66
3.3.1 問題電路 66
3.3.2 同步時序電路 67
3.3.3 同步和異步電路 68
3.4 有限狀態機 68
3.4.1 有限狀態機設計實例 69
3.4.2 狀態編碼 72
3.4.3 Moore型和Mealy型狀態機 73
3.4.4 狀態機的分解 76
3.4.5 由電路圖導出有限狀態機 77
3.4.6 小結 79
3.5 時序邏輯電路的時序 79
3.5.1 動態準則 80
3.5.2 系統時序 80
3.5.3 時鐘偏移* 83
3.5.4 亞穩態 85
3.5.5 同步器 86
3.5.6 分辨時間的推導* 87
3.6 并行 89
3.7 本章總結 91
習題 92
面試題 96
第4章 硬件描述語言 97
4.1 引言 97
4.1.1 模塊 97
4.1.2 語言起源 98
4.1.3 仿真與綜合 99
4.2 組合邏輯 100
4.2.1 位運算符 100
4.2.2 注釋和空白字符 102
4.2.3 歸約運算符 102
4.2.4 條件賦值 103
4.2.5 內部變量 105
4.2.6 優先級 106
4.2.7 數字 107
4.2.8 Z和X 108
4.2.9 位混合 109
4.2.10 延遲 109
4.3 結構建模 110
4.4 時序邏輯 113
4.4.1 寄存器 113
4.4.2 可復位寄存器 115
4.4.3 使能寄存器 116
4.4.4 多寄存器 117
4.4.5 鎖存器 117
4.5 更多組合邏輯 118
4.5.1 case 語句 120
4.5.2 if語句 122
4.5.3 含無關項的真值表 123
4.5.4 阻塞和非阻塞賦值 124
4.6 有限狀態機 127
4.7 數據類型* 130
4.7.1 System Verilog 130
4.7.2 VHDL 131
4.8 參數化模塊* 133
4.9 測試平臺 136
4.10 本章總結 139
習題 139
System Verilog 習題 142
VHDL 習題 145
面試題 146
第5章 常見數字模塊 147
5.1 引言 147
5.2 算術電路 147
5.2.1 加法 147
5.2.2 減法 153
5.2.3 比較器 153
5.2.4 算術邏輯單元 155
5.2.5 移位器和循環移位器 158
5.2.6 乘法* 159
5.2.7 除法* 159
5.2.8 擴展材料 160
5.3 數制系統 16