请建议我使用一些方法来实现流水线操作以实现6阶多项式。
我的想法:
同时执行三个添加,即:
aox^0 + a1x^1 = sa10;
a2x^2 + a3x^3 = sa32;
a4x^4 + a5x^5 = sa54;
同时在flipflop1中存储sa10
,sa32
的值。
接下来添加sa10 + sa32 = sa3210
将其存储在flipflop2中,同时将sa54
存储在flipflop2中
接下来添加sa3210 + sa54
以获得结果。
关于上述逻辑的任何想法?
答案 0 :(得分:2)
我建议,首先尝试在一个时钟周期内不进行流水线操作,然后将其分解为多个阶段。
设计取决于几个因素:
这是一个例子: 让我们假设您可以容忍每个时钟周期只有两个连续乘法器的延迟,并且您希望每个时钟周期的吞吐量为一个多项式。您的管道结构可以是这样的:
阶段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分成两个阶段。