第一范文网 - 专业文章范例文档资料分享平台

多周期MIPS CPU实验报告

来源:用户分享 时间:2025/6/18 1:10:16 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

组成原理实验报告

【实验名称】多周期MIPS CPU设计 【实验目的】

1.学习如何使用ISE的IP核

2.学习使用Xilinx FPGA内的RAM资源 3.熟悉mips指令集

4.掌握多周期mips CPU的原理。 5.多周期状态机的编写。

【实验内容】

?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

设计CPU,完成以下程序代码的执行,其功能是起始数为3和3的斐波拉契数列的计算。只计算20个数。

.data

fibs: .word 0 : 20 # \ 20 words to contain fib values size: .word 20 # size of \ temp: .word 3 3 .text

la $t0, fibs # load address of array la $t5, size # load address of size variable lw $t5, 0($t5) # load array size la $t3, temp lw $t3, 0($t3) la $t4, temp lw $t4, 4($t4)

sw $t3, 0($t0) # F[0] = $t3 sw $t4, 4($t0) # F[1] = $t4

addi $t1, $t5, -2 # Counter for loop, will execute (size-2) times loop: lw $t3, 0($t0) # Get value from array F[n] lw $t4, 4($t0) # Get value from array F[n+1] add $t2, $t3, $t4 # $t2 = F[n] + F[n+1]

sw $t2, 8($t0) # Store F[n+2] = F[n] + F[n+1] in array addi $t0, $t0, 4 # increment address of Fib. number source addi $t1, $t1, -1 # decrement loop counter bgtz $t1, loop # repeat if not finished yet. out: j out

# load

? ?

?

实验设计中可以不使用给定的数据通路和状态机,但仅允许使用一个存储器。 对指令/数据存储器的附加要求:

? 使用异步存储器,最高评分为√√

? 使用同步存储器,最高评分为√√√,使用同步存储器时,需要对数据通路

和状态机进行适当修改。

需要例化一个mem,代码段和数据段首地址自行指定。

【实验要求】

? 仿真查看数据ram 内容是否正确 ? 检查仿真执行状态等

? 检查代码设计,代码是否独立完成

【实验操作及结果】

按照所给ppt上的数据通路完成连线,并对jump进行针对性改进,完成连线设计。 图中的每个块为一个模块。

实验中控制电路部分主要用三段式状态机的方式对控制信号进行赋值,其中每个一个周期。

PPT所给电路图为异步实现方式,现将其改为同步实现方式,只需在s0和s1之间加入一个状态,取名为s12。再在外部电路连线中将输出为data的那个CLK模块删除掉即可改为同步实现方式。

【仿真结果】DataandInstrMem中结果符合要求。

仿真图

【附:源代码】

`timescale1ns/1ps

module Top( input clk,reset, output[31:0]PC,Instr );

wire[31:0]PC1,Adr;

wire[31:0]Data,RD1,RD2,A,B,SrcA,SrcB,ALUResult,ALUOut,SignImm,WD3,WD,RD,PCJump;

wire[4:0]A1,A2,A3; wire[5:0]Funct,Op;

wire[31:0]Result;//自己定义的 wire

lorD,MemWrite,IRWrite,PCWrite,Branch,ALUSrcA,RegWrite,RegDst,MemtoReg,PCEn,zero,PCB; wire[2:0]ALUOp;

wire[1:0]ALUSrcB,PCSrc; assign PC1=Result; assign Op=Instr[31:26]; assign Funct=Instr[5:0]; assign A1=Instr[25:21]; assign A2=Instr[20:16];

assign PCJump={PC[31:28],Instr[25:0],2'b00};//???? assign PCB=zero&Branch; assign PCEn=PCWrite|PCB; assign PC1=Result; assign WD=B; assign Data=RD;

搜索更多关于: 多周期MIPS CPU实验报告 的文档
多周期MIPS CPU实验报告.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c2al1f5xrgf3ef8k93tuc_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top