网站大量收购独家精品文档,联系QQ:2885784924

类MIPS单周期处理器.docx

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一、实验目的 认识微办理器的基本构造。 掌握哈佛构造的计算机工作原理。 学会设计简单的微办理器。 认识软件控制硬件工作的基来源理。 二、实验任务 利用HDL语言,鉴于XilinxFPGAnexys4实验平台,设计一个能够履行以下 MIPS指令集的单周期类MIPS办理器,要求达成所有支持指令的功能仿真,考证 指令履行的正确性,要求编写汇编程序将自己学号的ASCII码存入RAM的连续 内存地区。 1)支持基本的算术逻辑运算如add,sub,and,or,slt,andi指令 2)支持基本的内存操作如lw,sw指令 3)支持基本的程序控制如beq,j指令 三、实验过程 1、成立工程 在ISE14.7软件中成扬名为Lab1的工程文件。芯片系列选择Artix7,详细芯片型号选择XC7A100T,封装种类选择CSG324,速度信息选择-1。 . 2、分模块设计 指令储存器ROM设计 新建IPcoreGenerator,命名为irom。设定的指令储存器大小为128字,指 令储存器模块在顶层模块中被调用。输入为指令指针(PC)与时钟信号(clkin), 输出为32位的机器指令,并将输出的机器指令送到后续的存放器组模块、控制 器模块、马上数符号扩展模块进行相应的办理。 而后制作COE文件。先使用UltraEdit编写代码,代码以下 main: addi$2,$0,85 sw$2,0($3) addi$2,$0,50 sw$2,4($3) addi$2,$0,48 sw$2,8($3) addi$2,$0,49 sw$2,12($3) addi$2,$0,53# sw$2,16($3) addi$2,$0,49# sw$2,20($3) addi$2,$0,51# sw$2,24($3) addi$2,$0,52# sw$2,28($3) addi$2,$0,54# sw$2,32($3) addi$2,$0,52# sw$2,36($3) jmain . 将其导入QtSpim中,选中机器码,加上前缀并将最后一行 0 改为0代码以下 MEMORY_INITIALIZATION_RADIX=16; MEMORY_INITIALIZATION_VECTOR= ac620000, ac620004, ac620008, ac62000c, ac620010, ac620014, ac620018, ac62001c, ac620020, ac620024, 保留为.coe文件,在ROM模块里调用。 数据储存器RAM设计 新建IPcoreGenerator,命名为dram。数据储存器为RAM种类的储存器, 而且需要独立的读写信号控制。所以其对外的接口为clk、we、datain、addr; 输出信号为dataout。当时钟上涨沿到来时,假如写信号(we)为真,依据addr . 所表示的地点找到对应的储存单元,并将输入的数据(datain)写到对应的储存 单元中;假如写信号为假,则依据addr所表示的地点,将对应储存单元的数据 送到输出端(dataout)。在本实验中调用ISE供给的IP核进行设计,设定的数据 储存器大小为64字。 数据储存器模块在顶层模块中被调用。输入的时钟信号来自于顶层模块的 clkin,addr信号来自于ALU单元的输出端(对基地点与偏移量履行加操作), datain来自于存放器组的第二个数据输出端(Rtdata),而控制信号we则来自于 控制器对指令的译码。输出数据dataout经过一个选择器(MUX3)决定能否写 入到相应的存放器。 初始化dram值:0在此后的仿真过程中能够用于考证能否正确 调用 马上数符号扩展模块设计 关于I型指令,将指令的低十六位作为马上数符号扩展模块的输入inst[15:0], 假如十六位马上数的最高位(即符号位)为1,则在inst[15:15]前面补16个1, 假如为0,则在前面补16个0。而后将符号扩展以后的data[31:0]经过一个选择 器(即MUX2)输送到ALU单元的第二个源操作数输入端(即input2)。 代码以下: modulesignext( input[15:0]inst, output[31:0]data ); assigndata=inst[15:15]?{16hffff,inst}:{16h0000,inst}; endmodule . 存放器组模块 该模块的输入为clk、RegWriteData、Reg

文档评论(0)

136****9908 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档