多项式中的流水线



请给我一些可以实现流水线以实现六阶多项式的方法。

我的想法:
同时执行三个添加,即:

aox^0 + a1x^1 = sa10;
a2x^2 + a3x^3 = sa32;
a4x^4 + a5x^5 = sa54;

还将sa10sa32的值存储在flipflop1中。

接下来添加sa10 + sa32 = sa3210,将其存储在flipflop2中,也将sa54存储在flifflop2 中

接下来加sa3210 + sa54得到结果。

对上面的逻辑有什么想法吗?

我建议,首先尝试在一个时钟周期内不使用流水线,然后将其分解为多个阶段。

设计取决于几个因素:

  • 您想要分配多少资源(影响面积/功率)
  • 你的时钟周期是多少?由于乘法器速度慢且价格昂贵,您不想将其中的许多乘法器连接起来
  • 您的吞吐量是多少?你想要每个时钟周期一个结果,还是每个N个时钟周期的结果(这样你就可以进行资源共享)

以下是一个示例:假设每个时钟周期只能容忍两个连续乘法器的延迟,并且每个时钟周期需要一个多项式的吞吐量。您的管道结构可以是这样的:

第1阶段:输入:{a5,…,a0,x}

Combination circuit:
{a5,...,a0,x}---------------------->{a5,...,a0,x}
|-->------->x^2
x->[mult]->x^2->[mult]->x^3

第2阶段:输入:{a5,…,a0,x,x^2,x^3}

Combination circuit:
{a5,...,a0,x,x^2,x^3}------------------------>{a5,...,a0,x,x^2,x^3}
|-->------->x^4
x^3->[mult]->x^4->[mult]->x^5

第3阶段:输入:{a5,…,a0,x,x^2,x^3,x^4,x^5}

Combination circuit:
(a0,x^0)->[mult]->a0x^0--      
(a1,x^1)->[mult]->a1x^1-- 
(a2,x^2)->[mult]->a2x^2-->[sum]-> a0x^0+a1x^1+...+a5x^5      
(a3,x^3)->[mult]->a3x^3--/      
(a4,x^4)->[mult]->a4x^4--/      
(a5,x^5)->[mult]->a5x^5--/      

请注意,我们正在使用大量资源(乘数)来实现每个周期一个结果的吞吐量。

如果每个阶段不能有一个以上的乘法器,则需要将阶段1和阶段2分为两个阶段。

相关内容

  • 没有找到相关文章

最新更新