再次请教循环移位的问题(verilog)
时间:10-02
整理:3721RD
点击:
再次请教循环移位的问题(verilog)
各位高人:
===================================================
我的算法中用循环移位,原来的算法是这样写的,如a[15:0]做7次循环移位,重复做7次这样的操作:
a[15:0] <= { a[0], a[15:1] };
其实每一的中间结果都没有用,只是要用7次循环移位以后的结果。这个算法的这种写法估计是给通用CPU处理用的吧!
我现在就想: 既然中间结果都没有用,只用最后的结果,我干脆就一次性的象下面这样操作算了:
a[15:0] <= { a[7:0], a[15:8] "};
这样还节省了不少时钟,何了而不为呢?估计在资源上要多耗费一些复制的寄存器什么吧。
不知我这样做对不对?好还是不好?
===================================================
请不吝赐教,我不胜感激!
各位高人:
===================================================
我的算法中用循环移位,原来的算法是这样写的,如a[15:0]做7次循环移位,重复做7次这样的操作:
a[15:0] <= { a[0], a[15:1] };
其实每一的中间结果都没有用,只是要用7次循环移位以后的结果。这个算法的这种写法估计是给通用CPU处理用的吧!
我现在就想: 既然中间结果都没有用,只用最后的结果,我干脆就一次性的象下面这样操作算了:
a[15:0] <= { a[7:0], a[15:8] "};
这样还节省了不少时钟,何了而不为呢?估计在资源上要多耗费一些复制的寄存器什么吧。
不知我这样做对不对?好还是不好?
===================================================
请不吝赐教,我不胜感激!
再次请教循环移位的问题(verilog)
a[15:0] <= { a[7:0], a[15:8] };
这样写挺好的呀
再次请教循环移位的问题(verilog)
时序上符合要求地话
a[15:0] <= { a[7:0], a[15:8] };
这样蛮好啊
再次请教循环移位的问题(verilog)
你的想法有点不太明确。
如果你的算法是给一个简单的处理器用的,它的移位是靠一位一位来移的。那么你只需实现单步移位就可以了。
如果处理器要求单时钟多位移位,你必须实现桶式移位器,但那逻辑会很大,一般都是用专门电路单元来做的。
所以针对你说的情况,估计你硬件实现单步移位就可以了,剩下的让程序去完成。