仅对英特尔可见 — GUID: vrg1511996057567
Ixiasoft
4.1.5. Avalon® Streaming(流)接口
Avalon® Streaming ( Avalon® ST) 接口支持数据单向流动,且一般用于驱动高带宽和低延迟的组件。
可使用 Avalon® ST接口写码向量加法实例,如下:
struct int_v8 { int data[8]; }; component void vector_add( ihc::stream_in<int_v8>& a, ihc::stream_in<int_v8>& b, ihc::stream_out<int_v8>& c, int N) { for (int j = 0; j < (N/8); ++j) { int_v8 av = a.read(); int_v8 bv = b.read(); int_v8 cv; #pragma unroll 8 for (int i = 0; i < 8; ++i) { cv.data[i] = av.data[i] + bv.data[i]; } c.write(cv); } }
Avalon® ST接口有一个数据总线,以及用于握手的就绪和忙碌信号。struct旨在打包8个整数,以便每次8个操作符并行出现,从而与其它接口的实例进行比较。同样,循环计数是8的倍数。
以下图示显示编译该实例时System Viewer中生成的Function View。
图 27. 使用 Avalon® ST接口的vector_add组件的System Viewer Function View
与其它版本组件实例的主要不同在于其没有存储器。

可从上有源和下游输出停顿流接口。由于该接口可停顿,则循环启动间隔(II)大约为1(并非精确的1)。如果组件未接收到任何来自上游的气泡(数据流中的间隙)或来自下游的停顿信号,则组件达到所需II的值1。
如果您知道流接口永不停顿,则可利用usesReady和usesValid流参数进一步优化该组件。
通过 Quartus® Prime编译流程编译 Arria® 10器件得到如下QoR指标:
将vector_add移动到 Avalon® ST接口,进一步提高ALM使用率,RAM使用率和组件延时。如果接口中无停顿,则为最佳组件II。
QoR指标 | 指针 | Avalon® MM Host | Avalon® MM Agent | Avalon® ST |
---|---|---|---|---|
ALMs | 15593.5 | 643 | 490.5 | 314.5 |
DSPs | 0 | 0 | 0 | 0 |
RAMs | 30 | 0 | 48 | 0 |
fMAX (MHz)2 | 298.6 | 472.37 | 498.26 | 389.71 |
Latency (周期) | 24071 | 142 | 139 | 134 |
Initiation Interval (II) (周期) | ~508 | 1 | 1 | 1 |
1用于计算QoR指标的编译流程采用 Quartus® Prime Pro Edition 17.1。 |
2 fMAX的大小由计算单个seed得出。 |