微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 求教verilog较快捷求余的做法~~

求教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, 怎么办呢?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top