FPGA频率计设计毕业设计.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一、课程设计原理 1、测频原理及误差分析 本次课程设计采用直接测频法。直接测频法就是在确定的闸门时间内,记录被测信号的脉冲个数。这种方法的计数值也会产生最大为±1个脉冲误差。进一步分析测量准确度。设待测信号脉冲周期为T1,频率为F1,当闸门时间为T=1s时,测量准确度为&=T1/T=1/F1。由此可知直接测频法的测量准确度与信号的频率有关。当待测信号频率较高时,测量准确度也较高,反之测量准确度也较低。 2、占空比测量原理 占空比:占空比是指高电平在一个周期之内所占的时间比率。方波的占空比为50%,占空比为0.5,说明正电平所占时间为0.5个周期。在1S的闸门时间之内,只要我们利用50Mhz的时钟脉冲,对待测信号的高电平时间进行计数,得到一个num值。最后num*20ns就是所求信号的占空比了。 二、系统的设计 1、分频模块 分频模块我们采用50Mhz的时钟频率产生待测的信???,和三个控制信号。此程序要求将50Mhz分出1Mhz的频率,再产生1hz作为控制信号的标准输入时钟。该模块产生的3个控制信号,分别为EN,LOAD,CLR。CLR信号用于在每次测量开始时,对计数器进行复位,以清除上次测量的结果,该复位信号高电平有效。EN为计数允许信号,在EN信号的上升沿时刻计数模块开始对输入信号的频率进行测量,在此1S时间里被测信号的脉冲数进行计数,即为信号的频率。然后将值锁存,并送到数码管显示出来。设置锁存器的好处是使显示的数据稳定,不会由于周期性的清零信号而不断闪烁。在每一次测量开始时,都必须重新对计数器清0。另外,也设计出另外一个进程process,产生同样地三个控制信号给占空比测量时提供使能,锁存和清零的能力。 部分程序如下: process(clk) begin if clkevent and clk = 1 then temp1=temp1+1; end if; end process; freq=temp1(16); --381Hz=50Mhz/2^17 2、计数模块 计数模块分为2个子模块。模块一为对频率的测量,模块二为对占空比的测量。为了分开计数和显示,采用一个按键key1。每当按一次key1按键,类型为std_logic_vector的m会加1,利用末位是0还是1区分显示频率还是占空比。因此每按一次按键,数码管会在频率和占空比之间切换。 区分显示的程序如下: process(key1) begin if key1=0 then m=m+1; ---按下按键,m加1 end if; end process; process(clk,m) begin if rising_edge(clk) then if m(0)=1 then -----------由key1产生m末位是1,选择显示频率 bcd3=d3; bcd2=d2; bcd1=d1; bcd0=d0; xsd=h; else bcd3=0; -----------------如果是0,选择显示占空比 bcd2=e2; bcd1=e1; bcd0=e0; xsd=0111; end if;end if; end process; 2.1 频率测量模块 本次课程设计采用直接测频法。在分频模块产生的三个控制信号的基础上,当en为1的1S时间内,采用计数器测量待测频率的的脉冲数。设置了7个十进制的加法器b1,b2,b3,b4,b5,b6,b7,低位等于10时高位加1,低位为0。这样便把脉冲数出来。 我们的实验板上只有4个数码管,因此选择首位非0的前四位输出。例如当b7不等于0,,则b7,b6,b5,b4输出给显示模块,同时4号数码管的小数点点亮,显示出的频率单位是khz。当b7等于0,则需要判断b6是否为0 ,假如b6 不为0 ,那么b6,b5,b4,b3输出给显示模块,三号管小数点点亮,单位依然为khz。因此最高显示的频率是9999khz。 频率测量部分程序如下: PROCESS(freq,CLR_CNT,TSTEN) IS BEGIN IF CLR_CNT= 1 THEN -----清???信号 b1=0;b2=0;b3=0;b4=0;b5=0;b6=0;b7=0; ELSIF freqEVENT AND freq= 1 THEN IF TSTEN= 1 THEN ----使能信号 if b1=9 then b1=0; if b2=9 then b2=0; if b3=9 then b3=0; if b4=9 then b4=0;

文档评论(0)

tt7090 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档