ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:268.64KB ,
资源ID:7372268      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7372268.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数字频率计设计.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数字频率计设计.docx

1、数字频率计设计【摘要】:在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此频率的测量就显得更为重要。测量频率的方法有多种,其中电子计数器测量频率具有精度高、使用方便、测量迅速,以及便于实现测量过程自动化等优点,是频率测量的重要手段之一。电子计数器测频有两种方式:一是直接测频法,即在一定闸门时间内测量被测信号的脉冲个数;二是间接测频法。如周期测频法。直接测频法适用于高频信号的频率测量,间接测频法适用于低频信号的频率测量。本文阐述了基于VHDL语言设计了一个简单的数字频率计的过程。【关键字】: 数字频率计、信号、周期【Abstract】:Be one

2、 of the most fundamental parameter in electron technology medium frequency, parameter measurement scheme, measurement result all have very close something to do with a lot of electricity and, the frequency measurement looks like being more important therefore right away. The method measuring frequen

3、cy has various, among them the electronic counter measures frequency having accuracy height, usage is convenient, measurement is prompt, easy to realize measurement process automation waits for merit and, counter measures frequency having two kinds way: sure frequency law first directly ,be to measu

4、re the pulse number the signal is measured within certain sluice gate time; Two is indirect measure frequency law, if the period measures frequency law, Measure frequency law directly applying to the high frequency signals.【Keyword】: Figure frequency meter、Signal、period目录绪论: 1第一章 概述 21.1 设计概述 21.2 设

5、计目的 21.3 设计内容 21.4 设计原理 31.5 设计功能 3第二章 数字频率计的设计思路 42.1 时基的设计 42.2 计数器的设计 52.3 模块的划分 5第三章 数字频率计各模块的设计和实现 63.1 计数器的设计和实现 63.2 7段译码器的设计 83.3 数字频率计综合设计 9第四章 数字频率计波形仿真 154.1 省略分频进程 154.2 10kHz、100kHz和1MHz三挡仿真 154.3 测周期挡仿真 17第五章 调试常见错误及解决办法 195.1 常见错误与解决办法 19总结 20致谢 21附录 22附录A MAX+PLUS简介 22附录B 软件的安装 23附录C

6、 软件组成 23附录D 设计流程 24参考文献 25绪论:随着电子技术的发展,当前数字系统的设计正朝着速度快、容量大、体积小、重量轻的方向发展。推动该潮流迅猛发展的引擎就是日趋进步和完善的设计技术。目前数字频率计的设计可以直接面向用户需求,根据系统的行为和功能要求,自上至下的逐层完成相应的描述、综合、优化、仿真与验证,直到生成器件。上述设计过程除了系统行为和功能描述以外,其余所有的设计过程几乎都可以用计算机来自动地完成,也就是说做到了电子设计自动化(EDA)。这样做可以大大地缩短系统的设计周期,以适应当今品种多、批量小的电子市场的需求,提高产品的竞争能力。电子设计自动化(EDA)的关键技术之一

7、是要求用形式化方法来描述数字系统的硬件电路,即要用所谓硬件描述语言来描述硬件电路。所以硬件描述语言及相关的仿真、综合等技术的研究是当今电子设计自动化领域的一个重要课题。硬件描述语言的发展至今已有几十年的历史,并已成功地应用到系统的仿真、验证和设计综合等方面。到本世纪80年代后期,已出现了上百种的硬件描述语言,它们对设计自动化起到了促进和推动作用。但是,它们大多各自针对特定设计领域,没有统一的标准,从而使一般用户难以使用。广大用户所期盼的是一种面向设计的多层次、多领域且得到一致认同的标准的硬件描述语言。80年代后期由美国国防部开发的VHDL语言(VHSIC HardwareDescription

8、 Language)恰好满足了上述这样的要求,并在1987年12月由IEEE标准化(定为 IEEE std 1076-1987标准,1993年进一步修订,被定为ANSI/IEEE std 1076-1993标准)。它的出现为电子设计自动化(EDA)的普及和推广奠定了坚实的基础。据1991年有关统计表明,VHDL语言业已被广大设计者所接受。另外,众多的CAD厂商也纷纷使自己新开发的电子设计软件与VHDL语言兼容。由此可见,使用VHDL语言来设计数字系统是电子设计技术的大势所趋。第一章 概述1.1 设计概述所谓频率,就是周期性信号在单位时间(1s)里变化的次数。本数字频率计的设计思路是:1.根据频

9、率计的测频原理,可以选择合适的时基信号即闸门时间,对输入被测信号脉冲进行计数,实现测频的目的。2.根据数字频率计的基本原理,本文设计方案的基本思想是分为五个模块来实现其功能,即整个数字频率计系统分为分频模块、控制模块、计数模块、译码模块和量程自动切换模块等几个单元,并且分别用VHDL对其进行编程,实现了闸门控制信号、计数电路、锁存电路、显示电路等。3.在进行设计之前,首先搞清楚在什么情况下是测频率,在什么情况下是测周期,其实就是一个选择合适的时基信号的问题。在这个设计中,要在频率计提供的时基信号和输入信号之间做出选择,充当时基信号即闸门时间。当测频率的时候,要以输入信号作为时钟信号,因为输入信

10、号的频率大于频率计提供的基准频率,在频率计提供的基准信号周期内,计算输入信号的周期数目,再乘以频率计基准频率,就是输入信号的频率值了。此时的时基信号为频率计的基准信号。当测周期的时候,要以频率计提供的基准信号作为时钟信号,因为频率计提供的时基频率大于输入信号的频率,在输入信号周期内,计算频率计提供的基准信号的周期数目,再乘以基准信号频率,就是输入信号的周期值了。此时的时基信号为输入信号。1.2 设计目的1.学会利用MAX+PLUS进行层次化设计;2.练习混合设计设计输入的方法;3.巩固用试验箱验证设计的方法。1.3 设计内容分析数字频率计的功能,完成功能模块的划分,分别用VHDL语言完成底层模

11、块的设计和以原理图的方法完成顶层模块的设计,分别对各个模块以及顶层模块进行仿真分析,最后在硬件开发平台上进行测试。1.4 设计原理众所周知,频率信号易于传输,抗干扰性强,可以获得较好的测量精度。因此,频率检测是电子测量领域最基本的测量之一。频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。通常情况下计算每秒内待测信号的脉冲个数,即闸门时间为1 s。闸门时间可以根据需要取值,大于或小于1 s都可以。闸门时间越长,得到的频率值就越准确,但闸门时间越长,则每测一次频率的间隔就越长。闸门时间越短,测得的频率值刷新就越快,但测得的频率精度就受影响。一般取1 s作为闸门时间

12、。 数字频率计的关键组成部分包括测频控制信号发生器、计数器、锁存器、译码驱动电路和显示电路,其原理框图如图1所示。1.5 设计功能3位数字频率计是用3个十进制数字显示的数字式频率计,其频率测量范围为1MHz。为了提高测量精度,量程分别为10kHz、100kHz和1MHz三挡,即最大读数分别为9.99kHz,99.9kHz和999kHz。要求量程自动换挡。具体功能如下:1.当读数大于999时,频率计处于超量程状态,下一次测量时,量程自动增大一挡。2.当读数小雨099时,频率计处于欠量程状态,下一次测量时,量程自动减少一挡。3.当超出频率测量范围时,显示器显示溢出。4.采用记忆显示方法,即测量过程

13、中不显示数据,待测量过程结束以后,显示测频结果,并将此结果保持到下次测量结束。显示时间不少于1秒。5.小数点位置随量程变化自动移位。6.增加测周期功能,就是当时钟频率低于0.99kHz的时候,显示的数值变成周期,以毫秒为单位。第二章 数字频率计的设计思路2.1 时基的设计输入信号是随意的,没法预知其频率是多少,如何选取频率计提供的基准信号是关键。设计要求量程分别为10kHz,100kHz和1MHz三挡。测频率时,在某个挡进行测量的时候,就需要提供该挡的时基。在10kHz挡,该挡最大读数为9.99kHz,同时也说明最小的读数是0.01kHz,所以提供的时基应该是频率为0.01kHz的脉冲。同样的

14、道理100kHz挡提供的时基应该是0.1kHz的脉冲,1MHz挡提供的时基应该是频率为1kHz的脉冲。要产生这3种脉冲,就得从输入的时钟中提取(这里假设输入的是20MHz的脉冲),分别采用分频的方法来产生这3种时基信号显然不可取,太浪费资源,因为分别产生得用到3个分频器,一个为20kHz分频器,用于产生频率为1kHz的脉冲;一个200kHz分频器,用于产生频率为0.1kHz的脉冲;一个2M分频器,用于产生频率为0.01kHz的脉冲。可以考虑先用一个20kHz分频器,产生频率为1kHz的脉冲,再利用一个10倍分频器对1kHz脉冲进行分频,产生0.1kHz的脉冲,一个100倍分频器对1kHz脉冲进

15、行分频,产生0.01kHz的脉冲。同样用到了3个分频器,但是节约了资源。再考虑具体的实现,在测频率的时候,由于采用输入信号作为时基,以输入信号为时钟,用一个计数器测量在一个时基周期里,输入信号的周期数目,如此就可以得到输入信号的频率。但是一个时基信号,例如频率为0.01kHz(周期为100ms)的脉冲信号,在整个100ms的周期里,根据占空比,有高电平也有低电平,这就给计数器计数的判断带来了麻烦。最好是能够产生一个高电平为100ms的脉冲信号作为时基,那么就能够在程序中以“如果时基信号为1”作为判断条件,如果满足条件则计数器计数,方便了程序的书写。同理,在这个设计中还要产生高电平为10ms和1

16、ms的脉冲信号作为时基。可以考虑使用状态机来实现这3种时基,因为采用状态机来控制时序很清楚,不容易出错。状态机用1kHz(周期为1ms)的脉冲信号触发,因为所要生产的时基中,频率最大(周期最小)的就是1kHz的脉冲,要产生高电平为10ms和1ms的脉冲信号,可以采用100个状态的状态机,从状态1,状态2.到状态100.要产生高电平为1ms的脉冲信号,只要在状态99的时候产生高电平,状态100的时候回到低电平即可;要产生高电平为10ms的脉冲信号,则要在状态90的时候产生高电平,在状态100的时候回到低电平。需要产生哪个时基得根据此时频率计所在的挡作为判断条件进行控制。在100个状态中,有很多状

17、态的功能相同的,可以将它们合并。2.2 计数器的设计各个挡之间的转换应遵循设计要求,要根据在时基有效时间内的计数值进行判断。计数器可以直接定义成一个整型信号,这样计数器计数(即加1)就十分方便,只要使用语句“计数器=计数器+1;”就可以。但是这个计数值要作为显示输出,就要将这个计数器用个位、十位、百位分开表示,而且要遵循加法“逢十进一”的规则。这样可以直接通过7段译码器进行显示。因为在不同的挡位,小数点的位置是不同的,所以小数点的显示以所在挡为判断条件。2.3 模块的划分计数器在各个挡被反复应用的,如果在各个挡分别设计计数器,就造成资源的浪费,而且在测周期和测频率的时候,计数器的时候信号和输入

18、信号要进行调换,但是计数功能是一样的,所以将计数器设计成单独的模块。7段译码器在个位、十位、百位中也都被利用到,因此也将其设计成单独的模块,重复引用就不需要在3个位显示的时候重复书写译码电路了。另外,计数器的输入信号和时钟信号要通过一个进程来提供。在测频率时,进程向计数器提供的时钟信号是输入频率计的测量信号,计数器的输入信号是频率计提供的时基;在测周期时,进程向计数器提供的时钟信号是频率计提供的时基,计数器的输入信号是输入频率计的测量信号。第三章 数字频率计各模块的设计和实现3.1 计数器的设计和实现-计数器模块library ieee;use ieee.std_logic_1164.all;

19、use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity frequency is port(treset:in std_logic;-异步复位端口 tclk:in std_logic;-时钟输入 tsig:in std_logic;-信号输入 tkeep1:out std_logic_vector(3 downto 0);-计数值个位 tkeep2:out std_logic_vector(3 downto 0);-计数值十位 tkeep3:out std_logic_vector(3 downto 0);-计数值

20、百位end entity frequency;architecture one of frequency issignal tcou1:std_logic_vector(3 downto 0);-内部计数值个位signal tcou2:std_logic_vector(3 downto 0);-内部计数值十位signal tcou3:std_logic_vector(3 downto 0);-内部计数值百位 beginctrcou:process(treset,tclk)-控制计数功能的进程 begin if treset=1 then tcou1=0000;tcou2=0000;tcou3=

21、0000; else if tclkevent and tclk=1 then if tsig=1 then-时基信号高电平为判断条件有效的时候遇到时 -钟上升沿触发 if tcou3=1010 then tcou3=1010;-如果百位为10,百位数值不变 else if tcou1=1001 and tcou2=1001 and tcou3=1001 then -如果计数值为999 tcou1=0000;tcou2=0000;tcou3=1010; - 则计数值百位变成10,十位、个位变成0 elsif tcou1=1001 and tcou2=1001 then -如果百位小于9,十位为

22、9且个位为9的时候 tcou1=0000;tcou2=0000;tcou3=tcou3+1; -百位数值加1,十位、个位清零 elsif tcou1=1001 then -如果百位和十位都小于9且个位为9的时候 tcou1=0000;tcou2=tcou2+1; -个位清零,十位数值加1 else tcou1=tcou1+1; -其他情况就是个位数值加1 end if; end if; else 如果时基信号为0,那么判断条件无效 tcou1=0000;tcou2=0000;tcou3=0000; end if; end if; end if; end process ctrcou;oputc

23、tr:process(treset,tsig)-控制数值输出的进程 begin if treset=1 then tkeep1=0000;tkeep2=0000;tkeep3=0000; else if tsigevent and tsig=0 then -时钟下降沿触发输出各位数值 tkeep1=tcou1; tkeep2=tcou2; tkeep3=tcou3; end if; end if; end process oputctr;end one;3.2 7段译码器的设计7段译码器将输入的4位BCD码以7段译码的方式输入。可以使用一个7位向量来分别表示7段译码器中的7段。-译码器模块li

24、brary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity display is port(data_in:in std_logic_vector(3 downto 0);-输入为4位二进制,范围从0到9 data_out:out std_logic_vector(0 to 3);-7段译码输出end entity display;architecture one of display issignal indata:std_logic_ve

25、ctor(3 downto 0);-内部数值信号 begin process(data_in)-输入信号作为进程的敏感量触发进程 begin indatadata_outdata_outdata_outdata_outdata_outdata_outdata_outdata_outdata_outdata_outdata_out=1111; end case; end process; end one;3.3 数字频率计综合设计要设计的数字频率计需要3个输入端口,一个脉 冲 输 入 端 口 clk (频率为4.19MHz);一个异步复位端口rest,用于使系统回到初始状态;还有一个就是测试信号

26、的输入端口testsignal,用于输入待测试的信号。该频率计需要7个输出端口,要有一个表示是显示频率还是周期的输出端口unit;还有3个显示频率值的7段译码输出端口display1,display2和display3,以及3个小数点输出端口dot向量。-频率计源文件library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity dfre is port(reset:in std_logic; clk:in std_logic;-时钟信号 t

27、estsignal:in std_logic;-测试信号输入端 display1:out std_logic_vector(0 to 3); display2:out std_logic_vector(0 to 3); display3:out std_logic_vector(0 to 3); -3个7段译码器输出 unit:out std_logic;-表示是周期还是频率的信号灯 dot:out std_logic_vector(2 downto 0); -小数点end entity dfre;architecture one of dfre istype state is(start,j

28、udge,count1,count2to89,count90,count91to98,count99,count100);signal myfre:state;signal frecou:integer range 0 to 99;-用于状态机中的计数器,计数值从099signal clk1k:std_logic;-产生频率为1kHz的脉冲信号signal cou1k:integer range 0 to 2094;-用于分频的计数器signal enfre:std_logic;-代表时基的脉冲信号signal flag:std_logic_vector(2 downto 0);-标志信号,1

29、表示10kHz测频挡,2表示100kHz测频挡,3表示1MHz测频挡,0表示测周期挡,4表示溢出signal keepcou1:std_logic_vector(3 downto 0);signal keepcou2:std_logic_vector(3 downto 0);signal keepcou3:std_logic_vector(3 downto 0);signal ttclk:std_logic;-输入计数器的时钟信号即时基signal ttsig:std_logic;-输入计数器的测试信号忽略ponent display is -引用7段译码器 port(data_in:in s

30、td_logic_vector(3 downto 0); data_out:out std_logic_vector(0 to 6) );end 忽略ponent;忽略ponent frequency is 引用计数器 port(treset:in std_logic; tclk,tsig:in std_logic; tkeep1:out std_logic_vector(3 downto 0); tkeep2:out std_logic_vector(3 downto 0); tkeep3:out std_logic_vector(3 downto 0);end 忽略ponent; begin constrclk1k:process(reset,clk)-用4.19MHz的脉冲产生频率为1kHz脉冲进程 begin if reset=1 then cou1k=0;clk1k=0;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1