2

请建议我一些方法,我可以在其中实现流水线以实现 6 阶多项式。

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

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

sa10还将,的值存储sa32在触发器 1 中。

接下来添加sa10 + sa32 = sa3210将其存储在触发器2中,也存储sa54在触发器2中

接下来添加sa3210 + sa54以获取结果。

对上述逻辑有什么想法吗?

4

1 回答 1

2

我建议,首先尝试在一个时钟周期内不使用流水线进行此操作,然后将其分成多个阶段。

设计取决于几个因素:

  • 您要分配多少资源(影响面积/功率)
  • 你的时钟周期是多少?由于乘法器既慢又昂贵,您不希望将它们中的许多连接起来。
  • 你的吞吐量是多少?您想要每个时钟周期的结果,还是每 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 分别分成两个阶段。

于 2014-02-20T23:48:17.060 回答