《基于vdhl语言的数字频率计设计》由会员分享,可在线阅读,更多相关《基于vdhl语言的数字频率计设计(22页珍藏版)》请在金锄头文库上搜索。
1、 1 / 22基于 VDHL 语言的数字频率计设计唐耀清电子工程学院电子信息工程(9)23【摘要】数字频率计是使用领域非常广泛的测量仪器,在 计 算 机 、 通讯设备、音频视频 等 科 研 生 产 领 域 不 可 缺 少 。 通 过 十 进 制 数 字 显 示 被 测 信 号 频 率 , 具 有 测 量迅 速 , 精 度 高 , 显 示 直 观 等 诸 多 优 点 。 本 实 验 中 , 我 们 使 用 VHDL 开 发FPGA 的 一 般 流 程 , 在 软件开发平台 ISE 上,采 用 频 率 计 开 发 的 基 本 原 理 和相 应 的 测 量 方 案 , 在 FPGA 实 验 开 发
2、板 进 行 数 字 频 率 计 的 设 计 和 实 现 。【关键词】:频率计;VHDL;FPGA【目录】一、 系统总体要求 _21. 设计要求 _22. 系统工作原理 _22. 单元电路的划分 _5二、 单元电路设计 _61. 分频器 _62. 控制器 _83. 计数器 _94. 锁存器 _135. 显示单元 _15三、 设计实现 _201. 顶层设计 _202. 管脚分配 _203. 下载过程 _21四、 测试结果及结论 _21测试结果: _21实验结论: _21五、 参考资料 _22 2 / 22一、 系统总体要求1. 设计要求要求频率计设计指标如下:1、被测输入信号:方波2、测试频率范围
3、为:10Hz100MHz 3、量程分为三档:第一档:闸门时间为 1S 时,最大读数为 999.999KHz第二档:闸门时间为 0.1S 时,最大读数为 9999.99KHz 第三档:闸门时间为 0.01S 时,最大读数为99999.9KHz。4、显示工作方式:a 、用六位 BCD 七段数码管显示读数。b、采用记忆显示方法c、实现对高位无意义零的消隐。 2. 系统工作原理在电子技术领域内,频率是一个最基本的参数,频率与其它许多电参量的测量方案、测量结果都有十分密切的关系。因此,频率的测量就显得更为重要.而且,目前在电子测量中,频率的测量精确度是最高的。所谓“频率” ,就是周期性信号在单位时间(1
4、 秒)内变化的次数。若在一定的时间间隔 T 内计数,计得某周期性信号的重复变化次数为 N,则该信号的频率可表达为:其中脉冲形成电路的作用是将被测信号变成脉冲信号,其重复频率等于被测频率 f。时间基准信号发生器提供标准的时间脉冲信号,若其周期为 1s,则门控电路的输出信号持续时间亦准确地等于 1s。闸门电路由标准秒信号进行控制,当秒信号来到时,闸门开通,被测脉冲信号通过闸门送到计数译码显示电路。秒信号结束时闸门关闭,计数器停止计数。由于计数器计得的脉冲数 N 是在 1 秒时间内的累计数,所以被测频率 f=NHz。比如,时标信号的重复周期为 1S,则加到闸门的门控信号作用时间 T 即闸门时间亦准确
5、地等于 1s,即闸门开通时间为 1s,这时若计得 10 000 个数,则按式一,被测频率 =10.000Hz,若计数器上单位显示为“kHz” ,则显示xf10.000kHz,即小数点定位在第三位。不难设想,若闸门时间改为 T=0.1s,则计数值为 1 000,这个数乘以 10 就等于 1s 的计数值,即Hz。实际上,当改变闸门时间 T 时,显示器上的小数点00xf也随着往右移一位(自动定位),即显示 10.000kHz。下面我们来分析计数器测频的测量误差。从公式一可知,上述测频方法的 3 / 22测量误差,一方面决定于闸门时间 T 准不准,另一方面决定于计数器计得的数准不准。根据误差合成方法,
6、从公式可得:公式二公式二中第一项 是数字化仪器所特有的误差,而第二项 是闸门时间NT的相对误差,这项误差决定于石英振荡器所提供的标准频率的准确度。现分述如下。1 误差在测频时,主门的开启时刻与计数脉冲之间的时间关系是不相关的,所以它们在时间轴上的相对位置是随机的。这样,在相同的主门开启时间内,计数器所计得的数却不一定相同,当主门开启时间 T 接近甚至等于被测信号周期的整数倍 N 倍时,此项误差为最大,下图画出的就是这种情况。xT图 一-1若主门开启时刻为 ,而第 1 个计数脉冲出现在 ,图 4-2 (a)中示出了 0TxTxT0 的情况( ),这时计数器计得 N 个数(图中 N=6);现在再来
7、看图 0Tx4-2 (b)情况,即 趋近于 0,这就有两种可能的计数结果:若第 1 个计数脉冲和第 7 个计数脉冲都能通过主门,则可计得 N+1=7 个数;也可能这两个脉冲都没有能进入主门,则只能计得 N-1=5 个数。由此可知,最大的计数误差为个数。所以考虑到公式一),可写成1N公式三xTfN1式中 T 为闸门时间, 为被测频率。从公式三可知,不管计数值 N 多少,xf其最大误差总是1 个计数单位,故称“1 个字误差” ,简称“1 误差” 。而且 一定时,增大闸门时间 T,可减小1 误差对测频误差的影响。当 T 选定xf后, 越低,则由1 误差产生的测频误差越大。xf 4 / 22闸门时间
8、T 准不准,主要决定于由石英振荡器提供的标准频率的准确度,若石英振荡器的频率为 ,分频系数为 k,则cf cfT而 2cfk所以(4-4)cfT可见,闸门时间的准确度在数值上等于标准频率的准确度,式中负号表示由 引起的闸门时间的误差为 。cf通常,对标准频率准确度 的要求是根据所要求的测频准确度提出来的,cf例如,当测量方案的最小计数单位为 1Hz,而 = Hz,在 T=1s 时的测量准xf610确度为 (只考虑 误差),为了使标准频率误差不对测量结果表明产生6101影响,石英振荡器的输出频率准确度 应优于 ,即比 误差引起的测cf7101频误差小一个量级。综上所述,可得如下结论:1、计数器直
9、接测频的误差主要有两项:即 误差和标准频率误差。一般,1总误差可采用分项误差绝对值合成,即公式五)1(cxxfTf可把公式五画成下图所示的曲线,即 与 T, 以及 的关系曲xxfcf线。 5 / 22图 一-2误差曲线从图可知, 一定时,闸门时间 T 选得越长,测量准确度就越高。而当 Txf选定后, 越高,则由于 误差对测量结果的影响越小,测量准确度就越高。xf1但是,随着 误差的减小,标准频率误差 将对测量结果产生影响,并以1cf(图中以 为例)为极限,即测量准确度不可能优于 。cf905 91052、测量低频时,由于 误差产生的测频误差大得惊人,例如, 为xf10Hz,T=1s ,则由 误
10、差引起的测频误差可达到 10%,所以,测量低频时不1宜采用直接测频方法。2. 单元电路的划分通过对实验要求的分析,我们可以将数字频率计的单元电路划分为一下部分。1、 分频器分频器的功能是提供标准闸门时间控制信号以精确控制计数器的开闭。2、 控制器控制器模块是整个数字频率计时序的关键,只有有恰当的时序关系,才能得到正确的结果。3、 计数器计数机是记录在闸门开启时间内方波上升沿的个数,从而计算出当前信号的频率大小。4、 锁存器 6 / 22如果计数器输出直接与译码器相连接,那么在计数过程中输出端则随输入脉冲数的增加而不断跳变,那么显示数码管则也会不断闪烁跳变,让人不能看到稳定的输出,设锁存器后,则
11、不再跳变,便可清晰读出计数结果。5、 显示部分显示部分通过对数码管位选信号的循环扫描,实现不同位数上不同数字的显示功能,使测得的数据得以显示。二、 单元电路设计1. 分频器思路:由于频率计闸门时间 1s 的产生需要 1Hz 的信号作为时基,并且显示部分的数码管扫描也需要提供 1kHz 的信号来扫描计数,但 FPGA 板载晶振只提供 48MHz 的信号输入,所以需要分频器来从高频获取我们所需要的低频信号。分频器的工作原理:通过检测输入高频信号的上升沿跳变,并用一个计数单元记录下上升沿的个数,可得其累计时间=上升个数*输入信号周期,直到累计时间为所需低频信号周期的一半时,立即将计数单元清零并将低频
12、信号的输出取反,适当设定累计上升沿的个数,即可获得我们所需的低频信号。元件符号如图二-1 所示:图 二-1源程序:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_unsigned.ALL;use IEEE.STD_LOGIC_arith.ALL;entity fdiv is 7 / 22port(fin:in std_logic;fout100,fout1k:buffer std_logic);end fdiv;architecture fdiv_arc of fdiv issignal cnt1:integer range 0 to 23999:=0;signal cnt2:integer range 0 to 499:=0;beginprocess(fin)beginif finevent and fin=1 thenif cnt1=23999 thencnt1 rst,cnt_en =cnt_en,clk =csignal,cnt_out = result1, 12 / 22cnt_carry =c1);u2:counter_4 port map(rst = rst,cnt_en =cnt_en,clk =c1,cnt_out = result2,cnt_carry =c2)