![数字频率计设计_第1页](http://file1.renrendoc.com/fileroot_temp2/2020-6/22/a527df60-1507-469b-8c75-0350ef114218/a527df60-1507-469b-8c75-0350ef1142181.gif)
![数字频率计设计_第2页](http://file1.renrendoc.com/fileroot_temp2/2020-6/22/a527df60-1507-469b-8c75-0350ef114218/a527df60-1507-469b-8c75-0350ef1142182.gif)
![数字频率计设计_第3页](http://file1.renrendoc.com/fileroot_temp2/2020-6/22/a527df60-1507-469b-8c75-0350ef114218/a527df60-1507-469b-8c75-0350ef1142183.gif)
![数字频率计设计_第4页](http://file1.renrendoc.com/fileroot_temp2/2020-6/22/a527df60-1507-469b-8c75-0350ef114218/a527df60-1507-469b-8c75-0350ef1142184.gif)
![数字频率计设计_第5页](http://file1.renrendoc.com/fileroot_temp2/2020-6/22/a527df60-1507-469b-8c75-0350ef114218/a527df60-1507-469b-8c75-0350ef1142185.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、【摘要摘要】:】: 在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测 量结果都有十分密切的关系,因此频率的测量就显得更为重要。测量频率的方法有 多种,其中电子计数器测量频率具有精度高、使用方便、测量迅速,以及便于实现 测量过程自动化等优点,是频率测量的重要手段之一。电子计数器测频有两种方式: 一是直接测频法,即在一定闸门时间内测量被测信号的脉冲个数;二是间接测频法。 如周期测频法。直接测频法适用于高频信号的频率测量,间接测频法适用于低频信 号的频率测量。本文阐述了基于 VHDL 语言设计了一个简单的数字频率计的过程。 【关键字关键字】:】: 数字频率计、信号、周期 【Abs
2、tract】【Abstract】: Be one 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
3、method measuring frequency 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 fir
4、st directly ,be to measure 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】:【Keyword】: Figure frequency meter、Signal、p
5、eriod 目录 绪论:绪论: .1 1 第一章第一章 概述概述 .2 2 1.1 设计概述 .2 1.2 设计目的 .2 1.3 设计内容 .2 1.4 设计原理 .3 1.5 设计功能 .3 第二章第二章 数字频率计的设计思路数字频率计的设计思路 .4 4 2.1 时基的设计 .4 2.2 计数器的设计 .5 2.3 模块的划分 .5 第三章第三章 数字频率计各模块的设计和实现数字频率计各模块的设计和实现 .6 6 3.1 计数器的设计和实现 .6 3.2 7 段译码器的设计.8 3.3 数字频率计综合设计 .9 第四章第四章 数字频率计波形仿真数字频率计波形仿真 .1515 4.1 省略
6、分频进程 .15 4.2 10KHZ、100KHZ和 1MHZ三挡仿真 .15 4.3 测周期挡仿真 .17 第五章第五章 调试常见错误及解决办法调试常见错误及解决办法 .1919 5.1 常见错误与解决办法 .19 总结总结 .2020 致谢致谢 .2121 附录附录 .2222 附录 A MAX+PLUS简介.22 附录 B 软件的安装.23 附录 C 软件组成.23 附录 D 设计流程.24 参考文献参考文献 .2525 绪论:绪论: 随着电子技术的发展,当前数字系统的设计正朝着速度快、容量大、体积小、 重量轻的方向发展。推动该潮流迅猛发展的引擎就是日趋进步和完善的设计技术。 目前数字频
7、率计的设计可以直接面向用户需求,根据系统的行为和功能要求,自上 至下的逐层完成相应的描述、综合、优化、仿真与验证,直到生成器件。上述设计 过程除了系统行为和功能描述以外,其余所有的设计过程几乎都可以用计算机来自 动地完成,也就是说做到了电子设计自动化(EDA) 。这样做可以大大地缩短系统的 设计周期,以适应当今品种多、批量小的电子市场的需求,提高产品的竞争能力。 电子设计自动化(EDA)的关键技术之一是要求用形式化方法来描述数字系统 的硬件电路,即要用所谓硬件描述语言来描述硬件电路。所以硬件描述语言及相关 的仿真、综合等技术的研究是当今电子设计自动化领域的一个重要课题。 硬件描述语言的发展至今
8、已有几十年的历史,并已成功地应用到系统的仿真、 验证和设计综合等方面。到本世纪 80 年代后期,已出现了上百种的硬件描述语言, 它们对设计自动化起到了促进和推动作用。但是,它们大多各自针对特定设计领域, 没有统一的标准,从而使一般用户难以使用。广大用户所期盼的是一种面向设计的 多层次、多领域且得到一致认同的标准的硬件描述语言。80 年代后期由美国国防部 开发的 VHDL 语言(VHSIC Hardware Description Language)恰好满足了上述这样 的要求,并在 1987 年 12 月由 IEEE 标准化(定为 IEEE std 1076-1987 标准,1993 年进一步修
9、订,被定为 ANSI/IEEE std 1076-1993 标准) 。它的出现为电子设计自动 化(EDA)的普及和推广奠定了坚实的基础。据 1991 年有关统计表明,VHDL 语言 业已被广大设计者所接受。另外,众多的 CAD 厂商也纷纷使自己新开发的电子设计 软件与 VHDL 语言兼容。由此可见,使用 VHDL 语言来设计数字系统是电子设计技 术的大势所趋。 第一章第一章 概述概述 1.11.1 设计概述设计概述 所谓频率,就是周期性信号在单位时间(1s)里变化的次数。 本数字频率计的设计思路是: 1.根据频率计的测频原理,可以选择合适的时基信号即闸门时间,对输入被测 信号脉冲进行计数,实现
10、测频的目的。 2.根据数字频率计的基本原理,本文设计方案的基本思想是分为五个模块来实 现其功能,即整个数字频率计系统分为分频模块、控制模块、计数模块、译码模块 和量程自动切换模块等几个单元,并且分别用 VHDL 对其进行编程,实现了闸门控制 信号、计数电路、锁存电路、显示电路等。 3.在进行设计之前,首先搞清楚在什么情况下是测频率,在什么情况下是测周 期,其实就是一个选择合适的时基信号的问题。在这个设计中,要在频率计提供的 时基信号和输入信号之间做出选择,充当时基信号即闸门时间。当测频率的时候, 要以输入信号作为时钟信号,因为输入信号的频率大于频率计提供的基准频率,在 频率计提供的基准信号周期
11、内,计算输入信号的周期数目,再乘以频率计基准频率, 就是输入信号的频率值了。此时的时基信号为频率计的基准信号。当测周期的时候, 要以频率计提供的基准信号作为时钟信号,因为频率计提供的时基频率大于输入信 号的频率,在输入信号周期内,计算频率计提供的基准信号的周期数目,再乘以基 准信号频率,就是输入信号的周期值了。此时的时基信号为输入信号。 1.21.2 设计设计目的目的 1.学会利用 MAX+PLUS进行层次化设计; 2.练习混合设计设计输入的方法; 3.巩固用试验箱验证设计的方法。 1.31.3 设计内容设计内容 分析数字频率计的功能,完成功能模块的划分,分别用 VHDL 语言完成底层模块 的
12、设计和以原理图的方法完成顶层模块的设计,分别对各个模块以及顶层模块进行 仿真分析,最后在硬件开发平台上进行测试。 1.41.4 设计原理设计原理 众所周知,频率信号易于传输,抗干扰性强,可以获得较好的测量精度。因此, 频率检测是电子测量领域最基本的测量之一。频率计的基本原理是用一个频率稳定 度高的频率源作为基准时钟,对比测量其他信号的频率。通常情况下计算每秒内待 测信号的脉冲个数,即闸门时间为 1 s。闸门时间可以根据需要取值,大于或小于 1 s 都可以。闸门时间越长,得到的频率值就越准确,但闸门时间越长,则每测一次 频率的间隔就越长。闸门时间越短,测得的频率值刷新就越快,但测得的频率精度 就
13、受影响。一般取 1 s 作为闸门时间。 数字频率计的关键组成部分包括测频控制信号发生器、计数器、锁存器、译码 驱动电路和显示电路,其原理框图如图 1 所示。 1.51.5 设计功能设计功能 3 位数字频率计是用 3 个十进制数字显示的数字式频率计,其频率测量范围为 1MHz。为了提高测量精度,量程分别为 10kHz、100kHz 和 1MHz 三挡,即最大读数分 别为 9.99kHz,99.9kHz 和 999kHz。要求量程自动换挡。具体功能如下: 1.当读数大于 999 时,频率计处于超量程状态,下一次测量时,量程自动增大 一挡。 2.当读数小雨 099 时,频率计处于欠量程状态,下一次测
14、量时,量程自动减少 一挡。 3.当超出频率测量范围时,显示器显示溢出。 4.采用记忆显示方法,即测量过程中不显示数据,待测量过程结束以后,显示 测频结果,并将此结果保持到下次测量结束。显示时间不少于 1 秒。 5.小数点位置随量程变化自动移位。 6.增加测周期功能,就是当时钟频率低于 0.99kHz 的时候,显示的数值变成周 期,以毫秒为单位。 第二章第二章 数字频率计的设计思路数字频率计的设计思路 2.12.1 时基的设计时基的设计 输入信号是随意的,没法预知其频率是多少,如何选取频率计提供的基准信号 是关键。设计要求量程分别为 10kHz,100kHz 和 1MHz 三挡。测频率时,在某个
15、挡进 行测量的时候,就需要提供该挡的时基。在 10kHz 挡,该挡最大读数为 9.99kHz, 同时也说明最小的读数是 0.01kHz,所以提供的时基应该是频率为 0.01kHz 的脉冲。 同样的道理 100kHz 挡提供的时基应该是 0.1kHz 的脉冲,1MHz 挡提供的时基应该是 频率为 1kHz 的脉冲。要产生这 3 种脉冲,就得从输入的时钟中提取(这里假设输入 的是 20MHz 的脉冲) ,分别采用分频的方法来产生这 3 种时基信号显然不可取,太浪 费资源,因为分别产生得用到 3 个分频器,一个为 20kHz 分频器,用于产生频率为 1kHz 的脉冲;一个 200kHz 分频器,用于
16、产生频率为 0.1kHz 的脉冲;一个 2M 分频 器,用于产生频率为 0.01kHz 的脉冲。可以考虑先用一个 20kHz 分频器,产生频率 为 1kHz 的脉冲,再利用一个 10 倍分频器对 1kHz 脉冲进行分频,产生 0.1kHz 的脉 冲,一个 100 倍分频器对 1kHz 脉冲进行分频,产生 0.01kHz 的脉冲。同样用到了 3 个分频器,但是节约了资源。 再考虑具体的实现,在测频率的时候,由于采用输入信号作为时基,以输入信 号为时钟,用一个计数器测量在一个时基周期里,输入信号的周期数目,如此就可 以得到输入信号的频率。但是一个时基信号,例如频率为 0.01kHz(周期为 100
17、ms) 的脉冲信号,在整个 100ms 的周期里,根据占空比,有高电平也有低电平,这就给 计数器计数的判断带来了麻烦。最好是能够产生一个高电平为 100ms 的脉冲信号作 为时基,那么就能够在程序中以“如果时基信号为 1”作为判断条件,如果满足条 件则计数器计数,方便了程序的书写。同理,在这个设计中还要产生高电平为 10ms 和 1ms 的脉冲信号作为时基。 可以考虑使用状态机来实现这 3 种时基,因为采用状态机来控制时序很清楚, 不容易出错。状态机用 1kHz(周期为 1ms)的脉冲信号触发,因为所要生产的时基 中,频率最大(周期最小)的就是 1kHz 的脉冲,要产生高电平为 10ms 和
18、1ms 的脉 冲信号,可以采用 100 个状态的状态机,从状态 1,状态 2.到状态 100.要产 生高电平为 1ms 的脉冲信号,只要在状态 99 的时候产生高电平,状态 100 的时候回 到低电平即可;要产生高电平为 10ms 的脉冲信号,则要在状态 90 的时候产生高电 平,在状态 100 的时候回到低电平。需要产生哪个时基得根据此时频率计所在的挡 作为判断条件进行控制。在 100 个状态中,有很多状态的功能相同的,可以将它们 合并。 2.22.2 计数器的设计计数器的设计 各个挡之间的转换应遵循设计要求,要根据在时基有效时间内的计数值进行判 断。计数器可以直接定义成一个整型信号,这样计
19、数器计数(即加1)就十分方便, 只要使用语句“计数器=计数器+1;”就可以。但是这个计数值要作为显示输出,就 要将这个计数器用个位、十位、百位分开表示,而且要遵循加法“逢十进一”的规 则。这样可以直接通过7段译码器进行显示。因为在不同的挡位,小数点的位置是不 同的,所以小数点的显示以所在挡为判断条件。 2.32.3 模块的划分模块的划分 计数器在各个挡被反复应用的,如果在各个挡分别设计计数器,就造成资源的 浪费,而且在测周期和测频率的时候,计数器的时候信号和输入信号要进行调换, 但是计数功能是一样的,所以将计数器设计成单独的模块。7段译码器在个位、十位、 百位中也都被利用到,因此也将其设计成单
20、独的模块,重复引用就不需要在3个位显 示的时候重复书写译码电路了。 另外,计数器的输入信号和时钟信号要通过一个进程来提供。在测频率时,进 程向计数器提供的时钟信号是输入频率计的测量信号,计数器的输入信号是频率计 提供的时基;在测周期时,进程向计数器提供的时钟信号是频率计提供的时基,计 数器的输入信号是输入频率计的测量信号。 第三章第三章 数字频率计各模块的设计和实现数字频率计各模块的设计和实现 3.13.1 计数器的设计和实现计数器的设计和实现 -计数器模块 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.
21、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);-计数值百位 end entity frequency
22、; architecture one of frequency is signal tcou1:std_logic_vector(3 downto 0);-内部计数值个位 signal tcou2:std_logic_vector(3 downto 0);-内部计数值十位 signal tcou3:std_logic_vector(3 downto 0);-内部计数值百位 begin ctrcou:process(treset,tclk)-控制计数功能的进程 begin if treset=1 then tcou1=0000;tcou2=0000;tcou3=0000; else if tcl
23、kevent 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,十位为 9 且个位为 9 的时
24、候 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; oput
25、ctr: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.23.2 7 7 段译码器的设计段译码器的设计 7 段译码器将输入的 4 位 BCD 码以 7 段译码的方式输入。可以使用一个 7
26、位向 量来分别表示 7 段译码器中的 7 段。 -译码器模块 library 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; architectu
27、re one of display is signal indata:std_logic_vector(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.33.3 数字频率计综合设计数字频率计综合设计 要设计的数字频率计需要3个输入端口,一个脉 冲
28、 输 入 端 口 clk (频率为 4.19MHz);一个异步复位端口 rest,用于使系统回到初始状态;还有一个就是测试 信号的输入端口 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_
29、unsigned.all; entity dfre is port(reset:in std_logic; clk:in std_logic;-时钟信号 testsignal: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(
30、2 downto 0); -小数点 end entity dfre; architecture one of dfre is type state is (start,judge,count1,count2to89,count90,count91to98,count99,count100); signal myfre:state; signal frecou:integer range 0 to 99;-用于状态机中的计数器,计数值从 099 signal clk1k:std_logic;-产生频率为 1kHz 的脉冲信号 signal cou1k:integer range 0 to 209
31、4;-用于分频的计数器 signal enfre:std_logic;-代表时基的脉冲信号 signal flag:std_logic_vector(2 downto 0); -标志信号,1 表示 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
32、ttclk:std_logic;-输入计数器的时钟信号即时基 signal ttsig:std_logic;-输入计数器的测试信号 component display is -引用 7 段译码器 port(data_in:in std_logic_vector(3 downto 0); data_out:out std_logic_vector(0 to 6) ); end component; component frequency is 引用计数器 port(treset:in std_logic; tclk,tsig:in std_logic; tkeep1:out std_logic_
33、vector(3 downto 0); tkeep2:out std_logic_vector(3 downto 0); tkeep3:out std_logic_vector(3 downto 0); end component; begin constrclk1k:process(reset,clk)-用 4.19MHz 的脉冲产生频率为 1kHz 脉冲进 程 begin if reset=1 then cou1k=0;clk1k=0; else if clkevent and clk=1 then if cou1k=9999 then cou1k=0; clk1k=not clk1k;
34、else cou1kdotdotdotdotdot=111; end case; end process ctrdot; ctrfre:process(reset,clk1k)-用于产生时基的状态机 begin if reset=1 then frecou=0;enfre=0;flag=001;myfrefrecou=0;enfre=0;flag=011;myfre if flag=000 then-如果标志为 0,即频率计处于测周期挡 if keepcou3=0000 and keepcou2=0000 and keepcou1=0000 then flag=001;enfre=1; els
35、e flag=000; end if; elsif flag=100 then-如果标志为 4,即处于溢出挡 if keepcou3=1010 then flag=100; else flag=011; end if; elsif flag=010 then-如果标志为 2,即处于 100kHz 挡 if keepcou30001 then flag=flag-1; enfre=1; elsif keepcou3=1010 then flag=flag+1; else flag=flag; end if; elsif flag=001 then-如果标志为 1,即处于 10kHz 挡 if k
36、eepcou30001 then flag=flag-1; elsif keepcou3=1010 then flag=flag+1; else flag=flag; enfre=1; end if; else -如果标志为 3,即处于 1MHz 挡 if keepcou30001 then flag=flag-1; elsif keepcou3=1010 then flag=flag+1; else flag=flag; end if; end if; myfre if flag=001 or flag=000 then enfre=1; else enfre=enfre; end if;
37、frecou=1; myfre -处于计数状态 289 的时候 if frecou=88 then frecou=89; myfre=count90; else frecou=frecou+1; myfre -处于计数状态 90 的时候 if flag=010 then enfre=1; else enfre=enfre; end if; frecou=90; myfre -处于计数状态 9198 的时候 if frecou=97 then frecou=98; myfre=count99; else frecou=frecou+1; myfre -处于计数状态 99 的时候 if flag=
38、011 or flag=100 then enfre=1; else enfre=enfre; end if; frecou=99; myfre -处于计数状态 100 的时候 frecou=100; enfre=0; myfrenull; end case; end if; end if; end process ctrfre; ctrtt:process(reset,flag)-用于控制计数器输入的进程 begin if reset=1 then ttclk=0;ttsig=0;unit=0; -异步置位使得输入信号都为 0 else if flag=0 then ttclk=clk1k;
39、ttsig=testsignal;unit=1; -如果标志为 0 即频率计处于测周期挡 else ttclk=testsignal;ttsig=enfre;unit=0; -如果标志不为 0 即频率计处于测频率挡 end if; end if; end process ctrtt; c1: frequency port map(reset,ttclk,ttsig,keepcou1,keepcou2,keepcou3); -引用计数器 dis1: display port map(keepcou1,display1); dis2: display port map(keepcou2,displ
40、ay2); dis3: display port map(keepcou3,display3); end one; 上图中,state 是用于产生时基的状态机类型,共有开始状态(start) 、判断 状态(judge) 、计数状态 1(count 1)、计数状态 289(count 2 to 89) 、计数状 态 90(count 90) 、计数状态 9198(count 91 to 98) 、计数状态 99(count 99) 、 计数状态 100(count 100) 。这里,将计数状态 2、计数状态 3 一直到计数状态 89 进行了合并,将计数状态 91 到计数状态 98 进行了合并,因
41、为这些状态功能一致, 所以合并。将计数状态 1、计数状态 90、计数状态 99 和计数状态 100 单独提取出来 的原因是时基信号都在状态 100 清零,产生高电平为 100ms 的时基,需要在计数状 态 1 的时候将时基信号置 1,由于从 199 只有 99ms,因此在计数状态 1 之前的 judge 状态中,如果处于 10kHz 测频挡,就要将时基信号置 1;产生高电平为 10ms 的时基,需要在计数状态 90 的时候将时基信号置 1;产生高电平为 1ms 的时基,则 需要在计数状态 99 将时基信号置 1,所以计数状态 1、计数状态 90 和计数状态 99 要单独提取。 第四章第四章 数
42、字频率计波形仿真数字频率计波形仿真 4.14.1 省略分频进程省略分频进程 由于设计输入的脉冲信号为 4.19MHz,所以如果直接采用上面的设计进行仿真, 那么将很浪费时间。在能够保证分频不错误的情况下,可以在结构体中省略分频的 进程,并且将实体设计作出如下改动: 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; clk1k:in std_logic; -
43、1k 时钟信号 testsignal: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; 再次编译以后,在仿真中就可以直接采用 clk1k 的脉冲作为触发,即
44、采用频率 为 1kHz 的脉冲作为时钟信号。这是一种明智的仿真方法,很多时候都可以借鉴。 4.24.2 10kHz10kHz、100kHz100kHz 和和 1MHz1MHz 三挡仿真三挡仿真 第一次仿真采用测试信号的周期为 200us,即频率为 5kHz,按照频率计的设计, 应该是自动换到 10kHz 测频挡,显示为 5.00,单位为 kHz。仿真波形如图: 测试信号是频率为测试信号是频率为 5kHz5kHz 脉冲时的仿真波形图脉冲时的仿真波形图 在波形图中可以看到,开始的时候 flag 为 2,表示频率计处于 100kHz 测频挡, 但是这个挡提供的时基不能满足要求,时基太小,计数器在时基
45、为高电平的时候计 数次数太少,不能达到 100 次,所以要自动换挡。100kHz 测频挡提供一个时基以后, 马上换到 10kHz 测频挡。可以看到 flag 变成 1 了,如下图所示。此时的时基符合要 求,因此最后就稳定地显示频率数值。 第一次仿真中的换挡情况第一次仿真中的换挡情况 第二次仿真待用测试信号的周期为 40us,即频率为 25kHz,按照频率计的设计, 应该自动换挡到 100kHz 测频挡,显示为 25.0,单位为 kHz。仿真波形如图所示: 测试信号是频率为测试信号是频率为 25kHz25kHz 脉冲时的仿真波形图脉冲时的仿真波形图 第三次仿真采用测试信号的周期为 4us,即频率
46、为 250kHz,按照频率计的设计, 应该自动换挡到 1MHz 测频挡,显示为 250,单位为 kHz。仿真波形如图所示: 测试信号是频率为测试信号是频率为 250kHz250kHz 脉冲时的仿真波形图脉冲时的仿真波形图 在波形图中可以看到,开始的时候 flag 为 2,表示频率计处于 100kHz 测频挡, 但是这个挡提供的时基不能满足要求,时基太小,计数器在时基为高电平的时候计 数次数超过了要求的范围,所以要自动换挡。100kHz 测频挡一个时基以后,马上换 到 1MHz 测频挡。可以看到 flag 变成 3 了,如上图。此时的时基符合要求,因此最 后就稳定地显示频率数值。 4.34.3
47、测周期挡仿真测周期挡仿真 这次仿真采用测试信号的周期为 6ms,按照频率计的设计,应该自动换挡到测 周期挡,显示为 006,单位为 ms。测周期的仿真如图: 测试信号是周期为测试信号是周期为 6ms6ms 脉冲的仿真波形图脉冲的仿真波形图 值得注意的是,测周期显示的数值是真正周期的一半,造成这种显示的原因和程序 的设计有关,当测周期的时候,频率计提供的时基作为计数器的触发时钟,而测试 信号作为输入信号,测试信号是占空比为 1 的信号,在计数器设计中,计数值加 1 的判断条件是输入信号为 1,因此,在一个输入信号周期里,只有半个周期计数器 在计数,所以显示的周期只是真正周期的一半。 为了解决这个
48、问题,可以考虑将输入信号锁存,就是当在输入信号上升沿的时 候触发锁存器,并且将输入信号的高电平锁存一个周期。锁存的程序: -锁存源程序 library ieee; use ieee.std_logic_1164,all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity lock is port(reset:in std_logic; lockin:in std_logic; lockout:out std_logic); end lock; architecture behave of lock is
49、signal inlock:std_logic; begin process(reset,lockin) begin if reset=1 then inlock=0; elsif lockinevent and lockin=1 then inlock=not inlock; end if; end process; lockoutdata_out=”1111” ” ,然后再次编译问题就 能解决了。 总结总结 09 年 10 月,我开始了我的毕业论文工作,时至今日,论文基本完成。从最初 的茫然,到慢慢的进入状态,再到对思路逐渐的清晰,整个写作过程难以用语言来 表达。历经了几个月的奋战,紧张而
50、又充实的毕业设计终于落下了帷幕。回想这段 日子的经历和感受,我感慨万千,在这次毕业设计的过程中,我拥有了无数难忘的 回忆和收获。 我在学校图书馆搜集资料,还在网上查找各类相关资料,将这些宝贵的资料全 部保存起来,尽量使我的资料完整、精确、数量多,这有利于论文的撰写。当资料 查找完毕了,我开始着手论文的写作。在写作过程中遇到困难我就及时和我的指导 老师晏文靖老师联系,在晏老师的帮助下,困难一个一个解决掉,论文也慢慢成型。 这次毕业论文的制作过程是我的一次再学习,再提高的过程。 我不会忘记这难忘的几个月的时间,毕业论文的制作给了我难忘的回忆。在我 徜徉书海查找资料的日子里,面对无数书本的罗列,最难
51、忘的是每次找到资料时的 激动和兴奋;这段旅程看似荆棘密布,实则蕴藏着无尽的宝藏。 脚踏实地,认真严谨,实事求是的学习态度,不怕困难、坚持不懈、吃苦耐劳 的精神是我在这次设计中最大的收益。我想这是一次意志的磨练,是对我实际能力 的一次提升,也会对我未来的学习和工作有很大的帮助。 在这次毕业设计中也使我们的同学关系更进一步了,同学之间互相帮助,有什 么不懂的大家在一起商量,听听不同的看法对我们更好的理解知识,所以在这里非 常感谢帮助我的同学。 在此更要感谢我的指导老师晏文靖老师,是你的细心指导和关怀,使我能够顺 利的完成毕业设计及毕业论文。老师的严谨治学态度、渊博的知识、无私的奉献精 神使我深受启迪。从尊敬的导师身上,我不仅学到了扎实、宽广的专业知识,也学 到了做人的道理。在此我要向我的导师致以最衷心的感谢和深深的敬意。 致谢致谢 三年寒窗,所收获的不仅仅是愈加丰厚的知识,更重要的是在阅读、实践中所 培养的思维方式、表达能力和广阔视野。很庆幸这些年来我遇到了许多恩师益友, 无论在学习上、生活上还是工作上都给予
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO/TR 18228-5:2025 EN Design using geosynthetics - Part 5: Stabilization
- 2025年度废电池无害化处理承包服务
- 2025年度皮草产品售后服务合同范本
- The 2025 Optimove Insights消费者营销疲劳报告
- 2025年度房地产市场动态监测评估合同
- 2025年图形、图象处理设备项目建议书
- 2025年度二手车交易居间服务合同范本
- 2025年度大型体育赛事赞助商权益转让合同
- 2025年度企业安全协管员岗位职责合同
- 2025年度离婚后债务分配与财产分割协议书
- 2022年全国职业院校技能大赛赛项-ZZ-2022039戏曲表演赛项基础知识试题答案(70公开题)
- 中国高血压防治指南(2024年修订版)核心要点解读
- 全新车位转让协议模板下载(2024版)
- 金属焊接和切割作业教案
- 《遥感地质学》全册配套完整教学课件
- 学科带头人工作计划
- 高中数学必修一试卷及答案
- 矿石买卖协议书
- 2024年岳阳职业技术学院单招职业技能测试题库附答案
- 2023新苏教版六年级下册科学学生活动手册答案
- 【老龄化背景下商业银行养老金融发展探究文献综述3400字】
评论
0/150
提交评论