基于测频原理的频率计
课程设计任务书
学生姓名:王耀辉专业班级:通信1304
指导教师:陈适 工作单位:信息工程学院
题 目: 采用测频原理的数字频率计
初始条件:VHDL硬件描述语言,ISE Design Suite开发环境,Modelsim SE仿真环境 要求完成的主要任务:
1. 采用测频法,设计一个4位十进制数字显示的数字频率计
2. 其测量的范围为1~9999KHz
课程设计进度安排
指导教师签名: 年 月 日
系主任(或责任教师)签名: 年 月 日
目录
摘 要----------------------------------------------------------------------------------------------------------- 1 Abstract --------------------------------------------------------------------------------------------------------- 2
1. FPGA、VHDL及ISE概述 ----------------------------------------------------------------------- 3
1.1 FPGA简介 ------------------------------------------------------------------------------------ 3
1.2 VHDL 概述 ----------------------------------------------------------------------------------- 3
1.3ISE ----------------------------------------------------------------------------------------------- 5
2频率测量原理及方案 -------------------------------------------------------------------------------- 6
2.1设计要求 --------------------------------------------------------------------------------------- 6
2.2 频率测量方法 -------------------------------------------------------------------------------- 6
2.2.1时间门限测量法 --------------------------------------------------------------------------- 6
2.2.2标准频率比较测量法 --------------------------------------------------------------------- 6
2.2.3 等精度测量法 ------------------------------------------------------------------------------ 7
2.3方案提出及确定 ------------------------------------------------------------------------------------------ 7
2.4系统设计 --------------------------------------------------------------------------------------- 8
2.5 系统组成 -------------------------------------------------------------------------------------- 9
2.6小结 ------------------------------------------------------------------------------------------- 10
3数字频率计VHDL程序与仿真 ----------------------------------------------------------------- 11
3.1模块图 ---------------------------------------------------------------------------------------- 11
3.1.1顶层模块图 ------------------------------------------------------------------------- 11
3.1.2顶层模块图 ------------------------------------------------------------------------- 11
3.2程序设计 ------------------------------------------------------------------------------------- 12
4 仿真测试 -------------------------------------------------------------------------------------------- 17
4.1调试和器件编程 ---------------------------------------------------------------------------- 17
4.2频率计仿真结果 ---------------------------------------------------------------------------------- 18 5 心得体会 -------------------------------------------------------------------------------------------- 21 6 参考文献 -------------------------------------------------------------------------------------------- 22
摘 要 数字频率计是数字电路中的一个典型应用,实际的硬件设计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。随着现场可编程门阵列FPGA的广泛应用,运用VHDL等硬件描述语言,将使整个系统大大简化,提高了系统的整体性能和可靠性。
采用FPGA现场可编程门阵列为控制核心,通过硬件描述语言VHDL编程,在QuartusII仿真平台上编译、仿真、调试 ,并下载到FPGA芯片上,通过严格的测试后,能够较准确地测量方波、正弦波、三角波、矩齿波等各种常用的信号的频率,而且还能对其他多种物理量进行测量
本文介绍了如何采用测频法,利用FPGA现场可编程门阵列为控制核心,通过VHDL语言编程,在ISE仿真平台上仿真平台上编译、仿真、调试,设计一个4位十进制数字显示的数字频率计以此来巩固课堂理论学习,并能用所学理论知识正确分析硬件设计基本问题和解释数字电路的基本现象。
关键字:FPGA, 数字电路,测频法,数字频率计
Abstract
Digital 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 by 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, usingof 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
1. FPGA、VHDL及ISE概述
本章首先对设计所采用的可编程逻辑器件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语言是一种用于电路设计的高级语言。它在80年代的后期出现。最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言
VHDL的英文全写是:VHSIC(Very High Speed Integrated Circuit)Hardware Description Language.翻译成中文就是超高速集成电路硬件描述语言。因此它的应用主要是应用在数字电路的设计中。目前,它在中国的应用多数是用在FPGA /CPLD/EPLD的设计中。当然在一些实力较为雄厚的单位,它也被用来设计ASIC。
VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一
个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。
VHDL主要特点有:
(1)功能强大、设计灵活
(2)支持广泛、易于修改
(3)强大的系统硬件描述能力
(4)独立于器件的设计、与工艺无关
(5)很强的移植能力
(6)易于共享和复用
VHDL系统优势:
(1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。(2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。
(3)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。
(4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。
(5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。
1.3ISE
ISE是使用XILINX的FPGA的必备的设计工具。目前官方提供下载的最新版本是14.4。它可以完成FPGA开发的全部流程,包括设计输入、仿真、综合、布局布线、生成BIT文件、配置以及在线调试等,功能非常强大。ISE除了功能完整,使用方便外,它的设计性能也非常好,拿ISE 9.x来说,其设计性能比其他解决方案平均快30%,它集成的时序收敛流程整合了增强性物理综合优化,提供最佳的时钟布局、更好的封装和时序收敛映射,从而获得更高的设计性能。先进的综合和实现算法将动态功耗降低了10%。
2频率测量原理及方案
本章首先介绍了数字频率计设计的要求和频率测量的工作原理,最后对系统的设计方案进行探讨,综合起来形成数字频率计的设计思路以及原理框图。
2.1设计要求
1. 采用测频法,设计一个4位十进制数字显示的数字频率计
2. 其测量的范围为1~9999KHz
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;由于测量时间相同,则可得到如下等式:
N1N2=fxf0
从上式可以得出待测频率的公式为
fx=N1f0N2
标准频率比较测量法对测量时产生的时间门限的精度要求不高,对标准频率信号的频率准确度和频率的稳定度要求较高,标准信号的频率越高,测量的精度就比较高。该方法的测量时间误差与时间门限测量法的相同,可能的最大误差为正负一个待测信号周期,即Δ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.1顶层模块图
图3-1顶层元件图
Clk:系统时钟 Clk1:被测信号 Start:复位信号 Yy1:八段码 W1:数码管位选信号
3.1.2底层模块
图3-2 底层元件图
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 is
signal 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位数
据 begin
second:process(clk) --此进程产生一个持续时间为一秒的的闸门信号 begin
if start='1' then q
if q
and2:process(en,clk1) --此进程得到7位十进制计数器的计数脉冲 begin
bclk
com:process(start,bclk) --此进程完成对被测信号计脉冲数 begin
if start='1' then --复位
b1
elsif bclk'event and bclk='1' then
if b1="1001" then b1
if b6="1001" then b6
if b7="1001" then b7
else b7
end if; end if; end process;
process(clk) --把7位十进制计数器有效的高4位数据送如bcd0~3;并得到小数点信息 begin
if rising_edge(clk) then if en='0' then
if b7>"0000" then bcd3"0000" then bcd3"0000" then bcd3
else bcd3
end if; end if; end process;
weixuan:process(clk) --此进程完成数据的动态显示 begin
if clk'event and clk='1' then
if qq
if sss="0111" then yy1(0)
else yy1(0)
elsif qq
if sss="1011" then yy1(0)
else yy1(0)
elsif qq
if sss="1101" then yy1(0)
elsif qq
m0: process (bcd) --译码 begin case bcd is
when "0000"=>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)yy1(7 downto 1)
4 仿真测试
本章进行对于源文件进行编译、模拟仿真、调试,对电路板芯片管脚进行定义,最后下载到FPGA芯片上,对频率进行测试,查看结果。
4.1调试和器件编程
将各个模块的源文件程序代码输入文本文件,编译运行项目成功后,把各个模块放在一起形成顶层设计文件,对项目进行逻辑综合,然后将项目的设计结果加载到Altera器件中;成功编译以后,进入到模拟仿真时段,设置好完成时间和网络间距,在列出输入输出信号等等,进行波形编辑在模拟器运行成功;启动定时分析工具,对传播延迟、时序电路性能、建立和保持时间等进行分析顺利后,就可以开始器件编程了。
图4-1编译检查成功图
图4-2 Summary信息
4.2频率计仿真结果
图 4-3频率计仿真全图
图4-4 频率计仿真-开始计数部分
图4-5频率计仿真-计数过程部分
图4-6 频率计仿真中动态显示部分
图4-7频率计仿真结束动态显示部分
5 心得体会
本设计采用FPGA技术,利用测频法的原理和VHDL语言,采用自顶向下的设计方法,
实现了1Hz~10kHz测量范围的四位十进制的数字频率计,并在ISE软件平台下对设计项
目进行的了编译和时序仿真。实验结果表明,该系统能够满足本次设计的要求,并且具有
测量误差小,可靠性高的优点。本文的设计工作能作为电子测量与仪表技术的基础,为计
算机、通讯设备、音频视频等科研生产领域提供较好的参考。
FPGA课程设计就要结束了,这次课程设计历时近一个星期,通过这一个星期的学习,
发现了自己的很多不足,发现了很多知识上的漏洞。同时也看到了自己的实践经验还是比
较缺乏,理论联系实际的能力还急需提高。这次课程设计让我学到了很多,不仅是巩固了
先前学的EDA技术的理论知识,而且也培养了我的动手能力,更令我的创造性思维得到
拓展。在课程设计中一个人的力量是远远不够的,真正的完成任务需要共同的智慧与劳动,
团结协作是我们成功的一项非常重要的保证。在这个过程中,我也曾经因为实践经验的缺
乏失落过,也曾经仿真成功而热情高涨。
还有一点是我们做任何事情都无法缺少的,那就是细心认真。此次设计我们就深深地体会
到了,由于编程的时候没有做到足够的细心,导致一串代码弄混了。但是密密麻麻的英文
字母混在一起,我始终没有发现。最终在调试的时候,就出现了问题。只知道出现了问题,
就是不知道到问题的根源在哪里,好长时间都没有找出问题的所在。这也让我真正的明白
了,科学的严谨性,它不允许出半点差错,否则后果会是比较麻烦的。做其他事情也一样,
都需要我们付出足够的认真去对待,才能顺利的完成。
对我而言,知识上的收获重要,精神上的丰收更加可喜。让我知道了学无止境的道理。我
们每一个人永远不能满足于现有的成就,人生就像在爬山,一座山峰的后面还有更高的山
峰在等着你。挫折是一份财富,经历是一份拥有。这次课程设计必将成为我人生旅途上一
个非常美好的回忆!
6参考文献
[1]赵曙光、郭万有、杨颁华编著可编程逻辑器件原理、开发与应用[M]西安电子科技大
学出版社,2000。
[2]陈赜,主编 朱如琪、罗杰、王建明,鲁放编著CPLD/FPGA与ASIC设计实践教程, 科
学出版社出版,北京。232~268
[3]徐志军,大规模可编程逻辑器件及其应用[M].成都:电子科技大学出版。[4]李辉编著
PLD与数字系统设计[M].成都:电子科技大学出版。
[5]杜建国编著 Verilog HDL硬件描述语言 国防工业出版社。
[6]赵雅兴.FPGA原理、设计与应用[M].天津:天津大学出版社,1999。
[7]李景华,杜玉远.可编程逻辑器件与EDA技术[M].沈阳:东北大学出版 社,
2002。
[8]顾巨峰,周浩洋,朱建华 基于可编程逻辑器件(Lattice)的多功能数字频率计[J]
2002。