本書根據計算機組成原理課堂教學的需求,以培養學生計算機系統設計能力為目的,詳細介紹了針對MIPS指令子集的單周期CPU、多周期CPU以及5級流水線CPU的具體設計過程,展示了利用Logisim和Verilog兩種方法進行功能部件的設計以及組裝CPU的具體方法。
本書的教學內容反映了當前CPU設計的主流方法,特色在于采用模塊化、自底向上的設計方法將原理圖設計與抽象的硬件語言描述相結合,更適合普通高校的學生參考。本書內容編排上由淺入深、由易到難,符合初學者的認知規律,使初學者能夠根據實驗指導順利完成典型指令的CPU設計。通過本書的學習,讀者還可以掌握利用Logisim進行邏輯設計的方法以及利用FPGA開發的設計流程。
本書可作為應用型普通高校計算機專業計算機組成原理課程配套的實驗教材,也可作為計算機系統設計愛好者的參考用書。
采用模塊化、自底向上的設計方法將原理圖設計與抽象的硬件語言描述相結合,更適合普通高校的學生參考。本書內容編排上由淺入深、由易到難,符合初學者的認知規律,使初學者能夠根據實驗指導順利完成典型指令的CPU設計。
前言
計算機硬件系統由中央處理器(CPU)、存儲器、輸入/輸出設備等部件構成。掌握計算機硬件基礎知識,理解計算機系統各部件的基本組成、內部運行機制以及計算機系統運行的基本原理,是對計算機專業學生的基本要求。在此基礎上,具備一定的硬件系統設計能力,對今后從事硬件設計相關工作,或者進行更深入的學習和研究至關重要。
計算機組成原理是計算機相關專業的核心基礎課程,重點講解計算機硬件系統的基本組成、運行原理和協同工作機制。與其配套的實驗課程,主要是幫助學生深入理解計算機各組成部件的工作原理及其相互協同的工作機制。
本書作為計算機組成原理實驗教程,以設計支持MIPS典型指令的CPU為目標組織內容,采用原理圖設計(Logisim)與抽象描述(Verilog)相結合的方法,首先設計功能部件運算器、寄存器文件、存儲器、控制器,最后組裝成完整的CPU。通過模塊化的設計,使學生更加深入地理解計算機各功能部件的工作原理以及相互協同的工作機制。通過循序漸進的實驗過程,使學生不僅掌握計算機各部件的具體實現方法以及相互協同的工作機制,而且讓學生通過自己設計的CPU運行自己編寫的匯編程序,體驗設計CPU的成就感。全書共5章,各章的主要內容如下。
第1章: 處理器設計。本章詳細介紹了基于MIPS典型指令的CPU實現方案。
第2章: 硬件平臺。本章對Minisys開發板進行了簡要的說明。
第3章: 開發環境。本章介紹了后續章節實驗中用到的開發環境Logisim、Mars和Vivado,通過實例幫助學生掌握以上開發環境的設計流程。
第4章: 基礎實驗。本章通過循序漸進的實驗內容,由熟悉開發環境到設計計算機的功能部件,再到組裝CPU,要求學生最終完成支持7條典型指令的單周期CPU。這部分實驗對掌握課堂教學內容有重要的幫助,同時也是后續拓展實驗的基礎。
第5章: 拓展實驗。這部分內容只給出了設計要求,要求同學在完成基礎實驗的基礎上,全面運用所學知識,設計并實現多周期CPU、5級流水線CPU以及支持中斷的CPU。通過這部分實驗,培養學生綜合運用知識的能力和解決實際問題的能力。〖1〗計算機組成原理實驗教程前言[3]〖3〗本書實驗的設計可能不是最完美的,但卻是完成一款CPU設計不可缺少的環節。通過完成這些實驗,學生不僅能夠加深對理論知識的理解,而且能夠掌握CPU設計的基本方法。針對不同專業學生的要求,可以有針對性地選做本書中的實驗。
在本書的編寫過程中,許多同行和同學都給予了幫助,在此特別感謝清華大學的劉衛東教授和北京航空航天大學的高小鵬教授,本書第1章的內容就是借鑒兩位老師的講義編寫完成的。首都師范大學的張一馳、張珉琢、王崎3位同學對本書的校訂做出了一定貢獻,在此一并表示感謝。最后特別感謝依元素科技有限公司提供的Minisys開發板及相關資料。
由于作者水平有限,書中難免存在不妥之處,懇請廣大讀者批評指正。
關桂霞
2018年5月
目錄
第1章處理器設計/1
1.1MIPS指令系統1
1.1.1MIPS指令格式1
1.1.2MIPS寄存器2
1.1.3MIPS的指令集選擇2
1.2MIPS CPU設計12
1.2.1單周期CPU設計12
1.2.2多周期CPU設計23
1.2.35級流水線CPU設計31
1.3MIPS的中斷處理41
1.3.1MIPS的協處理器42
1.3.2MIPS的中斷處理43
第2章硬件平臺/44
2.1概述44
2.1.1Minisys開發板資源44
2.1.2主芯片XC7A100T的關鍵資源45
2.2板上存儲器45
2.2.1DDR3 SDRAM46
2.2.2SRAM47
2.2.3非易失的串行Flash48
2.3FPGA配置48
2.4基本I/O 49
2.4.1撥碼開關與LED燈49
2.4.2按鍵開關50
2.4.37段數碼管50
2.5其他接口52
2.5.1時鐘52
2.5.244矩陣鍵盤53
2.5.3VGA模塊53〖1〗計算機組成原理實驗教程目錄[3]〖3〗
2.5.4蜂鳴器54
2.5.5麥克風54
2.5.6USBUART橋54
2.5.7以太網54
2.5.8EJTAG接口55
第3章開發環境/57
3.1Logisim57
3.1.1設計分析57
3.1.2設計過程57
3.1.3仿真測試62
3.1.4封裝電路64
3.1.5電路應用65
3.2Mars 66
3.2.1打開Mars66
3.2.2編寫匯編程序67
3.2.3匯編67
3.2.4運行并調試68
3.3Vivado69
3.3.1FPGA開發流程69
3.3.2設計實例70
第4章基礎實驗/92
4.1多路選擇器的設計與實現92
4.1.1用Logisim實現2選1 多路選擇器93
4.1.2用Verilog語言設計2位數據的2選1多路選擇器98
4.2運算器的設計與實現118
4.2.1算術邏輯單元的設計與實現118
4.2.2寄存器文件的設計與實現127
4.3存儲器的設計與實現133
4.3.1Logisim模擬存儲器擴展133
4.3.2存儲器的IP核實現137
4.4單周期CPU的設計與實現144
4.4.1MIPS匯編程序144
4.4.2單周期CPU的設計與實現149
第5章拓展實驗/156
5.1多周期CPU的設計與實現156
5.25級流水線CPU設計與實現164
5.3支持中斷的多周期CPU設計與實現166
參考文獻/169