基于FPGA的数字频率计的设计与实现
基于FPGA的数字频率计的设计与实现 数字频率计是计算机、通信设备、音频视频等科研生产 领域不可缺少的测量仪器,以EDA工具作为开发手段。基于 FPGA所设计的数字频率计,具有高速、精确、可靠、抗干扰 性强和现场可编程等优点。在设计中,所有频段均采用直接 测频法对信号频率进行测量,克服了逼近式换档速度慢的缺 点;在换档设计方面,突破了以往改变闸门时间的方法,采 用门控信号和被测信号对计数器的使能端进行双重控制,使 自动换档的实现更加简单可靠,提高了测量的精确度;
在运 算单元采用高速串行BCD码除法,不仅提高了运算速度,而 且减小了资源消耗。
1 设计要求 设计一种基于FPGA的数字频率计,要求:数字频率计分 为0~9.999 Hz、10.00~99.99 Hz、100.0~999.9 kHz 和1000~9999 kHz四档,且能够实现自动换档的功能。
2 总体设计方案 数字频率计总体框图如图1所示。数字频率计由分频器、 计数器、锁存器和译码器等模块构成,系统有3个输入信号, 即两个时钟信号CLK、SIG和一个清除信号CLR。系统有5个输 出信号,即报警信号ALM、显示信号Q、数码管片选信号L、 位控位A和位控位B。
分频器模块通过对时钟信号CLK进行分频,为计数器模块提供1 s的闸门时间test-en。当test-en为高电平时,闸 门被打开,被测信号的脉冲通过闸门进入计数器进行计数;
当test-en下降沿到来时,产生一个锁存信号,将计数值保 存起来,由八段译码器译码并在数码管显示计数结果。锁存 数据后,在下次test-en上升沿到来之前产生清零信号,将 计数器清零,为下次计数做准备。
3 设计实现 采用模块化的设计思想,依据系统设计要求自上至下地 细化设计。顶层设计完成后,采用硬件描述语言对各模块进 行编程,在MAX+PLUSⅡ环境下进行编译、功能仿真,创建各 模块的器件符号,待建立整体系统顶层文件时调用。
分频器模块 分频器模块(FEN)通过对4 MHz时钟信号 进行分频得到0.5 Hz时钟,为计数器模块(CORNA)提供1 s 的闸门时间。根据给定的分频值,分频器模块对4 MHz频率 进行1/2n的分频,每来一个时钟,中间值cnt状态改变一次;
经过n个cnt触发处理后,就可以得到1/2n的分频信号。
数码管片选信号产生模块 数码管片选信号产生模块 (SEL)把时钟信号转换成片选信号提供给输出模块。片选 信号低电平时,表示其对应的数码管可以进行显示操作,数 据信号输出数码管显示所需的数据,即“000”“001”“010” “011”“100”“101”“110”和“111”。
计数器模块 计数器模块(CORNA)通过对待测信号在基 准时间内进行计数测量待测信号的频率,完成对输入时钟信号的计数。由分频器提供的使能信号DOOR为高电平时,允许 计数;
DOOR为低电平时,停止计数,并保持所计的数。当中 间值c6不为零时,选择4档;
当中间值c5不为零时,选择3档;
当中间值c4不为零时,选择2档;
否则选择1档,计数选档结 束后,将5个输出信号传给锁存器。
锁存器模块 锁存器模块(LOCK)在分频器模块输出信 号DOOR的下降沿到来时,将计数器的数值Q3、Q2、Q1、Q0、 DANG锁存。
数据输出模块 数据输出模块(CH)对应于数码管片选 信号,将相应的数据送出,其中档位也通过数码管显示。数 据输出模块根据锁存器和数码管片选信号的输出信号,实现 数码管的实时显示。
八段译码驱动模块 八段译码驱动模块(DISP)将输入 的BCD码转换为LED数码管需要的数据,八段译码驱动模块的 仿真波形如图2所示。
D是八段译码驱动模块的输入信号,由数据输出模块输 出信号d赋予;
Q是八段译码驱动模块的输出信号,对应于数 码管的8个显示段。当d为“0000”时,q为3F;
当d为 “0001”时,q为06;
当d为“0010”时,q为5B;
当d为 “0011”时,q为4F;
当d为“0100”时,q为66;
当d为 “0101”时,q为6D;
当d为“0110”时,q为7D;
当d为 “0111”时,q为27;
当d为“1000”时,q为7F;
当d为 “1001”时,q为6F。各模块连接 各模块总体连接图如图3所示。CLK输入至 分频器,SIG、CLR输入至计数器,输出报警信号ALM来自计 数器,Q是八段译码器连接显示器的输出,L是数码管片选信 号产生模块的输出,输出A和B是位控位[1]。
系统仿真波形如图4所示。当输入信号SIG、CLR、CLK的 值为“000”“010”“100”和“110”时,仿真波形相同。
输出信号Q在0.0~875.0 ns时为3F(即“0111111”),之 后为0(即“0000000”)。输出信号L在0.0~125.0 ns时为 “000”,之后每隔250.0 ns依次为“001”“010”“011” “100”……输出信号A和B为高电平。
4 结语 EDA技术给电子系统设计带来巨大的变革,特别是硬件 描述语言的出现和发展,并与大规模可编程器件相结合,极 大地提高了电子系统设计的效率和可用性,成为电子系统设 计人员的得力助手。
参考文献 [1]侯伯亨,刘凯,顾新.VHDL硬件描述语言与数字逻辑 电路设计[M].西安:西安电子科技大学出社,2009.中国教育技术装备