上篇CPU设计制作入门 2
第1章 自己就能设计制造CPU 2
1.1自己设计制作CPU有啥意义 2
1.2我设计制作CPU的经历 4
1.3电子电路设计制作的新变化 8
1.4自己设计CPU的条件 8
1.5创新CPU设计的意义 9
第2章 进入硬件设计的天地 11
2.1搭建自己的制造工厂 11
2.1.1安装你的设计制造工具 11
2.1.2获得开工许可证 12
2.1.3熟悉如何建立设计工程 14
2.2设计制造CPU需要热身 17
2.2.1初学硬件编程的例子 17
2.2.2程序书写的要点你知道吗 20
2.2.3程序就是硬件吗? 22
2.2.4怎样知道自己设计的对与错 23
2.2.5掌握仿真测试小工具 31
2.2.6看看自己设计的转换图 33
2.3硬件设计语言Verilog HDL 34
2.3.1 Verilog HDL语言的常量 35
2.3.2 Verilog HDL数据类型 36
2.3.3 Verilog HDL操作符 36
2.4 Verilog HDL语句和模块 37
2.4.1连接语句assign 38
2.4.2 Always语句 38
2.4.3模块 40
2.5 Verilog HDL其他常用语句 43
2.5.1 if语句 43
2.5.2 case语句 44
2.5.3 for循环语句 45
第3章 自己创造CPU的方法 46
3.1深刻理解CPU的结构 46
3.1.1简单CPU的组成 46
3.1.2总线分类与设备控制 48
3.2自创CPU的一般步骤 49
3.3如何设计自己的指令系统 51
3.3.1 CPU必需有哪些指令 51
3.3.2机器结构决定的基本动作 52
3.3.3将基本动作组织成指令 52
3.3.4 CPU指令设计与全程逻辑分析 53
3.4指令分析的一般性总结 59
3.4.1指令有限状态机 59
3.4.2程序如何描述指令 60
3.5让CPU运行程序 61
3.5.1简单汇编指令设计 61
3.5.2 CPU的汇编程序设计 63
3.5.3如何编译汇编程序 64
第4章 一个简单CPU的设计 67
4.1创建一个CPU设计工程 67
4.1.1复制这个简单CPU工程 67
4.1.2执行我们设计的汇编程序 68
4.2剖析这个CPU设计程序 70
4.2.1借用别人的存储器要了解什么 70
4.2.2如何描述CPU的端口 73
4.2.3 CPU要设置哪些内部器件和导线 74
4.2.4器件连接和信息传递的描述 75
4.2.5怎样才能看到CPU运行的内部变化 76
4.3 CPU行为的描述方法 77
4.3.1 CPU初始状态如何描述 77
4.3.2取指令周期的描述 78
4.3.3指令分析的描述 79
4.3.4指令执行周期的描述 80
4.4如何让CPU运行软件程序 87
4.4.1设计用于检验的汇编程序 87
4.4.2用表来编译汇编程序 89
4.4.3仿真检验CPU设计 92
4.5 CPU设计工程小结 94
第5章 自制通用CPU与单片机 95
5.1实体结构与器件应用 95
5.2通用CPU指令系统设计 97
5.2.1规划CPU的指令格式 97
5.2.2增加的指令 98
5.2.3新增输入输出端口 100
5.2.4可读写的程序存储器 102
5.2.5新增指令的状态描述 102
5.3用汇编程序检验CPU设计 108
5.3.1测试CPU的程序设计 108
5.3.2汇编程序执行仿真 109
5.4外设与CPU接口设计 111
5.4.1输入缓冲区设想 111
5.4.2输入缓冲区设计程序 112
5.4.3仿真检测缓冲区设计 115
5.4.4缓冲区与CPU连接 116
5.5设备驱动程序设计 117
5.5.1一个数码管驱动程序 118
5.5.2四个数码管驱动程序 119
5.5.3走马灯显示设计 119
5.6时钟设计 121
5.6.1分频设计 121
5.6.2锁相环生成时钟程序 122
5.6.3时钟IP程序 124
5.7开发板连接程序设计 127
5.7.1如何定义开发板上的设备 127
5.7.2 PMC开发板连接程序 128
5.7.3连接程序解释 136
5.8 FPGA引脚连接 139
5.8.1引脚连接清单 139
5.8.2引脚连接操作 141
5.9操作系统内核设计 143
59.1操作系统核心 143
5.9.2系统程序常驻内存 144
5.10烧制CPU制作单片机 145
5.10.1 JTAG下载烧制 146
5.10.2检验设计成果 147
5.10.3 ASP下载烧制单片机 148
第6章 流水线CPU设计 150
6.1流水线结构 150
6.1.1流水线要义 150
6.1.2指令流水线的组织 151
6.1.3流水线指令并行工作 153
6.1.4流水线相关问题 154
6.1.5解决相关的办法 156
6.2第一个流水线CPU 158
6.2.1流水线CPU指令系统 159
6.2.2同步存储器 160
6.2.3 CPU设计程序分析 166
6.2.4流水线CPU仿真 174
6.2.5与非流水线速度比较 179
6.3循环流水线CPU 181
6.3.1流水线的效率 181
6.3.2部件式结构设计 182
6.3.3循环流水线的划分 183
6.3.4循环流水线CPU设计 184
6.3.5化解设备相关和控制相关方法 186
6.3.6运行速度比较 188
第7章 非透明流水线通用单片机 190
7.1三级流水线计算机设计思想 190
7.1.1三级流水线的优势 190
7.1.2发射与断流控制 192
7.2重编指令系统 195
7.2.1 补充的指令 195
7.2.2指令系统编码重设 196
7.3流水线通用CPU设计 198
7.3.1三级流水通用CPU程序 199
7.3.2三级流水线通用CPU仿真 203
7.4流水线操作系统内核设计 204
7.4.1流水线操作系统程序 205
7.4.2系统程序仿真 207
7.4.3仿真检验操作系统 208
第8章 流水线编程的透明设计 212
8.1分支指令透明化 212
8.1.1改造分支指令设计 213
8.1.2中断流水机制设计 214
8.2其他指令透明化 215
8.2.1 Iptr指令优化 215
8.2.2 Call和Ret指令优化 217
8.2.3运行汇编程序测试 218
8.3缓冲区连接 221
8.3.1输入缓冲区检验 221
8.3.2缓冲区与CPU关联程序 221
8.3.3通过缓冲区输入仿真 223
8.4开发板的连接 224
8.4.1连接程序设计 224
8.4.2 EP IC12Q引脚连接 225
8.5烧制运行与测试 225
8.5.1常驻程序 226
8.5.2运行检测 226
8.5.3透明三级流水线检测程序设计 228
8.5.4透明流水线编程提示 230
中篇深入CPU设计 232
第9章 信息与信息处理 232
9.1信息与媒体 232
9.1.1客观的信息 232
9.1.2媒体与信息分类 233
9.2信息处理与数据 234
9.2.1信息处理 234
9.2.2数据 235
9.2.3信息量 235
9.2.4计算机是信息处理工具 235
第10章 机器表示数和运算 237
10.1限位记数 237
10.1.1 N进制 237
10.1.2限位数 237
10.1.3反码 238
10.2解决正负数运算的对称制 238
10.2.1限位数运算特征 238
10.2.2用限位数表示正负数 238
10.2.3什么是对称制 239
10.2.4对称制运算 240
10.2.5对称码和反码的关系 240
10.3对称制加法的溢出 241
10.3.1加减法溢出的判断 241
10.3.2溢出的解决方法 241
10.3.3乘法运算溢出的处理 242
10.3.4变减法为加法 242
10.4信息的二进制表示 243
10.4.1图形文字数值化 244
10.4.2颜色的数值化 245
10.4.3模拟信息的数值化 246
第11章 逻辑代数是CPU的基石 248
11.1逻辑代数的概念 248
11.2逻辑代数的基本运算规则 248
11.2.1逻辑变量与逻辑表达式 249
11.2.2基本逻辑等式 249
11.23异或 251
第12章 万能的逻辑电路 252
12.1二极管和三极管 252
12.1.1简单电路知识 252
12.1.2简单表示电子管 253
12.1.3基本逻辑门电路 254
12.2依据表达式作电路 255
12.2.1线路连接与交叉 256
12.2.2基本组合电路符号 256
12.2.3逻辑电路的画法 257
12.3真值表与逻辑函数 258
12.3.1真值表 259
12.3.2逻辑表达式的化简 261
第13章 元器件与线路设计原理 263
13.1 RS触发器 263
13.1.1 RS触发器的结构 263
13.1.2 RS触发器工作原理 263
13.1.3 RS触发器的符号 264
13.2 D型触发器 265
13.2.1时标触发器 265
13.2.2边沿触发器 266
13.3通断控制开关电路 268
13.3.1三态门电路组成 268
13.3.2三态门工作原理 269
13.4带预置清除端的边沿触发器 270
13.5线路数据传输 271
13.5.1三态总线的数据传输 271
13.5.2两态选择扇出总线 272
13.5.3双向通断可控开关 272
13.6寄存器原理 273
13.6.1暂存寄存器设计 274
13.6.2 L门的工作原理 274
13.6.3 Jk触发器 275
13.6.4 Jk触发器的构造 275
13.6.5 Jk触发器工作过程 275
13.66行波计数器 276
13.7译码器和多路选择器 278
13.7.1译码器 278
13.7.2接收多路选择器 279
第14章CPU的器件设计 280
14.1原理图设计方法 280
14.1.1原理图设计操作 280
14.1.2器件的层次组合 284
14.1.3 Quartus Ⅱ电子元件库 285
14.2加减法运算器设计 286
14.2.1加减法运算器设计的必要性 286
14.2.2加法运算的分析 287
14.2.3全加器设计操作 289
14.2.4四位加法器设计 291
14.2.5八位加法运算器设计 293
14.2.6八位加减运算器设计 293
14.3分段加减法运算器设计 295
14.3.1分段计算原理 295
14.3.2设计分段加减法运算器 296
14.3.3分段加减法运算器仿真 297
14.3.4分段加减法运算相关指令设计 298
14.4通用计数器 300
14.4.1同时同步计数器 300
14.4.2二选一电路 300
14.4.3加减单元 301
14.4.4计数单元 301
14.4.5八位计数器 304
14.4.6计数器一般化 306
14.4.7等效计数器设计 307
14.5标志线的设计 309
14.6移位寄存器设计 310
14.6.1两位移位单元 310
14.6.2多位左移位寄存器设计 313
14.6.3左右移位寄存器设计 314
14.6.4移位寄存器等效电路设计 316
14.7乘法运算器的设计 318
14.7.1乘法手算形式分析 318
14.7.2乘法阵列原理图设计 319
14.7.3分层设计乘法阵列 321
14.8通用乘法运算器设计 324
14.8.1求绝对值电路 324
14.8.2实现有符号乘法运算 326
14.8.3通用乘法运算器仿真 327
14.8.4超长数乘法设计 327
14.9除法运算器设计 328
14.9.1除法手算形式分析 328
14.9.2无符号数除法阵列 329
14.9.3减法运算单元 330
14.9.4四位减法运算器 331
14.9.5除法试商运算单元 332
14.9.6无符号数除法阵列行 333
14.9.7无符号数除法运算器 335
14.9.8有符号数除法器 337
14.10译码器的设计 338
14.10.1译码器设计 338
14.10.2四位译码器设计 340
14.10.3分层构造多位译码器 341
14.11浮点加减法运算器设计 342
14.11.1国际标准化组织的标准 342
14.11.2限位浮点数的表示 342
14.11.3浮点数的运算 343
14.11.4随机右移运算器 343
14.11.5浮点加减法运算器结构 346
14.11.6浮点数加减法运算器设计 347
14.12节拍器的设计 349
14.12.1节拍器的结构 349
14.12.2节拍器的工作原理 350
14.13存储器设计 351
14.13.1随机存储器 351
14.13.2 IP程序生成RAM 355
14.13.3随机存储器仿真 359
14.14总线结构设计 360
14.14.1简单总线结构 360
14.14.2总线控制字与微指令 361
14.14.3总线结构中实用存储器 361
14.14.4地址寄存器设计 363
第15章X86型CPU及单片机设计 365
15.1 PMC硬件构成 365
15.2 CPU的逻辑结构 367
15.3指令系统设计 368
15.3.1机器指令设计 368
15.3.2指令格式和寻址方式 371
15.3.3指令全程与控制函数 372
15.4控制矩阵 381
15.4.1控制矩阵电路设计 381
15.4.2分块设计控制矩阵 382
15.5控制矩阵生成器 384
15.5.1控制矩阵生成器安装 384
15.5.2建立指令全程分析表 385
15.5.3生成dBASE III文件 385
15.6控制矩阵生成器的使用 386
15.6.1基本操作 387
15.6.2数据库中建分析表 388
15.6.3生成逻辑模块描述 390
15.7 PMC110总线结构 390
15.7.1运算器存储器总线连接 391
15.7.2指针累加器等连入总线 392
15.7.3寄存器等连入总线 393
15.8 CPU顶层总线结构 394
15.9输入缓冲接口设计 396
15.9.1 PMC110缓冲区设计思想 396
15.9.2缓冲区存储器设计 397
15.9.3缓冲区接口电路 403
15.9.4输入接口解决的问题 407
15.10 PMC 110CPU与外设连接 410
15.11 PMC110操作系统核心设计 411
15.12 PMC110顶层与引脚 413
第16章带LCD的通用单片机 415
16.1 FM12864J液晶屏 415
16.2 FM 12864J逻辑结构与控制 416
16.2.1 HD 16202逻辑结构 416
16.2.2液晶屏操作指令 418
16.3 LCD读写控制 420
16.3.1液晶屏的读写时序 421
16.3.2液晶屏驱动程序 422
16.4 LCD帧控制程序 425
16.4.1端口与工作变量 426
16.4.2随时变化的端口 426
16.4.3帧控制程序的初始状态 427
16.4.4帧控制状态描述 427
16.4.5帧控制例行状态描述 428
16.5字库设计程序 429
16.5.1 Idle状态 430
16.5.2字形设计 430
16.5.3 Ok状态描述 430
16.6时钟和送显信号设计 431
16.7内外总线连接 432
16.8开发板连接程序 434
16.9 EP 1 C 12Q240增加引脚连接 435
16.10带LCD单片机顶层文件 435
16.11带LCD单片机运行测试 436
第17章 动态CPU的思想方法 439
17.1历史背景 439
17.2并行计算机冲突概述 442
17.3 PU-MU-CHL并行结构——计算机核心重组 443
17.4 PU与MU连接控制 448
17.5动态计算机的整机结构 450
第18章 动态CPU设计实例 452
18.1 PMC362CPU逻辑结构 452
18.2 PMC362CPU结构设计 453
18.3 PU设计 455
18.3.1 PU的总线连接 455
18.3.2 PU内部结构 456
18.4 PU-MU指令系统 458
18.4.1 PU指令表 458
18.4.2 PU控制矩阵设计 463
18.5 MU设计 463
18.5.1 MU总线结构 464
18.5.2 MU总线连接设计 464
18.5.3 MU内部结构 466
18.5.4 MU连接标志设计 467
18.6 CHL设计 467
18.6.1 CHL总线连接 468
18.6.2 CHL内部结构 468
18.6.3 CHL指令系统设计 469
18.7顶层结构 472
18.8设备连接优先级设计 474
18.9主要部件和特色 476
18.10测试程序设计 476
18.11 PMC362程序并行执行仿真 480
18.12下载到开发板上运行检验 485
第19章PMC计算机应用 490
19.1 PMC110汇编语言设计工具 490
19.1.1程序设计编译器的安装 490
19.1.2程序设计编译器的使用 492
19.1.3编辑编译器使用实例 497
19.2程序输入装填与执行 499
19.2.1程序的输入与装填 499
19.2.2输入编辑 501
19.2.3人机交互方式 502
19.2.4执行结果表示 502
19.3系统复位与复杂操作 503
19.3.1系统复位的方法 503
19.3.2缓冲区复位 503
19.3.3分段输入程序操作 503
19.4需要知道的限制 504
第20章 汇编语言程序设计 506
20.1汇编程序的基本结构 506
20.1.1顺序结构 506
20.1.2分支结构 507
20.1.3循环结构 507
20.1.4子程序调用结构 507
20.2指令的分类 508
20.2.1算术运算类指令 508
20.2.2数据传送类指令 508
20.2.3逻辑运算类指令 509
20.2.4跳转类指令 509
20.2.5数据移位指令 509
20.2.6其他控制类指令 509
20.3程序设计 510
20.3.1分支循环结构设计 510
20.3.2多重循环 511
20.3.3使用地址指针 513
20.3.4起泡排序 515
20.4宏指令 518
20.4.1宏指令格式 519
20.4.2无参数宏 519
20.4.3带参数的宏 519
20.4.4宏与函数 520
20.5汇编程序编译方法 520
20.5.1编译的一般过程 520
20.5.2机器编译方法 521
20.5.3用数据库软件设计编译器 523
20.6典型问题求解 524
20.6.1求自然数n的阶乘 524
20.6.2超长数乘除法 527
20.6.3超长数除法运算器设计 532
20.6.4超长数除法运算仿真 534
20.7虚拟存储器结构设计 534
20.7.1虚拟存储执行的机制 534
20.7.2虚拟存储编程 535
20.7.3虚拟存储程序设计 535
下篇 自己制作单片机 542
第21章 自制单片机器件与环境 542
21.1自制计算机系统整体结构 542
21.1.1单芯片计算机实例 542
21.1.2功能结构划分 543
21.1.3 FPGA芯片和配件 544
21.1.4 FPGA的配件 546
21.2 PMC计算机的供电系统 547
21.2.1直流电源与开关 547
21.2.2稳压器件 548
21.2.3整流二极管和滤波器件 548
21.2.4下载线 549
21.3输入设备 549
21.3.1数据输入开关 549
21.3.2状态控制开关 549
21.3.3触发控制按钮 549
21.4显示输出设备 549
21.4.1发光二极管 550
21.42数码管 550
21.43液晶显示屏 551
21.5 PCB印刷电路板 551
21.6个人设计制作计算机所需的工作环境 552
第22章PMC110计算机电路设计 554
22.1计算机辅助设计软件PADS 554
22.1.1元器件库 554
22.1.2元器件图制作 555
22.2基本型PMC电路的原理图设计 568
22.2.1供电系统设计 568
22.2.2 FPGA的引脚 569
22.2.3信号保障系统设计 574
22.2.4程序下载系统设计 575
22.2.5输入系统设计 577
22.2.6输出系统设计 578
22.2.7为PCB准备网表 580
22.3 PMC 110计算机PCB设计 580
22.3.1 PCB的边界绘制 580
22.3.2导入元器件 582
22.3.3元器件布局 582
22.3.4电路板的布线 584
22.3.5电路板敷铜 587
22.4器件PCB封装设计 589
22.4.1使用自动导航设计 589
22.4.2一般器件PCB设计 592
第23章 计算机组装与下载 595
23.1 PCB检测 595
23.2器件焊接 596
23.2.1器件焊接的顺序 596
23.2.2焊接技巧 597
23.3上电检测和断电修正 599
23.3.1 PC计算机设计下载 599
23.3.2常驻内存程序测试 601
23.3.3自编程序测试 602
附录 607