基于FPGA快速除法器的设计
除法器的简单介绍
本除法器是基于除数100,200,1000,10000这四种情况,被除数是32bit的数据
模块结构
算法流程
算法的公式如下图所示:
B(商),A(被除数),C(余数),G(除数)
其中n取值由除数决定
基本原理
当除数输入进该模块后,需要判断数据的除数是上述四种情况中的哪一种,然后转换成对于的使能信号
dividor | 对应的2进制的数 |
---|---|
100 | 14‘b0000_0000_0110_0100 |
200 | 14‘b0000_0000_110_1000 |
1000 | 14‘b0000_0011_1110_1000 |
10000 | 14‘b0010_0111_0001_0000 |
通过上面对应的2进制数进行分析可以得到,dividor的第13位可以判断出来是10000,第2位可以判断100,第3位和第5位结合判断可以得出1000和200
被除数 x 系数,该系数是由除数决定的,采用分拍加法的方式来实现的,需要4个CLK可以完成
然后将上述得到的值进行右移x位得到商(x是由除数决定的)
除数 x 商,这步乘法操作用分拍的加法来实现,2个CLK可以完成
余数=被除数 - 除数 x 商,最后1个CLK得到余数
时序关系
接口定义
仅是个人的理解,如果有什么不对的地方,欢迎大家的给予批评和指正