描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302512622丛书名: 高等学校电子信息类专业系列教材
? 配套理论教材为《计算机组成原理与接口技术——基于MIPS架构》(清华大学出版社)。
? 配套实验源代码及教学课件(PPT),下载地址为清华大学出版社网站本书页面。
本书特色如下:
? 汇编语言程序设计 采用MIPS虚拟机,方便读者在没有硬件平台的环境下进行MIPS汇编程序设计实践。
? 原型计算机系统设计 硬件设计采用Verilog硬件描述语言,软件设计采用汇编语言,强化软件与硬件之间的联系,加深对计算机组成原理的认识。
? 嵌入式计算机系统设计 基于MicroBlaze软核微处理器,采用模块化的IP软核为主要手段实现计算机系统硬件设计;基于Standalone BSP,采用C语言为手段实现计算机系统软件设计。
? 接口设计实例多样化 不仅列举了各类常见的并行接口设计实例,还给出了各类常见于嵌入式系统的串行接口设计实例及人机接口设计实例。
? 验证性实验与设计性实验相结合 验证性实验帮助读者深刻理解计算机组成原理,设计性实验协助读者进行计算机组成的创新性设计和实践。
? *的实验平台:采用Xilinx Artix7系列FPGA实验板Nexys4 DDR以及Vivado开发套件。
第1篇MIPS汇编程序设计
第1章QtSpim汇编程序开发环境
1.1QtSpim简介
1.2QtSpim菜单栏简介
1.2.1File菜单
1.2.2Simulator菜单
1.2.3其余菜单
1.3QtSpim汇编、调试程序示例
1.3.1QtSpim用户程序入口
1.3.2QtSpim汇编查错
1.3.3QtSpim查看程序存储映像
1.3.4QtSpim调试查错
第2章MARS汇编程序开发环境
2.1MARS界面简介
2.2MARS菜单栏简介
2.2.1File菜单
2.2.2Run菜单
2.2.3Settings菜单
2.3MARS汇编、调试程序
2.3.1汇编语言源程序编辑
2.3.2汇编器
2.3.3查看程序存储映像
2.3.4运行程序
第3章MIPS汇编语言
3.1MIPS汇编程序结构
3.2系统功能调用
3.3伪指令
3.4常用宏汇编指令
第4章MIPS汇编语言程序示例
4.1常用C语句汇编指令实现示例
4.1.1if语句
4.1.2while语句
4.1.3for语句
4.1.4switch语句
4.2子程序设计示例
4.2.1子程序结构
4.2.2递归子程序设计
4.3MIPS汇编语言程序设计实验任务
4.4思考题
第2篇基于FPGA的原型计算机系统设计
第5章Vivado开发工具简介
5.1FPGA设计流程简介
5.2EDA工具Vivado简介
第6章单周期类MIPS微处理器实验
6.1简单指令集MIPS微处理器设计
6.1.1MIPS微处理器数据通路
6.1.2MIPS微处理器控制器
6.2简单指令集MIPS微处理器各模块实现方案
6.2.1存储器
6.2.2寄存器文件
6.2.3运算电路
6.2.4多路复用器
6.2.5位宽扩展
6.2.6控制器
6.3MIPS微处理器实验实现过程示例
6.3.1实验环境
6.3.2创建工程
6.3.3基于IP核新建存储器模块
6.3.4Verilog语言描述其余模块
6.3.5模块功能仿真
6.3.6顶层模块
6.3.7RTL分析
6.3.8引脚约束
6.3.9整体仿真
6.3.10MIPS微处理器综合
6.3.11debug IP核插入
6.3.12MIPS微处理器实现
6.3.13下载编程及测试
6.4实验任务
6.5思考题
第7章存储器映像IO接口设计
7.1存储器映像IO接口原理
7.2存储器映像IO接口实现方案
7.3实验示例
7.3.1实验设备简介
7.3.2新建项目并添加原有代码
7.3.3新建IO接口模块Verilog代码
7.3.4IO接口模块仿真
7.3.5IO接口模块集成
7.3.6汇编源程序示例
7.3.7输入/输出设备引脚约束
7.3.8下载编程测试
7.4实验任务
7.5思考题
第8章VGA接口设计
8.1VGA接口显示原理
8.1.1VGA接口时序
8.1.2VGA显示控制器
8.2VGA控制器实现
8.2.1显示存储器
8.2.2计数器
8.2.3控制逻辑
8.2.4显示存储器地址产生
8.2.5视频数据复用器
8.2.6像素时钟产生
8.3实验示例
8.3.1实验要求
8.3.2实验板VGA接口简介
8.3.3创建工程并添加已有设计代码
8.3.4显示存储器模块
8.3.5计数器模块
8.3.6控制逻辑模块
8.3.7显示存储器地址产生模块
8.3.8VGA控制器模块
8.3.9像素时钟产生模块
8.3.10修改IO接口模块
8.3.11顶层模块集成
8.3.12汇编控制程序
8.3.13整体功能仿真
8.3.14下载编程测试
8.4实验任务
8.5思考题
第3篇基于IP核的嵌入式计算机系统软硬件设计
第9章MicroBlaze嵌入式系统平台
9.1MicroBlaze软核微处理器
9.1.1MicroBlaze基本结构
9.1.2MicroBlaze中断系统
9.1.3MicroBlaze总线结构
9.2standalone操作系统
第10章嵌入式最小系统建立流程
10.1嵌入式最小系统硬件构成
10.2最小系统硬件平台搭建
10.3SDK Hello World程序设计
10.4下载编程测试
10.5实验任务
10.6思考题
第11章C语言数据类型
11.1C语言常见数据类型
11.2实验示例
11.2.1C语言数据类型测试工程
11.2.2C语言数据类型程序调试
11.3实验任务
11.4思考题
第12章程序控制并行IO接口
12.1并行输入/输出设备
12.2GPIO IP核工作原理
12.3并行接口电路原理框图
12.4GPIO IP核配置
12.4.1添加GPIO IP核
12.4.2GPIO IP核属性配置
12.4.3并行外设GPIO IP核配置示例
12.4.4GPIO API函数简介
12.5Xilinx C IO读写函数
12.6实验示例
12.6.1实验要求
12.6.2电路原理框图
12.6.3硬件平台搭建
12.6.4接口软件开发
12.6.5IO读写函数程序代码
12.6.6API函数程序代码
12.6.7实验现象
12.7实验任务
12.8思考题
第13章中断方式并行接口
13.1中断系统相关IP核
13.1.1AXI INTC中断控制器
13.1.2AXI Timer定时计数器
13.2中断相关IP核配置
13.2.1中断控制器配置
13.2.2GPIO IP核中断配置
13.2.3定时计数器配置
13.3IP核API函数
13.3.1中断控制器API函数
13.3.2定时计数器API函数
13.4中断程序设计
13.4.1总中断服务程序
13.4.2中断程序构成
13.5实验示例
13.5.1实验要求
13.5.2硬件电路原理框图
13.5.3硬件平台建立
13.5.4软件设计
13.5.5IO读写函数程序代码
13.5.6API函数程序代码
13.5.7实现现象
13.6实验任务
13.7思考题
第14章并行存储器接口
14.1并行RAM存储芯片
14.1.1异步SRAM存储芯片
14.1.2DDR2 SDRAM存储芯片
14.2存储器接口IP核
14.2.1AXI外部存储控制器EMC
14.2.2存储器接口生成器IP核MIG
14.3异步SRAM实验示例
14.3.1实验要求
14.3.2电路原理框图
14.3.3硬件平台搭建
14.3.4SRAM存储器读写测试软件
14.3.5实验现象
14.3.6任意指定存储单元读写程序设计
14.4DDR2 SDRAM实验示例
14.4.1实验要求
14.4.2电路原理框图
14.4.3硬件平台搭建
14.4.4DDR2 SDRAM存储器读写测试软件
14.4.5实验现象
14.4.6任意指定存储单元读写程序设计
14.5实验任务
14.6思考题
第15章串行接口
15.1串行通信协议简介
15.1.1UART串行通信协议
15.1.2SPI串行通信协议
15.1.3Quad SPI协议
15.2串行通信接口IP核原理
15.2.1Uartlite IP核
15.2.2Quad SPI IP核
15.3串行通信IP核配置
15.3.1Uartlite IP核配置
15.3.2Quad SPI IP核配置
15.4SPI接口外设
15.4.1DA模块
15.4.2AD模块
15.5IP核API函数
15.5.1Uartlite API函数
15.5.2Quad SPI API函数
15.6实验示例
15.6.1UART通信
15.6.2SPI接口DA转换
15.6.3SPI接口AD转换
15.7实验任务
15.8思考题
第16章DMA技术
16.1DMA控制器简介
16.1.1CDMA IP核基本结构
16.1.2CDMA IP核寄存器
16.1.3CDMA IP核简单DMA传输流程
16.2实验示例
16.2.1实验要求
16.2.2硬件电路原理框图
16.2.3硬件平台
16.2.4存储器到存储器DMA传输控制程序
16.2.5存储器到IO接口数据传输控制程序
16.2.6IO接口到存储器DMA数据传输控制程序
16.2.7实验现象
16.3实验任务
16.4思考题
第17章自定义AXI总线从设备接口IP核
17.1AXI总线从设备IP核创建流程和代码框架
17.1.1AXI总线从设备IP核创建流程
17.1.2自定义IP核代码框架
17.2自定义AXI总线简单并行IO接口IP核实验示例
17.2.1实验要求
17.2.2并行接口IP核设计
17.2.3并行接口IP核测试嵌入式系统
17.3自定义AXI总线UART串行接口IP核实验示例
17.3.1实验要求
17.3.2实验条件
17.3.3UART串行接口IP核设计
17.3.4UART IP核测试嵌入式系统
17.4自定义AXI总线语音输入/输出接口IP核实验示例
17.4.1实验要求
17.4.2实验条件
17.4.3PDM语音输入IP核设计
17.4.4PWM语音输出IP核设计
17.4.5语音输入/输出IP核测试嵌入式系统
17.5实验任务
17.6思考题
第18章VGA显示接口
18.1VGA接口控制器TFT IP核
18.1.1工作原理
18.1.2TFT IP核配置
18.1.3TFT IP核API函数
18.2VGA接口嵌入式系统
18.3实验示例
18.3.1实验要求
18.3.2硬件平台搭建
18.3.3IO读写函数输出图形程序示例
18.3.4API函数输出字符程序示例
18.3.5IO读写函数输出图像程序示例
18.3.6实验现象
18.4实验任务
18.5思考题
第19章传感器
19.1温度传感器ADT7420
19.1.1ADT7420结构
19.1.2ADT7420寄存器
19.1.3ADT7420写入数据时序
19.1.4ADT7420读取数据时序
19.1.5复位流程
19.1.6INT和CT输出
19.2加速度传感器ADXL362
19.2.1ADXL362基本结构
19.2.2ADXL362寄存器
19.2.3ADXL362 SPI接口命令
19.2.4配置流程
19.3AXI IIC IP核
19.3.1AXI IIC IP核基本结构
19.3.2AXI IIC IP核寄存器
19.3.3数据传输控制流程
19.4XADC IP核
19.4.1XADC IP核基本结构
19.4.2XADC IP核寄存器
19.4.3外部模拟信号输入电路
19.5温度和加速度测量实验示例
19.5.1实验要求
19.5.2电路原理框图
19.5.3硬件平台搭建
19.5.4IO读写函数温度监测程序示例
19.5.5IO读写函数加速度监测程序示例
19.5.6实验现象
19.6XADC 4路AD转换实验示例
19.6.1实验要求
19.6.2电路原理框图
19.6.3硬件平台搭建
19.6.4API函数XADC控制程序示例
19.6.5实验现象
19.7实验任务
19.8思考题
附录
附录ANexys4 DDR实验板简介
A.1Nexys4 DDR实验板整体布局
A.2电源模块
A.3FPGA编程模式
A.4存储器
A.5100/10Mbps以太网接口
A.6USB转UART接口
A.7USB HID host接口
A.8VGA接口
A.9基本IO接口
A.10PMOD接口
A.11Micro SD卡插槽
A.12温度传感器
A.13加速度传感器
A.14数字语音输入
A.15单声道数字语音输出
附录BNexys4 DDR实验板Vivado引脚约束文件
附录CNexys4实验板简介
C.1Nexys4实验板整体布局
C.2Nexys4存储器
附录DNexys4实验板Vivado引脚约束文件
附录ENexys4和Nexys4 DDR实验板描述文件安装
附录FNexys4 DDR实验板外设接口电路原理图
附录GNexys4实验板外设接口电路原理图
附录H以太网接口Echo Server工程示例
H.1搭建具有以太网的嵌入式系统硬件平台
H.2TCP/IP Server例程
H.3实验现象
附录I实验报告要求
附录J实验报告范例——MIPS汇编程序设计
华中科技大学电子信息与通信学院“模拟电路与数字系统(三)”课程教学改革已开展6年,成效显著。在教学过程中,也反映出部分问题: 第1版实验教程难度跨度较大。因此本版从最基础实验示例入手,逐步深入、综合,以求使读者掌握复杂计算机系统软、硬件设计技术。
为适应华中科技大学电子信息与通信学院“模拟电路与数字系统(三)”课程群贯穿式教学改革要求,本书在第1版基础上对实验内容以及实验平台做了以下调整:
(1) 增加MIPS汇编语言模拟器软件Mars介绍,该软件相比QtSpim更吻合《计算机组成原理与接口技术——基于MIPS架构》一书介绍的MIPS汇编指令工作原理,同时也更方便用户获取汇编语言程序机器码。
(2) 计算机硬件系统开发采用Vivado平台,更能适应Xilinx FPGA技术发展趋势。同时增加采用debug IP核监测硬件系统的相关内容,以便读者掌握片内硬件系统测试技术,弥补采用FPGA设计嵌入式计算机硬件系统导致硬件测试技术教学内容的缺失。
(3) 实验示例实现过程介绍了Nexys4 DDR以及Nexys4实验板的异同,也阐述了基于实验板以及基于FPGA芯片型号的嵌入式计算机硬件系统设计方法。基于实验板的设计方法可以有效缩短硬件系统设计时间,减少设计错误; 基于FPGA芯片的设计方法可以帮助读者掌握基于任意FPGA实验平台的设计技术。
(4) 嵌入式计算机系统IP核接口实验部分增加了DDR2 SDRAM存储器接口、温度传感器IIC接口、加速度传感器SPI接口、XADC并行AD转换接口以及存储器与IO接口之间DMA数据传输实验,覆盖的计算机接口技术更全面。
(5) 用户定义接口IP核实验增加了UART串行接口、数字语音输入接口、数字语音输出接口等实验示例,为读者掌握将任意硬件描述语言模块封装为计算机接口IP核提供了大量实验示例,同时也为读者实现包含语音输入、输出的计算机系统提供了实验范例。
(6) 附录中增加了实验示例中所涉及实验板的用户手册、电路原理图、Vivado引脚约束文件介绍,为读者完成实验示例提供了便利。同时也增加了以太网接口实验示例,以便读者开发基于LwIP开源TCP/IP协议栈的网络应用系统。
本书是在华中科技大学电子信息与通信学院程文青副院长主导电路类课程改革的大潮下编写的,参与该类课程教学改革研究以及教学实践的教师对本书编写工作提供了大量宝贵意见,在此表示深深的感谢!本书还得到了2016年Digilent中国有限公司教育部产学合作教学内容和课程体系改革项目的资助,在此一并表示感谢。
对所有为本书进行审阅并提出宝贵意见以及在编写出版过程中给予热情帮助和支持的同志们,在此一并表示衷心的感谢。
由于编者水平有限,加之时间比较仓促,书中错误和不妥之处在所难免,殷切希望使用本教材的师生及其他读者给予批评指正。
编者2018年12月于华中科技大学
CHAPTER 3
MIPS汇编语言
3.1MIPS汇编程序结构
MIPS汇编程序一般定义两个段,即数据段和代码段,并以空白行表示汇编程序的结束,如图31所示。main表示代码段程序入口地址,且声明为全局标号,可以被SPIM内核调用。
该程序的功能为接收用户输入的数据N,计算1~N的序列和,并显示结果。且循环执行,直到用户输入0。运行结果如图32所示。
图31MIPS汇编语言程序结构
图32运行结果
3.2系统功能调用
系统功能调用实质是产生软件异常,内核代码根据产生的异常功能号进行相应处理。表31列举了SPIM常用系统功能调用。
表31常用系统功能调用
功 能 描 述功能号($v0)输 入 参 数输 出 参 数
显示整数1$a0: 整数值
显示字符串直到字符串结束符04$a0: 字符串首地址
读入整数5$v0: 输入的整数值
读入字符串8$a0: 内存空间首地址
$a1: 内存空间长度
退出10
系统功能调用使用步骤为:
(1) 将功能号保存到$v0中。
(2) 配置好输入参数。
(3) 运行syscall指令。
(4) 处理输出参数。
例3.1采用系统功能调用显示$t0中的十进制数,编写程序段。
程序段如图33所示。
例3.2采用系统功能调用读入十进制数并判断是否小于等于0,若不小于等于0则将$t0置为0,编写程序段。
程序段如图34所示。
图33十进制输出程序段
图34十进制数输入程序段
值得注意的是,系统功能调用整数输入/输出都是十进制形式,而且不判断输入数据是否合法。如果要以二进制、十六进制形式输入/输出整数,则需要通过以下两个步骤:
(1) 字符串输入、输出。
(2) 字符串、数值互换。
具体实现可参考后续例程。
3.3伪指令
汇编伪指令告诉汇编程序如何汇编汇编语言源程序,如定义程序结构、存储布局、标志数据以及指令的地址等。常用MIPS汇编伪指令如表32所示。
表32常用MIPS汇编伪指令
伪指令功能
.align n从2n的整数倍地址开始分配存储空间
.ascii str存储str字符串,不包含字符串结束符null
.asciiz str存储str字符串,且在字符串末尾添加字符串结束符null
.byte b1,…, bn任意地址开始的连续n个存储空间中依次存储字节数据b1,…, bn
.word w1,…, wn4的整数倍地址开始的连续4*n个存储空间中存放n个字数据w1,…, wn
.half h1,…, hn2的整数倍地址开始的连续2*n个存储空间中存放n个半字数据h1,…, hn
.float f1,…, fn4的整数倍地址开始的连续4*n个存储空间中存放n个单精度浮点数据f1,…, fn
.double d1,…, dn8的整数倍地址开始的连续8*n个存储空间中存放n个双精度浮点数据d1,…, dn
.space n分配n个连续字节存储空间
.data addr定义用户数据段,addr为可选参数,指示用户数据段的起始地址。紧接着定义的内容存放在用户数据段
.text addr定义用户代码段,addr为可选参数,指示用户代码段起始地址。紧接着定义的内容存放在用户代码段。在QtSpim中紧接着的只能为指令
.globl sym声明变量sym为全局变量,全局变量可以被外部文件使用
例如:
(1) .align 2表示下一个存储地址字边界对齐。
(2) .align 0关闭.half、.word、.float以及.double等伪指令的自动边界对齐,直到碰到下一个.data或.kdata。
MIPS汇编语言中的str字符串采用双引号(“ ”)括起来,且字符串中特殊字符定义与C语言规范基本一致。例如: 换行符采用“\n”表示,Tab采用“\t”表示,引号采用“\””表示。
MIPS汇编语言数值的进制表示方法与C语言也一致,没有任何前缀的数为十进制数,十六进制数以0x开头。
数据在存储空间中的地址由变量表示,变量在汇编语言中的定义方式与标号类似,即在数据定义伪指令前写上变量名,并且用冒号隔开。变量与标号的区别在于: 变量表示数据在存储空间中的地址,标号表示指令在存储空间中的地址。
评论
还没有评论。