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

📄 cpu.h

📁 本程序用systemC仿真UART的功能
💻 H
字号:
#include <systemc.h>#include "uart_if.h"//#include "uart.h"class cpu:public sc_module{public:	sc_port<uart_if>	uart_port;	SC_HAS_PROCESS(cpu);	void action();	cpu(sc_module_name name_)		:sc_module(name_)	{			 pc_count=0;		 data=2;		 rw=0;				 ulcon=0x28;//5bib data,1bit stop,1bit start,even parity		 ucon=0;		 ufcon=0x7;		 umcon=0;				 ufstat=0x20;		 uerstat=0;		 umstat=0;			 ubrdiv=20;		 utxh=0;		 urxh=0;				SC_THREAD(action);		} private:	            	unsigned int pc_count;				unsigned int		ulcon;		//0x00		unsigned int		ucon;		//0x04		unsigned int		ufcon;		//0x08		unsigned int		umcon;		//0x0c		unsigned int		utrstat;	//0x10		unsigned int		uerstat;	//0x14		unsigned int		ufstat;		//0x18		unsigned int		umstat;		//0x1c		unsigned int		utxh;		//0x20		unsigned int		urxh;		//0x24		unsigned int		ubrdiv;		//0x28		int  rw;	       	unsigned int data;		};void cpu::action(){		while(true)	{		pc_count++;	//	cout<<" pc_count:"<<pc_count<<endl;	//	cout<<"uart is running"<<pc_count<<endl;	//	if(pc_count==21){	//		cout<<"pc_count====+++++="<<endl;	//	}		uart_port->uart_action(pc_count);						if(pc_count==1)		{ 						uart_port->uartrw_rw(ADDR_ULCON,&ulcon,rw);		}				if(pc_count==2)		{				uart_port->uartrw_rw(ADDR_UCON,&ucon,rw);		}				if(pc_count==3)		{		        			uart_port->uartrw_rw(ADDR_UFCON,&ufcon,rw);		}				if(pc_count==4)		{						uart_port->uartrw_rw(ADDR_UMCON,&umcon,rw);		}						if(pc_count==5)		{			utrstat=0;			rw=1;			uart_port->uartrw_rw(ADDR_UTRSTAT,&utrstat,rw);		}		if(pc_count==6)		{			rw=1;		    uart_port->uartrw_rw(ADDR_UERSTAT,&uerstat,rw);//register initial value		}				if(pc_count==7)					{	rw=1;			uart_port->uartrw_rw(ADDR_UFSTAT,&ufstat,rw);		}				if(pc_count==8)		{			rw=1;			uart_port->uartrw_rw(ADDR_UMSTAT,&umstat,rw);		}		if(pc_count==9)		{			rw=0;						uart_port->uartrw_rw(ADDR_UBRDIV,&ubrdiv,rw);		}		if(pc_count==16)		{			rw=0;			utxh='a';			uart_port->uartrw_rw(ADDR_UTXH,&utxh,rw);		}		if(pc_count==20)		{			rw=1;			uart_port->uartrw_rw(ADDR_URXH,&urxh,rw);		}		if(pc_count==60)		{			rw=0;			utxh=50;			uart_port->uartrw_rw(ADDR_UTXH,&utxh,rw);		}				if(pc_count==61)		{			rw=1;			uart_port->uartrw_rw(ADDR_URXH,&urxh,rw);		}		if(pc_count==200)		{			rw=1;			uart_port->uartrw_rw(ADDR_UTRSTAT,&utrstat,rw);		}		//	if(pc_count==48)		//	{		//		rw=1;		//		uart_port->uartrw_rw(ADDR_URXH,&urxh,rw);		//	}			if(pc_count==83)			{				rw=0;				utxh=53;							uart_port->uartrw_rw(ADDR_UTXH,&utxh,rw);			}			if(pc_count==85)			{				rw=1;				uart_port->uartrw_rw(ADDR_URXH,&urxh,rw);			}									wait(1,SC_US);			}	 }		

⌨️ 快捷键说明

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