没有合适的资源?快使用搜索试试~ 我知道了~
zy10.docx
需积分: 5 0 下载量 156 浏览量
2024-06-19
09:25:44
上传
评论
收藏 232KB DOCX 举报
温馨提示
试读
11页
zy10
资源推荐
资源详情
资源评论
实验报告
2022 年 6 月 6 日 成绩:
姓名
学号
班级
专业
计算机科学与技术
课程名称
计算机组成原理课程设计
任课老师
指导老师
机位号
实验序号
10
实验名称
实现 R-I-J 型指令的 cpu 设计实验
实验时间
5.25
实验地点
1 教 604
实验设备号
一、实验程序源代码
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 11:05:34 05/25/2022
// Design Name:
// Module Name: zy10
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module zy10(
clk,rst,clk_m,
Inst_code,PC,
opcode,rs,rt,rd,shamt,func,imm,offset,
ALU_F,ZF,OF,ALU_OP,
imm_s,rt_imm_s,
ALU_B,R_Data_A,W_Addr,W_Data,imm_kz,R_Data_B,M_R_Data,Write_Reg,Mem_Write,Mem_Add
r,
PC_s,PC_next,w_r_s,wr_data_s
);
input clk;//时钟
input rst;//清零
input clk_m;
output reg [31:0]PC;//地址
output reg [31:0]PC_next;
wire [31:0]PC_new;
output [31:0]Inst_code;//取出的指令
output [5:0]opcode,func;//指令分段
output [4:0]rs,rt,rd,shamt;//指令分段
output [15:0]imm,offset;//指令分段
wire [25:0]address;//指令分段
output [31:0] ALU_F;//ALU 结果
output reg [2:0] ALU_OP;//ALU 结果
output ZF,OF;
output reg Write_Reg;
output reg Mem_Write;
output [31:0]R_Data_A;
output [31:0]R_Data_B;
output [31:0]M_R_Data;
output [7:0]Mem_Addr;
output reg imm_s;
output reg rt_imm_s;
output [4:0]W_Addr;
output [31:0]ALU_B;
output [31:0]W_Data;
output reg [31:0]imm_kz;
output reg [1:0]PC_s;
output reg[1:0]w_r_s;
output reg[1:0]wr_data_s;
initial PC = 32'h00000000;
assign PC_new = PC + 4;
ROM_J ROM1 (
.clka(clk), // input clka
.addra(PC[7:2]), // input [5 : 0] addra
.douta(Inst_code) // output [31 : 0] douta
);
always @(*)
case (PC_s) //根据 PC_s ,赋值 PC_next
2'b00: PC_next = PC_new;
2'b01: PC_next = R_Data_A;
2'b10: PC_next = PC_new + (imm_kz<<2);
2'b11: PC_next = {PC_new[31:28],address,2'b00};
endcase
always @(negedge clk or posedge rst)
begin
if (rst)
PC = 32'h00000000; //PC 复位;
else
PC = PC_next; //PC 更新为 PC+4;
end;
assign opcode = Inst_code[31:26];
assign rs = Inst_code[25:21];
assign rt = Inst_code[20:16];
assign rd= Inst_code[15:11];
assign shamt = Inst_code[10:6];
assign func = Inst_code[5:0];
assign imm= Inst_code[15:0];
assign offset= Inst_code[15:0];
assign address = Inst_code[25:0];
always @(*)
begin
ALU_OP = 3'b100; //默认做加法
imm_s = 1'b0; //默认对立即数/偏移量进行 0 扩展
rt_imm_s = 1'b0; //默认读出 rt 寄存器的数据送 ALU_B
Write_Reg = 1'b1; //默认写寄存器
Mem_Write = 1'b0; //默认不写存储器
PC_s = 2'b00;
w_r_s = 2'b00;
wr_data_s = 2'b00;
if (opcode==6'b000000) //R 指令
begin
case (func)
6'b100000:begin ALU_OP=3'b100;end //add
6'b100010:begin ALU_OP=3'b101;end //sub
6'b100100:begin ALU_OP=3'b000;end //and
6'b100101:begin ALU_OP=3'b001;end //or
6'b100110:begin ALU_OP=3'b010;end //xor
6'b100111:begin ALU_OP=3'b011;end //nor
剩余10页未读,继续阅读
资源评论
微雨盈萍cbb
- 粉丝: 111
- 资源: 17
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 学生成绩管理系统c++ (代码).zip
- c语言学生管理系统-项目代码资料.zip
- 课程设计机器学习报告,垃圾分类系统.zip
- app-release.apk.zip
- python-leetcode面试题解之第421题数组中两个数的最大异或值.zip
- python-leetcode面试题解之第416题分割等和子集.zip
- python-leetcode面试题解之第414题第三大的数.zip
- python-leetcode面试题解之第412题Fizz-Buzz.zip
- python-leetcode面试题解之第409题最长回文串.zip
- python-leetcode面试题解之第408题有效单词缩写.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功