基于高速串行BCD码除法的数字频率计的设计

时间:2012-07-05来源:网络

2.2 多位串行BCD码除法原理

本设计采用循环式除法运算,循环原理可以用下面的公式表示[1]:

ω[j+1]=rω[j]-dqj+1

式中,ω[j]为第j步的余数,ω[0]为被除数;d为除数;qj+1为第j+1步所得的商;r为与移位步长有关的常数,在此取为16。

除法运算循环图表如图3所示。

循环步骤如下:

·将ω[j]左移四位,构成rω[j]。

·通过多次BCD码减法运算,求得部分商qJ+1,得到部分余数。

·部分余数、部分商移位,准备下次循环。

高速串行BCD码除法是建立在BCD码减法运算基础上的循环运算。用被除数减除数得到部分余数的BCD码,如果够减,则使商加1;否则,余数和商同时左移四位,并记录移位的次数m,根据对有效位数的不同要求,可以对m进行赋值,如果要求保留8位有效数字,则m=8。

在这种循环除法运算中,减少循环的次数是提高运算速度比较有效的方法。在一般循环式除法运算中,是从低位开始进行循环相减,循环次数等于商。如果是8位除法运行,则得到一个8位的商,要进行8位次的BCD码减法循环,例如:56895230/8=7111903.8,要进行7111903.8次循环,计算的速度可想而知。

在本设计中借鉴了一般十进制除法的运算方法,从高位开始相减,大大减少了循环次数。下面以一个例子说明它的原理:

·将被除数和除数移位,使其第一位BCD码不为0000,并记录移位的次数P(例如:56895230/80000000,p=8)。

·比较最高位的大小,如果除数的最高位大于被除数的最高位,则将除数右移4位,同时将P减1(即:56895230/08000000,且p=7)。

·得到的数卢为小数点的位置(F:7说明小数点的位置在第七位数后)。

·循环相减。当部分余数小于08000000,再将部分余数左移四位,继续进行相减。循环m次后即可得到m个有效数字的结果,然后根据p可以确定小数点的位置。

使用这种方法计算一个8位数的除法运算,循环减法次数最大为80次,每次循环使用时间为8个时钟周期。如果工作频率为100MHz,则最长的运算时间为6.4μs,运算速度大大提高。

图4

3 设计实现

采用VHL语言设计一个复杂的电路系统,运用自顶向下的设计思想[2],将系统按功能逐层分割的层次化设计方法进行设计。在顶层对内部各功能块的连接关系和对外的接口关系进行了描述,而功能块的逻辑功能和具体实现形式则由下一层模块来描述。根据频率计的系统原理框图(图1),运用自顶向下的设计思想,设计的系统顶层电路图如图4所示。各功能模块采用VHDL语言来描述。

在计数模块中,通过译码完成的信号COMP和标准信号计数器的溢出信号ov2对门控信号CL进行控制。可以根据不同的情况选择门控信号的时间范围,使设计具有一定的灵活性。采用门控信号CL和被测信号BSN对两个8位十进制计数器进行同步控制[3]。根据D触发器的边沿触发的特点,可以将输入的门控信号CL作为D触发器的输入信号,而将被测信号BSN作为D触发器的脉冲控制信号,使触发器的输出端只有在被测信号BSN上升沿时才发生变化,实现了对使能信号的双重控制。

本设计比较重要的一部分是运算单元。由于在运算单元中采用的是串行运算,因此其工作频率必须足够高。在FPGA中实现时,如何提高串行BCD码除法运算的速度是比较关键的问题。

1 2 3

关键词: 频率测量 周期测量 FPGA VHDL 状态机

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版