资源描述:
《计算机组成原理课程设计指导书2015秋》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、课程设计实验1.实验目的1)首先利用MINISYS屮的MIPS指令编写一个小程序;2)将简单模型机和小程序一起加载到N4主板上;3)能够止确执行编译后的程序,并观察相关的程序。2.实验设备PC机一台,DigilentNexys4™开发板,XilinxVivado开发套件,MINISYS汇编器。3.实验原理3.1.MINISYS原型结构MINISYS采用32位MIPS指令中最常用的31条指令,其寄存器组,指令格式等均采用MIPS指令系统相同的格式。共有32个32位寄存器,32位定长格式指令,5种寻址方式。MINISY
2、SCPU取指单元译码单元控制单元运算单元64KBROM64KBRAM总线仲裁
3、MINISYSBUSLED拨码开关3.2.MINISYS寄存器组寄存器名寄存器号约定用途$zero0常数0,该寄存器永远只返回0。$at1用做汇编器的暂时变量。$vO~$vl2~3用来存放一个子程序(函数)的非浮点运算的结果或返回值。$a0〜$a34~7存放子程序(函数)调用时的非浮点参数。$t0~$t78~15暂时变量,子程序(函数)使用时不保存这些寄存器的值,因此调用后它们的值会被破坏。$s0~$s716~238个子程序用寄存器。子程
4、序(函数)必须在返回之前恢复这些寄存器的值以保证其没有变化。$t8~$t924~25暂时变量,子程序(函数)使用时不保存这些寄存器的值,因此调用后它们的值会被破坏。$kO~$kl26~27为中断/异常处理保留。由操作系统的异常或中断处理程序使用,不恢复原来的值。$gp28全局指针。某些运行时系统用来为Static或Extern变量提供简单的访问方式。$sp29堆栈指针,对它的调整必须显式的通过指令来实现,硬件不支持堆栈指针的调整。$s8/$fp30第9个子程序用寄存器变量,子程序用它做堆栈帧指针。$ra31存放调用
5、子程序(函数)时的返回地址。1.3.MINISYS指令的寻址方式>立即数寻址指令中第3操作数可使用16位二进制立即数>寄存器寻址操作数存放在寄存器屮,指令里放的是寄存器号>变址寻址操作数存放在数据存储器中,其有效地址由两部分组成,基地址放在一个寄存器中,偏移部分为一个16位的立即数>PC相对寻址操作数是下一条指令的PC值(PC+4)加上一个16位偏移量地址左移两位的值>伪直接寻址26位偏移地址+PC高4位T30位字地址(MINISYS屮直接用26位偏移地址左移两位)1.4.MINISYS端口地址分配表接口部件首地址
6、数码管0FFFFFC00H4X4键盘(Pmod)0FFFFFC10H定时/计数器0FFFFFC20H脉冲宽度调制器0FFFFFC30H异步串行口0FFFFFC40H看门狗0FFFFFC50HLED0FFFFFC60H拨码开关0FFFFFC70H3.5.MINISYS汇编器使用方法>汇编器支持31条指令,釆用.处说源文件输入,同时输出结果可以由XilinxBlockRAMIP核直接加载;>支持4KB,8KB,16KB,32KB,64KB和128KB存储器。>编译器容许打开多个文档进行编辑,汇编器会选择当前激活的文档进
7、行编译。>支持关键词、数字及注释等的语法高亮,并11可以访问中文路径及添加中文注释(Unicode编码)。>用户述可以进行相关的查找和替换等操作。3.6.MINISYS单周期数据通路Clock1□z3・7・MINISYS汇编程序设计3・7・1•汇编语句格式[标号:]指令助记符第1操作数[,第2操作数[,第3操作数]][#注释]■[]屮的内容为可选项■标号可以是以英文字母开头的字母-数字串,可以由字母、数字、下划线,“$”和”组成,氏度不超过8个字符。注意不要和保留字重名。■标号和指令助记符都不区分字母的大小写■汇编
8、代码是以行为单位的,不支持一行内有多条指令■到行末的是注释部分,但要注意,不要出现在一行的最左列,因为最左列的“#”表示要启用C预编译器3.7.2.伪指令3.721•数据段定义伪指令•data[addr]定义数据段,程序的变量需耍在该伪指令下定义。汇编程序应分配和初始化变量甲存储空间。如果定义了词山,则该数据段从这个addr地址开始。例:・data#数据段开始buf:•word12&434,174559,7・data0x10000200arra:•word20,70,-15,673・7・2・2•数据定义伪指令[变量
9、名:]数据类型初始值[,初始值[,初始值……]]■变量名是以字母开头的字母数字串,字母包括'A'~'Z,26个大写字母和'屮~26个小写字母,数字包括'0,~'9,,字母大小写不作区分。■类型之示是数据定义的初始值列表,两个数据之间用西文逗号隔开。■数据町以是十六进制或十进制表示。十六进制数需要用Ox作为前缀十进制数不需婆前缀或后缀■如果要连续的定义几个人小