请建议我一些方法,我可以在其中实现流水线以实现 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
以获取结果。
对上述逻辑有什么想法吗?
请建议我一些方法,我可以在其中实现流水线以实现 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
以获取结果。
对上述逻辑有什么想法吗?
我建议,首先尝试在一个时钟周期内不使用流水线进行此操作,然后将其分成多个阶段。
设计取决于几个因素:
这是一个示例:假设您可以容忍每个时钟周期仅两个连续乘法器的延迟,并且您希望每个时钟周期的吞吐量为一个多项式。您的管道结构可以是这样的:
第 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 分别分成两个阶段。