引言
前面我们介绍了流水线的写法(http://blog.csdn.net/rill_zhen/article/details/45980039),流水线是数字设计中很常用的一种设计方法,可以提高运行频率,提高吞吐量。
如果组合逻辑延迟较大,一个时钟周期完成不了时,除了插入寄存器将组合逻辑拆分成流水线外,还可以采用multi-cycle的方式。
multi-cycle的工作机制很简单,从给定输入之后,等待多个周期之后,再去采样输出结果。
本小节我们将通过一个小实验来说明multi-cycle的具体RTL实现。
1,功能介绍
假设有某个模块,其计算量很大,以致延迟较大,一个周期完成不了,需要3个cycle才行。
假设时钟周期是10,这个模块的运算分为“加法,左移,减法”三个操作,分别用时7,8,9。
2,RTL实现
如果在数字设计时,遇到上述模块描述的情况时,可以考虑multi-cycle实现。
具体RTL如下:mc.v
其中关于状态机的写法,我们之前有专门介绍,如有疑问,请参考(http://blog