数字频率计简易设计现代电子系统设计_第1页
数字频率计简易设计现代电子系统设计_第2页
数字频率计简易设计现代电子系统设计_第3页
数字频率计简易设计现代电子系统设计_第4页
数字频率计简易设计现代电子系统设计_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、数字频率计简易设计 课程名称_现代电子系统设计_学生学院_ 自动化学院 _专业班级_ 电机与电器 _学 号 2111004002 学生姓名_ 梁国荣 _指导教师_谢云_ 教授 _2011 年 5 月 25 日摘 要频率计是常用的测量仪器,它的测量原理大致分直接测频法和测量周期法两类。直接测频法是测量单位时间内被测信号的周期数,通常采用计数器、数据锁存器及控制电路实现,本文就是采取直接测频法,通过使用vhdl语言来设计数字频率计,对单位时间内的信号脉冲进行计数测量出信号的频率。本文给出了vhdl源程序、原理图和仿真图形,所设计的电路通过硬件仿真,下载到目标器件上运行,能够满足测量频率的要求,具有

2、理论与实践意义,实现了电子电路自动化(eda)的过程。关键词:数字频率计 vhdl 直接测量法 仿真 eda目 录1 前言1 1.1 eda发展概括11.2 课题背景的意义12 设计方案22.1 设计任务与要求22.2 总体方案设计思路和原理框图23 vhdl语言44 测频控制电路ftctrl54.1 测频控制电路程序54.2 程序分析65 四位十进制计数器cnt485.1 四位十进制计数器电路程序85.2 程序分析106 四位锁存器电路reg4b126.1 四位锁存器电路程序126.2 程序分析137 顶层文件147.1 顶层文件程序147.2 程序分析178 不足原因与改进19参考文献 2

3、01 前言1.1 eda发展概括eda技术是以大规模可编程逻辑器件为设计载体,以硬件语言为系统逻辑描述的主要方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件设计的电子系统到硬件系统的设计,最终形成集成电子系统或专用集成芯片的一门新技术。1.2 课题背景的意义数字频率计是电子设计、仪器仪表、资源勘测等应用领域不可缺少的测量仪器,不少物理量的测量,如振动、转速等的测量都涉及到或可以转化为频率的测量。传统的数字频率计一般由分立原件组合而成,其测量范围、测量精度和测量速度均受到较大的限制。单片机的发展与应用改善了这种情况,但由于单片机本身也受到

4、工作频率及内部计数器位数等因素的限制,所以无法在此领域取得突破性的发展。随着大规模可编程逻辑器件技术的发展,能够将大量的逻辑功能集成于单个芯片中,根据不同的需要所提供的逻辑门数目可以从几百至上百万之多,从根本上解决了单片机的先天性限制问题。在基准频率及精度等外部条件的允许下,根据不同场合的精度要求,对硬件描述语言作进一步的改动,可以较容易的使系统在性能上得到升级,从而降低系统的整体造价。quartus ii是altera公司推出的一款功能强大,兼容性最好的eda工具软件。该软件界面友好、使用便捷、功能强大,是一个完全集成化的可编程逻辑设计环境,具有开放性、与结构无关,多平台、完全集成化、丰富的

5、设计库、模块化工具、支持多种硬件描述语言及有多种高级编程语言接口等特点。本文在quartus ii开发环境下,运用vhdl输入设计方法对数字频率计进行设计,并下载到eda实验平台上。经仿真测试,其测频范围可达1hz1999hz,用4位数码管显示,可靠性好。2 设计方案2.1 设计任务与要求设计一个具有如下功能的简易频率计,具体要求如下:1) 被测信号的频率范围为11999hz,用4位数码管显示数据。2) 测量结果直接用十进制数值显示。3) 具有超量程警告。可以用发光二极管表示,也可以用喇叭报警。4) 采用层次化的设计方法完成任务。5) 利用quartus ii软件,用vhdl输入方法,通过编译

6、、仿真、综合,并分析其中不足与解决方案。2.2 总体方案设计思路和原理框图(一)设计思路频率的概念是单位时间里脉冲的个数。数字式频率计的测量原理大致分直接测频法和测量周期法两类。直接测频法是测量单位时间内被测信号的周期数,通常采用计数器、数据锁存器及控制电路实现,并通过改变计数器开门时间长短来达到不同的测量精度。本电路设计可以采用直接测频法,原理框图如图21所示。它包括测量控制电路、计数器和锁存器组成。将被测信号作为计数器的时钟脉冲,计数器开始计数,再将数据送到数据锁存器锁存计数结果,计数结果经七段译码后,直接驱动外部数码显示。测量控制电路分别产生锁存信号、清零信号和使能信号。(二)原理框图简

7、易数字频率计原理框图如图21所示。图2-1 数字频率计原理框图(三)频率计设计原理步骤频率计工作原理:数字频率计是直接用十进制数字来显示被测信号频率的一种测量装置。所谓频率,就是周期性信号在单位时间(1s)里变化的次数。若在一定时间间隔t内测得的这个周期性信号的重复变化次数n,则其频率可表示为f=n/t。由于本文是基于简易频率计的基础上设计的,这里取t为1秒,如果测量控制信号产生器ftctrl能产生1秒的门闸信号cnt_en,使得十进制计数器cnt4在这段时间内记录被测信号脉冲个数,记录结果为n,则该信号频率fn。此时,ftctrl关闭门闸信号,并且产生锁存信号load给4位数据锁存器reg4

8、b,将计数器所记录的结果锁存并且发给七段译码器译码,将结果输出给4位数码管显示数据。再下一秒门闸信号置“1”时,ftctrl发出清零信号rst_cnt,将cnt4内数据清零,以便测量变化的被测信号频率。根据以上分析,文本将数字频率计设计步骤安排如下:1. 设计测量控制信号产生器ftctrl:输入标准时钟情况下,产生周期为2秒的门闸信号cnt_en,其中高电平1秒时计数器计数,低电平1秒时发出锁存信号load(在计数结束时马上锁存,提高响应时间)和清零信号rst_cnt(滞后于锁存信号几个标准时钟,让锁存器稳定锁存数据)。2. 设计十进制计数器模板cnt4:当收到ftctrl发来的门闸信号时,计

9、数被测信号脉冲。门闸信号为低电平是,不计数。清零信号来时置“0”。3. 设计锁存器模板reg4b:当收到ftctrl发来的锁存信号时,将计数器记录数据锁存。关于信号发生器模板ftctrl、十进制计数器模板cnt4、锁存器模板reg4b详细设计及源程序在4到5节中详细说明。3 vhdl语言本节当中,主要简单介绍vhdl最基本的语法、结构以及设计流程。以帮助阅读第四至五节vhdl编程。alibrary ieee; 打开ieee库buse ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;调用库里相关的程序包,使程序编写更方便,更容易且易

10、读centity * isport()end *;对实体作表述,定义各种端口din std_logic;定义输入的标准逻辑数据类型out std_logic;定义输出的标准逻辑数据类型std_logic_vector(3 downto 0);定义标准逻辑位矢量数据类型bit;定义数据类型为bitsignal;定义内部节点信号e architecture * of 实体 isend *;对实体结构作的表述f process(clkk)end process;对clkk信号作敏感处理g if finevent and fin=1thenend if;对ifthen语句判断,如果为“1”执行then

11、后面语句“event”为非信号,fin信号有变化,且变为“1”,就是上升沿来h. ab,c=d);例化语句,将实体内的a端口与b连接,c端口与d连接,b、d端口可以是另外一个实体的输入端,也可以是内部信号节点端4 测频控制电路ftctrl4.1 测频控制电路程序:(配详细说明)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ftctrl isport(clkk:in std_logic;-输入周期为0.125s的时钟 cnt_en:out std_logic;-使能 rst_cnt:

12、out std_logic;-清零 load:out std_logic);-锁存end ftctrl;architecture behav of ftctrl issignal j:std_logic_vector(3 downto 0);-内部信号节点j,作分频之用signal en,clr,lo:std_logic;-内部相关端口信号节点beginprocess(clkk)beginif(clkkevent and clkk=1)thenif j=1111 then-将16个时钟作为一周期j=0000;else j=j+1;end if;if j=0000 then-计数使能端占用8个时

13、钟,当en=1;输入时钟周期为0.125s时,使elsif j=1000 then en=0; 能端置“1”时间为1send if;if j=1000 then-锁存信号在计数使能信号结lo=1;束时马上响应elsif j=1001 then lo=0;end if;if j=1101 then -清零信号滞后锁存信号3个clr=1;时钟,在下个大周期之前,即使elsif j=1110 then clr=0; 能端重置“1”之前清零, end if; 为下次计数作准备end if;-结束16个标准时钟周期end process; load=lo;cnt_en=en;rst_cnt=clr;en

14、d behav;4.2 程序分析通过以上程序在quartus ii软件里面仿真,可以得到图4-1仿真结果图,从图上可以看出,输入标准时钟clkk的周期是0.125s,它为计数器产生的使能信号cnt_en产生了周期为2s的时钟信号,其中高低电平时间各占用1s,这样的好处是计数器在1秒内计数了多少脉冲,以十进制显示就是多少频率,减除了换算的麻烦,使操作员更容易读数据。在使能信号结束的时候,锁存信号load马上置“1”,把数据锁存起来,让锁存器立刻读数据并输出,使响应更加快速。在计数使能信号cnt_en准备重置“1”前,输入给计数器的清零信号res_cnt置高,让计数器清零,达到可以自动检测变化的输

15、入信号频率的功能。图4-2为测频控制电路在quartus ii中生成的原件符号图。24图4-1 测频控制电路仿真结果图图4-2 测频控制电路原件符号图5 四位十进制计数器cnt45.1 四位十进制计数器电路程序:(配详细说明)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt4 isport (fin:in std_logic;-检测频率输入端 clr:in std_logic;-清零信号 enabl:in std_logic;-使能信号 warn:out std_logic;-

16、警报信号 o_ge:out std_logic_vector(3 downto 0);-个位输出 o_shi:out std_logic_vector(3 downto 0);-十位输出 o_bai:out std_logic_vector(3 downto 0);-百位输出 o_qian:out std_logic_vector(3 downto 0);-千位输出end cnt4;architecture behav of cnt4 issignal ge,shi,bai,qian:std_logic_vector(3 downto 0);-定义个、十、百、千位内部节点signal w:bi

17、t;-定义警报内部节点beginprocess(fin,clr,enabl)-敏感信号为频率输入信号、清零begin 信号、使能端信号if clr=1 then -如果有清零信号,则4位输出“0”ge0); shi0);bai0);qian0);elsif enabl=1 then-否则,在没有清零信号的情况下, 看使能端是否有效if finevent and fin=1then-信号有上升沿来的时候,按以下 程序计数if ge=1001 then-个位已经是“9”的时候,再ge=0000; 有一个信号来时,重置为“0”,else ge=ge+1; 否则累加end if;if ge=1001

18、then-个位是“9”,信号再来时,先if shi=1001 then 判断十位是否为“9”,是则重shi=0000; 置“0”,否则个位向十位进位else shi=shi+1;end if; end if;if shi=1001 and ge=1001 then-个位、十位均为“9”时,向if bai=1001 then 百位进位bai=0000;else bai=bai+1;end if;end if;if bai=1001 and shi=1001 and ge=1001 thenif qian=0001 and bai=1001 and shi=1001 and ge=1001 the

19、n-个位、十位、百位均为“9”时,w=1; 判断是否达到检测上限“1999hz”,else qian=qian+1; 是则内部警报节点置“1”,否则 end if; 向千位进位end if;end if;end if;end process;process(w)-判断内部警报节点是否开启beginif w=0 then-如果没有报警,则输出有效数据且警报输o_ge=ge; 端为“0”o_shi=shi;o_bai=bai;o_qian=qian;warn=0;else-否则,4位均显示“h”且警报信号置1o_ge=1111;o_shi=1111;o_bai=1111;o_qian=1111;w

20、arn=1;end if;end process;end behav;5.2 程序分析通过以上程序在quartus ii软件里面仿真,这里设定输入信号fin周期为2.5ms,使能信号enabl周期为2s,得到图5-1仿真结果图。从图上第二个清零信号clr置高位时,计数器能清零,使能端enabl置低位时,计数器不计数,使能端置高位时间是1s,能计数400个脉冲,与设定fin周期为2.5ms相符,当计数器累计到1999时,警报信号置“1”且4位显示15,即显示器会显示“h”表示超出量程。图5-2为计数器电路在quartus ii中生成的原件符号图。图5-1 四位十进制计数器模板仿真结果图图5-2

21、四位十进制计数器原件符号图6 四位锁存器电路reg4b6.1 四位锁存器电路程序:(配详细说明)library ieee;use ieee.std_logic_1164.all;entity reg4b isport (lk:in std_logic;-锁存信号din_ge:in std_logic_vector(3 downto 0);-个、十、百、千din_shi:in std_logic_vector(3 downto 0); 输入输出端口din_bai:in std_logic_vector(3 downto 0);din_qian:in std_logic_vector(3 down

22、to 0);dout_ge:out std_logic_vector(3 downto 0);dout_shi:out std_logic_vector(3 downto 0);dout_bai:out std_logic_vector(3 downto 0);dout_qian:out std_logic_vector(3 downto 0);end reg4b;architecture behav of reg4b isbeginprocess(lk,din_ge,din_shi,din_bai,din_qian)beginif lkevent and lk=1 then -锁存信号一来,

23、dout_ge=din_ge; 记录当前数据dout_shi=din_shi;dout_bai=din_bai;dout_qianclk1hz,cnt_en=tsten1, rst_cnt=clr_cnt1,load=load1);u2:reg4b port map (lk=load1,din_ge=dto_ge,din_shi=dto_shi, din_bai=dto_bai,din_qian=dto_qian, dout_ge=o_ge,dout_shi=o_shi, dout_bai=o_bai,dout_qian=o_qian);u3:cnt4 port map(fin=fsin,cl

24、r=clr_cnt1,warn=warn, enabl=tsten1,o_ge=dto_ge,o_shi=dto_shi,o_bai=dto_bai,o_qian=dto_qian);end struc;图7-1 顶层文件仿真图输入频率fsin第一次频率改变点图7-2 顶层文件仿真图输入频率fsin第二次频率改变点图7-3 顶层文件仿真图输入频率fsin前10秒图7.2 程序分析通过以上程序在quartus ii软件里面仿真,得到图7-1、7-2、7-3仿真结果图。图7-3是整个系统前15秒仿真结果,图7-1和图7-2是其局部时间截图。这里设定系统前2.68435s附近,输入信号从周期为0.2

25、s改变为2ms(可随机选择时间点改变频率),在6.71s附近由周期2ms改变为0.1ms。从图7-1 顶层文件仿真图输入频率fsin第一次频率改变点可以看出,在频率改变前,能正确显示输入信号的频率为5hz。从图7-2 顶层文件仿真图输入频率fsin第二次频率改变点可以看出,在频率改变前,能正确显示输入信号的频率为500hz。表明系统能够自动清零并且锁存新的数据,表示出频率计能自动检测输入信号频率。从图7-3 顶层文件仿真图输入频率fsin前10秒可以看出,输入信号在最后一次即6.71s附近周期改变为0.1ms时,警报信号随即在6.87s附近响起警报,并且滞后几个毫秒后,4位显示“15”即超量程显示。综上所述,简易频率计已基本设计8 不足原因与改进从图7-3中我们可以看出以下几点不足:1.系统一开始输入的测量频率是5hz,但并没有立刻响应起来,而过了大概1s的时间才显示数据。2.在2.68435s附近,输入信号从周期为0.2s改变为2ms,系统并不能马上显示500hz的数据,而是经过一段时间,并且曾经显示294hz数据。3.系统在6.71s时

温馨提示

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

评论

0/150

提交评论