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