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

📄 mux.h

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

#include "STDAFX.h"

//32位数据二选一多路选择器
SC_MODULE(Mux_2x32)
{
	//输入的32位数值,无符号
	sc_in<sc_uint<32> > A0,A1;
	//控制信号
	sc_in<bool> S;

	//输出数值
	sc_out<sc_uint<32> > out;

	void entry()
	{
		if (S.read()==1)
		{
			out.write(A1.read());
		}
		else
		{
			out.write(A0.read());
		}
	}

	//构造函数
	SC_CTOR(Mux_2x32)
	{
		SC_METHOD(entry);
		sensitive<<S<<A1<<A0;
	}
};

//5位数据二选一多路选择器
SC_MODULE(Mux_2x5)
{
	sc_in<sc_uint<5> > A0,A1;
	sc_in<bool> S;
	sc_out<sc_uint<5> > out;

	void entry()
	{
		if (S.read())
		{
			out.write(A1.read());
		}
		else
		{
			out.write(A0.read());
		}
	}

	SC_CTOR(Mux_2x5)
	{
		SC_METHOD(entry);
		sensitive<<S<<A1<<A0;
	}
};

SC_MODULE(Mux_4x32)
{
	sc_in<sc_uint<32> > A3,A2,A1,A0;
	sc_in<sc_uint<2> > S;

	sc_out<sc_uint<32> > out;

	void entry()
	{
		if (S.read().to_uint()==0) out.write(A0);
		if (S.read().to_uint()==1) out.write(A1);
		if (S.read().to_uint()==2) out.write(A2);
		if (S.read().to_uint()==3) out.write(A3);
	}

	SC_CTOR(Mux_4x32)
	{
		SC_METHOD(entry);
		sensitive<<A3<<A2<<A1<<A0<<S;
	}
};

SC_MODULE(Mux_3x32)
{
	sc_in<sc_uint<32> > ID_EX_data,EX_MEM_data,MEM_WB_data;
	sc_in<sc_uint<2> > Forward;
	
	sc_out<sc_uint<32> > data_out;

	void entry()
	{
		if (Forward.read()==0) data_out.write(ID_EX_data.read());
		if (Forward.read()==1) data_out.write(EX_MEM_data.read());
		if (Forward.read()==2 || Forward.read()==3) data_out.write(MEM_WB_data.read());
	}

	SC_CTOR(Mux_3x32)
	{
		SC_METHOD(entry);
		sensitive<<ID_EX_data<<EX_MEM_data<<MEM_WB_data<<Forward;
	}
};


#endif

⌨️ 快捷键说明

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