手機處理器性能天梯排行秒懂 手機CPU天梯圖2018年2月最新版
/ 02-05
BcpuApi.dll
522KB / 01-25
瑞星CPU漏洞檢測修復工具 v1.0.0.3 官方綠色免費版
103MB / 01-22
CPU Speed Professional(CPU測試軟件) v3.0.4.5 綠色英文版
1.4MB / 01-18
intel英特爾cpu漏洞修復檢測教程
/ 01-17
cpu漏洞檢測工具InSpectre #2官方免費版
84KB / 01-17
蘋果推送iOS 11.2.2、macOS 10.13.2更新,主要為緩解CPU漏洞
/ 01-09
金山毒霸CPU漏洞免疫工具 v1.0 官方綠色免費版
1.60MB / 01-08
CPU漏洞免疫工具 v1.0 官方綠色免費版
10.1MB / 01-08
手機處理器性能排行榜 手機CPU天梯圖2018年1月最新版
/ 01-04
-
路由技術第一階 PDF掃描版[45.11M] 電腦技術 / 45.11MB
-
RISC-V中文手冊 PDF完整版 電腦技術 / 7.76MB
-
-
-
玄鐵RISC-V處理器入門與實戰(zhàn) 完整版pdf 電腦技術 / 7.61MB
-
看雪精華2023合集(看雪論壇精華23期) 電腦技術 / 10GB
-
計算機組成原理試題庫(含答案) 完整版PDF 電腦技術 / 1.21MB
-
操作系統(tǒng)的基本原理與簡單實現(xiàn) 完整版PDF 電腦技術 / 3.62MB
-
OllyDbg完全教程高清文字PDF格式(完美排版) 電腦技術 / 775KB
-
OllyICE使用教程 OllyICE反匯編教程及匯編命令詳解 電腦技術 / 509KB
詳情介紹
《自己動手寫CPU》使用Verilog HDL 設計實現(xiàn)了一款兼容MIPS32指令集架構的處理器——OpenMIPS。OpenMIPS 處理器具有兩個版本,分別是教學版和實踐版。教學版的主要設計思想是盡量簡單,處理器的運行情況比較理想化,與教科書相似,便于使用其進行教學、學術研究和討論,也有助于學生理解課堂上講授的知識。實踐版的設計目標是能完成特定功能,發(fā)揮實際作用。
《自己動手寫CPU》分為三篇。第一篇是理論篇,介紹了指令集架構、Verilog HDL的相關知識。第二篇是基礎篇,采用增量模型,實現(xiàn)了教學版OpenMIPS處理器。首先實現(xiàn)了僅能執(zhí)行一條指令的處理器,從這個最簡單的情況出發(fā),通過依次添加,實現(xiàn)邏輯操作指令、移位操作指令、空指令、移動操作指令、算術操作指令、轉移指令、加載存儲指令、協(xié)處理器訪問指令、異常相關指令,最終實現(xiàn)了教學版OpenMIPS處理器。第三篇是進階篇,通過為教學版OpenMIPS添加Wishbone總線接口,從而實現(xiàn)了實踐版OpenMIPS處理器,并與SDRAM控制器、GPIO模塊、Flash控制器、UART控制器、Wishbone總線互聯(lián)矩陣等模塊組成一個小型SOPC,然后下載到FPGA芯片以驗證實現(xiàn)效果,最后為實踐版OpenMIPS處理器移植了嵌入式實時操作系統(tǒng)μC/OS-II。
《自己動手寫CPU》適合計算機專業(yè)的學生、FPGA開發(fā)人員、處理器設計者、嵌入式系統(tǒng)應用開發(fā)工程師、MIPS平臺開發(fā)人員以及對處理器內部的實現(xiàn)感興趣的讀者閱讀,也可以作為高等院校計算機原理、計算機體系結構等課程的實踐參考書。
目錄
第一篇 理論篇
第1章 處理器與MIPS 2
1.1 計算機的簡單模型 2
1.1.1 計算機的簡單組成模型 2
1.1.2 計算機的簡單使用模型 3
1.2 架構與指令集 4
1.2.1 CISC與RISC 4
1.2.2 主要的幾種ISA 5
1.3 MIPS指令集架構的演變 6
1.4 MIPS32指令集架構簡介 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 本書的目標與組織方式 14
第2章 可編程邏輯器件與Verilog HDL 16
2.1 可編程邏輯器件概述 16
2.2 基于PLD的數(shù)字系統(tǒng)設計流程 18
2.2.1 設計輸入 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中模塊的結構 22
2.5 Verilog HDL基本要素 24
2.5.1 常量 24
2.5.2 變量聲明與數(shù)據(jù)類型 24
2.5.3 向量 26
2.5.4 運算符 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 電路設計舉例 38
2.8 仿真 41
2.8.1 系統(tǒng)函數(shù) 42
2.8.2 Test Bench 43
2.8.3 ModelSim仿真 45
2.9 本章小結 48
第二篇 基礎篇
第3章 教學版OpenMIPS處理器藍圖 50
3.1 系統(tǒng)設計目標 50
3.1.1 設計目標 50
3.1.2 五級流水線 50
3.1.3 指令執(zhí)行周期 52
3.2 教學版OpenMIPS處理器接口 53
3.3 文件說明 54
3.4 實現(xiàn)方法 55
第4章 第一條指令ori的實現(xiàn) 58
4.1 ori指令說明 58
4.2 流水線結構的建立 59
4.2.1 流水線的簡單模型 59
4.2.2 原始的OpenMIPS五級流水線結構 60
4.2.3 一些宏定義 62
4.2.4 取指階段的實現(xiàn) 63
4.2.5 譯碼階段的實現(xiàn) 65
4.2.6 執(zhí)行階段的實現(xiàn) 74
4.2.7 訪存階段的實現(xiàn) 78
4.2.8 回寫階段的實現(xiàn) 81
4.2.9 頂層模塊OpenMIPS的實現(xiàn) 81
4.3 驗證OpenMIPS實現(xiàn)效果 85
4.3.1 指令存儲器ROM的實現(xiàn) 85
4.3.2 最小SOPC的實現(xiàn) 87
4.3.3 編寫測試程序 88
4.3.4 建立Test Bench文件 89
4.3.5 使用ModelSim檢驗OpenMIPS實現(xiàn)效果 90
4.4 MIPS編譯環(huán)境的建立 92
4.4.1 VisualBox的安裝與設置 93
4.4.2 GNU工具鏈的安裝 96
4.4.3 使用GNU工具進行編譯 97
4.4.4 使用GNU工具進行鏈接 99
4.4.5 得到ROM初始化文件 102
4.4.6 編寫Makefile文件 103
4.5 第一條指令實現(xiàn)小結 105
第5章 邏輯、移位操作與空指令的實現(xiàn) 107
5.1 流水線數(shù)據(jù)相關問題 107
5.2 OpenMIPS對數(shù)據(jù)相關問題的解決措施 111
5.3 測試數(shù)據(jù)相關問題的解決效果 115
5.4 邏輯、移位操作與空指令說明 115
5.5 修改OpenMIPS以實現(xiàn)邏輯、移位操作與空指令 119
5.5.1 修改譯碼階段的ID模塊 120
5.5.2 修改執(zhí)行階段的EX模塊 127
5.6 測試程序1——測試邏輯操作實現(xiàn)效果 129
5.7 測試程序2——測試移位操作與空指令實現(xiàn)效果 130
5.8 小結 131
第6章 移動操作指令的實現(xiàn) 132
6.1 移動操作指令說明 132
6.2 移動操作指令實現(xiàn)思路 133
6.2.1 新的數(shù)據(jù)相關情況的解決 135
6.2.2 系統(tǒng)結構的修改 136
6.3 修改OpenMIPS以實現(xiàn)移動操作指令 137
6.3.1 HI、LO寄存器的實現(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章 算術操作指令的實現(xiàn) 152
7.1 簡單算術操作指令說明 153
7.2 簡單算術操作指令實現(xiàn)思路 156
7.3 修改OpenMIPS以實現(xiàn)簡單算術操作指令 157
7.3.1 修改譯碼階段的ID模塊 157
7.3.2 修改執(zhí)行階段的EX模塊 164
7.4 測試簡單算術操作指令實現(xiàn)效果 171
7.5 流水線暫停機制的設計與實現(xiàn) 174
7.5.1 流水線暫停機制的設計 174
7.5.2 流水線暫停機制的實現(xiàn) 175
7.6 乘累加、乘累減指令說明 180
7.7 乘累加、乘累減指令實現(xiàn)思路 181
7.8 修改OpenMIPS以實現(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 測試乘累加、乘累減指令實現(xiàn)效果 190
7.10 除法指令說明 191
7.11 除法指令實現(xiàn)思路 192
7.11.1 試商法 192
7.11.2 實現(xiàn)思路 193
7.11.3 系統(tǒng)結構的修改 193
7.12 修改OpenMIPS以實現(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 測試除法指令實現(xiàn)效果 204
7.14 數(shù)據(jù)流圖的修改 205
第8章 轉移指令的實現(xiàn) 206
8.1 延遲槽 206
8.2 轉移指令說明 207
8.3 轉移指令實現(xiàn)思路 210
8.3.1 實現(xiàn)思路 210
8.3.2 數(shù)據(jù)流圖的修改 210
8.3.3 系統(tǒng)結構的修改 211
8.4 修改OpenMIPS以實現(xiàn)轉移指令 212
8.4.1 修改取指階段的PC模塊 212
8.4.2 修改譯碼階段 213
8.4.3 修改執(zhí)行階段的EX模塊 223
8.4.4 修改OpenMIPS模塊 225
8.5 測試轉移指令的實現(xiàn)效果 225
8.5.1 測試跳轉指令 225
8.5.2 測試分支指令 227
第9章 加載存儲指令的實現(xiàn) 230
9.1 加載存儲指令說明 230
9.1.1 加載指令lb、lbu、lh、lhu、lw說明 230
9.1.2 存儲指令sb、sh、sw說明 231
9.1.3 加載存儲指令用法示例 232
9.1.4 加載指令lwl、lwr說明 233
9.1.5 存儲指令swl、swr說明 235
9.2 加載存儲指令實現(xiàn)思路 238
9.2.1 數(shù)據(jù)流圖的修改 239
9.2.2 系統(tǒng)結構的修改 240
9.3 修改OpenMIPS以實現(xiàn)加載存儲指令 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ù)存儲器RAM 262
9.4.2 修改最小SOPC 264
9.5 測試程序 265
9.6 鏈接加載指令ll、條件存儲指令sc說明 267
9.7 ll、sc指令實現(xiàn)思路 269
9.7.1 ll、sc指令實現(xiàn)思路 269
9.7.2 數(shù)據(jù)流圖的修改 270
9.7.3 系統(tǒng)結構的修改 271
9.8 修改OpenMIPS以實現(xiàn)ll、sc指令 271
9.8.1 LLbit寄存器的實現(xiàn) 271
9.8.2 修改譯碼階段的ID模塊 273
9.8.3 修改訪存階段 275
9.8.4 修改OpenMIPS模塊 279
9.9 測試ll、sc指令實現(xiàn)效果 279
9.10 load相關問題 281
9.10.1 load相關問題介紹 281
9.10.2 解決方法 281
9.11 修改OpenMIPS以解決load相關問題 283
9.11.1 修改譯碼階段的ID模塊 283
9.11.2 修改OpenMIPS模塊 284
9.12 測試load相關問題解決效果 285
9.13 小結 286
第10章 協(xié)處理器訪問指令的實現(xiàn) 287
10.1 協(xié)處理器介紹 287
10.2 協(xié)處理器CP0中的寄存器 288
10.3 協(xié)處理器CP0的實現(xiàn) 295
10.4 協(xié)處理器訪問指令說明 300
10.5 協(xié)處理器訪問指令實現(xiàn)思路 300
10.5.1 實現(xiàn)思路 300
10.5.2 數(shù)據(jù)流圖的修改 301
10.5.3 系統(tǒng)結構的修改 301
10.6 修改OpenMIPS以實現(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章 異常相關指令的實現(xiàn) 316
11.1 MIPS32架構中定義的異常類型 316
11.2 精確異常 318
11.3 異常處理過程 319
11.4 異常相關指令介紹 321
11.4.1 自陷指令 321
11.4.2 系統(tǒng)調用指令syscall 324
11.4.3 異常返回指令eret 325
11.5 異常處理實現(xiàn)思路 325
11.5.1 實現(xiàn)思路 325
11.5.2 修改數(shù)據(jù)流圖 326
11.5.3 修改系統(tǒng)結構 326
11.6 修改OpenMIPS以實現(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)調用異常 359
11.8.2 測試程序2——測試自陷異常 361
11.8.3 測試程序3——測試時鐘中斷 364
11.9 教學版OpenMIPS處理器實現(xiàn)小結 366
第三篇 進階篇
第12章 實踐版OpenMIPS處理器設計與實現(xiàn) 368
12.1 實踐版OpenMIPS處理器的設計目標 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信號說明 374
12.3 實踐版OpenMIPS處理器接口 375
12.4 實踐版OpenMIPS處理器的實現(xiàn)思路 376
12.5 從教學版OpenMIPS到實踐版OpenMIPS 378
12.5.1 Wishbone總線接口模塊的實現(xiàn) 378
12.5.2 修改CTRL模塊 384
12.5.3 修改OpenMIPS頂層模塊 386
12.6 實踐版OpenMIPS處理器實現(xiàn)小結 386
第13章 基于實踐版OpenMIPS的小型SOPC 387
13.1 小型SOPC的結構 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控制器的設計 399
13.5.3 Flash控制器的實現(xiàn) 400
13.6 SDRAM控制器 403
13.6.1 SDRAM簡介 403
13.6.2 SDRAM CONTROLLER IP核 409
13.7 實現(xiàn)基于實踐版OpenMIPS的小型SOPC 412
13.8 本章小結 423
第14章 驗證實踐版OpenMIPS處理器 424
14.1 DE2平臺簡介 424
14.2 測試需要的硬件連接 425
14.3 QuartusII工程建立 426
14.4 測試步驟說明 430
14.5 測試一——GPIO實驗 431
14.5.1 測試內容 431
14.5.2 測試程序 431
14.5.3 編譯測試程序 432
14.5.4 將測試程序寫入Flash芯片 433
14.5.5 下載小型SOPC到DE2 435
14.5.6 測試效果 435
14.6 測試二——UART實驗 435
14.6.1 測試內容 435
14.6.2 測試程序 436
14.6.3 測試效果 438
14.7 測試三——模擬操作系統(tǒng)的加載過程 439
14.7.1 測試內容 439
14.7.2 測試程序BootLoader 439
14.7.3 測試程序SimpleOS 443
14.7.4 將測試程序寫入Flash 446
14.7.5 測試效果 448
14.8 本章小結 449
第15章 為OpenMIPS處理器移植μC/OS-II 450
15.1 為什么需要操作系統(tǒng) 450
15.2 嵌入式實時操作系統(tǒng)介紹 451
15.3 μC/OS-II簡介 452
15.4 μC/OS-II特點 452
15.5 μC/OS-II的幾個概念 454
15.5.1 任務 454
15.5.2 任務調度 456
15.5.3 任務切換 456
15.5.4 μC/OS-II的中斷處理 457
15.5.5 時鐘節(jié)拍 457
15.5.6 μC/OS-II的初始化 458
15.5.7 μC/OS-II的啟動 458
15.6 μC/OS-II的基本功能 458
15.6.1 任務間的通信與同步 459
15.6.2 任務管理 459
15.6.3 時間管理 459
15.6.4 內存管理 460
15.7 μC/OS-II的文件體系 460
15.8 μC/OS-II的移植條件 461
15.9 C語言中使用匯編代碼 463
15.10 MIPS函數(shù)調用規(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處理器運行移植后的μC/OS-II 515
15.15 本章小結 516
附錄A 教學版OpenMIPS各個模塊的接口說明 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實現(xiàn)的所有指令及對應的機器碼 534
B.1 邏輯操作指令 534
B.2 移位操作指令 534
B.3 移動操作指令 535
B.4 算術操作指令 535
B.5 轉移指令 536
B.6 加載存儲指令 536
B.7 協(xié)處理器訪問指令 537
B.8 異常相關指令 537
B.9 空指令及其他指令 537
參考文獻 538
下載地址
人氣書籍
現(xiàn)代操作系統(tǒng)(原書第3版) 高清PDF掃描版[83MB]
計算機操作系統(tǒng)(第四版) + 學習指導與題解 (湯小丹) 高清pdf掃描
O'Reilly:學習OpenCV(中文版) PDF 掃描版[44M]
計算機科學叢書:計算機組成原理 中文pdf掃描版[124MB]
性能測試進階指南——LoadRunner11實戰(zhàn) (陳霽) PDF掃描版
手把手教你設計CPU——RISC-V處理器篇 高清pdf完整版[228MB]
電腦入門完全自學手冊(成秀蓮編著) PDF掃描版[51.5M]
數(shù)據(jù)恢復技術深度揭秘 PDF掃描版[114MB]
計算機組成:結構化方法(原書第6版) 完整中文pdf掃描版[145MB]
計算機是怎樣跑起來的 ([日]矢澤久雄) 中文pdf完整版[22MB]
下載聲明
☉ 解壓密碼:www.dbjr.com.cn 就是本站主域名,希望大家看清楚,[ 分享碼的獲取方法 ]可以參考這篇文章
☉ 推薦使用 [ 迅雷 ] 下載,使用 [ WinRAR v5 ] 以上版本解壓本站軟件。
☉ 如果這個軟件總是不能下載的請在評論中留言,我們會盡快修復,謝謝!
☉ 下載本站資源,如果服務器暫不能下載請過一段時間重試!或者多試試幾個下載地址
☉ 如果遇到什么問題,請評論留言,我們定會解決問題,謝謝大家支持!
☉ 本站提供的一些商業(yè)軟件是供學習研究之用,如用于商業(yè)用途,請購買正版。
☉ 本站提供的自己動手寫CPU (雷思磊 著) 完整版PDF[103MB]資源來源互聯(lián)網(wǎng),版權歸該下載資源的合法擁有者所有。