仅对英特尔可见 — GUID: ewa1462825764778
Ixiasoft
仅对英特尔可见 — GUID: ewa1462825764778
Ixiasoft
4.2. Avalon® 流(Streaming)接口
组件可以具有符合Avalon Streaming (ST) 接口规范的输入和输出流。这些输入和输出流以将引用传递给ihc::stream_in<>和ihc::stream_out<>对象作为组件的函数参数来表示。
当您使用Avalon ST接口时,您可以在多个时钟周期内序列化数据。即,一个组件调用可以多次从流中读取数据。
您无法从流类派生新类别,也无法将其封装为其它格式(例如,结构体(struct)或数组(array))。但是,您可以将对这些类的实例的引用用作其它类中的引用,这意味着您可以创建一个类别,具有对流对象的引用并作为数据成员(data member)。
一个组件可以有多个用于流的读站点。同样地,一个组件可以有多个用于流的写站点。但是,为了获得最佳组件性能,请尝试将设计中的每个输入流限制为单个读取站点,并且将每个输出流限制为单个写入站点。
流输入接口
模板对象或参数 | 描述 |
---|---|
ihc::stream_in | 连接组件的流输入接口。 |
ihc::buffer | 指定与流相关的输入数据上FIFO缓冲区的容量(以字为单位)。 |
ihc::readyLatency | 指定ready信号被解除置位与不再能接受新输入的输入流两者之间的周期数。 |
ihc::bitsPerSymbol | 描述数据如何分解为数据总线上的符号。 |
ihc::firstSymbolInHighOrderBits | 指定流中的数据符号是否按大端顺序排列。 |
ihc::usesPackets | 公开流接口上的startofpacket和endofpacket边带信号。 |
ihc::usesEmpty | 公开流接口上的empty带外(out-of-band )信号。 |
ihc::usesValid | 控制流接口上是否存在valid信号。 |
函数API | 描述 |
---|---|
T read() | 从组件内部使用阻塞读调用 |
T read(bool& sop, bool& eop) | 仅当设置了usesPackets<true>时可用。 通过带外(out-of-band)startofpacket和endofpacket信号阻塞读取。 |
T read(bool& sop, bool& eop, int& empty) | 仅当设置了usesPackets<true>和usesEmpty<true> 时可用。 通过带外startofpacket,endofpacket,和empty信号阻塞读取。 |
T tryRead(bool &success) | 在组件内部使用非阻塞读取调用。如果读操作有效则success bool(布尔类型)被设置为true(有效)。即,当组件尝试从流中读取时, Avalon® -ST valid信号为高。 tryRead()的仿真模型不是周期精确的,因此tryRead()的行为在模拟和仿真之间可能会有所不同。 |
T tryRead(bool& success, bool& sop, bool& eop) | 仅当设置了usesPackets<true>时可用。 通过带外(out-of-band)startofpacket和endofpacket信号的非阻塞读取。 |
T tryRead(bool& success, bool& sop, bool& eop, int& empty) | 仅当设置了usesPackets<true>和usesEmpty<true> 时可用。 通过带外startofpacket,endofpacket,和empty信号的非阻塞读取。 |
void write(T data) | 从测试台使用阻塞写调用来填充要发送到组件的FIFO。 |
void write(T data, bool sop, bool eop) | 仅当设置了usesPackets<true>时可用。 通过带外(out-of-band)startofpacket和endofpacket 信号阻塞写调用。 |
void write(T data, bool sop, bool eop, int empty) | 仅当设置了usesPackets<true>和usesEmpty<true> 时可用。 通过带外startofpacket,endofpacket,和empty信号阻塞写调用。 |
流输出接口
模板对象或参数 | 描述 |
---|---|
ihc::stream_out | 从组件来的流输出接口。 |
ihc::readylatency | 指定ready信号被解除置位与不再能接受新输入的输入流两者之间的周期数。 |
ihc::bitsPerSymbol | 描述数据如何分解为数据总线上的符号。 |
ihc::firstSymbolInHighOrderBits | 指定流中的数据符号是否按大端顺序排列。 |
ihc::usesPackets | 公开流接口上的startofpacket和endofpacket边带信号。 |
ihc::usesEmpty | 公开流接口上的empty带外(out-of-band )信号。 |
ihc::usesReady | 控制是否存在就绪信号。 |
函数API | 描述 |
---|---|
void write(T data) | 从组件来的阻塞写调用 |
void write(T data, bool sop, bool eop) | 仅当设置了usesPackets<true>时可用。 通过带外(out-of-band)startofpacket和endofpacket信号的阻塞写入。 |
void write(T data, bool sop, bool eop, int empty) | 仅当设置了usesPackets<true>和usesEmpty<true> 时可用。 通过带外startofpacket,endofpacket和empty信号的阻塞写入。 |
bool tryWrite(T data) | 从组件来的非阻塞写调用。返回值表示写入是否成功。 |
bool tryWrite(T data, bool sop, bool eop) | 仅当设置了usesPackets<true>时可用。 通过带外startofpacket和endofpacket信号的非阻塞写入。返回值表示写入是否成功。即,当HLS组件尝试写入流的同时,下游接口正在将ready信号拉高。 |
bool tryWrite(T data, bool sop, bool eop, int empty) | 仅当设置了usesPackets<true>和usesEmpty<true> 时可用。 通过带外startofpacket,endofpacket和empty信号的非阻塞写入。返回值表示写入是否成功 |
T read() | 从测试台使用阻塞读调用来从组件读回数据。 |
T read(bool &sop, bool &eop) | 仅当设置了usesPackets<true>时有效。 从测试台使用阻塞读调用,通过带外startofpacket和endofpacket信号从组件读回数据。 |
T read(bool &sop, bool &eop, int &empty) | 仅当设置了usesPackets<true>和usesEmpty<true>时可用。 从测试台使用阻塞读调用,以带外startofpacket,endofpacket和empty 信号从组件读回数据。 |