📄 if_id.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 + -