欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

自己動手寫CPU (雷思磊 著) 完整版PDF[103MB]

自己動手寫CPU下載

  • 書籍大小:103MB
  • 書籍語言:簡體中文
  • 書籍類型:國產(chǎn)軟件
  • 書籍授權(quán):免費(fèi)軟件
  • 書籍類別:電腦技術(shù)
  • 應(yīng)用平臺:PDF
  • 更新時(shí)間:2017-12-29
  • 購買鏈接:
  • 網(wǎng)友評分:
360通過 騰訊通過 金山通過

情介紹

《自己動手寫CPU》使用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è)計(jì)目標(biāo)是能完成特定功能,發(fā)揮實(shí)際作用。

《自己動手寫CPU》分為三篇。第一篇是理論篇,介紹了指令集架構(gòu)、Verilog HDL的相關(guān)知識。第二篇是基礎(chǔ)篇,采用增量模型,實(shí)現(xiàn)了教學(xué)版OpenMIPS處理器。首先實(shí)現(xiàn)了僅能執(zhí)行一條指令的處理器,從這個(gè)最簡單的情況出發(fā),通過依次添加,實(shí)現(xiàn)邏輯操作指令、移位操作指令、空指令、移動操作指令、算術(shù)操作指令、轉(zhuǎn)移指令、加載存儲指令、協(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。

《自己動手寫CPU》適合計(jì)算機(jī)專業(yè)的學(xué)生、FPGA開發(fā)人員、處理器設(shè)計(jì)者、嵌入式系統(tǒng)應(yīng)用開發(fā)工程師、MIPS平臺開發(fā)人員以及對處理器內(nèi)部的實(shí)現(xiàn)感興趣的讀者閱讀,也可以作為高等院校計(jì)算機(jī)原理、計(jì)算機(jī)體系結(jié)構(gòu)等課程的實(shí)踐參考書。

目錄
第一篇 理論篇
第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 五級流水線 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五級流水線結(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 指令存儲器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對數(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章 移動操作指令的實(shí)現(xiàn) 132
6.1 移動操作指令說明 132
6.2 移動操作指令實(shí)現(xiàn)思路 133
6.2.1 新的數(shù)據(jù)相關(guān)情況的解決 135
6.2.2 系統(tǒng)結(jié)構(gòu)的修改 136
6.3 修改OpenMIPS以實(shí)現(xiàn)移動操作指令 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.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章 加載存儲指令的實(shí)現(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 加載存儲指令實(shí)現(xiàn)思路 238
9.2.1 數(shù)據(jù)流圖的修改 239
9.2.2 系統(tǒng)結(jié)構(gòu)的修改 240
9.3 修改OpenMIPS以實(shí)現(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指令實(shí)現(xiàn)思路 269
9.7.1 ll、sc指令實(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信號說明 374
12.3 實(shí)踐版OpenMIPS處理器接口 375
12.4 實(shí)踐版OpenMIPS處理器的實(shí)現(xiàn)思路 376
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平臺簡介 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ū)懭隖lash芯片 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的啟動 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)的所有指令及對應(yīng)的機(jī)器碼 534
B.1 邏輯操作指令 534
B.2 移位操作指令 534
B.3 移動操作指令 535
B.4 算術(shù)操作指令 535
B.5 轉(zhuǎn)移指令 536
B.6 加載存儲指令 536
B.7 協(xié)處理器訪問指令 537
B.8 異常相關(guān)指令 537
B.9 空指令及其他指令 537
參考文獻(xiàn) 538

載地址

自己動手寫CPU (雷思磊 著) 完整版PDF[103MB]

      氣書籍

      載聲明

      ☉ 解壓密碼:www.dbjr.com.cn 就是本站主域名,希望大家看清楚,[ 分享碼的獲取方法 ]可以參考這篇文章
      ☉ 推薦使用 [ 迅雷 ] 下載,使用 [ WinRAR v5 ] 以上版本解壓本站軟件。
      ☉ 如果這個(gè)軟件總是不能下載的請?jiān)谠u論中留言,我們會盡快修復(fù),謝謝!
      ☉ 下載本站資源,如果服務(wù)器暫不能下載請過一段時(shí)間重試!或者多試試幾個(gè)下載地址
      ☉ 如果遇到什么問題,請?jiān)u論留言,我們定會解決問題,謝謝大家支持!
      ☉ 本站提供的一些商業(yè)軟件是供學(xué)習(xí)研究之用,如用于商業(yè)用途,請購買正版。
      ☉ 本站提供的自己動手寫CPU (雷思磊 著) 完整版PDF[103MB]資源來源互聯(lián)網(wǎng),版權(quán)歸該下載資源的合法擁有者所有。