用现场可编程门阵列实现的频率计
时间:08-16
来源:互联网
点击:
1 引言
数字频率计是通信设备、音、视频等科研生产领域不可缺少的测量仪器。采用Verilog HDL编程设计实现的数字频率计,除被测信号的整形部分、键输入部分和数码显示部分外,其余全部在一片FPGA芯片上实现。整个系统非常精简,且具有灵活的现场可更改性。
相比传统的电路系统设计方法,EDA技术采用VHDL语言描述电路系统,包括电路的结构、行为方式、逻辑功能及接口。Verilog HDL具有多层次描述系统硬件功能的能力,支持自顶向下的设计特点。设计者可不必了解硬件结构。从系统设计入手,在顶层进行系统方框图的划分和结构设计,在方框图一级用Ver-ilog HDL对电路的行为进行描述,并进行仿真和纠错,然后在系统一级进行验证,最后再用逻辑综合优化工具生成具体的门级逻辑电路的网表,下载到具体的FPGA器件中去,从而实现FPGA的设计。
2 测量原理及总体结构框图
频率测量方法有2种。一种是测频法,在一定时间间隔TM内测出待测信号重复变化次数N,则被测信号的频率为fx=N/TM。另一种方法是测周法,在被测信号的一个周期内测出标准高频信号fs的个数N,则被测频率为fx=fs/N。可见测频法对高频信号有较高的测量精度,而测周法对低频信号的测量精度较高。本频率测量系统采用测频法和测周法相结合的方法,使两者的测量带宽得到了互补,而且采用了延时为纳秒级的FPCA来实现,从而极大地提高了系统工作带宽和系统测量精度。此外,具有自动测频和测周转换量程功能,每个数量级为一个量程,每个量程保留3位有效数字,用“xxxEx"表示“x.xx×10x”。
本频率计由控制模块、测频模块、测周期算频模块、锁存显示模块4个模块组成。总体框图如图1所示。
系统结构框图中信号说明。singal:被测信号。Stateshift:测频或测周期得出的量程不够或溢出信号。reset:复位信号。iclk:输入标准时钟12MHz。en_precent:显示占空比的按键信号。oclk:控制模块输出基本时钟,根据不同状态对iclk进行分频而得。en:使能信号。state_jmp:状态跳变信号。oen_precent:由控制模块输出的占空比显示信号。condition:状态输出信号。load:允许输出显示信号。data[11:0]:计算所得数据,3位有效数字。out[19:0]:最终的输出显示数据,为“xxxEx”。
3 相应模块分析及设计
3.1 控制模块
该控制模块有11种状态。在1 Hz~100MHz范围内每个数量级为一种状态,共8种,小于1 Hz大于100MHz为两种量程溢出状态,还有一种为显示占空比状态。当进入两种量程溢出状态后,若被测信号又进入量程,控制器又能回到8种正常显示状态中去。8种数量级的状态中,每种状态对应一个基本时钟,每个基本时钟都由iclk(12 MHz)分频而来,为了保证误差在2%以内,本控制模块选择保留3位有效数字。
3.2 测频模块
测频模块在数字频率计中是一个比较重要的模块,要想使频率计能自动测频,还需要一个测频控制电路,要求它能产生3个控制信号:CN,LOAD和reset,以便使频率计能顺利完成测频3步:计数、锁存和清0。
测频模块的基本思路是:在1个clk周期内对进来的signal进行计数,clk的第1个上升沿用来清零,之后的1个下降沿到下个周期的下降沿,这段时间用来计数,在之后的半个周期用以输出使能,所以整个计算过程需要2个clk周期。测频模块测频得出的数据为100~999,若小于100,则cntlow=1,量程太大;若大于999,则cntover=1,量程溢出。
3.3 测周期算频模块
该模块由3个小模块构成,即测量信号高电平时间的模块(scale_fre_high)、测量信号周期的模块(scale_fre)和除法器模块(div)。其中的测量信号周期的模块就是测频模块的一种变形,把被测信号和基本时钟的输入对调一下,所以在命名上还是一致的。而测量信号高电平时间的模块也是在测频模块的基础上修改而来的。该模块框架图如图2所示。
3.4 锁存显示模块
锁存显示模块包括锁存和显示两部分。锁存模块是在信号LOAD的上升沿锁存到寄存器里面,并由REG的输出端输出,然后由开发系统板显示输出对应的数值。显示模块的主要工作是产生数码管显示所需的控制信号和数据信号。模块内用于循环显示的基准时钟经分频处理后得到。显示模块将二进制的结果信号转换成BCD码的形式输入给数码管,同时对数码管以较高的频率不断重复进行刷新。
锁存显示模块,输入3位有效数字,输出5位数“xxxEx”,前3位为需要显示的3位有效数字,后2位据输入的当前状态,显示被测信号频率所处的数量级。
下面是锁存显示模块的源程序:
4 系统仿真
该频率计设计利用EDA工具MAX_PLUS2进行了仿真,整个系统仿真波形如图3所示。
程序一开始未进入量程,于是慢慢调整,当进入到状态2时,在测量范围内,测出其周期为175,用除法器求其倒数,结果为571,完全正确。随着被测信号频率变大,跳入直接测频范围,则直接测出频率结果,也同样正确。仿真结果说明程序无误。
5 结束语
根据频率测量原理,把测频法和测周法结合起来,确定了低频段采用测周法,高频段采用测频法,实现了在其可测量程内的测量结果优于普通测量方法,且系统硬件电路结构简单,软件设计容易,已得到较好的实际应用。
数字频率计是通信设备、音、视频等科研生产领域不可缺少的测量仪器。采用Verilog HDL编程设计实现的数字频率计,除被测信号的整形部分、键输入部分和数码显示部分外,其余全部在一片FPGA芯片上实现。整个系统非常精简,且具有灵活的现场可更改性。
相比传统的电路系统设计方法,EDA技术采用VHDL语言描述电路系统,包括电路的结构、行为方式、逻辑功能及接口。Verilog HDL具有多层次描述系统硬件功能的能力,支持自顶向下的设计特点。设计者可不必了解硬件结构。从系统设计入手,在顶层进行系统方框图的划分和结构设计,在方框图一级用Ver-ilog HDL对电路的行为进行描述,并进行仿真和纠错,然后在系统一级进行验证,最后再用逻辑综合优化工具生成具体的门级逻辑电路的网表,下载到具体的FPGA器件中去,从而实现FPGA的设计。
2 测量原理及总体结构框图
频率测量方法有2种。一种是测频法,在一定时间间隔TM内测出待测信号重复变化次数N,则被测信号的频率为fx=N/TM。另一种方法是测周法,在被测信号的一个周期内测出标准高频信号fs的个数N,则被测频率为fx=fs/N。可见测频法对高频信号有较高的测量精度,而测周法对低频信号的测量精度较高。本频率测量系统采用测频法和测周法相结合的方法,使两者的测量带宽得到了互补,而且采用了延时为纳秒级的FPCA来实现,从而极大地提高了系统工作带宽和系统测量精度。此外,具有自动测频和测周转换量程功能,每个数量级为一个量程,每个量程保留3位有效数字,用“xxxEx"表示“x.xx×10x”。
本频率计由控制模块、测频模块、测周期算频模块、锁存显示模块4个模块组成。总体框图如图1所示。
系统结构框图中信号说明。singal:被测信号。Stateshift:测频或测周期得出的量程不够或溢出信号。reset:复位信号。iclk:输入标准时钟12MHz。en_precent:显示占空比的按键信号。oclk:控制模块输出基本时钟,根据不同状态对iclk进行分频而得。en:使能信号。state_jmp:状态跳变信号。oen_precent:由控制模块输出的占空比显示信号。condition:状态输出信号。load:允许输出显示信号。data[11:0]:计算所得数据,3位有效数字。out[19:0]:最终的输出显示数据,为“xxxEx”。
3 相应模块分析及设计
3.1 控制模块
该控制模块有11种状态。在1 Hz~100MHz范围内每个数量级为一种状态,共8种,小于1 Hz大于100MHz为两种量程溢出状态,还有一种为显示占空比状态。当进入两种量程溢出状态后,若被测信号又进入量程,控制器又能回到8种正常显示状态中去。8种数量级的状态中,每种状态对应一个基本时钟,每个基本时钟都由iclk(12 MHz)分频而来,为了保证误差在2%以内,本控制模块选择保留3位有效数字。
3.2 测频模块
测频模块在数字频率计中是一个比较重要的模块,要想使频率计能自动测频,还需要一个测频控制电路,要求它能产生3个控制信号:CN,LOAD和reset,以便使频率计能顺利完成测频3步:计数、锁存和清0。
测频模块的基本思路是:在1个clk周期内对进来的signal进行计数,clk的第1个上升沿用来清零,之后的1个下降沿到下个周期的下降沿,这段时间用来计数,在之后的半个周期用以输出使能,所以整个计算过程需要2个clk周期。测频模块测频得出的数据为100~999,若小于100,则cntlow=1,量程太大;若大于999,则cntover=1,量程溢出。
3.3 测周期算频模块
该模块由3个小模块构成,即测量信号高电平时间的模块(scale_fre_high)、测量信号周期的模块(scale_fre)和除法器模块(div)。其中的测量信号周期的模块就是测频模块的一种变形,把被测信号和基本时钟的输入对调一下,所以在命名上还是一致的。而测量信号高电平时间的模块也是在测频模块的基础上修改而来的。该模块框架图如图2所示。
3.4 锁存显示模块
锁存显示模块包括锁存和显示两部分。锁存模块是在信号LOAD的上升沿锁存到寄存器里面,并由REG的输出端输出,然后由开发系统板显示输出对应的数值。显示模块的主要工作是产生数码管显示所需的控制信号和数据信号。模块内用于循环显示的基准时钟经分频处理后得到。显示模块将二进制的结果信号转换成BCD码的形式输入给数码管,同时对数码管以较高的频率不断重复进行刷新。
锁存显示模块,输入3位有效数字,输出5位数“xxxEx”,前3位为需要显示的3位有效数字,后2位据输入的当前状态,显示被测信号频率所处的数量级。
下面是锁存显示模块的源程序:
4 系统仿真
该频率计设计利用EDA工具MAX_PLUS2进行了仿真,整个系统仿真波形如图3所示。
程序一开始未进入量程,于是慢慢调整,当进入到状态2时,在测量范围内,测出其周期为175,用除法器求其倒数,结果为571,完全正确。随着被测信号频率变大,跳入直接测频范围,则直接测出频率结果,也同样正确。仿真结果说明程序无误。
5 结束语
根据频率测量原理,把测频法和测周法结合起来,确定了低频段采用测周法,高频段采用测频法,实现了在其可测量程内的测量结果优于普通测量方法,且系统硬件电路结构简单,软件设计容易,已得到较好的实际应用。
Verilog FPGA 电路 EDA VHDL 仿真 相关文章:
- 可以将第三方的IP(来自VHDL或Verilog)吸纳到NI FlexRIO应用中么?(01-06)
- 对验证的量度:何时算充分?(07-31)
- 一种高性价比等精度数字频率计方案设计(03-16)
- 基于FPGA的核物理实验定标器的设计与实(07-30)
- 基于SOPC的任意波形发生器设计(08-19)
- 嵌入式软件的覆盖测试(09-05)