流水操作可以说是Verilog HDL语言的特权,顺序操作如C语言是很难实现流水操作。
我们先假设有一个流水操作模块,它有3个操作步骤,在A进入之际,直到A离开这个模块之后,期间有3个空挡的时间,成为潜伏时间,在这段时间内没有任何字母从这个模块出来,一旦经过这段时间,字母就会源源不断的从这个模块出来,换句话说,流水操作的潜伏时间是根据操作步骤而定,预测潜伏时间是流水线操作不好控制的原因之一。此外,无论是并联还是串联的流水操作,读者会发现流水操作的操作方向都是向前走,这是导致流水操作不好控制的原因之二。所以说,驱动、控制都不适合流水操作,因为在驱动和控制方面,连线向量不可能只有一个方向而已,相反,如果是数据处理或者算法之类的话,流水操作再合适不过。
最近看到一个关于流水线LUT查表乘法器的程序,仿真了下,大部分是正确的,但是当乘数为0时,结果出现错误。
仿真图如下:
对此,我修改了程序:
test1.zip
(3.05 MB, 下载次数: 29)
仿真图如下: