数字频率计EDA解析.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
摘要 在电子技术领域中,频率是最基本的参数之一,并且与许多电参量的测量方案以及测量结果都有十分密切的关系,因此频率的测量就显得更为重要。测量频率的方法有多种,其中电子计数器测量频率具有精度高、使用方便、测量迅速,以及便于实现测量过程自动化等优点,是频率测量的重要手段之一。电子计数器测频有两种方式:一是直接测频法,即在一定闸门时间内测量被测信号的脉冲个数;二是间接测频法,周期测频法。直接测频法适用于高频信号的频率测量,间接测频法适用于低频信号的频率测量。本文阐述了用VHDL语言设计了一个简单的数字频率计的过程。 关键词: 1 1.1 设计内容 1 1.2 设计方案 1 1.3 设计目的 1 二、设计原理 2 三、具体内容 3 3.1 测频控制 3 3.2 计数 4 3.3 锁存器 6 3.4 扫描译码驱动 7 3.5数码管显示 四、运行结果 9 五、心得体会 10 参考文献 10 附录A VHDL程序 12 附录B 控制方式管脚列表 19 附录C 电路原理图 20 一、绪论 1.1 设计内容 此次EDA基础课程设计中使用Altera公司的EP2C35系列的FPGA芯片,利用SOPC-NIOSII-EP2C35开发板设计和仿真一个数字频率计,对1Hz~250KHz 的脉冲进行频率测量,采用等精度测量,即在所测量的整个频段内部,均可实现相同精度的测量,即测量精度与频率无关,测得结果在数码管上显示,并设计相应的功能按键。 1.2 设计方案 此次EDA课程设计采用现场可编程门阵列(FPGA)为控制核心,利用VHDL语言编程,下载烧制实现。本实验要完成的任务就是设计一个频率计,系统时钟选择核心板上的50M的时钟,将所有器件集成在一块芯片上,体积大大减小的同时还提高了稳定性,可实现大规模和超大规模的集成电路,测频测量精度高,测量频率范围大,而且编程灵活、调试方便,并且选用EP3C40F780C8芯片,由50M晶振体产生时钟信号,开关做为相应的功能按键。 1.3 设计目的 (1) 了解等精度测频的方法和原理; (2) 掌握如何在FPGA内部设计多种功能模块; (3) 掌握VHDL在测量模块设计方面的技巧。 二、设计原理 ??频率,是指一秒内信号变化的次数,也就是每秒接受信号脉冲的次数。信号易于传输,抗干扰性强,可以获得较好的测量精度。因此,频率检测是电子测量领域最基本的测量之一。频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟。计待测信号的脉冲个数,即。时间可以根据需要取值,大于或小1 s都可以。时间越长,得到的频率值就越准确,但时间越长,则每测一次频率的间隔就越长。时间越短,测得的频率值刷新就越快,但测得的频率精度就受影响。数字频率计的关键组成部分包括测频控制信号发生器、计数器、锁存器、译码驱动电路和显示电路, 三、具体内容 3.1 测频控制信号 测频控制信号发生器产生测量频率的控制时序是最初的,也是整个程序的核心内容。控制信号CLK取为Hz(为系统时钟电路信号)。分频后就是一个分频后就是一个脉宽为1s的信号,用来作为计数闸门信号。当为高电平时开始计数;,,,CLR为控制开关,当它为高电平时,分频器才开始工作,当它为低电平时,分频器是停止分频。 程序如下:PROCESS ( CLK1 ) VARIABLE A :STD_LOGIC_VECTOR(25 DOWNTO 0); BEGIN IF (CLR=1)THEN IF CLKEVENT AND CLK = 1 THEN IF A=10111110101111000010000000 THEN A:=00000000000000000000000000; CLK1=0; ELSE CLK1=1; A:=A+1; END IF; END IF; END IF; END PROCESS; PROCESS ( CLK3 ) BEGIN IF CLK1EVENT AND CLK1=1 THEN CLK3=NOT CLK3; END IF ; END PROCESS; PROCESS ( CLK2 ) VARIABLE B : STD_LOGIC_VECTOR(12 DOWNTO 0); BEGIN IF (CLR=1)THEN IF CLKEVENT AND CLK = 1 THEN IF B=1001110001000 THEN

文档评论(0)

ss55863378 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档