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

📄 transactor.cpp

📁 包括USB
💻 CPP
字号:
#include "transactor.h"
#include <systemc.h>
#include "usbHostConstants.h"
#include "usbSlaveConstants.h"


/* -------------------------- busWrite --------------------------------- */
void transactor::busWrite(int data, int address)
{
sc_logic ackReg;

  wait(busClk.posedge_event());
  data_o = (sc_lv<8>) data;
  address_o = (sc_lv<8>) address;
  strobe_o = (sc_logic) 1;
  we_o = sc_logic_1;
  wait(busClk.posedge_event());    //all write accesses are acknowledged immediately
  ackReg = ack_i;                 //register ack_i

  if (ackReg != sc_logic_1) {
    cout << "WishBone bus write was not acknowledged\n";
    sc_stop();
  }

  strobe_o = sc_logic_0;
  we_o = sc_logic_0;

}

/* -------------------------- busRead --------------------------------- */
void transactor::busRead(int &data, int address)
{
sc_uint<8> localData;
sc_logic ackReg;

  wait(busClk.posedge_event());
  strobe_o = sc_logic_1;
  we_o = sc_logic_0;
  address_o = (sc_lv<8>) address;
  wait(busClk.posedge_event());    //most accesses are acknowledged immediately
  ackReg = ack_i;                 //register ack_i
  if (ackReg != sc_logic_1) {
    wait(busClk.posedge_event());   //but, an extra clock cycle required for fifo accesses
    ackReg = ack_i;
    if (ackReg != sc_logic_1) {
      cout << "WishBone bus read was not acknowledged\n";
      sc_stop();
    }
  }
  localData = (sc_uint<8>) data_i.read();
  strobe_o = (sc_logic_0);
  data = (int) localData;
} 


/* -------------------- waitUSBClockTicks --------------------------------- */
void transactor::waitUSBClockTicks(int waitTicks)
{
  int i;

  for (i=0; i< waitTicks;i++)
    wait(usbClk.posedge_event());
}

/* -------------------------- initialize --------------------------------- */
void transactor::initialize()
{
	reset.write(sc_logic_1);
	for (int j=0; j<4 ; j++)
	{
		wait(busClk.posedge_event());
	}
	reset.write(sc_logic_0);
}

⌨️ 快捷键说明

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