杭电计算机组成原理课程设计-实验十-取指令与指令译码实验

实验内容

1)在ISE中使用Memory IP核生成一个只读存储器Inst_ROM,作为指令存储器,并关联一个.coe文件。

2)编程实验取指令模块,调用Inst_ROM指令存储器模块。

3)编写一个实验验证的顶层模块。

实验原理图

在这里插入图片描述

在这里插入图片描述

.coe文件内容

.coe文件内容由汇编语言翻译而来,详情见 MIPS汇编器与模拟器实验
根据.coe文件创建IP核,IP核的创建详情见 ISE IP核创建教程

memory_initialization_radix=16;
memory_initialization_vector=00004827,0009502b,012a5822,012b6022,014c6820,01a97004,01ad7804,01eac020,030bc825,01798826,01d89024,02299820,0253a025,01b1a804,02b1b004,016eb820,012af820,00000820,00010fff,20006789,ffff0000,0000ffff,88888888,99999999,aaaaaaaa,bbbbbbbb,12345678,23456789,3456789a,456789ab,56789abc,6789abcd,00000820,00632020,00010fff,20006789,ffff0000,0000ffff,88888888,99999999,aaaaaaaa,bbbbbbbb,12345678,23456789,3456789a,456789ab,56789abc,6789abcd,00000820,00632020,00010fff,20006789,ffff0000,0000ffff,88888888,99999999,aaaaaaaa,bbbbbbbb,12345678,23456789,3456789a,456789ab,56789abc,6789abcd;

逻辑管脚图

在这里插入图片描述

模块代码

module Get_Inst(
	clk,rst,
    Inst_code,PC,PC_new,
    opcode,rs,rt,rd,shamt,func,imm,offset,address
    );
	input clk;//时钟
    input rst;//清零
	output reg [31:0]PC;//地址
    output [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;//指令分段
	output [25:0]address;//指令分段
	 
	 initial PC = 32'h00000000;
	 assign PC_new = PC + 4;

Inst_Rom ROM1 (
  .clka(clk), // input clka
  .addra(PC[7:2]), // input [5 : 0] addra
  .douta(Inst_code) // output [31 : 0] douta
);
	
	always @(negedge clk or posedge rst)
  begin
	if (rst)
		PC = 32'h00000000; //PC复位;
	else
		PC = PC_new; //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];

endmodule

仿真代码

always #33 clk = ~clk;
	initial begin
		
		clk = 0;
		rst = 1;
		#2
		rst=0;

		#500;
        rst=1;
		#50;
		rst=0;
		#500 ;
		
	end
      
endmodule

仿真波形图

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值