EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
转——流水线设计之战 3 M% U+ _. V0 _, c
9 @! V: W! Y* b. U$ R3 S
流水线的设计,就是指对延时较大的组合逻辑,插入寄存器,把较大的组合逻辑拆分成几个时钟周期来完成,以提高系统的最大时钟频率。但是这样做,会导致数据输出的延时,假若插入一个寄存器,则数据输出就到产生一个时钟周期的延时,假若插入N个寄存器,就会产生N个时钟周期的延时,下面我们用一幅图来描述这种关系。 上图的总延时等于max{2,3} + 4 = 7ns;系统的时钟周期必须要大于7ns。当经过流水线改造之后,如下图所示: 经过流水线改造之后,总延时等于max{2,3} + 1 + 4 = 8ns;但是系统的时钟周期只要大于4ns即可,总处理数据的吞吐量增加了。
7 c8 m5 ~+ J ]3 l6 x, W' p 下面我们用一个很简单的例子来实现以下流水线改造,假若我们现在要实现(4*a+6*b)-10。现在我们使用原理图的方法来实现这一算法。 首先像以往一样,新建一个项目; 新建一个项目之后,我们就不需要建verilog HDL file,而是新建一个Block Diagram / Schematic File,如下图所示: 然后我们在新建的原理图里面,双击一下鼠标左键,然后在左上角的library里面找到lpm_mult,如下图所示: 点击OK,选择一下程序保存的路径然后选择next,如下图所示: 按next之后,会弹出配置乘法器的选项,如下图所示: 这里是选择乘法器的位宽,直接按next得到下图所示: 如上图所示,选择让输入的数据乘以一个常数,然后按finish;同理再新建一个输入的数据乘以常数6的乘法器。 现在我们已经实现了4*a与6*b,接下来我们新建一个加法器双击原理图,在library里面找到lmp_add_sub,然后点击OK,选择好程序保存的路径之后,就会出现配置加法的选项,如下图所示: # e- r, O0 A6 a" @9 l
选择仅仅使用加法,而且把位宽调到16位,就可以按finsh了。然后我们现在就完成了(4*a + 6*b),现在我们来新建一个减法,就如新建加法一样,双击原理图,在library里面找到lmp_add_sub,然后点击OK,选择好程序保存的路径之后,就会出现配置减法的选项,如下图所示: 选择仅仅使用减法,而且把位宽调到16位,然后按next如下图所示: 选择输入的数据减去一个固定的常数,然后选择finish即可。接着我们新建一个Verilog HDL File文件,写一个16位的寄存器组; 代码如下: 接着我们选择左上角的File,然后选择Creat/Updata,再选择CrearSymbol File 然后我们回到原理图的文件里面,双击原理图,在左上角的library里面会多出一个projet,然后在projet里面找到刚才写的寄存器,然后双击放进原理图里面,然后我们用一样的方法,再新建一个8位位宽的寄存器组,然后放进原理图里面,完成之后把线连接好,如下图所示: 然后还没有接线的模块,可以选择右键,选择Generate Pins forSymbol Ports 然后再把未接上的线给全部接上,如下图所示: 把所以先接上之后,可以按crtl+l,进行全编译,查看静态时序分析,观察系统时钟最大频率是多少。如下图所示:
& Q) p2 b# f; l9 U, h6 m1 q 由上图可知,在还未改造成流水线结构的时候,系统时钟的最大频率是166.58Mhz,然后我们现在开始改造流水线结构,看看系统时钟最大频率能上升多少,改流水线结构,如下图所示: 在改造流水线之后,我们可以再一次全编译(ctrl + k),之后我们再继续查看静态时序分析报告,观察系统时钟频率的最大值,如下图所示: & G& S G, ]: N- C& Q
经过流水线改造之后,系统时钟的最大频率由166.58Mhz提升至了332.45Mhz,提升了2倍系统时钟频率。
, a( g5 L! |# h5 Q5 b) Y/ L, v4 \ |