mem_wb.h
来自「SystemC 实现 MIPS 处理器 源代码」· C头文件 代码 · 共 64 行
H
64 行
#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 + =
减小字号Ctrl + -
显示快捷键?