基于FPGA快速除法器的设计

除法器的简单介绍

本除法器是基于除数100,200,1000,10000这四种情况,被除数是32bit的数据

模块结构

基于FPGA快速除法器的设计

算法流程

算法的公式如下图所示:
基于FPGA快速除法器的设计
B(商),A(被除数),C(余数),G(除数)
其中n取值由除数决定
基于FPGA快速除法器的设计

基本原理

当除数输入进该模块后,需要判断数据的除数是上述四种情况中的哪一种,然后转换成对于的使能信号

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得到余数

时序关系

基于FPGA快速除法器的设计

接口定义

基于FPGA快速除法器的设计
仅是个人的理解,如果有什么不对的地方,欢迎大家的给予批评和指正