欢迎光临
免费的PDF电子书下载网站

计算机组成原理与接口技术——基于MIPS架构实验教程(第2版) PDF下载

编辑推荐

配套资源如下:
? 配套理论教材为《计算机组成原理与接口技术——基于MIPS架构》(清华大学出版社)。
? 配套实验源代码及教学课件(PPT),下载地址为清华大学出版社网站本书页面。
本书特色如下:
? 汇编语言程序设计 采用MIPS虚拟机,方便读者在没有硬件平台的环境下进行MIPS汇编程序设计实践。
? 原型计算机系统设计 硬件设计采用Verilog硬件描述语言,软件设计采用汇编语言,强化软件与硬件之间的联系,加深对计算机组成原理的认识。
? 嵌入式计算机系统设计 基于MicroBlaze软核微处理器,采用模块化的IP软核为主要手段实现计算机系统硬件设计;基于Standalone BSP,采用C语言为手段实现计算机系统软件设计。
? 接口设计实例多样化 不仅列举了各类常见的并行接口设计实例,还给出了各类常见于嵌入式系统的串行接口设计实例及人机接口设计实例。
? 验证性实验与设计性实验相结合 验证性实验帮助读者深刻理解计算机组成原理,设计性实验协助读者进行计算机组成的创新性设计和实践。
? *的实验平台:采用Xilinx Artix7系列FPGA实验板Nexys4 DDR以及Vivado开发套件。

 ;

内容简介

本书配合《计算机组成原理与接口技术——基于MIPS架构》一书而编写,特点是以实验为主,在简要介绍基本原理的基础上,详细地阐述了各个实验设计、实现等具体过程。本书实验内容分为三部分:MIPS汇编程序设计、基于FPGA的原型计算机系统设计以及基于IP核的嵌入式计算机系统设计。本书介绍了MIPS模拟器QtSpim、Mars,Xilinx FPGA开发套件Vivado、SDK等开发工具的使用,并通过一个个具体实验案例,帮助读者在掌握基本原理的基础上,动手实践计算机软硬件接口技术。同时,本书还在各类实验案例基础上设置了不同难易程度的实验任务及思考题,可以满足不同层次的学习需求。

作者简介

左冬红 博士,华中科技大学湖北省智能互联网技术重点实验室现代网络通信技术研究室教师。主要研究领域为无线网络技术、流媒体分发技术、嵌入式家庭媒体网关设备等。历年承担“微机原理与接口技术”、“数字电子技术”等课程的教学工作,多次承担华中科技大学“微机原理与接口技术”课程相关的教学改革研究项目,并于2013年承担了湖北省教学改革研究项目——“微处理器与接口技术课程建设”。发表与微机原理及接口技术相关的教学改革研究论文多篇。

计算机组成原理与接口技术——基于MIPS架构实验教程(第2版) PDF下载

目录

目录



第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月于华中科技大学

免费在线读

第3章
CHAPTER 3

MIPS汇编语言

3.1MIPS汇编程序结构
MIPS汇编程序一般定义两个段,即数据段和代码段,并以空白行表示汇编程序的结束,如图31所示。main表示代码段程序入口地址,且声明为全局标号,可以被SPIM内核调用。
该程序的功能为接收用户输入的数据N,计算1~N的序列和,并显示结果。且循环执行,直到用户输入0。运行结果如图32所示。

图31MIPS汇编语言程序结构

图32运行结果

3.2系统功能调用
系统功能调用实质是产生软件异常,内核代码根据产生的异常功能号进行相应处理。表31列举了SPIM常用系统功能调用。

表31常用系统功能调用

功 能 描 述功能号($v0)输 入 参 数输 出 参 数
显示整数1$a0: 整数值
显示字符串直到字符串结束符04$a0: 字符串首地址
读入整数5$v0: 输入的整数值
读入字符串8$a0: 内存空间首地址

$a1: 内存空间长度
退出10

系统功能调用使用步骤为:
(1) 将功能号保存到$v0中。
(2) 配置好输入参数。
(3) 运行syscall指令。
(4) 处理输出参数。
例3.1采用系统功能调用显示$t0中的十进制数,编写程序段。
程序段如图33所示。
例3.2采用系统功能调用读入十进制数并判断是否小于等于0,若不小于等于0则将$t0置为0,编写程序段。
程序段如图34所示。

图33十进制输出程序段

图34十进制数输入程序段

值得注意的是,系统功能调用整数输入/输出都是十进制形式,而且不判断输入数据是否合法。如果要以二进制、十六进制形式输入/输出整数,则需要通过以下两个步骤:
(1) 字符串输入、输出。
(2) 字符串、数值互换。
具体实现可参考后续例程。
3.3伪指令
汇编伪指令告诉汇编程序如何汇编汇编语言源程序,如定义程序结构、存储布局、标志数据以及指令的地址等。常用MIPS汇编伪指令如表32所示。

表32常用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开头。
数据在存储空间中的地址由变量表示,变量在汇编语言中的定义方式与标号类似,即在数据定义伪指令前写上变量名,并且用冒号隔开。变量与标号的区别在于: 变量表示数据在存储空间中的地址,标号表示指令在存储空间中的地址。

计算机组成原理与接口技术——基于MIPS架构实验教程(第2版) pdf下载声明

本pdf资料下载仅供个人学习和研究使用,不能用于商业用途,请在下载后24小时内删除。如果喜欢,请购买正版

pdf下载地址

版权归出版社和作者所有,下载链接已删除。如果喜欢,请购买正版!

链接地址:计算机组成原理与接口技术——基于MIPS架构实验教程(第2版)