求教verilog较快捷求余的做法~~
时间:10-02
整理:3721RD
点击:
求教verilog较快捷求余的做法,暂时还没想到较简洁的,求达人指点下
关键除数是多少,有一些是可以用特定简化的办法做的。比如/5
通用的可以用移位减的方法。
我想知道对10和11求余的较快捷的方法,谢谢了
除法器 就有余数
10 = 16-6
6 = 8-2
A[7:0]=A[7:4]*16 + A[3:0] = A[7:4]*(10+6) + A[3:0] {因为A[7:4]*10的余数=0}= 6*A[7:4] + A[3:0]
10 = 8+2
A[4:0]=A[4:3]*8 + A[2:0] = A[4:3]*(10-2) + A[2:0] {因为A[4:3]*10的余数=0}= -2*A[4:3] + A[3:0] = A[3:0] -{A[4:3],1'b0}
大致的思路如上
用lpm_divide可以直接得到remain,这样调用效率比自己写的高多了而且不会浪费资源吧
大神,收下我的膝盖!
进来学习下
请教一下,比如对6取余的数很大怎么办?比如A[15:0] % 6 = (A[15:3] * 8 + A[2:0]) % 6 = (A[15:3]*( 6 + 2) + A[2:0] ) % 6 = (A[15:3]*2 + A[2:0]) % 6 = .... 这样算下去, 可能最后还是好几个数相加,这个数还是可能大于6, 怎么办呢?
