📄 benif.h
字号:
#include <systemc.h>#include "mmips.h"SC_MODULE(BENIF_WRAPPER){ sc_in< bool > IFCLK; sc_in< bool > WRITE_STROBE; sc_in< bool > READ_STROBE; sc_in< bool > DMA_ENABLE; sc_in< bool > DMA_DIRECTION; sc_in< bool > DMA_RDY; sc_in< bool > DMA_DATA_AVAILABLE; sc_in< bool > RST; sc_in< bool > SYNC_RESET; sc_in< bool > DMA_RESET; sc_in< sc_uint<31> > ADDRESS; sc_inout_rv< 32 > DATA; sc_inout_rv< 32 > DMA_DATA; sc_in< sc_uint<32> > COUNT; sc_in< sc_uint<4> > DMA_SEL; sc_out< bool > DMA_WEN; sc_out< bool > DMA_REN; sc_out< bool > INT; sc_out< sc_bv<4> > LEDS; sc_out<sc_uint<32> > memADDR; sc_out<sc_int<32> > memDI; sc_out<bool> memEN; sc_out<bool> memCLK; sc_out<bool> memRST; sc_in<sc_int<32> > ramDO,romDO; sc_out<bool> ramWE,romWE; sc_in<sc_bv<32> > pc; sc_out<bool> enable; sc_out<bool> reset; sc_signal< sc_uint<32> > addr; sc_signal< sc_uint<32> > memsel; sc_signal< sc_uint<25> > cnt; sc_signal< sc_uint<32> > control; void logic(); void count(); void register_write(); void register_read(); void memory_input(); SC_CTOR(BENIF_WRAPPER) { SC_METHOD(logic); sensitive << IFCLK << WRITE_STROBE << READ_STROBE << DMA_ENABLE << DMA_DIRECTION << DMA_RDY << DMA_DATA_AVAILABLE << RST << SYNC_RESET << DMA_RESET << ADDRESS << DATA << DMA_DATA << COUNT << DMA_SEL << control << addr << memsel << cnt; SC_METHOD(memory_input); sensitive << IFCLK << DATA << addr << memsel << ADDRESS << WRITE_STROBE << control; SC_METHOD(count); sensitive_pos << IFCLK << RST; SC_METHOD(register_write); sensitive_pos << IFCLK << RST; SC_METHOD(register_read); sensitive << READ_STROBE << ADDRESS << addr << memsel; sensitive << pc; sensitive << ramDO << romDO; }};SC_MODULE(BENIF){ mMIPS *mmips; BENIF_WRAPPER *wrapper; sc_in<bool> MIPSCLK; sc_in< bool > IFCLK; sc_in< bool > WRITE_STROBE; sc_in< bool > READ_STROBE; sc_in< bool > DMA_ENABLE; sc_in< bool > DMA_DIRECTION; sc_in< bool > DMA_RDY; sc_in< bool > DMA_DATA_AVAILABLE; sc_in< bool > RST; sc_in< bool > SYNC_RESET; sc_in< bool > DMA_RESET; sc_in< sc_uint<31> > ADDRESS; sc_inout_rv< 32 > DATA; sc_inout_rv< 32 > DMA_DATA; sc_in< sc_uint<32> > COUNT; sc_in< sc_uint<4> > DMA_SEL; sc_out< bool > DMA_WEN; sc_out< bool > DMA_REN; sc_out< bool > INT; sc_out< sc_bv<4> > LEDS; sc_signal<sc_uint<32> > memADDR; sc_signal<sc_int<32> > memDI; sc_signal<bool> memEN; sc_signal<bool> memCLK; sc_signal<bool> memRST; sc_signal<sc_int<32> > ramDO,romDO; sc_signal<bool> ramWE,romWE; sc_signal<sc_bv<32> > pc; sc_signal<bool> enable; sc_signal<bool> reset; // unused device interface sc_signal< sc_bv<DWORD> > dev_dout; sc_signal< sc_bv<DWORD> > dev_din; sc_signal< bool > dev_r, dev_w; sc_signal< bool > dev_rdyr, dev_rdyw; sc_signal< bool > dev_wdata, dev_waddr; sc_signal<bool> dev_send_eop; sc_signal<bool> dev_rcv_eop; SC_CTOR(BENIF) { mmips = new mMIPS("mMIPS"); wrapper = new BENIF_WRAPPER("wrapper"); wrapper->reset(reset); wrapper->enable(enable); wrapper->IFCLK(IFCLK); wrapper->WRITE_STROBE(WRITE_STROBE); wrapper->READ_STROBE(READ_STROBE); wrapper->DMA_ENABLE(DMA_ENABLE); wrapper->DMA_DIRECTION(DMA_DIRECTION); wrapper->DMA_RDY(DMA_RDY); wrapper->DMA_DATA_AVAILABLE(DMA_DATA_AVAILABLE); wrapper->RST(RST); wrapper->SYNC_RESET(SYNC_RESET); wrapper->DMA_RESET(DMA_RESET); wrapper->ADDRESS(ADDRESS); wrapper->DATA(DATA); wrapper->DMA_DATA(DMA_DATA); wrapper->COUNT(COUNT); wrapper->DMA_SEL(DMA_SEL); wrapper->DMA_WEN(DMA_WEN); wrapper->DMA_REN(DMA_REN); wrapper->INT(INT); wrapper->LEDS(LEDS); wrapper->memADDR(memADDR); wrapper->memDI(memDI); wrapper->memEN(memEN); wrapper->memCLK(memCLK); wrapper->memRST(memRST); wrapper->ramDO(ramDO); wrapper->ramWE(ramWE); wrapper->romDO(romDO); wrapper->romWE(romWE); mmips->clock(MIPSCLK); mmips->reset(reset); mmips->enable(enable); mmips->ramADDR(memADDR); mmips->romADDR(memADDR); mmips->ramDI(memDI); mmips->romDI(memDI); mmips->ramEN(memEN); mmips->romEN(memEN); mmips->ramCLK(memCLK); mmips->romCLK(memCLK); mmips->ramRST(memRST); mmips->romRST(memRST); mmips->ramDO(ramDO); mmips->ramWE(ramWE); mmips->romDO(romDO); mmips->romWE(romWE); mmips->bus_pc(pc); wrapper->pc(pc); mmips->dev_dout(dev_dout); mmips->dev_din(dev_din); mmips->dev_r(dev_r); mmips->dev_w(dev_w); mmips->dev_rdyr(dev_rdyr); mmips->dev_rdyw(dev_rdyw); mmips->dev_wdata(dev_wdata); mmips->dev_waddr(dev_waddr); mmips->dev_send_eop(dev_send_eop); mmips->dev_rcv_eop(dev_rcv_eop); }};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -