64,654
社区成员
发帖
与我相关
我的任务
分享
#ifndef __MUX_H
#define __MUX_H
#include <systemc.h>
SC_MODULE(Mux) {
public:
sc_in<int> select;
sc_in<int> data_in[8];
sc_out<int> data_out;
SC_CTOR(Mux) {
SC_THREAD(mux_function);
sensitive << select;
for ( int i=0 ; i<8 ; i++ )
sensitive << data_in[i];
};
private:
void mux_function() {
while (true) {
wait();
wait(1, SC_NS );
data_out = data_in[select.read()].read();
}
}
};
#endif
#ifndef _REG_FILE_H
#define _REG_FILE_H
#include "systemc.h"
#include "stdio.h"
SC_MODULE(RegFile){
public:
sc_in<int> read_reg_1;
sc_in<int> read_reg_2;
sc_in<int> write_reg;
sc_in<int> write_data;
sc_in<bool> write_enable;
sc_out<int> reg_1;
sc_out<int> reg_2;
sc_in_clk clock;
SC_CTOR(RegFile){
for(int i=0;i<8;i++){
reg[i] = new Register("Register");
result[i] =0;
}
for(int i=0;i<2;i++){
mux[i] = new Mux("Mux");
}
bitdemux = new BitDemux("BitDemux");
datademux = new DataDemux("DataDemux");
SC_METHOD(do_read_action);
sensitive << clock.pos();
SC_METHOD(do_write_action);
sensitive << clock.neg();
}
void do_read_action(){
for(int k=0;k<8;k++){
result[k] = reg[k]->getValue();
}
mux[0]->data_in(result);//这里出错
mux[0]->select(read_reg_1);
reg_1 = mux[0]->data_out;
mux[1]->data_in(result);//这里出错
mux[1]->select(read_reg_2);
reg_2 = mux[1]->data_out;
}
SC_MODULE(Mux) {
...
}