《advanced fpga designed》

1.3时序

1.3.1增加寄存器层

此技术应用于高级 流水线设计中,其中额外的时钟周延迟不会违反设计规则。

举例:FIR设计不满足时序要求(即关键路径中的延迟大于一个时钟周期)

注:fir:有限冲击响应数字滤波器,一般为非递归性结构冲击响应在有限时间内衰减为0;其输出紧取决于输入信号。稳定性和线性是其最大特点。例子中通过增加register使得乘法器和加法器分离。并且乘法器是很好的流水线选择因为计算可以被分为几级。

module fir(

    output [7:0] y,

    input  [7:0] a,b,c,x,

    input        clk,

    input        validsample

);

 

reg     [7:0] x1,x2,y;

always @(posedge clk)

    if (validsample) begin

        x1 <= x;

        x2 <= x1;

        y  <= a*x+b*x1+c*x2;

        

    end

 

endmodule

//add register layer

module fir(

    output [7:0] y,

    input  [7:0] a,b,c,x,

    input        clk,

    input        validsample

 

);

reg     [7:0]   x1,x2,y;

reg     [7:0]   prod1,prod2,prod3;

always @(posedge clk) begin

  if(validsample ) begin

    x1          <= x;

    x2          <= x1;

    prod1       <= a*x;

    prod2       <= b*x1;

    prod3       <= c*x2;

    end

    y <= prod1 + prod2+prod3;

end

endmodule

1.3.2并行结构;串转并。

通过[7:0]X三次方举例,通过将乘法运算分解为可以并行执行的较小运算,可以将最大延迟减少为通过任何子结构的最长延迟。

1.3.3扁平化的逻辑结构设计

特别适用于由于优先级编码逻辑。在代码进行综合时,无法分解以串行方式编码的逻辑结构,也没有足够的信息与设计的优先级要求相关。例子:写一个四位的address;通过删除优先级编码扁平化逻辑结构(if。。else中去掉else)。

1.3.4寄存器平均

这个想法是在寄存器之间平均分配逻辑,以最小化任何两个寄存器之间的最坏情况延迟。每当关键路径和相邻路径之间的逻辑高度不平衡时。就会被采用。时钟速度是被最坏路径限制的。许多综合工具都有register balance优化。例子:8bit的加法器增加一级逻辑寄存器,使的寄存器平均。

1.3.5预定路径

每当多条路径与关键路径组合在一起时,都应使用此技术,并且可以对组合路径进行重新排序,以使关键路径可以移近目标寄存器。

1.4归纳总结:

*展开迭代循环可以增加吞吐量,但是增加资源占用。

*通过移除流水线寄存器可以降低延迟。带来的影响是:增加组合逻辑的延迟。

*时序表示设计中的最大时钟速度。当任意两个连续元件之间的最大延迟小于最小时钟周期时,设计便满足了时序要求。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值