采用测频原理的数字频率计审稿版修改

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计任务书
学生姓名:高增礼专业班级:通信1104
指导教师:陈适工作单位:信息工程学院
题目: 采用测频原理的数字频率

要求完成的主要任务:
1. 采用测频法,设计一个4位十进制数字显示的数字频率计
2. 其测量的范围为1~9999KHz
课程设计进度安排
指导教师签名:年月日系主任(或责任教师)签名:年月日
目录
摘要 (I)
Abstract II
前言 1
1. FPGA、VHDL及QuartusII概述 2
1.1 FPGA简介...................................................................... .. (2)
1.2 VHDL 概述...................................................................... . (2)
1.3 QuartusII............................................................... .. (3)
2频率测量原理及方案 4
2.1设计要求...................................................................... . (4)
2.2 频率测量方法...................................................................... . (4)
2.3方案提出及确定...................................................................... . (5)
2.4系统设计...................................................................... . (6)
2.5 系统组成...................................................................... (7)
2.6小结...................................................................... (8)
3数字频率计VHDL程序与仿真 9
3.1顶层模块图...................................................................... (9)
3.2程序设计...................................................................... . (9)
4 仿真测试 14
4.1调试和器件编程...................................................................... .. (14)
4.2频率计仿真结果...................................................................... .. (14)
5 心得体会 17
参考文献 18
摘要
数字频率计是数字电路中的一个典型应用,实际的硬件设计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。

随着现场可编程门阵列FPGA的广泛应用,运用VHDL等硬件描述语言,将使整个系统大大简化,提高了系统的整体性能和可靠性。

采用FPGA现场可编程门阵列为控制核心,通过硬件描述语言VHDL编程,在QuartusII仿真平台上编译、仿真、调试,并下载到FPGA芯片上,通过严格的测试后,能够较准确地测量方波、正弦波、三角波、矩齿波等各种常用的信号的频率,而且还能对其他多种物理量进行测量
本文介绍了如何采用测频法,利用FPGA现场可编程门阵列为控制核心,通过VHDL语言编程,在QuartusII仿真平台上仿真平台上编译、仿真、调试,设计一个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 ??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 QuartusII
QuartusII是Altera公司推出各种可编程逻辑器件产品,具有完全集成化的易学、易用的可视化环境,还有具有工业标准EDA工具接口,并且可以运行在多种操作平台上。

使QuartusII提供了丰富的逻辑功能库、模块库以及参数化的兆功能供设计者使用。

它还具有开放核的特点,允许设计人员添加自己的宏功能模块。

充分利用这些逻辑功能模块,可大大减少设计工作量。

QuartusII由设计输入、项目编译、项目检验和器件编程等四部分组成。

设计输入主要有文本编辑器、图形编辑器、符号编辑器、波形编辑器以及第三方EDA 工具生成的设计网表文件输入等,输入方式不同,生成的设计文件也不同。

编译设计项目主要是根据要求设计参数和编译策略,如选定其间、锁定引脚等等,然后对项目进行网表提取、逻辑综合、器件适配,产生报告文件,供分析仿真及编程用。

项目检验方法包过功能仿真、模拟仿真和定时分析,编程验证是将仿真后的目标文件编入所选定的Altera可编程逻辑器件中,然后加入实际激励信号进行测试,检查是否达到要求。

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;由于测量时间相同,则可得到如下等式:
从上式可以得出待测频率的公式为
标准频率比较测量法对测量时产生的时间门限的精度要求不高,对标准频率信号的频率准确度和频率的稳定度要求较高,标准信号的频率越高,测量的精度就比较高。

该方法的测量时间误差与时间门限测量法的相同,可能的最大误差为正负一个待测信号周期,即Δ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 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<=0;
elsif clk'event and clk='1' then
if q<49999999 then q<=q+1;
else q<=49999999;
end if;
end if;
if q<49999999 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";b 7<="0000";
elsif bclk'event 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 b1<=b1+1;
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<=b7; bcd2<=b6; bcd1<=b5; bcd0<=b4;
sss<="1110";
elsif b6>"0000" then bcd3<=b6; bcd2<=b5; bcd1<=b4; bcd0<=b3; sss<="1101";
elsif b5>"0000" 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 clk'event 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 qq<199999 then qq<=qq+1;bcd<=bcd2; w1<="1011"; if sss="1011" then yy1(0)<='0';
else yy1(0)<='1';
end if;
elsif qq<299999 then qq<=qq+1;bcd<=bcd1; w1<="1101"; if sss="1101" then yy1(0)<='0';
else yy1(0)<='1';
end if;
elsif qq<399999 then qq<=qq+1;bcd<=bcd0; w1<="1110"; if sss="1110" then yy1(0)<='0';
else yy1(0)<='1';
end if;
else qq<=0;
end if;
end if;
end process;
m0: process (bcd) --译码begin
case bcd is
when "0000"=>yy1(7 downto 1)<="0000001"; when "0001"=>yy1(7 downto 1)<="1001111"; when "0010"=>yy1(7 downto 1)<="0010010"; when "0011"=>yy1(7 downto 1)<="0000110"; when "0100"=>yy1(7 downto 1)<="1001100"; when "0101"=>yy1(7 downto 1)<="0100100"; when "0110"=>yy1(7 downto 1)<="1100000"; when "0111"=>yy1(7 downto 1)<="0001111"; when "1000"=>yy1(7 downto 1)<="0000000"; when "1001"=>yy1(7 downto 1)<="0001100"; when others=>yy1(7 downto 1)<="1111111"; end case;
end process;
end behav;
4 仿真测试
本章进行对于源文件进行编译、模拟仿真、调试,对电路板芯片管脚进行定义,最后下载到FPGA芯片上,对频率进行测试,查看结果。

4.1调试和器件编程
将各个模块的源文件程序代码输入文本文件,编译运行项目成功后,把各个模块放在一起形成顶层设计文件,对项目进行逻辑综合,然后将项目的设计结果加载到Altera器件中;成功编译以后,进入到模拟仿真时段,设置好完成时间和网络间距,在列出输入输出信号等等,进行波形编辑在模拟器运行成功;启动定时分析工具,对传播延迟、时序电路性能、建立和保持时间等进行分析顺利后,就可以开始器件编程了。

4.2频率计仿真结果
4.2.1频率计仿真全图
图 4-1 频率计仿真全图
图4-2 频率计仿真-开始计数部分
图4-3 频率计仿真-结束结束、动态显示部分
图4-4 频率计仿真-复位、重新测频部分
5 心得体会
本次设计实现了设计要求的大部分功能,精度达到1HZ,测量范围为1Hz---999MHHz,具有以下几个特点:
(1)模块化的设计方法,使得它升级和维护都很方便、灵活;
(2)设计的频率计体积小,功耗低,稍加修改就可以改变数字频率计测量范围,拥有较高的整体性能和可靠性;
(3)造价比较低, 容易生产,具有较好的市场前景。

通过这次设计,锻炼了我严谨认真的学习态度,学到了很多东西,知识和技能都得到了提高,但是也暴露了很多不足的地方,比如说不够仔细和耐心,在设置波形时间时候犹豫时间设置有问题,检查了很久,感觉没有错误很暴躁结果,多亏同学的帮忙指正。

此频率计精度比较高,比较适合于高频信号的频率测量,对于低频信号测量效果不是很好,这点还有待于加强。

课程设计虽然做完了,但现在学的
这点知识还远远不够,特别是对于QuartusII要能够熟练运用我们还有很多要学习。

参考文献
[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。

[9]付家才,EDA原理与应用化学工业出版社 2001。

[10]Data book,2004 ALTERA.89~110
[11]刘宝琴,张芳兰. ALTERA可编程逻辑器件及其应用. 北京:清华大学出版社,1995 。

相关文档
最新文档