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

📄 packet.h

📁 《SystemC片上系统设计》——高等院校教材 陈曦, 徐宁仪
💻 H
字号:
#include "scv.h"#include <iomanip.h>#ifndef PACKET_H#define PACKET_H// Define a packet with an integer payloadclass packetT1 {  public:    packetT1 () {}    virtual ~packetT1() {}    // Packet's data private:    sc_uint<16> src;    sc_uint<16> dest; public:    sc_uint< 4> priority;    sc_uint<16> payload;    // nbcode "fields" end    // nbcode "access" start    // Field access methods    sc_uint<16> get_src()                   {return src;  }    sc_uint<16> get_dest()                  {return dest; }    void        set_src(sc_uint<16> _src)   {src  = _src; }    void        set_dest(sc_uint<16> _dest) {dest = _dest;}    // nbcode "access" end    // nbcode "friend" start    // Declare extensions class to be a friend    friend class scv_extensions<packetT1>;    // Define ostream method to print the packet    friend ostream& operator<< (ostream& os, const packetT1& p) {      os << "  src: "       << setw(5) << p.src         << "  dest: "      << setw(5) << p.dest         << "  priority: "  << setw(3) << p.priority          << "  payload: "   << setw(5) << p.payload;      return os;    }};// nbcode "friend" end// nbcode "fields" startclass packetT2 {  public:    packetT2 () {}    virtual ~packetT2() {}    // Packet's data private:    sc_uint<16> src;    sc_uint<16> dest; public:    sc_uint< 4> priority;    sc_uint<16> payload;    // nbcode "fields" end    // Field access methods    sc_uint<16> get_src()                   {return src;  }    sc_uint<16> get_dest()                  {return dest; }    void        set_src(sc_uint<16> _src)   {src  = _src; }    void        set_dest(sc_uint<16> _dest) {dest = _dest;}    // Define ostream method to print the packet    friend ostream& operator<< (ostream& os, const packetT2& p) {      os << "  src: "       << setw(5) << p.src         << "  dest: "      << setw(5) << p.dest         << "  priority: "  << setw(3) << p.priority          << "  payload: "   << setw(5) << p.payload;      return os;    }};// nbcode "out" end// nbcode "ext1" start// Extensions to packetT1template<>class scv_extensions<packetT1> : public scv_extensions_base<packetT1> {public:  scv_extensions< sc_uint<16> > src;  scv_extensions< sc_uint<16> > dest;  scv_extensions< sc_uint< 4> > priority;  scv_extensions< sc_uint<16> > payload;  SCV_EXTENSIONS_CTOR(packetT1) {    //must be in order    SCV_FIELD(src);    SCV_FIELD(dest);    SCV_FIELD(priority);    SCV_FIELD(payload);  }};// nbcode "ext1" end// nbcode "ext2" start// Extensions to packetT2template<>class scv_extensions<packetT2> : public scv_extensions_base<packetT2> {public:  scv_extensions< sc_uint< 4> > priority;  scv_extensions< sc_uint<16> > payload;  SCV_EXTENSIONS_CTOR(packetT2) {    //must be in order    SCV_FIELD(priority);    SCV_FIELD(payload);  }};// nbcode "ext2" end#endif //PACKET_H

⌨️ 快捷键说明

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