采用测频原理的数字频率计审稿版修改.docx_第1页
采用测频原理的数字频率计审稿版修改.docx_第2页
采用测频原理的数字频率计审稿版修改.docx_第3页
采用测频原理的数字频率计审稿版修改.docx_第4页
采用测频原理的数字频率计审稿版修改.docx_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

武汉理工大学FPGA原理及应用课程设计说明书课程设计任务书学生姓名: 高增礼 专业班级: 通信1104 指导教师: 陈适 工作单位: 信息工程学院 题 目: 采用测频原理的数字频率计 要求完成的主要任务:1. 采用测频法,设计一个4位十进制数字显示的数字频率计2. 其测量的范围为19999KHz 课程设计进度安排序号阶段内容所需时间1方案设计1天2软件设计2天3系统调试1天4撰写报告1天合 计5天指导教师签名: 年 月 日 系主任(或责任教师)签名: 年 月 日18目 录摘 要.IAbstractII前 言11. FPGA、VHDL及QuartusII概述21.1 FPGA简介.21.2 VHDL 概述.21.3 QuartusII.32频率测量原理及方案42.1设计要求.42.2 频率测量方法.42.3方案提出及确定.52.4系统设计.62.5 系统组成.72.6小结.83数字频率计VHDL程序与仿真93.1顶层模块图.93.2程序设计.94 仿真测试144.1调试和器件编程.144.2频率计仿真结果.145 心得体会17参考文献18摘 要数字频率计是数字电路中的一个典型应用,实际的硬件设计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。随着现场可编程门阵列FPGA的广泛应用,运用VHDL等硬件描述语言,将使整个系统大大简化,提高了系统的整体性能和可靠性。采用FPGA现场可编程门阵列为控制核心,通过硬件描述语言VHDL编程,在QuartusII仿真平台上编译、仿真、调试 ,并下载到FPGA芯片上,通过严格的测试后,能够较准确地测量方波、正弦波、三角波、矩齿波等各种常用的信号的频率,而且还能对其他多种物理量进行测量本文介绍了如何采用测频法,利用FPGA现场可编程门阵列为控制核心,通过VHDL语言编程,在QuartusII仿真平台上仿真平台上编译、仿真、调试,设计一个4位十进制数字显示的数字频率计以此来巩固课堂理论学习,并能用所学理论知识正确分析硬件设计基本问题和解释数字电路的基本现象。关键字: FPGA, 数字电路,测频法,数字频率计AbstractDigital frequency meter is a digital circuit in a typical application, the actual hardware design of devices used in more complicated connection, but will have relatively large delay, caused by measurement error, poor reliability. With the FPGA field programmable gate array a wide range of applications to the development as a means of using the VHDL hardware description language such as language, will greatly simplify the whole system to improve overall system performance and reliability. Digital frequency meter is made using a digital circuit system can achieve the cyclical changes in signal frequency measuring instruments. Frequency meter is mainly used for measuring frequency sine wave, square wave, triangle wave and spikes and other periodic signal. Its extended functionality can measure cycle and pulse width of the signal. This article describes how to use the frequency measurement method, using of field programmable gate array FPGA for the control of the core and VHDL language programming, simulation in QuartusII development environment, the design of a four decimal digits displayed digital frequency meter in order to reinforce classroom learning theory and the theory of knowledge can be used to correctly analyze hardware the design and interpretation of the basic problems of the basic phenomena of digital circuits. Keywords: FPGA, Digital circuits, Frequency measurement method, Digital frequency meter 前 言在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此,频率的测量就显得更为重要。测量频率的方法有多种,其中电子计数器测量频率具有精度高、使用方便、测量迅速,以及便于实现测量过程自动化等优点,是频率测量的重要手段之一。数字式频率计的测量原理有两类:一是直接测频法,即在一定闸门时间内测量被测信号的脉冲个数;二是间接测频法即测周期法,如周期测频法。直接测频法适用于高频信号的频率测量,通常采用计数器、数据锁存器及控制电路实现,并通过改变计数器阀门的时间长短在达到不同的测量精度;间接测频法适用于低频信号的频率测量,本设计中使用的就是直接测频法,即用计数器在计算1S内输入信号周期的个数。数字频率计是数字电路中的一个典型应用,实际的硬件设计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。随着现场可编程门阵列FPGA的广泛应用,以EDA工具作为开发手段,运用VHDL等硬件描述语言语言,将使整个系统大大简化,提高了系统的整体性能和可靠性。 采用FPGA现场可编程门阵列为控制核心,通过硬件描述语言VHDL编程,在QuartusII仿真平台上编译、仿真、调试 ,并下载到FPGA芯片上,通过严格的测试后,能够较准确地测量方波、正弦波、三角波、矩齿波等各种常用的信号的频率,实现多种测量功能。1. FPGA、VHDL及QuartusII概述本章首先对设计所采用的可编程逻辑器件FPGA及VHDL 以及仿真软件ISE进行简单的介绍,对设计有些基本的了解。1.1 FPGA简介FPGA是20世纪80年代中期出现的高密度可编程逻辑器件,它一般由布线资源分隔的可编程逻辑单元构成阵列,又由可编程I/O单元围绕阵列构成整个芯片,排列阵列的饿逻辑单元由布线通道中的可编程内连线连接起来实现一定的逻辑功能。一个FPGA包含丰富的具有快速系统速度的逻辑门、寄存器和I/O组成。FPGA/CPLD芯片都是特殊的ASIC芯片,除了具有ASIC的特点外还有一下几个优点:随着超大规模集成电路VLSI工艺的不断提高,单一芯片内部可以容纳上百万个晶体管;FPGA/CPLD芯片出厂前100%都做过测试,不需要设计人员承担风险和费用;用户可以反复地编程、擦除、使用或者在外围电路不动的的情况下,用不同软件就可实现不同的功能,用FPGA/CPLD试制样片,能以最快的速度占领市场。FPGA/CPLD软件包中有各种输入工具、仿真工具、版图设计及编程器等全线产品,使电路设计人员在较短的时间内就可以完成电路的输入、编译、优化、仿真,直至最后芯片的制作。1.2 VHDL 概述 VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点通过以上的介绍,可以看出课题中所用的编程语言、采用的可编程逻辑器件对课题有了基本的了解,下面将对设计的具体方案进行探讨。1.3 QuartusIIQuartusII是Altera公司推出各种可编程逻辑器件产品,具有完全集成化的易学、易用的可视化环境,还有具有工业标准EDA工具接口,并且可以运行在多种操作平台上。使QuartusII提供了丰富的逻辑功能库、模块库以及参数化的兆功能供设计者使用。它还具有开放核的特点,允许设计人员添加自己的宏功能模块。充分利用这些逻辑功能模块,可大大减少设计工作量。QuartusII由设计输入、项目编译、项目检验和器件编程等四部分组成。设计输入主要有文本编辑器、图形编辑器、符号编辑器、波形编辑器以及第三方EDA工具生成的设计网表文件输入等,输入方式不同,生成的设计文件也不同。编译设计项目主要是根据要求设计参数和编译策略,如选定其间、锁定引脚等等,然后对项目进行网表提取、逻辑综合、器件适配,产生报告文件,供分析仿真及编程用。项目检验方法包过功能仿真、模拟仿真和定时分析,编程验证是将仿真后的目标文件编入所选定的Altera可编程逻辑器件中,然后加入实际激励信号进行测试,检查是否达到要求。2频率测量原理及方案本章首先介绍了数字频率计设计的要求和频率测量的工作原理,最后对系统的设计方案进行探讨,综合起来形成数字频率计的设计思路以及原理框图。2.1设计要求1. 采用测频法,设计一个4位十进制数字显示的数字频率计2. 其测量的范围为19999KHz 2.2 频率测量方法 数字频率计是用于测量信号频率的电路。测量信号的频率参数是最常用的测量方法之一。实现频率测量的方法比较多, 在此我们主要介绍三种常用的方法: 时间门限测量法、标准频率比较测量法、等精度测量法。2.2.1时间门限测量法 在一定的时间门限T内,如果测得输入信号的脉冲数为N, 设待测信号的频率为fx,则该信号的频率为改变时间T,则可改变测量频率范围。例如,当T=1s, 则fx=N(Hz);T=1ms,则fx=N(kHz)。2.2.2标准频率比较测量法 用两组计数器在相同的时间门限内同时计数,测得待测信号的脉冲个数为N1、已知的标准频率信号的脉冲个数为N2,设待测信号的频率为fx, 已知的标准频率信号的频率为f0;由于测量时间相同,则可得到如下等式: 从上式可以得出待测频率的公式为标准频率比较测量法对测量时产生的时间门限的精度要求不高,对标准频率信号的频率准确度和频率的稳定度要求较高,标准信号的频率越高,测量的精度就比较高。该方法的测量时间误差与时间门限测量法的相同,可能的最大误差为正负一个待测信号周期,即t=1/fx。2.2.3 等精度测量法 等精度测量法的机理是在标准频率比较测量法的基础上改变计数器的计数开始和结束与闸门门限的上升沿和下降沿的严格关系。当闸门门限的上升沿到来时,如果待测量信号的上升沿未到时两组计数器也不计数,只有在待测量信号的上升沿到来时,两组计数器才开始计数;当闸门门限的下降沿到来时,如果待测量信号的一个周期未结束时两组计数器也不停止计数,只有在待测量信号的一个周期结束时两组计数器才停止计数。这样就克服了待测量信号的脉冲周期不完整的问题,其误差只由标准频率信号产生, 与待测量信号的频率无关。最大误差为正负一个标准频率周期,即t=1/f0。由于一般标准信号频率都在几十兆赫兹以上,因此误差小于 10-6HZ。2.3方案提出及确定方法一: 采用小规模数字集成电路制作被测信号经过放大整形变换为脉冲信号后加到主控门的输入端,时基信号经控制电路产生闸门信号送至主控门,只有在闸门信号采样期间内输入信号才通过主控门,若时基信号周期为T,进入计数器的输入脉冲数为N,则被信号的测频率其频率F=N/T,其原理方框图如图2-1所示显示译码器计数器闸门整形放大被测信号 控制部分图2-1 方案一测频原理图方案二:采用单片机进行测频控制单片机技术比较成熟,功能也比较强大,被测信号经放大整形后送入测频电路,由单片机对测频电路的输出信号进行处理,得出相应的数据送至显示器显示。原理方框图如图2-2所示。显示单片机测频电路信号整形待测信号晶 振 图2-2 单片机测频电路原理图采用这种方案优点是依赖成熟的单片机技术、运算功能较强、软件编程灵活、自由度大、设计成本也较低,缺点是显而易见的,在传统的单片机设计系统中必须使用许多分立元件组成单片机的外围电路,整个系统显得十分复杂,并且单片机的频率不能做得很高,使得测量精度大大降低。方案三:采用现场可编程门阵列(FPGA)为控制核心采用现场可编程门阵列(FPGA)为控制核心,利用VHDL语言编程,下载烧制实现。将所有器件集成在一块芯片上,体积大大减小的同时还提高了稳定性,可实现大规模和超大规模的集成电路,测频测量精度高,测量频率范围大,而且编程灵活、调试方便。综合上述分析,方案三为本设计测量部分最佳选择方案。2.4系统设计数字频率计的测量原理,可选择合适的时基信号即闸门时间,对输入被测信号脉冲进行计数,实行测频的目的,在进行设计之前,首先搞清楚在什么情况下是测频率,在什么情况下是测周期,其实就是一个选择合适的闸门信号的问题。在这个设计中,在测频率的时候,以分频后的时钟信号作为闸门信号,因为输入信号的频率大于闸门信号频率,在闸门信号周期内,计算输入信号的周期数目,就可以计算出输入信号的频率值了。原理图如下:闸门信号被测信号图2-3 原理图在确定的闸门时间Tw内,记录被测信号的变化周期数(或脉冲个数)Nx,则被测信号的频率为:fx=Nx/Tw。这种方法的计数值会产生1个字误差,测试精度与计数器中记录的数值Nx有关。2.5 系统组成系统包含输入模块,FPGA模块,显示模块。输入模块包括基准时钟,复位信号和被测信号。FPGA模块是系统的核心部分,其包括分频、7位十进制计数器、数据处理和动态译码。当系统正常工作时,分频部分的作用是对基准时钟进行分频,得到一个闸门信号,作为7位十进制计数器的使能信号。数据处理部分作用:取7位十进制计数器的有效高4位数据,送入动态显示译码部分进行显示译码。显示模块用数码管显示。图2-4 系统组成框图2.6小结本章对数字频率的设计要求进行阐述,由此对频率测量的工作原理进行探讨引申出几个设计的方案,采用的时间门限测量法根据此方法确定了以现场可编程门阵列为控制核心的设计方案,它最为灵活方便。然后得出论述对方案的进行细节方面的论证,产生了设计的原理方框图。但是在设计中有个特别需要注意的地方是:在测频控制信号发生器的设计当中,要对其进行仔细的时序仿真,防止可能产生的毛刺。3数字频率计VHDL程序与仿真3.1顶层模块图图3-1 顶层元件图3.2程序设计library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity plj is port ( start:in std_logic; -复位信号 clk :in std_logic; -系统时钟 clk1:in std_logic; -被测信号 yy1:out std_logic_vector(7 downto 0); -八段码 w1 :out std_logic_vector(3 downto 0); -数码管位选信号end plj;architecture behav of PLj issignal b1,b2,b3,b4,b5,b6,b7:std_logic_vector(3 downto 0); -十进制计数器signal bcd:std_logic_vector(3 downto 0); -BCD码寄存器signal q :integer range 0 to 49999999; -秒分频系数 signal qq : integer range 0 to 499999; -动态扫描分频系数signal en,bclk:std_logic; -使能信号,有效被测信号signal sss : std_logic_vector(3 downto 0); -小数点signal bcd0,bcd1,bcd2,bcd3 : std_logic_vector(3 downto 0); -寄存7位十位计数器中有效的高4位数据beginsecond:process(clk) -此进程产生一个持续时间为一秒的的闸门信号 begin if start=1 then q=0; elsif clkevent and clk=1 then if q49999999 then q=q+1; else q=49999999; end if; end if; if q49999999 and start=0 then en=1; else en=0; end if;end process;and2:process(en,clk1) -此进程得到7位十进制计数器的计数脉冲begin bclk=clk1 and en;end process; com:process(start,bclk) -此进程完成对被测信号计脉冲数begin if start=1 then -复位b1=0000;b2=0000;b3=0000;b4=0000;b5=0000;b6=0000;b7=0000; elsif bclkevent and bclk=1 then if b1=1001 then b1=0000; -此IF语句完成个位十进制计数 if b2=1001 then b2=0000; -此IF语句完成百位十进制计数 if b3=1001 then b3=0000; -此IF语句完成千位十进制计数 if b4=1001 then b4=0000; -此IF语句完成万位十进制计数 if b5=1001 THEN b5=0000; -此IF语句完成十万位十进制计数 if b6=1001 then b6=0000; -此IF语句完成百万位十进制计数 if b7=1001 then b7=0000; -此IF语句完成千万位十进制计数 else b7=b7+1; end if; else b6=b6+1; end if; else b5=b5+1; end if; else b4=b4+1; end if; else b3=b3+1; end if; else b2=b2+1; end if; else b10000 then bcd3=b7; bcd2=b6; bcd1=b5; bcd0=b4; sss0000 then bcd3=b6; bcd2=b5; bcd1=b4; bcd0=b3; sss0000 then bcd3=b5; bcd2=b4; bcd1=b3; bcd0=b2; sss=1011; else bcd3=b4; bcd2=b3; bcd1=b2; bcd0=b1; sss=1111; end if; end if; end if;end process;weixuan:process(clk) -此进程完成数据的动态显示begin if clkevent and clk=1 then if qq 99999 then qq=qq+1;bcd=bcd3; w1=0111; if sss=0111 then yy1(0)=0; else yy1(0)=1; end if; elsif qq199999 then qq=qq+1;bcd=bcd2; w1=1011; if sss=1011 then yy1(0)=0; else yy1(0)=1; end if; elsif qq299999 then qq=qq+1;bcd=bcd1; w1=1101; if sss=1101 then yy1(0)=0; else yy1(0)=1; end if; elsif qq399999 then qq=qq+1;bcd=bcd0; w1=1110; if sss=1110 then yy1(0)=0; else yy1(0)=1; end if; else qqyy1(7 downto 1)yy1(7 downto 1)yy1(7 downto 1)yy1(7 downto 1)yy1(7 downto 1)yy1(7 downto 1)yy1(7 downto 1)yy1(7 downto 1)yy1(7 downto 1)yy1(7 downto 1)yy1(7 downto 1)=1111111; end case;end process;end behav;4 仿真测试本章进行对于源文件进行编译、模拟仿真、调试,对电路板芯片管脚进行定义,最后下载到FPGA芯片上,对频率进行测试,查看结果。4.1调试和器件编程 将各个模块的源文件程序代码输入文本文件,编译运行项目成功后,把各个模块放在一起形成顶层设计文件,对项目进行逻辑综合,然后将项目的设计结果加载到Altera器件中;成功

温馨提示

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

评论

0/150

提交评论