电脑编程技巧与维护 基于FPGA的数字频率计设计 张芹。江新道 (安徽电子信息职业技术学院,安徽蚌埠233060) 摘要:针对周期测量法在高频段表现差强人意的缺点,提出了周期自适应测量法的设计方案,即在增加一项自动 调整待测信号测量周期的功能。同时设计一款基于FPGA的数字频率计,其中EDA工具采用Altera公司出品的 Quartus II 5.1.硬件描述语言使用VHDL.PLD芯片是Altera Cyclone EP1C6T144C8。 关键词:数字频率计;FPGA;自适应;周期测量法 The Design of Digital Cymometer Based on FPGA ZHANG Qin,JIANG Xin-dao (Anhui Vocational College of Electronics&Information Technology.Anhui Benbu 230601.China) Abstract:Aim at the weakness of Period Measuring Method that it usually works badly at the high ̄equency segment,this paper put forward a kind of design project called Self-reacting Peirod Measuring Method,namely adding a function that auto- adjusting the period for measuring to it.Then design a digital Cymomete based on FPGA,including EDA tools produced by Ahera corporation Quaaus II 5 1,using hardware description language VHDL,PLD chip is Altera Cyclone EP1C6T144C8. Key words:digital Cymometer;FPGA;Self-reacting;Cycle measurement 1设计原理 数字频率计最基本的原理就是公式 /=N/r (1-1) 性的是周期测量法。其核心是借助于一个标准的参考时钟信 号,测得在待测信号的整数个周期时间内参考时钟的周期个 数,之后,利用公式l,计算得到待测信号频率。 {矗 (注:. 一其中,.厂_频率, 一定的时间,Ⅳ_相应时间内的周期数。 基于这个公式.衍生出两类数字频率计实现方案,直接测量 法和间接测量法。 1.1直接测量法 1、 待测信号频率, 一参考信号频率, 一测量时间 内待测信号的周期数,Ⅳ 测量时间内参考信号的周期个数。) 直接测量法.引入一个闸门信号,由一个时间宽度固定的 闸门信号来控制待测信号的计数使能端。通过测得在闸门时 间内待测信号的周期个数Ⅳ,除以闸门时间 ,即可以得到待 静渊俯号— 参考佰号——— 薮l 器I 测信号的频率厂c 嗍f1信峙 图3最简单的周期测量方案 简单控制电路实现的功能就是在待测信号整数个周期内, 维持高电平输出。 橹鬻拈 _l——~ 图1直接测量方案 ——一 ——— ; 闸门信号连接计数器的使能端,高电平有效;待测信号 接计数器输入端.作计数信号。 闸门信母 特罩I信母 卜———一 跞 图4周期测量法信号分析图 此方案误差来源于待测信号的上升沿和下降沿到来时间 与参考信号开始计数时脉冲的上升沿及计数结束时脉冲的下 降沿到来的时间未必严格一致。因而 最多会有一个脉冲的 误差。最终的相对误差和 成反比。周期测量法在低频段性 图2直接测量法信号分析图 其误差来源于闸门信号上升沿和下降沿的到来时间,与 能较好,但在高频段误差较大。 lI3 自适应测量法原理 待测信号开始计数时脉冲的上升沿及计数结束时的脉冲的下 降沿到来时间不完全一致。测高频信号时,Ⅳ较大,误差对测 在一般的周期测量法中,待测信号周期数是固定的。其结 作者简介:张芹(1977一),女,硕士,研究方向:计算机与 通信。 收稿日期:2014—04—14 量精度影响不大。但在测低频信号时,Ⅳ相对较小,这个误差 则对系统精度产生较大影响。 1.2间接测量法 间接测量法泛指直接测量法以外的测量方法,最具代表 NETW0RK AND C0MMUNICA r10N 果就是随着待测信号频率的提高,频率计系统的测量精度不断 下降。 为了提高数字频率计系统在高频段的测量精度.而又不 延长数字频率计在测量低频信号时的测量时间,提出将 作 为一个可变的量。但是,假如片面地追求在整个测量范围具 有相等的精度,那么根据公式(1—2),势必会引入一个以为 乘数的乘法运算。这个乘法运算将会在很大程度上提升系统 的复杂度。因此,这里设 相对固定,只赋于它4个值:1、 l0、100和1000。这样既能使系统在高频段的测量精度有了 保障,又避免了乘法运算的引入,只需对最后的十进制输出 结果进行移位运算就可达到乘法运算的效果。 2设计与实现 2.1设计指标与硬件环境 文中设计的数字频率计.预期实现的测量范围为lHz~ 10MHz,测量相对误差小于1%。本款设计基于FPGA,其中 EDA工具采用Ahera公司出品的Quartus II 5.1。硬件描述语 言使用VHDL.PLD芯片是Altera Cyclone EP1C6T144C8。 2.2系统模块 数字频率计系统总共有4大模块,分别是参考信号计数 器模块、周期控制计数器模块、除法运算处理单元模块以及 移位锁存单元模块。 橹测信 结果 参考博 图5自适应性测量法模块图 参考信号计数器模块:在使能端允许的情况下,负责对 参考信号进行计数操作,在计数结束后,将结果输出到除法 运算处理单元。 周期控制计数器模块:根据除法运算处理单元的反馈信 号确定待测信号的周期数。在待测信号的周期数达到预定数 目之前,维持参考信号计数器的使能端为高电平,一旦达到 预定数目,则将参考信号计数器的使能端置为低电平。 除法运算处理单元:将参考信号计数器的输出结果作为 本模块的输入。先对输入进行判断。并将相应的信号反馈到 周期控制计数器模块。假如输入大于一定的数值,则进行除 法运算,之后,运算结果输出到移位锁存单元。 移位锁存单元模块:利用除法运算处理单元的反馈信号 对运算结果进行移位并锁存,之后利用数码管显示出来。 2.3系统电路原理 数字频率计原理图如图6所示。它有4个功能实体.即Cv— cleControl、ReferenceCounter、DivisionProcess和ResultDisplay。 它们分别对应设计模块图中的周期控制计数器、参考信号计数 器、除法运算处理单元和移位锁存单元。而Cymometer作为整 个数字频率计系统的顶层实体,主要负责调度各个功能模块。 ClkX:整个系统的待测信号,同时也是CycleControl实体 网络与通信 的时钟输入信号。 图6数字频率计原理图 ClkR:整个系统的参考时钟信号,同时也是Reference. Counter实体的时钟输入信号。 CReset:整个系统的异步复位信号,高电平有效,同时, 也是4个功能实体的异步复位信号。 CymNum:整个系统的8位十进制输出信号,同时也是 ResultDisplay实体的输出信号。 CCEn:ReferenceCounter实体的计数使能控制信号,高电 平有效。 CCClr:ReferenceCounter实体的计数清零信号,高电平 有效。 RCNum:ReferenceCounter实体的计数结果输出数据,为 6位十六进制数据。 DPTn:DivisionPmeess实体反馈到CycleControl实体和 ResuhDisplay实体的12位二进制数据信号。有 “000000000001”、 “000000001010”、 “000001 100100”和 “O01111101000”4种可能。 CCPc:DivisionProcess实体的输入数据(即参考信号计数 结果)的除法处理控制信号,上升沿有效。 DPRc:ResultDisplay实体的输入数据(即除法处理结果) 的移位锁存处理信号,上升沿有效。 DPNum:ResuhDisplay实体的输入数据,即除法处理结 果,为8位十进制数据。 整个系统的工作原理详细阐述如下: 测量开始时,CReset会产生一个短的脉冲,使整个系统 复位。具体而言,是指CCEn置为0,CymNum置为全0,CC— Clr置为1,DPTn则置为“000000000001”,CCPc置为0, DPRc置为0。之后。在待测信号ClkX的第一个上升沿, CCEn置为1,CCClr置为0,ReferenceDisplay开始计数。 一个周期后,CCEn置为0,计数暂停,CCPc置为1,使 DivisionProcess实体开始工作。由DivisionProcess判断RCNum 是否不小于4096,是,则开始进行除法处理,得出初步结果, 并将DPRc置为1,由ResuhDisplay进行移位锁存处理。最后 输出到数码管。否则判断RCNum的值是处于哪个区段。若小 于l6,那么就将DPTn置为“001111101000”,继续计数,直 到达到相应的测量周期,再由DivisionProcess,ResuhDisplay 进行处理。若介于16与256之间,那么就将DPTn置为 “000001100100”,同上一种情况作相同的处理。而若处于256 与4096之间.则需要分两种情况处理。第一种情况:假如此 时DPTn为“000000000001”,则将其置为“000000001010”, 电脑编程技巧与维护 之后也是按照上面那样处理。第二种情况:DPTn为其他值 时,停止计数,直接进行除法处理,直至得出结果。 RCNum数据在DivisionProcess实体中的判断流程如图7 所示。 图7 D.VjsionProcess对RCNum的判断处理 2.4设计方案中的运算处理 2.4.1乘法 因本方案中, 并非纯粹的变量,它只有1、10、100和 1000 4个可能的取值,而之所以取这4个值,是考虑到最终输出 结果 会是一个8位十进制的量,这4个值都是10的幂,乘法 运算可转化成移位运算。比如,倘若 取100,那么,只需要将 经过除法处理的初步结果左移两位就可以得到 ,简化了运算。 2.4.2除法 在本方案中,被除数即参考信号频率 固定为20MHz, 但是作为除数的参考信号周期数 是一个在介于1000和10 之间的整数。那么,除法运算就不能简化为移位运算,只能 从算法角度来简化。 传统的除法运算处理方式为:先将商置零.接着开始循 环,比较被除数与除数,若被除数大于或等于除数,商加1, 并将被除数与除数的差作为新的被除数,开始下一个循环。 否则,退出循环。 这种算法循环次数即为商的大小。当商较大时,循环次 数将很多.资源开销难以承受。尤其是相对于EDA工具 Quartus II而言,循环次数大于10s次的循环,则无法通过编译。 提出的除法算法,借鉴了除法笔算的思想,即从高位向 低位运算。虽然编程时复杂度有所提高,但它所需的循环次 数最多不超过40次,大大节约了资源。 同时,考虑到除数 是一个十六进制的数,而除法运算 结果则是一个8位十进制的数.为了避免在系统处理中再引 入十一十六进制转换,这里采用了十一十六混合进制算法。使 用这一算法,可以使得在除数为十六进制的情况下,除法运 算的结果直接就是十进制数。具体说明如下: 令除数^ 6 b;o b。,是一个十六进制数,其中,b 不等于 0。那么, 可以表示为fi=4E20*10 。将4E20与 相除,得 到的商作为除法运算结果的千位。之后。将余数乘以十(可 以通过将余数分别左移一位和左移三位后再相加来实现),再 与 相除,得到的商作为除法运算结果的百位。类似操作继 续执行两次,以分别得到除法运算结果的十位和个位.即可 完成除法运算处理。 这种除法处理的实际效果,一个数据足以说明:直接调 用“木,,运算时,即使是l6位乘以l6位的运算,所需的逻辑 2014 技巧与t妒'_一啊 单元即接近1万。而这里整个数字频率计系统,包括这个被 除数为32位,除数为24位的除法运算模块,所需的逻辑单 元不足5800个。 2.5设计方案的性能分析 2.5.1测量精度理论 本次设计中,核心公式为: = /Na) (2-1) 令待测信号真实频率为.厂,由于测量时,测量时间的开始 和结束都是由待测信号上升沿触发的,所以对于待测信号周 期数 的测量是没有误差的。 而对于参考信号周期个数 ,则最多有一个周期的误差, 也就是说: l△ l≤1 (2-2) 由公式(2—1)、公式(2-2)可得: 户 【 /(|7、 △ )] (2-3) 由相对误差公式: Af/f=V-Al/f (2-4) 将公式(2-1)、公式(2-3)代人公式(2-4),可得: Aflf=l△N N 02-5、 再考虑到公式(2—2)。那么,会有: Aflf< ̄l, (2-6) 因此,只要能够确保 足够大,从理论上来说,频率计 系统的测量精度就可以得到保证。实际上,在本方案中,已 经确保 不小于1000,也就是说,频率计系统的理论测量精 度不低于0.1%,满足设计目标。 2.5.2时序仿真结果 为了节约仿真时间,将待测信号周期个数 与参考信号周 期个数 的比值扩大了100倍,假使待 与 的比值原本是 1:10000,那么实际上,在仿真图上表现出来比值将是1:100。 这里需要将参考信号计数器由每一个参考信号的上升沿计数 加1改为每—个上升沿计数加100。这样处理对于数字频率计系统 功能的{ 有实质影响,南屯 是会将系 0量 大100倍。 (1)待测信号为4000Hz时,如图8所示。 图8待测信号为4000Hz时的仿真图 可以看出。当待测信号为4000Hz时.仿真输出结果是 ”,也就是4000。所以, 测量结果与待测信号的实际频率相同,此时的测量误差为0%。 (2)待测信号为40000Hz时,如图9所示。 可以看出,当待测信号为40000Hz时.仿真输出结果是 ,也就是40000。所以,