计算机组成原理课程设计指导书2015秋_第1页
计算机组成原理课程设计指导书2015秋_第2页
计算机组成原理课程设计指导书2015秋_第3页
计算机组成原理课程设计指导书2015秋_第4页
计算机组成原理课程设计指导书2015秋_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程设计实验实验目的首先利用MINISYS中的MIPS指令编写一个小程序;将简单模型机和小程序一起加载到N4主板上;能够正确执行编译后的程序,并观察相关的程序。实验设备PC机一台,DigilentNexys4TM开发板,XilinxVivado开发套件,MINISYS汇编器。实验原理MINISYS原型结构MINISYS采用32位MIPS指令中最常用的31条指令,其寄存器组,指令格式等均采用MIPS指令系统相同的格式。共有32个32位寄存器,32位定长格式指令,5种寻址方式。MINISYS寄存器组寄存器名寄存器号约定用途$zero0常数0,该寄存器永远只返回0。$at1用做汇编器的暂时变量。$v0~$v12~3用来存放一个子程序(函数)的非浮点运算的结果或返回值。$a0~$a34~7存放子程序(函数)调用时的非浮点参数。$t0~$t78~15暂时变量,子程序(函数)使用时不保存这些寄存器的值,因此调用后它们的值会被破坏。$s0~$s716~238个子程序用寄存器。子程序(函数)必须在返回之前恢复这些寄存器的值以保证其没有变化。$t8~$t924~25暂时变量,子程序(函数)使用时不保存这些寄存器的值,因此调用后它们的值会被破坏。$k0~$k126~27为中断/异常处理保留。由操作系统的异常或中断处理程序使用,不恢复原来的值。$gp28全局指针。某些运行时系统用来为Static或Extern变量提供简单的访问方式。$sp29堆栈指针,对它的调整必须显式的通过指令来实现,硬件不支持堆栈指针的调整。$s8/$fp30第9个子程序用寄存器变量,子程序用它做堆栈帧指针。$ra31存放调用子程序(函数)时的返回地址。MINISYS指令的寻址方式立即数寻址指令中第3操作数可使用16位二进制立即数寄存器寻址操作数存放在寄存器中,指令里放的是寄存器号变址寻址操作数存放在数据存储器中,其有效地址由两部分组成,基地址放在一个寄存器中,偏移部分为一个16位的立即数PC相对寻址操作数是下一条指令的PC值(PC+4)加上一个16位偏移量地址左移两位的值伪直接寻址26位偏移地址+PC高4位30位字地址(MINISYS中直接用26位偏移地址左移两位)MINISYS端口地址分配表接口部件首地址数码管0FFFFFC00H4×4键盘(Pmod)0FFFFFC10H定时/计数器0FFFFFC20H脉冲宽度调制器0FFFFFC30H异步串行口0FFFFFC40H看门狗0FFFFFC50HLED0FFFFFC60H拨码开关0FFFFFC70HMINISYS汇编器使用方法汇编器支持31条指令,采用.asm源文件输入,同时输出结果可以由XilinxBlockRAMIP核直接加载;支持4KB,8KB,16KB,32KB,64KB和128KB存储器。编译器容许打开多个文档进行编辑,汇编器会选择当前激活的文档进行编译。支持关键词、数字及注释等的语法高亮,并且可以访问中文路径及添加中文注释(Unicode编码)。用户还可以进行相关的查找和替换等操作。MINISYS单周期数据通路MINISYS汇编程序设计汇编语句格式[标号:]指令助记符第1操作数[,第2操作数[,第3操作数]][#注释][]中的内容为可选项标号可以是以英文字母开头的字母-数字串,可以由字母、数字、下划线,“$”和“.”组成,长度不超过8个字符。注意不要和保留字重名。标号和指令助记符都不区分字母的大小写汇编代码是以行为单位的,不支持一行内有多条指令“#”到行末的是注释部分,但要注意,“#”不要出现在一行的最左列,因为最左列的“#”表示要启用C预编译器伪指令数据段定义伪指令.data [addr] 定义数据段,程序的变量需要在该伪指令下定义。汇编程序应分配和初始化变量的存储空间。如果定义了addr,则该数据段从这个addr地址开始。例:.data #数据段开始buf:.word128,434,174559,7.data0x10000200arra:.word20,70,-15,67数据定义伪指令[变量名:]数据类型初始值[,初始值[,初始值……]]变量名是以字母开头的字母数字串,字母包括‘A’~‘Z’26个大写字母和‘a’~‘z’26个小写字母,数字包括‘0’~‘9’,字母大小写不作区分。类型之后是数据定义的初始值列表,两个数据之间用西文逗号隔开。数据可以是十六进制或十进制表示。十六进制数需要用0x作为前缀十进制数不需要前缀或后缀如果要连续的定义几个大小相等的数据,可以在初始值列表中采用“初始值:重复数”的格式来表示。字符串的初始值要用""括起来。变量名具有地址属性,表示了该变量的首地址。类型用于定义变量的数据类型,主要有如下数据类型。类型数据类型.byte字节类型(8bits).half半字类型(16bits).word字类型(32bits).float单精度浮点类型.double双精度浮点类型.asciiASCII字符串类型.asciiz以'\0'结尾的ASCII字符串类型数据定义的例子如下:buf:.byte3,8,87,21#定义了4个字节数,3,8,87,21.half0x34a,15 #定义了2个半字(16位)数, #十六进制的34a和十进制数15.word6:3,2 #定义了4个字(32位)数,6,6,6,2str:.ascii"hello\0","a"str2:.asciiz"hello".float12.678.double12.678,7.6137e-1代码段定义伪指令.text[addr]定义代码段,如果定义了addr,则该代码段从这个addr地址开始。例:.text #代码段开始lw$t0,buff($t1)汇编程序结构.DATA0x100000 #数据段定义开始BUF:.WORD0X000000FF,0X55005500 #定义数据.TEXT #代码段定义开始start:addi$t0,$Zero,0 #程序的第一条指令必须有一个标号,$t0=0lw $v0,buf($t0) #$v0=000000FF(buf[0])addi$t0,$t0,4 #$t0=$t0+4lw $v1,buf($t0) #$v1=55005500(buf[4])add$v0,$v0,$v1 #$v0=$v0+$v1=550055FF addi$t0,$t0,4 #$t0=$t0+1 sw$v0,buf($t0)#buf[8]=550055FF j start实验步骤示例是编写程序不断地从拨码开关读出数据,并将数据输出到LED灯上。打开MINISYS汇编器,创建文件并保存文件,然后开始编辑汇编程序。关键代码步骤如下:第一步,$28中放端口地址的高20位lui$1,0xffffori$28,$1,0xF000第二步,读拨码开关端口lw $s1,0C70H($28)第三步,将拨码开关的数据写到LED上sw$1,0xC60($28)最后根据汇编程序的结构来编辑完成程序,最终的效果如下图。使用MINISYS汇编器编写汇编程序完成后,选择菜单栏下的64K,然后编译通过无错误后,将生成2个coe文件(在根目录下有个output文件夹)。打开MINISYS项目,导入2个coe文件分别替代rom和ram中的文件,rom的操作如下图所示。点击确定后,会弹出如下对话框,选择Generate。ram文件的替代操作类似。依次按照下图的步骤综合项目源文件、实施活动的设计合成的网表。综合的目的是检查代码是否存在语法错误,生成网表后可以绑定相应的管脚。绑定输入输出变量对应的开发板的引脚,将输入变量switch2N4对应的端口绑定到开关的16位,将输出变量led2N4的对应端口绑定到对应的16个LED上,如原理图所示,并保存生成的约束文件。然后按照上图的第3步骤生成编码文件。连接开发板,并打开开发板开关,将程序下载到开发板上,观察输入不同操作对应的拨码开关和LED的显示情况。课程设计选择题目如下:题目1——节日彩灯按如下要求设计一个有16个发光二极管的彩灯程序。能够循环执行每隔大约半秒变换一次(用循环来获得大约半秒延迟)每次灯的变换如下,1表示亮,0表示灭灯。灯亮的顺序是,从两边向中间依次点亮,再从中间向两边依次熄灭。题目2——原码一位乘(见附件1)以原码一位乘为基础,设计一个两个数乘法程序。不断从拨码开关中读入数据,其中SW3-SW0为乘数,SW15~SW12为被乘数,乘法结果输出到LD7~LD0。要求程序中必须出现SRL,SLL指令。题目3——多功能计算程序内部有一变量VAL=4,LED始终输出VAL的低16位值。SW15/SW14/13为功能选择,含义如下表。SW15SW14SW13动作X00无动作001将SW12~SW0这13位作为输入赋值给VAL010VAL=VAL+1(每隔约1秒动作一次)011VAL=VAL-1(每隔约1秒动作一次)101VAL左移1位(每隔约1秒动作一次)110VAL逻辑右移1位(每隔约1秒动作一次)111VAL算数右移1位(每隔约1秒动作一次)附件1原码一位乘原码1位乘与乘法极为相似,只差在符号位,所以我们可以通过被乘数和乘数的两个符

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论