master_non_blocking.cpp
来自「《systemc片上系统设计》(科学出版社)一书第六章TLM级总线建模源码」· C++ 代码 · 共 41 行
CPP
41 行
#include "master_non_blocking.h"
void master_non_blocking::main_action()
{
int mydata;
int cnt = 0;
unsigned int addr = m_start_address;
wait(); // ... for the next rising clock edge
while (true)
{
bus_port->read(m_unique_priority, &mydata, addr, m_lock);
while ((bus_port->get_status(m_unique_priority) != TRANSFER_OK) &&
(bus_port->get_status(m_unique_priority) != TRANSFER_ERROR))
wait();
if (bus_port->get_status(m_unique_priority) == TRANSFER_ERROR)
sb_fprintf(stdout, "%g %s : ERROR cannot read from %x\n",
sc_simulation_time(), name(), addr);
mydata += cnt;
cnt++;
bus_port->write(m_unique_priority, &mydata, addr, m_lock);
while ((bus_port->get_status(m_unique_priority) != TRANSFER_OK) &&
(bus_port->get_status(m_unique_priority) != TRANSFER_ERROR))
wait();
if (bus_port->get_status(m_unique_priority) == TRANSFER_ERROR)
sb_fprintf(stdout, "%g %s : ERROR cannot write to %x\n",
sc_simulation_time(), name(), addr);
wait(m_timeout, SC_NS);
wait(); // ... for the next rising clock edge
addr+=4; // next word (byte addressing)
if (addr > (m_start_address+0x80)) {
addr = m_start_address; cnt = 0;
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?