数字频率计(试验报告)_第1页
数字频率计(试验报告)_第2页
数字频率计(试验报告)_第3页
数字频率计(试验报告)_第4页
数字频率计(试验报告)_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数字频率计实验目的:设计一个4位十进制频率计,学习较复杂数字系统的设计方法。实验内容:分析数字频率计的功能,完成功能模块的划分,分别用VHDL语言完成底层模块的设计和以原理图的方法完成顶层模块的设计,分别对各个模块以及顶层模块进行仿真分析,最后在硬件开发平台上进行测试。实验原理:频率测量的基本原理是计算每秒钟内待测信号的脉冲个数。实验步骤:1).首先设计一个十进制计数器:这个计数器包括一个使能端,一个清零信号,一个时钟信号,计数输出和进位输出信号。源程序如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycnt10gisport(clk:instd_logic;clr:instd_logic;ena:instd_logic;cq:outstd_logic_vector(3downto0);carryo:outstd_logic);endentity;architectureoneofcnt10gissignalcqi:std_logic_vector(3downto0);beginprocess(clk,clr,ena)beginifclr='1'thencqi<="0001";elsifclk'eventandclk='1'thenifena='1'thenifcqi<9thencqi<=cqi+1;carryo<='0';elsecqi<=(others=>'0');carryo<='1';endif;endif;endif;endprocess;cq<=cqi;endarchitecture;2).其次因为要求设计的是4位十进制计数,所以可以将低位的进位信号作为高位的时钟信号,将4个十进制计数器级连起来。为了获得稳定的显示,可以设计一个锁存器,源程序如下:libraryieee;useieee.std_logic_1164.all;entityreg16bisport(load:instd_logic;din:instd_logic_vector(15downto0);dout:outstd_logic_vector(15downto0));end;architecturebehavofreg16bisbeginprocess(load,din)beginifload'eventandload='1'thendout<=din;endif;endprocess;end;3).再次要设计一个测频控制器,这个控制器包括输出计数使能信号,清零信号,锁存控制信号。其中计数使能信号是通过将时钟信号二分频实现的,这样只要在使能信号为高电平时计数,低电平时停止计数,即可获得一个时钟周期内待测频率的周期即频率。源程序如下:libraryieee;useieee.std_logic_1164.all;entitytestctlisport(clk:instd_logic;tsten:outstd_logic;clrsig:outstd_logic;load:outstd_logic);end;architectureoneoftestctlissignaldiv2clk:std_logic;beginprocess(clk)beginifclk'eventandclk='1'thendiv2clk<=notdiv2clk;endif;endprocess;process(clk,div2clk)beginifclk='0'anddiv2clk='0'thenclrsig<='1';elseclrsig<='0';endif;endprocess;load<=notdiv2clk;tsten<=div2clk;end;4).时序仿真波形如下:Tsten:计数使能信号Load:锁存使能Clrsig:清零信号5).最后是顶层文件的设计源程序如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityfrecoutisport(clk:instd_logic;fin:instd_logic;dout:outstd_logic_vector(15downto0));end; architecturestrucoffrecoutiscomponenttestctlport(clk:instd_logic;tsten:outstd_logic;clrsig:outstd_logic;load:outstd_logic);endcomponent;componentcnt10port(clk:instd_logic;clr:instd_logic;ena:instd_logic;cq:outstd_logic_vector(3downto0);carryo:outstd_logic);endcomponent;componentreg16bport(load:instd_logic;din:instd_logic_vector(15downto0);dout:outstd_logic_vector(15downto0));endcomponent;signalload1:std_logic;signaltsten1:std_logic;signalclrsig1:std_logic;signaldto1:std_logic_vector(15downto0);signalcarryo1:std_logic_vector(2downto0);beginu1:testctlportmap(clk,tsten1,clrsig1,load1);u2:reg16bportmap(load1,dto1,dout);u3:cnt10portmap(fin,clrsig1,tsten1,dto1(3downto0),carryo1(0));u4:cnt10portmap(carryo1(0),clrsig1,tsten1,dto1(7downto4),carryo1(1));u5:cnt10portmap(carryo1(1),clrsig1,tsten1,dto1(11downto8),carryo1(2));u6:cnt10portmap(carryo1(2),clrsig1,tsten1,dto1(15downto12));endarchitecture;时序仿真如下:时钟周期为200ns,待测频率fin周期为20ns,所得输出为10,若时钟为1HZ,则输出即为所测频率数。下图为clk=64us,fin=20ns时的仿真:下图为clk=32us,fin=10ns时的仿真:由仿真可见,对于频率为100MHZ的频率,频率计数器出现误差。对于频率在100MHZ以内的频率,频率计有较高的精度,由于我们只要求4位十进制,即算到9999,这个频率计符合我们的要求。但这个频率计数器只能测量整数频率,即只能精确到个位。如clk=150ns,fin=20ns,仿真如下:测得为7,而精确数值应为7.5。硬件测试:时钟clk输入为1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论