第1篇 MIPS汇编程序设计 3
第1章 QtSpim汇编程序开发环境 3
1.1 QtSpim简介 3
1.2 QtSpim菜单栏简介 4
1.2.1 File菜单 4
1.2.2 Simulator菜单 5
1.2.3 其余菜单 5
1.3 QtSpim汇编、调试程序示例 7
1.3.1 QtSpim用户程序入口 7
1.3.2 QtSpim汇编查错 7
1.3.3 QtSpim查看程序存储映像 10
1.3.4 QtSpim调试查错 13
第2章 MARS汇编程序开发环境 17
2.1 MARS界面简介 17
2.2 MARS菜单栏简介 19
2.2.1 File菜单 19
2.2.2 Run菜单 19
2.2.3 Settings菜单 20
2.3 MARS汇编、调试程序 21
2.3.1 汇编语言源程序编辑 21
2.3.2 汇编器 21
2.3.3 查看程序存储映像 22
2.3.4 运行程序 23
第3章 MIPS汇编语言 25
3.1 MIPS汇编程序结构 25
3.2 系统功能调用 26
3.3 伪指令 26
3.4 常用宏汇编指令 28
第4章 MIPS汇编语言程序示例 32
4.1 常用C语句汇编指令实现示例 32
4.1.1 if语句 32
4.1.2 while语句 32
4.1.3 for语句 33
4.1.4 switch语句 33
4.2 子程序设计示例 35
4.2.1 子程序结构 35
4.2.2 递归子程序设计 36
4.3 MIPS汇编语言程序设计实验任务 38
4.4 思考题 39
第2篇 基于FPGA的原型计算机系统设计 43
第5章 Vivado开发工具简介 43
5.1 FPGA设计流程简介 43
5.2 EDA工具Vivado简介 44
第6章 单周期类MIPS微处理器实验 46
6.1 简单指令集MIPS微处理器设计 46
6.1.1 MIPS微处理器数据通路 46
6.1.2 MIPS微处理器控制器 48
6.2 简单指令集MIPS微处理器各模块实现方案 51
6.2.1 存储器 51
6.2.2 寄存器文件 65
6.2.3 运算电路 67
6.2.4 多路复用器 67
6.2.5 位宽扩展 68
6.2.6 控制器 68
6.3 MIPS微处理器实验实现过程示例 69
6.3.1 实验环境 69
6.3.2 创建工程 70
6.3.3 基于IP核新建存储器模块 76
6.3.4 Verilog语言描述其余模块 86
6.3.5 模块功能仿真 94
6.3.6 顶层模块 100
6.3.7 RTL分析 101
6.3.8 引脚约束 101
6.3.9 整体仿真 105
6.3.10 MIPS微处理器综合 114
6.3.11 debug IP核插入 117
6.3.12 MIPS微处理器实现 122
6.3.13 下载编程及测试 125
6.4 实验任务 127
6.5 思考题 128
第7章 存储器映像IO接口设计 130
7.1 存储器映像IO接口原理 130
7.2 存储器映像IO接口实现方案 133
7.3 实验示例 133
7.3.1 实验设备简介 134
7.3.2 新建项目并添加原有代码 134
7.3.3 新建IO接口模块Verilog代码 138
7.3.4 IO接口模块仿真 140
7.3.5 IO接口模块集成 141
7.3.6 汇编源程序示例 142
7.3.7 输入/输出设备引脚约束 144
7.3.8 下载编程测试 144
7.4 实验任务 146
7.5 思考题 146
第8章 VGA接口设计 148
8.1 VGA接口显示原理 148
8.1.1 VGA接口时序 148
8.1.2 VGA显示控制器 149
8.2 VGA控制器实现 150
8.2.1 显示存储器 150
8.2.2 计数器 153
8.2.3 控制逻辑 153
8.2.4 显示存储器地址产生 154
8.2.5 视频数据复用器 154
8.2.6 像素时钟产生 155
8.3 实验示例 156
8.3.1 实验要求 156
8.3.2 实验板VGA接口简介 156
8.3.3 创建工程并添加已有设计代码 157
8.3.4 显示存储器模块 158
8.3.5 计数器模块 158
8.3.6 控制逻辑模块 159
8.3.7 显示存储器地址产生模块 159
8.3.8 VGA控制器模块 159
8.3.9 像素时钟产生模块 160
8.3.10 修改IO接口模块 160
8.3.11 顶层模块集成 161
8.3.12 汇编控制程序 162
8.3.13 整体功能仿真 162
8.3.14 下载编程测试 163
8.4 实验任务 165
8.5 思考题 166
第3篇 基于IP核的嵌入式计算机系统软硬件设计 169
第9章 MicroBlaze嵌入式系统平台 169
9.1 MicroBlaze软核微处理器 169
9.1.1 MicroBlaze基本结构 169
9.1.2 MicroBlaze中断系统 169
9.1.3 MicroBlaze总线结构 171
9.2 standalone操作系统 173
第10章 嵌入式最小系统建立流程 176
10.1 嵌入式最小系统硬件构成 176
10.2 最小系统硬件平台搭建 177
10.3 SDK Hello World程序设计 190
10.4 下载编程测试 194
10.5 实验任务 196
10.6 思考题 196
第11章 C语言数据类型 197
11.1 C语言常见数据类型 197
11.2 实验示例 197
11.2.1 C语言数据类型测试工程 198
11.2.2 C语言数据类型程序调试 199
11.3 实验任务 206
11.4 思考题 206
第12章 程序控制并行IO接口 207
12.1 并行输入/输出设备 207
12.2 GPIO IP核工作原理 209
12.3 并行接口电路原理框图 211
12.4 GPIO IP核配置 213
12.4.1 添加GPIO IP核 213
12.4.2 GPIO IP核属性配置 213
12.4.3 并行外设GPIO IP核配置示例 215
12.4.4 GPIO API函数简介 217
12.5 Xilinx C IO读写函数 218
12.6 实验示例 218
12.6.1 实验要求 218
12.6.2 电路原理框图 219
12.6.3 硬件平台搭建 219
12.6.4 接口软件开发 222
12.6.5 IO读写函数程序代码 227
12.6.6 API函数程序代码 228
12.6.7 实验现象 230
12.7 实验任务 236
12.8 思考题 237
第13章 中断方式并行接口 238
13.1 中断系统相关IP核 238
13.1.1 AXIINTC中断控制器 238
13.1.2 AXI Timer定时计数器 239
13.2 中断相关IP核配置 241
13.2.1 中断控制器配置 241
13.2.2 GPIO IP核中断配置 242
13.2.3 定时计数器配置 242
13.3 IP核API函数 244
13.3.1 中断控制器API函数 244
13.3.2 定时计数器API函数 246
13.4 中断程序设计 247
13.4.1 总中断服务程序 247
13.4.2 中断程序构成 247
13.5 实验示例 247
13.5.1 实验要求 247
13.5.2 硬件电路原理框图 248
13.5.3 硬件平台建立 248
13.5.4 软件设计 251
13.5.5 IO读写函数程序代码 254
13.5.6 API函数程序代码 261
13.5.7 实现现象 266
13.6 实验任务 267
13.7 思考题 268
第14章 并行存储器接口 269
14.1 并行RAM存储芯片 269
14.1.1 异步SRAM存储芯片 269
14.1.2 DDR2 SDRAM存储芯片 272
14.2 存储器接口IP核 275
14.2.1 AXI外部存储控制器EMC 275
14.2.2 存储器接口生成器IP核MIG 277
14.3 异步SRAM实验示例 284
14.3.1 实验要求 284
14.3.2 电路原理框图 284
14.3.3 硬件平台搭建 285
14.3.4 SRAM存储器读写测试软件 292
14.3.5 实验现象 295
14.3.6 任意指定存储单元读写程序设计 296
14.4 DDR2 SDRAM实验示例 297
14.4.1 实验要求 297
14.4.2 电路原理框图 297
14.4.3 硬件平台搭建 297
14.4.4 DDR2 SDRAM存储器读写测试软件 303
14.4.5 实验现象 305
14.4.6 任意指定存储单元读写程序设计 307
14.5 实验任务 308
14.6 思考题 308
第15章 串行接口 310
15.1 串行通信协议简介 310
15.1.1 UART串行通信协议 310
15.1.2 SPI串行通信协议 311
15.1.3 Quad SPI协议 313
15.2 串行通信接口IP核原理 313
15.2.1 Uartlite IP核 313
15.2.2 Quad SPI IP核 314
15.3 串行通信IP核配置 317
15.3.1 Uartlite IP核配置 317
15.3.2 Quad SPI IP核配置 317
15.4 SPI接口外设 319
15.4.1 DA模块 319
15.4.2 AD模块 321
15.5 IP核API函数 322
15.5.1 Uartlite API函数 322
15.5.2 Quad SPI API函数 324
15.6 实验示例 325
15.6.1 UART通信 325
15.6.2 SPI接口DA转换 332
15.6.3 SPI接口AD转换 341
15.7 实验任务 349
15.8 思考题 350
第16章 DMA技术 351
16.1 DMA控制器简介 351
16.1.1 CDMA IP核基本结构 351
16.1.2 CDMA IP核寄存器 352
16.1.3 CDMA IP核简单DMA传输流程 353
16.2 实验示例 354
16.2.1 实验要求 354
16.2.2 硬件电路原理框图 354
16.2.3 硬件平台 354
16.2.4 存储器到存储器DMA传输控制程序 358
16.2.5 存储器到IO接口数据传输控制程序 359
16.2.6 IO接口到存储器DMA数据传输控制程序 359
16.2.7 实验现象 362
16.3 实验任务 364
16.4 思考题 364
第17章 自定义AXI总线从设备接口IP核 365
17.1 AXI总线从设备IP核创建流程和代码框架 365
17.1.1 AXI总线从设备IP核创建流程 365
17.1.2 自定义IP核代码框架 368
17.2 自定义AXI总线简单并行IO接口IP核实验示例 373
17.2.1 实验要求 373
17.2.2 并行接口IP核设计 373
17.2.3 并行接口IP核测试嵌入式系统 375
17.3 自定义AXI总线UART串行接口IP核实验示例 379
17.3.1 实验要求 379
17.3.2 实验条件 379
17.3.3 UART串行接口IP核设计 385
17.3.4 UART IP核测试嵌入式系统 389
17.4 自定义AXI总线语音输入/输出接口IP核实验示例 392
17.4.1 实验要求 392
17.4.2 实验条件 392
17.4.3 PDM语音输入IP核设计 395
17.4.4 PWM语音输出IP核设计 397
17.4.5 语音输入/输出IP核测试嵌入式系统 398
17.5 实验任务 401
17.6 思考题 403
第18章 VGA显示接口 404
18.1 VGA接口控制器TFT IP核 404
18.1.1 工作原理 404
18.1.2 TFT IP核配置 406
18.1.3 TFT IP核API 函数 406
18.2 VGA接口嵌入式系统 408
18.3 实验示例 408
18.3.1 实验要求 408
18.3.2 硬件平台搭建 408
18.3.3 IO读写函数输出图形程序示例 413
18.3.4 API函数输出字符程序示例 413
18.3.5 IO读写函数输出图像程序示例 414
18.3.6 实验现象 418
18.4 实验任务 419
18.5 思考题 420
第19章 传感器 421
19.1 温度传感器ADT7420 421
19.1.1 ADT7420结构 421
19.1.2 ADT7420寄存器 422
19.1.3 ADT7420写入数据时序 424
19.1.4 ADT7420读取数据时序 425
19.1.5 复位流程 425
19.1.6 INT和CT输出 426
19.2 加速度传感器ADXL362 428
19.2.1 ADXL362基本结构 428
19.2.2 ADXL362寄存器 429
19.2.3 ADXL362 SPI接口命令 433
19.2.4 配置流程 434
19.3 AXI IIC IP核 435
19.3.1 AXI IIC IP核基本结构 435
19.3.2 AXI IIC IP核寄存器 435
19.3.3 数据传输控制流程 437
19.4 XADC IP核 438
19.4.1 XADC IP核基本结构 438
19.4.2 XADC IP核寄存器 440
19.4.3 外部模拟信号输入电路 445
19.5 温度和加速度测量实验示例 446
19.5.1 实验要求 446
19.5.2 电路原理框图 446
19.5.3 硬件平台搭建 446
19.5.4 1O读写函数温度监测程序示例 451
19.5.5 IO读写函数加速度监测程序示例 470
19.5.6 实验现象 487
19.6 XADC 4路AD转换实验示例 490
19.6.1 实验要求 490
19.6.2 电路原理框图 490
19.6.3 硬件平台搭建 490
19.6.4 API函数XADC控制程序示例 494
19.6.5 实验现象 497
19.7 实验任务 497
19.8 思考题 497
附录 501
附录A Nexys4 DDR实验板简介 501
A.1 Nexys4 DDR实验板整体布局 501
A.2 电源模块 502
A.3 FPGA编程模式 503
A.4 存储器 503
A.5 100/10 Mbps以太网接口 504
A.6 USB转UART接口 504
A.7 USB HID host接口 505
A.8 VGA接口 505
A.9 基本IO接口 505
A.10 PMOD接口 507
A.11 Micro SD卡插槽 507
A.12 温度传感器 508
A.13 加速度传感器 508
A.14 数字语音输入 508
A.15 单声道数字语音输出 509
附录B Nexys4 DDR实验板Vivado引脚约束文件 510
附录C Nexys4 实验板简介 513
C.1 Nexys4 实验板整体布局 513
C.2 Nexys4 存储器 514
附录D Nexys4 实验板V ivado引脚约束文件 515
附录E Nexys4 和Nexys4 DDR实验板描述文件安装 528
附录F Nexys4 DDR实验板外设接口电路原理图 530
附录G Nexys4 实验板外设接口电路原理图 538
附录H 以太网接口Echo Server工程示例 540
H.1 搭建具有以太网的嵌入式系统硬件平台 540
H.2 TCP/IP Server例程 548
H.3 实验现象 558
附录I 实验报告要求 562
附录J 实验报告范例——MIPS汇编程序设计 563