⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 if_id.h

📁 SystemC 实现 MIPS 处理器 源代码
💻 H
字号:
#ifndef IF_ID_H
#define IF_ID_H

#include "STDAFX.h"

//取指、译码寄存器 
SC_MODULE(IF_ID)
{
	//PC寄存器值,指令
	sc_in<sc_uint<32> > IF_ID_pc_in,IF_ID_instr_in;

	sc_in<bool> IF_ID_isDelay;

	//PC寄存器值,传给控制器的指令
	sc_out<sc_uint<32> > IF_ID_pc_out,IF_ID_instr_out;

	//要操作的寄存器
	sc_out<sc_uint<5> > IF_ID_rs,IF_ID_rt,IF_ID_rd;

	//立即数
	sc_out<sc_uint<16> > IF_ID_imm;

	//jump指令的跳转地址
	sc_out<sc_uint<32> > IF_ID_jump_address;
	
	sc_in_clk clk;


	void entry()
	{
		sc_uint<32> temp;

		if (IF_ID_isDelay.read()==false)
		{
			IF_ID_pc_out.write(IF_ID_pc_in.read());
			IF_ID_instr_out.write(IF_ID_instr_in.read());


			IF_ID_rs.write(IF_ID_instr_in.read().range(25,21));
			IF_ID_rt.write(IF_ID_instr_in.read().range(20,16));
			IF_ID_rd.write(IF_ID_instr_in.read().range(15,11));
			IF_ID_imm.write(IF_ID_instr_in.read().range(15,0));

			temp=IF_ID_instr_in.read().range(25,0)<<2;
			temp.range(31,28)=IF_ID_pc_in.read().range(31,28);

			IF_ID_jump_address.write(temp);

		}
		else ;


#ifdef DEBUG
		cout<<"-----------------------"<<endl;
		cout<<"IF_ID:"<<endl;
		cout<<"PC:    ";Print(pc_in.read(),cout);
		cout<<"Instr: ";Print(instr_in.read(),cout);
#endif

		fout<<"Current Time: ";
		fout<<sc_simulation_time()<<endl;
		fout<<"IF_ID:"<<endl;
		fout<<"PC:    ";Print(IF_ID_pc_in.read(),fout);
		fout<<"Instr: ";PrintInstr(IF_ID_instr_in.read(),fout);
		fout<<"-----------------------"<<endl;
	}

	SC_CTOR(IF_ID)
	{
		SC_METHOD(entry);
		sensitive_pos<<clk;
		dont_initialize();
	}
};

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -