注冊(cè) | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)計(jì)算機(jī)組織與體系結(jié)構(gòu)自己動(dòng)手寫CPU

自己動(dòng)手寫CPU

自己動(dòng)手寫CPU

定 價(jià):¥99.00

作 者: 雷思磊 著
出版社: 電子工業(yè)出版社
叢編項(xiàng):
標(biāo) 簽: 計(jì)算機(jī)理論、基礎(chǔ)知識(shí) 計(jì)算機(jī)與互聯(lián)網(wǎng)

ISBN: 9787121239502 出版時(shí)間: 2014-09-01 包裝: 平裝
開本: 頁數(shù): 556 字?jǐn)?shù):  

內(nèi)容簡介

  本書使用Verilog HDL設(shè)計(jì)實(shí)現(xiàn)了一款兼容MIPS32指令集架構(gòu)的處理器――OpenMIPS。OpenMIPS處理器具有兩個(gè)版本,分別是教學(xué)版和實(shí)踐版。教學(xué)版的主要設(shè)計(jì)思想是盡量簡單,處理器的運(yùn)行情況比較理想化,與教科書相似,便于使用其進(jìn)行教學(xué)、學(xué)術(shù)研究和討論,也有助于學(xué)生理解課堂上講授的知識(shí)。實(shí)踐版的設(shè)計(jì)目標(biāo)是能完成特定功能,發(fā)揮實(shí)際作用。 全書分為三篇。第一篇是理論篇,介紹了指令集架構(gòu)、Verilog HDL的相關(guān)知識(shí)。第二篇是基礎(chǔ)篇,采用增量模型,實(shí)現(xiàn)了教學(xué)版OpenMIPS處理器。首先實(shí)現(xiàn)了僅能執(zhí)行一條指令的處理器,從這個(gè)最簡單的情況出發(fā),通過依次添加,實(shí)現(xiàn)邏輯操作指令、移位操作指令、空指令、移動(dòng)操作指令、算術(shù)操作指令、轉(zhuǎn)移指令、加載存儲(chǔ)指令、協(xié)處理器訪問指令、異常相關(guān)指令,最終實(shí)現(xiàn)了教學(xué)版OpenMIPS處理器。第三篇是進(jìn)階篇,通過為教學(xué)版OpenMIPS添加Wishbone總線接口,從而實(shí)現(xiàn)了實(shí)踐版OpenMIPS處理器,并與SDRAM控制器、GPIO模塊、Flash控制器、UART控制器、Wishbone總線互聯(lián)矩陣等模塊組成一個(gè)小型SOPC,然后下載到FPGA芯片以驗(yàn)證實(shí)現(xiàn)效果,最后為實(shí)踐版OpenMIPS處理器移植了嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-II。

作者簡介

  雷思磊,工程師,畢業(yè)于解放軍理工大學(xué),電子工程專業(yè),工作簡歷:2009年畢業(yè)至今工作于酒泉衛(wèi)星發(fā)射中心。

圖書目錄

第一篇 理論篇

第1章 處理器與MIPS 2
1.1 計(jì)算機(jī)的簡單模型 2
1.1.1 計(jì)算機(jī)的簡單組成模型 2
1.1.2 計(jì)算機(jī)的簡單使用模型 3
1.2 架構(gòu)與指令集 4
1.2.1 CISC與RISC 4
1.2.2 主要的幾種ISA 5
1.3 MIPS指令集架構(gòu)的演變 6
1.4 MIPS32指令集架構(gòu)簡介 9
1.4.1 數(shù)據(jù)類型 9
1.4.2 寄存器 9
1.4.3 字節(jié)次序 10
1.4.4 指令格式 11
1.4.5 指令集 11
1.4.6 尋址方式 13
1.4.7 協(xié)處理器CP0 13
1.4.8 異常 14
1.5 本書的目標(biāo)與組織方式 14
第2章 可編程邏輯器件與
Verilog HDL 16
2.1 可編程邏輯器件概述 16
2.2 基于PLD的數(shù)字系統(tǒng)設(shè)計(jì)流程 18
2.2.1 設(shè)計(jì)輸入 19
2.2.2 綜合 20
2.2.3 布局布線 20
2.2.4 下載 20
2.2.5 仿真 20
2.2.6 工具介紹 21
2.3 Verilog HDL簡介 21
2.4 Verilog HDL中模塊的結(jié)構(gòu) 22
2.5 Verilog HDL基本要素 24
2.5.1 常量 24
2.5.2 變量聲明與數(shù)據(jù)類型 24
2.5.3 向量 26
2.5.4 運(yùn)算符 26
2.6 Verilog HDL行為語句 29
2.6.1 過程語句 29
2.6.2 賦值語句 31
2.6.3 條件語句 32
2.6.4 循環(huán)語句 34
2.6.5 編譯指示語句 35
2.6.6 行為語句的可綜合性 37
2.7 電路設(shè)計(jì)舉例 38
2.8 仿真 41
2.8.1 系統(tǒng)函數(shù) 42
2.8.2 Test Bench 43
2.8.3 ModelSim仿真 45
2.9 本章小結(jié) 48

第二篇 基礎(chǔ)篇

第3章 教學(xué)版OpenMIPS處理器
藍(lán)圖 50
3.1 系統(tǒng)設(shè)計(jì)目標(biāo) 50
3.1.1 設(shè)計(jì)目標(biāo) 50
3.1.2 五級(jí)整數(shù)流水線 50
3.1.3 指令執(zhí)行周期 52
3.2 教學(xué)版OpenMIPS處理器接口 53
3.3 文件說明 54
3.4 實(shí)現(xiàn)方法 55
第4章 第一條指令ori的實(shí)現(xiàn) 58
4.1 ori指令說明 58
4.2 流水線結(jié)構(gòu)的建立 59
4.2.1 流水線的簡單模型 59
4.2.2 原始的OpenMIPS五級(jí)
流水線結(jié)構(gòu) 60
4.2.3 一些宏定義 62
4.2.4 取指階段的實(shí)現(xiàn) 63
4.2.5 譯碼階段的實(shí)現(xiàn) 65
4.2.6 執(zhí)行階段的實(shí)現(xiàn) 74
4.2.7 訪存階段的實(shí)現(xiàn) 78
4.2.8 回寫階段的實(shí)現(xiàn) 81
4.2.9 頂層模塊OpenMIPS
的實(shí)現(xiàn) 81
4.3 驗(yàn)證OpenMIPS實(shí)現(xiàn)效果 85
4.3.1 指令存儲(chǔ)器ROM的實(shí)現(xiàn) 85
4.3.2 最小SOPC的實(shí)現(xiàn) 87
4.3.3 編寫測試程序 88
4.3.4 建立Test Bench文件 89
4.3.5 使用ModelSim檢驗(yàn)OpenMIPS實(shí)現(xiàn)效果 90
4.4 MIPS編譯環(huán)境的建立 92
4.4.1 VisualBox的安裝與設(shè)置 93
4.4.2 GNU工具鏈的安裝 96
4.4.3 使用GNU工具進(jìn)行編譯 97
4.4.4 使用GNU工具進(jìn)行鏈接 99
4.4.5 得到ROM初始化文件 102
4.4.6 編寫Makefile文件 103
4.5 第一條指令實(shí)現(xiàn)小結(jié) 105
第5章 邏輯、移位操作與空指令
的實(shí)現(xiàn) 107
5.1 流水線數(shù)據(jù)相關(guān)問題 107
5.2 OpenMIPS對(duì)數(shù)據(jù)相關(guān)問題的
解決措施 111
5.3 測試數(shù)據(jù)相關(guān)問題解決效果 115
5.4 邏輯、移位操作與空指令說明 115
5.5 修改OpenMIPS以實(shí)現(xiàn)邏輯、
移位操作與空指令 119
5.5.1 修改譯碼階段的ID模塊 120
5.5.2 修改執(zhí)行階段的EX模塊 127
5.6 測試程序1――測試邏輯
操作實(shí)現(xiàn)效果 129
5.7 測試程序2――測試移位
操作與空指令實(shí)現(xiàn)效果 130
5.8 小結(jié) 131
第6章 移動(dòng)操作指令的實(shí)現(xiàn) 132
6.1 移動(dòng)操作指令說明 132
6.2 移動(dòng)操作指令實(shí)現(xiàn)思路 133
6.2.1 實(shí)現(xiàn)思路 133
6.2.2 新的數(shù)據(jù)相關(guān)情況的
解決 135
6.2.3 系統(tǒng)結(jié)構(gòu)的修改 136
6.3 修改OpenMIPS以實(shí)現(xiàn)移動(dòng)
操作指令 137
6.3.1 HI、LO寄存器的實(shí)現(xiàn) 137
6.3.2 修改譯碼階段的ID模塊 138
6.3.3 修改執(zhí)行階段 141
6.3.4 修改訪存階段 146
6.3.5 修改回寫階段 149
6.3.6 修改OpenMIPS頂層
模塊 149
6.4 測試程序 150
第7章 算術(shù)操作指令的實(shí)現(xiàn) 152
7.1 簡單算術(shù)操作指令說明 153
7.2 簡單算術(shù)操作指令實(shí)現(xiàn)思路 156
7.3 修改OpenMIPS以實(shí)現(xiàn)簡單
算術(shù)操作指令 157
7.3.1 修改譯碼階段的ID模塊 157
7.3.2 修改執(zhí)行階段的EX模塊 164
7.4 測試簡單算術(shù)操作指令
實(shí)現(xiàn)效果 171
7.5 流水線暫停機(jī)制的設(shè)計(jì)
與實(shí)現(xiàn) 174
7.5.1 流水線暫停機(jī)制設(shè)計(jì) 174
7.5.2 流水線暫停機(jī)制實(shí)現(xiàn) 175
7.6 乘累加、乘累減指令說明 180
7.7 乘累加、乘累減指令實(shí)現(xiàn)思路 181
7.7.1 實(shí)現(xiàn)思路 181
7.7.2 系統(tǒng)結(jié)構(gòu)的修改 181
7.8 修改OpenMIPS以實(shí)現(xiàn)乘
累加、乘累減指令 182
7.8.1 修改譯碼階段的ID模塊 182
7.8.2 修改執(zhí)行階段的EX模塊 184
7.8.3 修改EX/MEM模塊 189
7.8.4 修改OpenMIPS模塊 190
7.9 測試乘累加、乘累減指令
實(shí)現(xiàn)效果 190
7.10 除法指令說明 191
7.11 除法指令實(shí)現(xiàn)思路 192
7.11.1 試商法 192
7.11.2 實(shí)現(xiàn)思路 193
7.11.3 系統(tǒng)結(jié)構(gòu)的修改 193
7.12 修改OpenMIPS以實(shí)現(xiàn)
除法指令 194
7.12.1 增加DIV模塊 194
7.12.2 修改譯碼階段的ID
模塊 199
7.12.3 修改執(zhí)行階段的EX
模塊 200
7.12.4 修改OpenMIPS模塊 204
7.13 測試除法指令實(shí)現(xiàn)效果 204
7.14 數(shù)據(jù)流圖的修改 205
第8章 轉(zhuǎn)移指令的實(shí)現(xiàn) 206
8.1 延遲槽 206
8.2 轉(zhuǎn)移指令說明 207
8.3 轉(zhuǎn)移指令實(shí)現(xiàn)思路 210
8.3.1 實(shí)現(xiàn)思路 210
8.3.2 數(shù)據(jù)流圖的修改 210
8.3.3 系統(tǒng)結(jié)構(gòu)的修改 211
8.4 修改OpenMIPS以實(shí)現(xiàn)
轉(zhuǎn)移指令 212
8.4.1 修改取指階段的PC模塊 212
8.4.2 修改譯碼階段 213
8.4.3 修改執(zhí)行階段的EX 模塊 223
8.4.4 修改OpenMIPS模塊 225
8.5 測試轉(zhuǎn)移指令的實(shí)現(xiàn)效果 225
8.5.1 測試跳轉(zhuǎn)指令 225
8.5.2 測試分支指令 227
第9章 加載存儲(chǔ)指令的實(shí)現(xiàn) 230
9.1 加載存儲(chǔ)指令說明 230
9.1.1 加載指令lb、lbu、lh、
lhu、lw說明 230
9.1.2 存儲(chǔ)指令sb、sh、sw
說明 231
9.1.3 加載存儲(chǔ)指令用法示例 232
9.1.4 加載指令lwl、lwr說明 233
9.1.5 存儲(chǔ)指令swl、swr說明 235
9.2 加載存儲(chǔ)指令實(shí)現(xiàn)思路 238
9.2.1 實(shí)現(xiàn)思路 238
9.2.2 數(shù)據(jù)流圖的修改 239
9.2.3 系統(tǒng)結(jié)構(gòu)的修改 240
9.3 修改OpenMIPS以實(shí)現(xiàn)加載
存儲(chǔ)指令 240
9.3.1 修改譯碼階段 240
9.3.2 修改執(zhí)行階段 247
9.3.3 修改訪存階段 249
9.3.4 修改OpenMIPS頂層模塊 260
9.4 修改最小SOPC 261
9.4.1 添加數(shù)據(jù)存儲(chǔ)器RAM 262
9.4.2 修改最小SOPC 264
9.5 測試程序 265
9.6 鏈接加載指令ll、條件存儲(chǔ)
指令sc說明 267
9.7 ll、sc指令實(shí)現(xiàn)思路 269
9.7.1 實(shí)現(xiàn)思路 269
9.7.2 數(shù)據(jù)流圖的修改 270
9.7.3 系統(tǒng)結(jié)構(gòu)的修改 271
9.8 修改OpenMIPS以實(shí)現(xiàn)ll、
sc指令 271
9.8.1 LLbit寄存器的實(shí)現(xiàn) 271
9.8.2 修改譯碼階段的ID模塊 273
9.8.3 修改訪存階段 275
9.8.4 修改OpenMIPS模塊 279
9.9 測試ll、sc指令實(shí)現(xiàn)效果 279
9.10 load相關(guān)問題 281
9.10.1 load相關(guān)問題介紹 281
9.10.2 解決方法 281
9.11 修改OpenMIPS以解決load
相關(guān)問題 283
9.11.1 修改譯碼階段的ID
模塊 283
9.11.2 修改OpenMIPS模塊 284
9.12 測試load相關(guān)問題解決效果 285
9.13 小結(jié) 286
第10章 協(xié)處理器訪問指令的實(shí)現(xiàn) 287
10.1 協(xié)處理器介紹 287
10.2 協(xié)處理器CP0中的寄存器 288
10.3 協(xié)處理器CP0的實(shí)現(xiàn) 295
10.4 協(xié)處理器訪問指令說明 300
10.5 協(xié)處理器訪問指令實(shí)現(xiàn)思路 300
10.5.1 實(shí)現(xiàn)思路 300
10.5.2 數(shù)據(jù)流圖的修改 301
10.5.3 系統(tǒng)結(jié)構(gòu)的修改 301
10.6 修改OpenMIPS以實(shí)現(xiàn)協(xié)
處理器訪問指令 303
10.6.1 修改譯碼階段 303
10.6.2 修改執(zhí)行階段 305
10.6.3 修改訪存階段 311
10.6.4 修改OpenMIPS模塊 314
10.7 測試程序 314
第11章 異常相關(guān)指令的實(shí)現(xiàn) 316
11.1 MIPS32架構(gòu)中定義的異常
類型 316
11.2 精確異常 318
11.3 異常處理過程 319
11.4 異常相關(guān)指令介紹 321
11.4.1 自陷指令 321
11.4.2 系統(tǒng)調(diào)用指令syscall 324
11.4.3 異常返回指令eret 325
11.5 異常處理實(shí)現(xiàn)思路 325
11.5.1 實(shí)現(xiàn)思路 325
11.5.2 修改數(shù)據(jù)流圖 326
11.5.3 修改系統(tǒng)結(jié)構(gòu) 326
11.6 修改OpenMIPS以實(shí)現(xiàn)異常
處理 328
11.6.1 修改取指階段 328
11.6.2 修改譯碼階段 330
11.6.3 修改執(zhí)行階段 339
11.6.4 修改訪存階段 346
11.6.5 修改協(xié)處理器CP0 352
11.6.6 修改控制模塊CTRL 355
11.6.7 修改OpenMIPS 357
11.7 再次修改最小SOPC 358
11.8 測試程序 359
11.8.1 測試程序1――測試
系統(tǒng)調(diào)用異常 359
11.8.2 測試程序2――測試
自陷異常 361
11.8.3 測試程序3――測試
時(shí)鐘中斷 364
11.9 教學(xué)版OpenMIPS處理器
實(shí)現(xiàn)小結(jié) 366

第三篇 進(jìn)階篇

第12章 實(shí)踐版OpenMIPS處理器
設(shè)計(jì)與實(shí)現(xiàn) 368
12.1 實(shí)踐版OpenMIPS處理器的
設(shè)計(jì)目標(biāo) 368
12.2 Wishbone總線介紹 370
12.2.1 Wishbone總線接口
說明 370
12.2.2 Wishbone總線單次
讀操作的過程 372
12.2.3 Wishbone總線單次寫
操作的過程 373
12.2.4 SEL_O/SEL_I信號(hào)說明 374
12.3 實(shí)踐版OpenMIPS處理器
接口 375
12.4 實(shí)踐版OpenMIPS處理器的
實(shí)現(xiàn)思路 376
12.4.1 實(shí)現(xiàn)思路 376
12.4.2 修改系統(tǒng)結(jié)構(gòu) 377
12.5 從教學(xué)版OpenMIPS到
實(shí)踐版OpenMIPS 378
12.5.1 Wishbone總線接口模塊
的實(shí)現(xiàn) 378
12.5.2 修改CTRL模塊 384
12.5.3 修改OpenMIPS頂層
模塊 386
12.6 實(shí)踐版OpenMIPS處理器
實(shí)現(xiàn)小結(jié) 386
第13章 基于實(shí)踐版OpenMIPS的
小型SOPC 387
13.1 小型SOPC的結(jié)構(gòu) 387
13.2 Wishbone總線互聯(lián)
矩陣WB_CONMAX 388
13.3 GPIO 390
13.4 UART控制器 392
13.4.1 UART簡介 392
13.4.2 UART16550 IP核介紹 394
13.5 Flash控制器 398
13.5.1 Flash簡介 398
13.5.2 Flash控制器的設(shè)計(jì) 399
13.5.3 Flash控制器的實(shí)現(xiàn) 400
13.6 SDRAM控制器 403
13.6.1 SDRAM簡介 403
13.6.2 SDRAM CONTROLLER
IP核 409
13.7 實(shí)現(xiàn)基于實(shí)踐版OpenMIPS
的小型SOPC 412
13.8 本章小結(jié) 423
第14章 驗(yàn)證實(shí)踐版OpenMIPS
處理器 424
14.1 DE2平臺(tái)簡介 424
14.2 測試需要的硬件連接 425
14.3 QuartusII工程建立 426
14.4 測試步驟說明 430
14.5 測試一――GPIO實(shí)驗(yàn) 431
14.5.1 測試內(nèi)容 431
14.5.2 測試程序 431
14.5.3 編譯測試程序 432
14.5.4 將測試程序?qū)懭?
Flash芯片 433
14.5.5 下載小型SOPC
到DE2 435
14.5.6 測試效果 435
14.6 測試二――UART實(shí)驗(yàn) 435
14.6.1 測試內(nèi)容 435
14.6.2 測試程序 436
14.6.3 測試效果 438
14.7 測試三――模擬操作系統(tǒng)的
加載過程 439
14.7.1 測試內(nèi)容 439
14.7.2 測試程序BootLoader 439
14.7.3 測試程序SimpleOS 443
14.7.4 將測試程序?qū)懭隖lash 446
14.7.5 測試效果 448
14.8 本章小結(jié) 449
第15章 為OpenMIPS處理器
移植μC/OS-II 450
15.1 為什么需要操作系統(tǒng) 450
15.2 嵌入式實(shí)時(shí)操作系統(tǒng)介紹 451
15.3 μC/OS-II簡介 452
15.4 μC/OS-II特點(diǎn) 452
15.5 μC/OS-II的幾個(gè)概念 454
15.5.1 任務(wù) 454
15.5.2 任務(wù)調(diào)度 456
15.5.3 任務(wù)切換 456
15.5.4 μC/OS-II的中斷處理 457
15.5.5 時(shí)鐘節(jié)拍 457
15.5.6 μC/OS-II的初始化 458
15.5.7 μC/OS-II的啟動(dòng) 458
15.6 μC/OS-II的基本功能 458
15.6.1 任務(wù)間的通信與同步 459
15.6.2 任務(wù)管理 459
15.6.3 時(shí)間管理 459
15.6.4 內(nèi)存管理 460
15.7 μC/OS-II的文件體系 460
15.8 μC/OS-II的移植條件 461
15.9 C語言中使用匯編代碼 463
15.10 MIPS函數(shù)調(diào)用規(guī)范 465
15.10.1 寄存器使用規(guī)范 465
15.10.2 參數(shù)傳遞 466
15.10.3 函數(shù)返回值 466
15.10.4 堆棧布局 467
15.10.5 示例 468
15.11 μC/OS-II在OpenMIPS
處理器上的移植 470
15.11.1 文件目錄的建立 470
15.11.2 修改os_cpu.h文件 473
15.11.3 修改os_cpu_a.S文件 474
15.11.4 修改os_cpu_c.c文件 496
15.12 測試程序 500
15.12.1 創(chuàng)建openmips.h文件 500
15.12.2 創(chuàng)建openmips.c文件 502
15.13 編譯指示文件的建立 508
15.14 OpenMIPS處理器運(yùn)行
移植后的μC/OS-II 515
15.15 本章小結(jié) 516
附錄A 教學(xué)版OpenMIPS各個(gè)模塊
的接口說明 517
A.1 PC模塊接口說明 517
A.2 IF/ID模塊接口說明 518
A.3 ID模塊接口說明 518
A.4 Regfile模塊接口說明 520
A.5 ID/EX模塊接口說明 520
A.6 EX模塊接口說明 521
A.7 DIV模塊接口說明 524
A.8 EX/MEM模塊接口說明 525
A.9 MEM模塊接口說明 527
A.10 MEM/WB模塊接口說明 529
A.11 CP0模塊接口說明 530
A.12 LLbit模塊接口說明 532
A.13 HILO模塊接口說明 532
A.14 CTRL模塊接口說明 533
附錄B OpenMIPS實(shí)現(xiàn)的所有
指令及對(duì)應(yīng)的機(jī)器碼 534
B.1 邏輯操作指令 534
B.2 移位操作指令 534
B.3 移動(dòng)操作指令 535
B.4 算術(shù)操作指令 535

















B.5 轉(zhuǎn)移指令 536
B.6 加載存儲(chǔ)指令 536
B.7 協(xié)處理器訪問指令 537
B.8 異常相關(guān)指令 537
B.9 空指令及其他指令 537
參考文獻(xiàn) 538

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)