欢迎来到沃文网! | 帮助中心 分享知识,传播智慧!
沃文网
全部分类
  • 教学课件>
  • 医学资料>
  • 技术资料>
  • 学术论文>
  • 资格考试>
  • 建筑施工>
  • 实用文档>
  • 其他资料>
  • ImageVerifierCode 换一换
    首页 沃文网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    VerilogHDL数字频率计.docx

    • 资源ID:1011359       资源大小:2.06MB        全文页数:18页
    • 资源格式: DOCX        下载积分:10积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录 微博登录
    二维码
    微信扫一扫登录
    下载资源需要10积分
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,下载更划算!
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    VerilogHDL数字频率计.docx

    1、目录目 录第一章测量原理与方法41.1测频方法41.2测周方法51.3等精度测量法51.4放大整形电路61.5时基信号产生7第二章 任务要求8第三章 各模块功能及介绍83.1 分频器84.2 闸门选择器104.3 频率计数器124.4 锁存器144.5 扫描显示控制译码系统15第四章 顶层电路及总体仿真164.1 顶层电路164.2 总体仿真结果164.3 测试结果19I数字频率计第一章 测量原理与方法所谓“频率”,就是周期性信号在单位时间(秒)内变化的次数。若在一定的时间间隔T内计数,计得某周期性信号的重复变化次数为N,则该信号的频率可表达为:f = N / T所以测量频率就要分别知道N和T

    2、的值,由此,测量频率的方法一般有三种:测频方法、测周方法和等精度测量。1.1 测频方法这种方法即已知时基信号(频率或周期确定)做门控信号,T为已知量,然后在门控信号有效的时间段内进行输入脉冲的计数,原理图如下图所示:被测信号输入闸门计数器放大整形时基信号发生器门控电路T图 1-1 测频方法原理图首先,被测信号(以正弦波为例)经过放大整形后转变成方波脉冲,其重复频率等于被测信号频率。把方波脉冲加到闸门的输入端。由一个高稳定的石英振荡器和一系列数字分频器组成了时基信号发生器,它输出时间基准(或频率基准)信号去控制门控电路形成门控信号,门控信号的作用时间T是非常准确的(由石英振荡器决定)。门控信号控

    3、制闸门的开与闭,只有在闸门开通的时间内,方波脉冲才能通过闸门成为被计数的脉冲由计数器计数。闸门开通的时间称为闸门时间,其长度等于门控信号作用时间T。比如,时间基准信号的重复周期为1S,加到闸门的门控信号作用时间T亦准确地等于1S,即闸门的开通时间“闸门时间”为1S。在这一段时间内,若计数器计得N=100000个数,根据公式f = N / T,那么被测频率就是100000Hz。如果计数式频率计的显示器单位为“KHz”,则显示100.000KHz,即小数点定位在第三位。不难设想,若将闸门时间设为T=0.1S,则计数值为10000,这时,显示器的小数点只要根据闸门时间T的改变也随之自动往右移动一位(

    4、自动定位),那么,显示的结果为100.00Khz。在计数式数字频率计中,通过选择不同的闸门时间,可以改变频率计的测量范围和测量精度。1.2 测周方法测周方法即:被测信号(频率或周期待测)做门控信号,T为未知量,做门控信号T,然后在门控信号有效的时间段内对时基信号脉冲计数,原理图如下图所示:图 1-2 测周方法原理图计数器测周的基本原理刚好与测频相反,即由被测信号控制主门开门,而用时标脉冲进行计数,所以实质上也是一种比较测量方法。1.3 等精度测量法等精度测量法的核心思想是通过闸门信号与被测信号同步,将闸门时间控制为被测信号周期长度的整数倍。测量时,先打开预置闸门,当检测到被测信号脉冲沿到达时,

    5、标准信号时钟开始计数。预置闸门关闭时,标准信号并不立即停止计数,而是等检测到被测信号脉冲沿到达时才停止,完成被测信号整数个周期的测量。测量的实际闸门时间可能会与预置闸门时间不完全相同,但最大差值不会超过被测信号的一个周期。在等精度测量法中,相对误差与被测信号本身的频率特性无关,即对整个测量域而言,测量精度相等,因而称之为“等精度测量”。标准信号的计数值越大则测量相对误差越小,即提高门限时间和标准信号频率可以提高测量精度。在精度不变的情况下,提高标准信号频率可以缩短门限时间,提高测量速度。原理图如下:图 1-4 等精度测量的原理图1.4 放大整形电路放大整形电路包括衰减器、跟随器、放大器、施密特

    6、触发器,衰减器由两个双向限幅二极管构成,将来的信号限制在0.7v到-0.7v之间。跟随器由一个集成运算放大器组成,以增大带负载能力。放大器为由集成运放构成一个同向比例放大器,放大位数为50倍。施密特触发器由555定时器组成,实现对波形的整形,整形后的方波送到闸门以便计数。其仿真电路如下图所示:图1-5 放大整形电路当输入信号为0.5V时,仿真放大整形后的输出结果如下图示:图 1-6 放大整形电路仿真结果(一)当输入信号为3V时,仿真放大整形后的输出结果如下图示:图 1-6 放大整形电路仿真结果(二)图 1-6 放大整形电路仿真结果(三)当输入信号为10V时,仿真放大整形后的输出结果如下图示:1

    7、.5 时基信号产生系统所使用的时钟信号由时基信号产生模块产生,它由一块晶体振荡器及简单的电路组成,如下图所示:图 1-7 时基信号产生电路第二章 任务要求设计一个计数式频率计,其频率测量范围为10Hz1MHz,测量结果用6只数码管显示。有三个带锁按键开关(任何时候都只能有一个被按下)被用来选择1S、0.1S和0.01S三个闸门时间中的一个。有一个按钮开关用来使频率计复位。有两只LED,一只用来显示闸门的开与闭,另一只当计数器溢出时做溢出指示。下图显示了该频率计前面板的基本排布构想。第三章 各模块功能及介绍3.1 分频器由于晶体振荡器提供的为48M的时钟,而在整个频率计里将用到周期为2s、0.2

    8、s和0.02s的闸门信号,还有译码显示的扫描信号1KHz ,所以我们在此模块先分频产生1Hz、10Hz、100Hz、1KHz四个分频信号,以留作其它模块用。分频分别采用4个计数器来实现,当计到一定的值时输出的分频信号翻转,最后分别获得4个分频输出,分频器模块如下图所示:图 3-1 分频器模块此模块的复位为同步方式,当复位有效时,输出将清零。源程序如下:module div_clk(reset, clk,clk_1hz, clk_10hz, clk_100hz, clk_1khz);input reset,clk;output reg clk_1hz, clk_10hz,clk_100hz,cl

    9、k_1khz;reg 29:0 counter1,counter2,counter3,counter4; /分频计数值always (posedge clk or negedge reset) beginif(!reset) begincounter1=0;counter2=0;counter3=0;counter4=0;clk_1hz=0;clk_10hz=0;clk_100hz=0;clk_1khz=0;endelse beginif(counter1=24000000) begin counter1=0;clk_1hz=clk_1hz; endelse begin counter1=co

    10、unter1+1; endif(counter2=2400000) begin counter2=0;clk_10hz=clk_10hz; endelse begin counter2=counter2+1; endif(counter3=240000) begin counter3=0;clk_100hz=clk_100hz; endelse begin counter3=counter3+1; endif(counter4=24000) begin counter4=0;clk_1khz=clk_1khz; endelse begin counter4=counter4+1; endend

    11、endendmodule仿真图如下所示:图 3-2 分频器模块仿真图(一)图 3-3 分频器模块仿真图(二)4.2 闸门选择器该模块主要实现对闸门的选择功能,通过输入的门选信号来确定输出的闸门,生成的模块如下图所示:图 3-4 闸门选择器具体实现方法如下:当三个门选信号中有且仅有门选信号gate_ch1有效时,reg变量gate为clk_1hz ,f的值为01;当三个门选信号中有且仅有门选信号gate_ch2有效时,reg变量gate为clk_10hz ,f的值为10;当三个门选信号中有且仅有门选信号gate_ch3有效时,reg变量gate为clk_100hz ,f的值为11。reg变量ga

    12、te再二分频则是输出的闸门信号gate_out(f 为标记信号,标记了当前闸门的选择情况)。如果同时有两个或以上的门选信号有效,则err输出为低,否则为高。另外输出的译码扫描信号为clk_1khz ,供后面的扫描译码模块使用。本模块的源代码如下所示:module gate_ch(reset,gate_ch1,gate_ch2,gate_ch3,clk_1hz,clk_10hz,clk_100hz,clk_1khz,gate_out,err,scan_freq,f);input reset,gate_ch1,gate_ch2,gate_ch3,clk_1hz,clk_10hz,clk_100hz

    13、,clk_1khz;output reg gate_out,err;output wire scan_freq;output reg 1:0 f; reg 2:0 counter5; / 产生扫描信号时的分频计数值 reg gate;always (posedge clk_1khz or negedge reset) beginif(!reset) begin gate=0;counter5=0;err=1;f=2b01;end else beginif(gate_ch1=0 & gate_ch2=1 & gate_ch3=1) begin gate=clk_1hz; f=2b01;err=1

    14、;end else if(gate_ch1=1 & gate_ch2=0 & gate_ch3=1) begin gate=clk_10hz;f=2b10;err=1;end else if(gate_ch1=1 & gate_ch2=1 & gate_ch3=0) begin gate=clk_100hz;f=2b11;err=1;end else begin err=0;end endendassign scan_freq=clk_1khz;always (posedge gate or negedge reset) beginif(!reset) begingate_out=0;ende

    15、lse begingate_out=gate_out;endendendmodule仿真结果如下图所示:图 3-5 当且仅当gate_ch2有效时的仿真结果图(一)4.3 频率计数器频率计数器的功能为在输入的闸门信号的控制下对输入脉冲时行计数,它是一个7拉的模十计数器。生成的模块如下图所示:图 3-6 当且仅当gate_ch2有效时的仿真结果图(一)当gate_out信号为高时才计数器才计数,在gate_out为低后,马上将此时计数的值cnt赋给输出cnte ,然后当输入carry_in信号再过一个脉冲后降计数的值cn清零,以备下次闸门有效时又重新开始计数。源程序如下:module count

    16、(carry_in,gate_out,reset,cnte0,cnte1,cnte2,cnte3,cnte4,cnte5,cnte6);input carry_in,gate_out,reset;output reg 3:0 cnte0,cnte1,cnte2,cnte3,cnte4,cnte5,cnte6;/在每一次闸门有效时读数/器传递的计数值reg 3:0 cnt0,cnt1,cnt2,cnt3,cnt4,cnt5,cnt6; /计数器的6个计数值reg 2:0 counter6; / 延迟将counter-num清零的计数值always (posedge carry_in or neg

    17、edge reset) beginif(!reset) begincnt0=4b0000;cnt1=4b0000;cnt2=4b0000;cnt3=4b0000;cnt4=4b0000;cnt5=4b0000;cnt6=4b0000;/判断是否溢出cnte0=4b0000;cnte1=4b0000;cnte2=4b0000;cnte3=4b0000;cnte4=4b0000;cnte5=4b0000;counter6=0;end else begin if(gate_out=1) begin counter6=0;if(cnt5=4b1001)&(cnt4=4b1001)&(cnt3=4b10

    18、01)&(cnt2=4b1001)&(cnt1=4b1001)&(cnt0=4b1001) begincnt0=4b0000;cnt1=4b0000;cnt2=4b0000;cnt3=4b0000;cnt4=4b0000;cnt5=4b0000;cnt6=cnt6+4b0001;end else beginif(cnt4=4b1001)&(cnt3=4b1001)&(cnt2=4b1001)&(cnt1=4b1001)&(cnt0=4b1001) begincnt0=4b0000; cnt1=4b0000; cnt2=4b0000; cnt3=4b0000;cnt4=4b0000; cnt5=

    19、4b0001+cnt5; cnt6=cnt6;end else beginif(cnt3=4b1001)&(cnt2=4b1001)&(cnt1=4b1001)&(cnt0=4b1001)begincnt0=4b0000; cnt1=4b0000; cnt2=4b0000; cnt3=4b0000;cnt4=4b0001+cnt4; cnt5=cnt5; cnt6=cnt6;end else beginif(cnt2=4b1001)&(cnt1=4b1001)&(cnt0=4b1001) begincnt0=4b0000; cnt1=4b0000; cnt2=4b0000; cnt3=4b00

    20、01+cnt3;cnt4=cnt4; cnt5=cnt5; cnt6=cnt6;end else begin if(cnt1=4b1001)&(cnt0=4b1001) begincnt0=4b0000; cnt1=4b0000; cnt2=4b0001+cnt2; cnt3=cnt3;cnt4=cnt4; cnt5=cnt5;cnt6=cnt6;end else begin if(cnt0=4b1001) begincnt0=4b0000; cnt1=4b0001+cnt1; cnt2=cnt2; cnt3=cnt3;cnt4=cnt4; cnt5=cnt5; cnt6=cnt6;end e

    21、lse begincnt0=4b0001+cnt0; cnt1=cnt1; cnt2=cnt2; cnt3=cnt3;cnt4=cnt4; cnt5=cnt5; cnt6=cnt6;end end end end end end end else begin if(counter6=2b01) begincnt0=4b0000; cnt1=4b0000; cnt2=4b0000; cnt3=4b0000;cnt4=4b0000; cnt5=4b0000; cnt6=4b0000;end else begincounter6=counter6+1; cnte0=cnt0; cnte1=cnt1;

    22、cnte2=cnt2;cnte3=cnt3; cnte4=cnt4; cnte5=cnt5; cnte6=cnt6;end end end endendmodule频率计数器的仿真工作时序如图所示:图 3-7 频率计数器的仿真结果图4.4 锁存器如果计数器输出直接与译码器相连接,那么在计数过程中输出端则随输入脉冲数的增加而不断跳变,那么显示数码管则也会不断闪烁跳变,让人不能看到稳定的输出,设锁存器后,则不再跳变,便可清晰读出计数结果。其生成的功能模块如图所示:图 3-7 锁存器模块这模块实现了对七位计数结果的锁存功能。程序很简单如下所示:module latch(reset,clk_1hz,c

    23、nte0,cnte1,cnte2,cnte3,cnte4,cnte5,cnte6,cn0,cn1,cn2,cn3,cn4,cn5,cn6);input reset,clk_1hz;input 3:0 cnte0,cnte1,cnte2,cnte3,cnte4,cnte5,cnte6;output reg 3:0 cn0,cn1,cn2,cn3,cn4,cn5,cn6;always (posedge clk_1hz or negedge reset) begin if(!reset) begincn0=4b0000; cn1=4b0000; cn2=4b0000; cn3=4b0000; cn4

    24、=4b0000; cn5=4b0000; cn6=4b0000;end else begincn0=cnte0; cn1=cnte1; cn2=cnte2; cn3=cnte3;cn4=cnte4; cn5=cnte5; cn6=cnte6;end endendmodule4.5 扫描显示控制译码系统本模块在扫描信号的scan_for的控制下,对多路选择器进行扫描,实现对实现对六位已经锁存的计数结果的扫描输出,由于人眼的视觉暂留效应,每支数码管只需大于25Hz的扫描频率即可实现动态扫描,所以我们用1KHz的扫描信号足以。其生成的功能模块如图所示:图 3-7 频率计数器的仿真结果图本模块还实现了

    25、高位的无意义的消隐,即高位若值为零且无意义时,相应的数码管将不会显示。输出信号over通过最高位cnt6是否有值来判断结果是否溢出,如果溢出则over输出结果为低 ,led_khz为单位标志,如果led_khz 为有效时,显示结果的单位为KHz ,dot实现了小数点的显示。其源程序较多,可以附录中查看,此模块的仿真结果如下所示:图 3-7 频率计数器的仿真结果图第四章 顶层电路及总体仿真4.1 顶层电路顶层电路如下图所示:图 4-1顶层电路图4.2 总体仿真结果为了验证我们的设计是否正确,我们用ModelSim对以上设计进行了仿真,仿真精度达到ps级,基准时钟clk用20883ns,结果如下所

    26、示,在1Hz到10000Hz中仿真结果与理论值相等,在输入为100000Hz时出现了3Hz的误差,当输入被测信号为1000000Hz时,出现了26Hz的误差。仿真结果波形如下图所示:图 4-2被测信号为10 Hz的仿真结果图 4-3测信号为100 Hz的仿真结果图 4-3 被测信号为1000 Hz的仿真结果10 000 Hz:图 4-4 被测信号为10000 Hz的仿真结果100 000 Hz:图 4-5 被测信号为100000 Hz的仿真结果1000 000 Hz:图 4-6 被测信号为1000000 Hz的仿真结果4.3 测试结果在成功下载并运行后,为评估该设计系统的实际测量效果,做了一次对比实验,选用频率可调的函数发生器,同时用示波器做同步的跟踪。测得的数据较为精确,最低频率可以测到10Hz,当输入信号不大于10KHz时,显示结果跟函数发生器以及示波器的显示全吻合,当输入信号频率达到100KHz时,测得的结果和显波器的显示出现了3Hz的差值,当输入信号频率达到1000KHz时,测得的结果和显波器的显示出现了27Hz的差值,由于所使用的函数发生器最大只能产生41MHz的信号,所以我们最高只测到41MHz。17数字频率计18


    注意事项

    本文(VerilogHDL数字频率计.docx)为本站会员(精***)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给沃文网发消息,QQ:2622162128 - 联系我们

    版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

    Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1

    陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922