目录
1、简介
系统的最高工作频率,取决于系统中耗时最长的模块延时。模块延时越长,系统的工作频率就越低,反之则越高。流水操作的思想就是将耗时较长的模块拆分为多个子模块的级联,子模块之间通过寄存器连接。
这种设计方式带来的好处是显而易见的:
- 流水处理之前,每一次操作所需时间均为A,较大的模块延迟导致系统工作频率下降。
- 流水处理之后,模块被划分为N个子模块的级联,子模块的操作延迟为B(B<A)。此时,除刚开始输入数据时需要延迟B*N才能得到输出以外,当数据稳定输出以后仅仅需要延迟B就可以得到一次操作结果。可以看出,流水操作提升了系统工作频率,增加了系统数据吞吐量。
另一个角度的理解:
- 流水处理之前,每一次操作所需时间均为A,只有输出数据以后才能进行下一次计算输入;
- 流水处理之后,每一级子模块只需维持B即可进行下一次输入,随后子模块1处理下一帧数据,子模块2处理子模块1上一帧数据的输出。依次流水,减少了相互间的等待,获得了效率的提升。
2、实例
以8位无符号数全加器为例,对流水思想以及设计进行分析。
不使用流水操作:
最简单的设计方式就是:
always@(posedge clk)
{cout,out} <= a + b + cin;
<