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

📄 bus.h

📁 《systemc片上系统设计》(科学出版社)一书第六章TLM级总线建模源码
💻 H
字号:
#ifndef __h
#define __h

#include <systemc.h>

#include "types.h"
#include "request.h"
#include "direct_if.h"
#include "non_blocking_if.h"
#include "blocking_if.h"
#include "arbiter_if.h"
#include "slave_if.h"


class bus
  : public direct_if
  , public non_blocking_if
  , public blocking_if
  , public sc_module
{
public:
  // ports
  sc_in_clk clock;
  sc_port<arbiter_if> arbiter_port;
  sc_port<slave_if, 0> slave_port;

  SC_HAS_PROCESS(bus);

  // constructor
  bus(sc_module_name name_
             , bool verbose = false)
    : sc_module(name_)
    , m_verbose(verbose)
    , m_current_request(0)
  {
    // process declaration
    SC_METHOD(main_action);
    dont_initialize();
    sensitive_neg << clock;
  }

  // process
  void main_action();

  // direct BUS interface
  bool direct_read(int *data, unsigned int address);
  bool direct_write(int *data, unsigned int address);

  // non-blocking BUS interface
  void read(unsigned int unique_priority
	    , int *data
	    , unsigned int address
	    , bool lock = false);
  void write(unsigned int unique_priority
	     , int *data
	     , unsigned int address
	     , bool lock = false);
  status get_status(unsigned int unique_priority);

  // blocking BUS interface
  status burst_read(unsigned int unique_priority
			       , int *data
			       , unsigned int start_address
			       , unsigned int length = 1
			       , bool lock = false);
  status burst_write(unsigned int unique_priority
				, int *data
				, unsigned int start_address
				, unsigned int length = 1
				, bool lock = false);

private:
  void handle_request();
  void end_of_elaboration();
  slave_if * get_slave(unsigned int address);
  request * get_request(unsigned int priority);
  request * get_next_request();
  void clear_locks();

private:
  bool m_verbose;
  request_vec m_requests;
  request *m_current_request;

}; // end class simple_bus

#endif

⌨️ 快捷键说明

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