基于高速串行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码除法运算的速度是比较关键的问题。
BCD码减法运算采用行波进位方法,因此必须尽量减小进位逻辑上的延迟。ACEX 1K系列的每个LE中都提供了一个专用的进位链和级联链,充分利用这些资源可以提高多位串行BCD码减法的性能。根据ACEX1K系列周期约束,其延时为:
Tclk=Tco+B+Tsu-(E-C)
式中,Tco为clock-output的延时,Tsu为建立时间,两个时间均可达到1~2ns;B表示数据延时,为0.6ns;E-C)表示时钟倾斜[4]。因此,总时钟延时为4.6ns,即工作频率可以达到200MHz以上。本文采用100MHz的工作频率,提高了运算速度。为了减小延时、提高工作效率,在对布局布线进行精确控制以后,把BCD码减法运算做成模块,在除法运算过程反复调用,达到了模块复用效果,大大提高了资源的利用率。
在整个BCD码除法运算单元,首先通过输入数据决定信号是否超出测量范围。
·当ov1为1时,该信号的频率大于1Hz;
·当NSNX,该信号的频率大于100MHz;
·当NS=NX,该信号的频率为1Hz;
·当NS>NX,该信号频率在测量范围内。
根据输入的NS和NX计算输入信号的频率。
除法运算通过双状态机的设计控制一个BCD码减法运算。所有状态用同一时钟进行控制,实现了系统的同步设计,消除了异步逻辑中存在的种种险象。各个状态之间的关系如图5所示。当计数模块完成计数时,则将数输入除法模块,开始移位以确定输入的值;然后发clrs信号到BCD码减法运算单元开始运算,循环相减。当循环结束时,发回一个HNS信号,部分余数开始移位,进行下一轮的循环。最终输出FOUT,即运算单元结束。
本频率计设计采用8位的十进制计数器,随后应用状态机实现了高速串行BCD码除法运算,计算出频率值。对BCD码减法模块的复用,减小了资源的利用。
当今VLSI的发展日新月异,FPGA的容量和速度成倍地增长,而价格却逐年下降,这将使得基于FPGA设计的数字频率计优势更加明显。相信这一技术必将得到更加广泛的应用。
- TMS320F28335在电网频率测量中的应用(10-25)
- 基于FPGA的等精度频率计IP Core设计(06-05)
- 一种于FPGA的多通道频率测量系统设计(08-12)
- 单片机与FPGA实现等精度频率测量和IDDS技术设计方案(07-02)
- 在采用FPGA设计DSP系统中仿真的重要性 (06-21)
- 基于 DSP Builder的FIR滤波器的设计与实现(06-21)