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

📄 mem_wb.h

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

#include "STDAFX.h"

SC_MODULE(MEM_WB)
{
	sc_in_clk clk;

	sc_in<sc_uint<32> > MEM_WB_instr_in;
	sc_in<sc_uint<32> > MEM_WB_ALU_result_in;
	sc_in<sc_uint<32> > MEM_WB_Memdata_in;

	sc_out<bool> MEM_WB_isRegWrite;
	sc_out<sc_uint<5> > MEM_WB_Reg_address;
	sc_out<sc_uint<32> > MEM_WB_Reg_data;

	void entry()
	{
		bool isregwrite=false;
		unsigned int regaddress=0,regdata=0;

		unsigned int op=MEM_WB_instr_in.read().range(31,26).to_uint();
		if (op==0) 
		{
			isregwrite=true;
			regaddress=MEM_WB_instr_in.read().range(15,11).to_uint();
			regdata=MEM_WB_ALU_result_in.read();
		}

		if (op==8 || op==12 || op==13)
		{
			isregwrite=true;
			regaddress=MEM_WB_instr_in.read().range(20,16).to_uint();
			regdata=MEM_WB_ALU_result_in.read();
		}

		if (op==35)
		{
			isregwrite=true;
			regaddress=MEM_WB_instr_in.read().range(20,16).to_uint();
			regdata=MEM_WB_Memdata_in.read();
		}

		if (sc_simulation_time()==50) 
		{
			cout<<"isregwrite"<<isregwrite<<endl;
		}

		MEM_WB_isRegWrite.write(isregwrite);
		MEM_WB_Reg_address.write(regaddress);
		MEM_WB_Reg_data.write(regdata);
	}

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


#endif

⌨️ 快捷键说明

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