- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机组成原理-实验四-寄存器堆设计实验
实验内容与原理:
CPU内部通常包含若⼲个通⽤寄存器,以暂存 加运算的数据和中间结果。寄存器速度快,个数少,但是RISC CPU的设计强调设置⼤
量的寄存器。例如,Intel 80x86系列CPU中只有8个寄存器,⽽SPA RC RISC CPU中却有120个寄存器。MISP CPU中有32个32位的寄存器
堆。
所谓寄存器堆,就是⼀个寄存器的集合,为⽅便访问其中的寄存器,对寄存器堆中的寄存器进⾏统⼀编码,称为寄存器号或者寄存器地
址,每个寄存器均通过制定寄存器好进⾏访问。
本实验要求设计⼀个32*32位的寄存器堆,即含有32个寄存器,每个寄存器32位。该寄存器堆有2个读端⼝、1个写端⼝,即能够同时读出2
个寄存器的值,写⼊1个寄存器。读操作不需要时钟控制,写操作需要在上跳沿才能写⼊。
其他具体实验内容 考计算机组成原理实验指导书。
程序模块结构图:
ALU运运算算器器模模块块代代码码 ::
`timescale 1ns / 1ps
//A U模块
module A U(OP,A,B,F,Z F,CF,OF,SF,PF) ;
parameter SIZ E = 32 ;//运算位数
input [3 :0] OP;//运算操作
input [SIZ E:1] A;//左运算数
input [SIZ E:1] B;//右运算数
output [SIZ E:1] F;//运算结果
output Z F, //0标志位, 运算结果为0(全零)则置1, 否则置0
CF, //进借位标志位, 取最⾼位进位C,加法时C=1则CF=1表⽰有进位,减法时C=0则CF=1表⽰有借位
OF, //溢出标志位,对有符号数运算有意义,溢出则OF=1,否则为0
SF, //符号标志位,与F的最⾼位相同
PF; //奇偶标志位,F有奇数个1,则PF=1,否则为0
reg [SIZ E:1] F;
reg C,Z F,CF,OF,SF,PF;//C为最⾼位进位
always@(*)
begin
C=0;
case(OP)
4'b0000:begin F=A&B; end //按位与
4'b0001:begin F=A|B; end //按位或
4'b0010:begin F=A^B; end //按位异或
4'b0011:begin F=~(A|B) ; end //按位或⾮
4'b0100:begin {C,F}=A+B; end //加法
4'b0101:begin {C,F}=A-B; end //减法
4'b0110:begin F=A<B; end //A<B则F=1,否则F=0
4'b0111:begin F=B<<A; end //将B左移A位
endcase
Z F = F==0;// F全为0,则Z F=1
CF = C; //进位借位标志
OF = A[SIZ E]^B[SIZ E]^F[SIZ E]^C;//溢出标志公式
SF = F[SIZ E] ;//符号标志,取F的最⾼位
PF = ~^F;//奇偶标志,F有奇数个1,则F=1;偶数个1,则F=0
end
endmodule
寄寄存存器器堆堆模模块块代代码码 ::
`timescale 1ns / 1ps
//寄存器堆模块
module RegFile(Clk,Clr,Write_ Reg,R_Addr_A,R_Addr_ B,W_Addr,W_ Data,R_ Data_A,R_ Data_ B) ;
parameter ADDR = 5 ;//寄存器编码/地址位宽
文档评论(0)