成长 进步 分享

Great works are performed not by strength, but by perseverance

FPGA设计中流水线的使用

流水线设计是FPGA设计中的一个重要的技巧,其原理如下:

  • 对于内部时序路径,其延时一般取决于两个D触发器之间的组合逻辑电路延时

  • 整个系统的工作频率取决于內部时序路径中延迟最大的那一条,该路径称为关键路径。

  • 将规模较大,层次较多的组合逻辑电路分为几个级,在每一级之间插入寄存器暂存中间数据,可以达到减少关键路径的延时,提高所设计电路的工作频率。

下面将以一个实例说明流水线确实可以起到减小关键路径延时的作用。

对于输入a和b,对其进行a^3-b^3+a*b+a/b的运算,其中a和b均为25位位宽的数据。

  1. 不使用流水线:直接将结果进行输出。整个过程在一个时钟周期完成,其内部时序路径延时在时序仿真中可以看出,最多的10条均为92ns左右

  2. 使用流水线:将计算分为三个步骤,第一个步骤分别计算a^3,b^3,a*b,a/b,然后将结果分别存入4个寄存器中,第二个步骤为将第一个寄存器和第二个寄存器中的值相减,第三个寄存器和第四个寄存器的值相加,结果存入两个新的寄存器。第三个步骤为将这两个新的寄存器存放的值相加,结果进行输出。对此电路进行仿真,其內部时序路径延时在时序仿真中,最多的10条中,最大延时为85.442ns,最小的延时为55ns。

由此可以看到使用流水线结构可以显著减少复杂组合逻辑电路对电路的延时。

但是流水线结构同样会带来一些问题:

  • 在不使用流水线时,该计算在一个时钟周期内完成。但是使用了流水线之后,该计算需要3个时钟周期才能完成。

  • 由于插入了D触发器,所以会导致资源消耗更多。如在本例中,FF在未使用流水线技术时,使用了100个,在使用了流水线技术之后就需要346个。

  • 对于较为简单的组合逻辑电路,使用流水线结构并不能明显减少其延时,甚至有时还会因为线延时的增加而使得总延时更大。

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注