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

📄 test.h

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

#ifndef __test_h
#define __test_h

#include <systemc.h>

#include "master_blocking.h"
#include "master_non_blocking.h"
#include "master_direct.h"
#include "slow_mem.h"
#include "bus.h"
#include "fast_mem.h"
#include "arbiter.h"
#include "uart.h"
#include "test.h"

SC_MODULE(test)
{
  // channels
  sc_clock C1;

  // module instances
  master_blocking     *master_b;
  master_non_blocking *master_nb;
  master_direct       *master_d;
  slow_mem            *mem_slow;
  bus                 *m_bus;
  fast_mem            *mem_fast;
  arbiter             *m_arbiter;
  uart                *m_uart;
  sc_signal<bool>         rxd;
  sc_signal<bool>        txd;
  // constructor
  SC_CTOR(test)
    : C1("C1",10)
  {
    // create instances
    master_b = new master_blocking("master_b", 4, 0x4c, true, 300);
    master_nb = new master_non_blocking("master_nb", 3, 0x38, true, 20);
    master_d = new master_direct("master_d", 0x78, 100,true);
    mem_fast = new fast_mem("mem_fast", 0x00, 0x7f);
    mem_slow = new slow_mem("mem_slow", 0x80, 0xff, 1);
	m_uart   = new uart("UART",256,512);
    // bus = new simple_bus("bus",true); // verbose output
    m_bus = new bus("bus",true);
    // arbiter = new arbiter("arbiter",true); // verbose output
    m_arbiter = new arbiter("arbiter",true);

    // connect instances
    master_d->clock(C1);
    m_bus->clock(C1);
    master_b->clock(C1);
    master_nb->clock(C1);
    mem_slow->clock(C1);
    master_d->bus_port(*m_bus);
    master_b->bus_port(*m_bus);
    master_nb->bus_port(*m_bus);
    m_bus->arbiter_port(*m_arbiter);
    m_bus->slave_port(*mem_slow);
    m_bus->slave_port(*mem_fast);
	m_bus->slave_port(*m_uart);
	m_uart->clk(C1);
    m_uart->txd(txd);
    m_uart->rxd(rxd);
  }

  // destructor
  ~test()
  {
    if (master_b) {delete master_b; master_b = 0;}
    if (master_nb) {delete master_nb; master_nb = 0;}
    if (master_d) {delete master_d; master_d = 0;}
    if (mem_slow) {delete mem_slow; mem_slow = 0;}
    if (m_bus)    {delete m_bus; m_bus = 0;}
    if (mem_fast) {delete mem_fast; mem_fast = 0;}
    if (m_arbiter) {delete m_arbiter; m_arbiter = 0;}
	if (m_uart)   {delete m_uart;m_uart=0;}
  }

}; // end class test

#endif

⌨️ 快捷键说明

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