单周期CPU的实现

0  本文主要总结计算机组成与结构中的大作业——单周期CPU的实现


1 主要实现代码

1.1 PC及PC+4

module PC(Clk,Clrn,Result,Address);//Reset=0,重置

input Clk,Clrn;

input[31:0] Result;

output[31:0] Address;

reg[31:0] Address;

always @(posedge Clk or negedge Clrn) 

         begin 

              if (Clrn == 0)

              begin 

                    Address = 0; 

                end 

                else  

                begin

                  Address =  Result; 

                end 

          end 

endmodule

PC+4通过CLA_32实现

 

1.2 INSTMEM(指令存储器)

主要参考书上代码(附每条指令具体含义)

module INSTMEM(Addr,Inst);//指令存储器

 input[31:0]Addr;

 output[31:0]Inst;

 wire[31:0]Rom[31:0];

 assignRom[5'h00]=32'h20010008;//addi $1,$0,8 $1=8

  assign Rom[5'h01]=32'h3402000C;//ori$2,$0,12 $2=12

  assignRom[5'h02]=32'h00221820;//add $3,$1,$2 $3=20

  assignRom[5'h03]=32'h00412022;//sub $4,$2,$1 $4=4

  assignRom[5'h04]=32'h00222824;//and $5,$1,$2

  assign Rom[5'h05]=32'h00223025;//or$6,$1,$2

  assign Rom[5'h06]=32'h14220002;//bne$1,$2,2

  assign Rom[5'h07]=32'hXXXXXXXX;

  assign Rom[5'h08]=32'hXXXXXXXX;

  assign Rom[5'h09]=32'h10220002;//beq $1,$2,2

  assign Rom[5'h0A]=32'h0800000D;// J0D

  assign Rom[5'h0B]=32'hXXXXXXXX;

  assign Rom[5'h0C]=32'hXXXXXXXX;

  assign Rom[5'h0D]=32'hAD02000A  ;// sw $2 10($8) memory[$8+10]=12

  assign Rom[5'h0E]=32'h8D04000A;//lw$4 10($8) $4=12

  assignRom[5'h0F]=32'h20810000;//addi $1,$4,0 $1=12

  assign Inst&
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值