毕业设计(论文)基于FPGA数字频率计的设计.doc

上传人:laozhun 文档编号:3979139 上传时间:2023-03-30 格式:DOC 页数:21 大小:165KB
返回 下载 相关 举报
毕业设计(论文)基于FPGA数字频率计的设计.doc_第1页
第1页 / 共21页
毕业设计(论文)基于FPGA数字频率计的设计.doc_第2页
第2页 / 共21页
毕业设计(论文)基于FPGA数字频率计的设计.doc_第3页
第3页 / 共21页
毕业设计(论文)基于FPGA数字频率计的设计.doc_第4页
第4页 / 共21页
毕业设计(论文)基于FPGA数字频率计的设计.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《毕业设计(论文)基于FPGA数字频率计的设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于FPGA数字频率计的设计.doc(21页珍藏版)》请在三一办公上搜索。

1、摘 要数字频率计是电子测量与仪表技术最基础的电子仪表之一,也是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。 本文主要介绍一种以FPGA(Field Programmable Gate Array)为核心,基于硬件描述语言VHDL的数字频率计设计与实现。并在EDA(电子设计自动化)工具的帮助下,用大规模可编程逻辑器件(FPGA/CPLD)实现数字频率计的设计原理及相关程序。特点是:无论底层还是顶层文件均用VHDL语言编写,避免了用电路图形式设计时所引起的毛刺现象;改变了以往数字电路小规模多器件组合的设计方法,整个频率计设计在一块FPGA/CPLD芯片上,与用其他方法做成的频率计相

2、比,体积更小,性能更可靠。关键词:FPGA 频率计 电子设计自动化 目 录摘 要I目 录II第一章 绪论11.1课题研究背景11.2研究目的和意义1第二章 系统方案的设计22.1问题引入22.2设计目的22.3设计内容22.3.1数字频率计的基本原理22.3.2实际电路2第三章 系统硬件电路的设计53.1设计要求53.1.1所需仪器仪表53.2系统框图53.2.1电源与整流稳压电路53.2.2全波整流与波形整形电路53.2.3分频器63.2.4信号放大、波形整形电路63.2.5控制门73.2.6计数器73.2.7锁存器73.2.8显示译码器与数码管7第四章 软件设计84.1设计要求84.2模块

3、及模块的功能8第五章 基于FPGA数字频率计的设计与仿真145.1同步测周期频率计的原理145.2数字频率计的VHDL实现145.3频率计的仿真验证15第六章 总结与展望16致 谢17参考文献18第一章 绪论1.1课题研究背景数字频率计是一种基础测量仪器,到目前为止已有30多年的历史,早起设计师们追求的目标主要是扩展测量范围,再加上提高测量的精度、稳定度等,这些也是人们衡量数字频率计的技术水平,决定数字频率计价格高低的主要依据。目前这些基本技术日益完善,成熟。应用现代技术可以轻松的将数字频率计的测频上限扩展到微波频段。当今数字频率计不仅是作为电压表、计算机、天线电广播通讯设备、工艺工程自动化装

4、置。多种仪表仪器与家庭电器等许多电子产品中的数据信息输出显示器反映到人们眼帘。集成数字频率计由于所用元件投资体积小、功耗低,且可靠性高,功能强,易于设计和研发,使得它具有技术上的实用性和应用的广泛性。而从民族产业上来说,我们在这种产业中还落后于西方发达国家,这将会关系到民族产业的兴衰。所以我们必须很重视当前的情况。学习发达国家的先进技术以发展本国的产业。1.2研究目的和意义数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。随着人们文化生活水平的提高,加上现在中国国力的上升,人民在不断的追求高质量生活的同时大都在密切的关注着我们的民族产业的发展前景。而频率计的发在虽是一个极

5、小部分但也可以反映出我国民族产业发展的现状。我国在很多的方面都已不是过去那个很贫穷落后的国家,但是关系着我们国计民生的民族产业的发展却是不尽人意,不能不成为今天令人注目的焦点。本论文主要讲述了使用FPGA实现的数字频率计,它采用VHDL语言编程,用MaxplusII集成开发环境进行波形仿真,编译,并下载到FPGA中。正是因为数字频率计的应用是如此的广泛,才使得它的作用是如此的重要,所以更应该去关注和研究。 第二章 系统方案的设计2.1问题引入在许多情况下,要对信号的频率进行测量,利用示波器可以粗略测量被测信号的频率,精确测量则要用到数字频率计。2.2设计目的本设计与制作项目可以进一步加深我们对

6、数字电路应用技术方面的了解与认识,进一步熟悉数字电路系统设计、制作与调试的方法和步骤。2.3设计内容2.3.1数字频率计的基本原理数字频率计的主要功能是测量周期信号的频率。频率是单位时间( 1S )内信号发生周期变化的次数。如果我们能在给定的 1S 时间内对信号波形计数,并将计数结果显示出来,就能读取被测信号的频率。数字频率计首先必须获得相对稳定与准确的时间,同时将被测信号转换成幅度与波形均能被数字电路识别的脉冲信号,然后通过计数器计算这一段时间间隔内的脉冲个数,将其换算后显示出来。这就是数字频率计的基本原理。2.3.2实际电路对 100Hz 全波整流输出信号的分频采用 7 位二进制计数器 7

7、4HC4024 组成 100 进制计数器来实现。计数脉冲下降沿有效。在 74HC4024 的 Q7 、 Q6 、 Q3 端通过与门加入反馈清零信号,当计数器输出为二进制数 1100100 (十进制数为 100 )时,计数器异步清零。实现 100 进制计数。为了获得稳定的分频输出,清零信号与输入脉冲“与”后再清零,使分频输出脉冲在计数脉冲为低电平时保持一段时间( 10mS )为高电平。图 4 数字频率计电路图电路中采用双 JK 触发器 74HC109 中的一个触发器组成 触发器,它将分频输出脉冲整形为脉宽为 1S 、周期为 2S 的方波。从触发器 Q 端输出的信号加至控制门,确保计数器只在 1S

8、 的时间内计数。从触发器 端输出的信号作为数据寄存器的锁存信号。 被测信号通过 741 组成的运算放大器放大 20 倍后送施密特触发器整形,得到能被计数器有效识别的矩形波输出,通过由 74HC11 组成的控制门送计数器计数。为了防止输入信号太强损坏集成运放,可以在运放的输入端并接两个保护二极管。 频率计数器由两块双十进制计数器 74HC4511 组成,最大计数值为 9999Hz 。由于计数器受控制门控制,每次计数只在 JK 触发器 Q 端为高电平时进行。当 JK 触发器 Q 端跳变至低电平时,端的由低电平向高电平跳变,此时, 8D 锁存器 74HC374 (上升沿有效)将计数器的输出数据锁存起

9、来送显示译码器。计数结果被锁存以后,即可对计数器清零。由于 74HC4518 为异步高电平清零,所以将 JK 触发器的 同 100Hz 脉冲信号“与”后的输出信号作为计数器的清零脉冲。由此保证清零是在数据被有效锁存一段时间( 10mS )以后再进行。第三章 系统硬件电路的设计3.1设计要求设计并制作出一种数字频率计,其技术指标如下: (1)频率测量范围: 10 9999Hz 。 (2)输入电压幅度 300mV 。 (3)输入信号波形:任意周期信号。 (4)显示位数: 4 位。 (5)电源: 220V 、 50Hz3.1.1所需仪器仪表示波器、音频信号发生器、逻辑笔、万用表、数字集成电路测试仪、

10、直流稳压电源。3.2系统框图从数字频率计的基本原理出发,根据设计要求,得到如图 8.3 所示的电路框图。 下面介绍框图中各部分的功能及实现方法 3.2.1电源与整流稳压电路 框图中的电源采用 50Hz 的交流市电。市电被降压、整流、稳压后为整个系统提供直流电源。系统对电源的要求不高,可以采用串联式稳压电源电路来实现。 3.2.2全波整流与波形整形电路 本频率计采用市电频率作为标准频率,以获得稳定的基准时间。按国家标准,市电的频率漂移不能超过 0.5Hz ,即在 1 的范围内。用它作普通频率计的基准信号完全能满足系统的要求。全波整流电路首先对 50Hz 交流市电进行全波整流,得到如图1所示 10

11、0Hz图1 数字频率计框图的全波整流波形。波形整形电路对 100Hz 信号进行整形,使之成为如图2所示 100Hz 的矩形波。 图2 全波整流与波形整形电路的输出波形 波形整形可以采用过零触发电路将全波整流波形变为矩形波,也可采用施密特触发器进行整形。 3.2.3分频器 分频器的作用是为了获得 1S 的标准时间。电路首先对图1所示的 100Hz 信号进行 100 分频得到如图2( a )所示周期为 1S 的脉冲信号。然后再进行二分频得到如图 8.5 ( b )所示占空比为 50 脉冲宽度为 1S 的方波信号,由此获得测量频率的基准时间。利用此信号去打开与关闭控制门,可以获得在 1S 时间内通过

12、控制门的被测脉冲的数目。 分频器可以采用第 5 章介绍过的方法,由计数器通过计数获得。二分频可以采用 触发器来实现。 3.2.4信号放大、波形整形电路 为了能测量不同电平值与波形的周期信号的频率,必须对被测信号进行放大与整形处理,图3 分频器的输出波形使之成为能被计数器有效识别的脉冲信号。信号放大与波形整形电路的作用即在于此。信号放大可以采用一般的运算放大电路,波形整形可以采用施密特触发器。 3.2.5控制门 控制门用于控制输入脉冲是否送计数器计数。它的一个输入端接标准秒信号,一个输入端接被测脉冲。控制门可以用与门或或门来实现。当采用与门时,秒信号为正时进行计数,当采用或门时,秒信号为负时进行

13、计数。 3.2.6计数器 计数器的作用是对输入脉冲计数。根据设计要求,最高测量频率为 9999Hz ,应采用 4 位十进制计数器。可以选用现成的 10 进制集成计数器。 3.2.7锁存器 在确定的时间( 1S )内计数器的计数结果(被测信号频率)必须经锁定后才能获得稳定的显示值。锁存器的作用是通过触发脉冲控制,将测得的数据寄存起来,送显示译码器。锁存器可以采用一般的 8 位并行输入寄存器,为使数据稳定,最好采用边沿触发方式的器件。 3.2.8显示译码器与数码管 显示译码器的作用是把用 BCD 码表示的 10 进制数转换成能驱动数码管正常显示的段信号,以获得数字显示。 选用显示译码器时其输出方式

14、必须与数码管匹配。第四章 软件设计4.1设计要求频率计共分四档: 一档: 0 9999Hz ; 二档: 10 99.99KHz ; 三档: 100.0 999.9KHz ; 四档: 1.000 9.999MHz ; 在此频率计的换档程序设计中,突破了以往常用的改变闸门时间的方法,使自动换档的实现简单可靠。总体框图如图1所示4.2模块及模块的功能(1)模块 FEN 见图 1.1 ,通过对 4MHz 时钟进行分频以获得 0.5 Hz 时钟,为核心模块 CORNA 提供 1 的闸门时间。library ieee; use ieee.std_logic_1164.all; entity fen is

15、port(clk:in std_logic; q:out std_logic); end fen; architecture fen_arc of fen is begin process(clk) variable cnt: integer range 0 to 3999999; variable x:std_logic; variable x:std_logic; begin if clkevent and clk=1then if cnt3999999 then cnt:=cnt+1; else cnt:=0; x:=not x; end if; end if; q=x; end pro

16、cess; end fen_arc; (2)模块 SEL见图1.2,该模块产生数码管的片选信号。library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity sel is port(clk:in std_logic; sel:out std_logic_vector(2 downto 0); end sel; architecture sel_arc of sel is begin process(clk) variable cnt:std_logic_vector(2 downto 0);

17、 begin if clkevent and clk=1then cnt:=cnt+1; end if; sel=cnt; end process; end sel_arc; (3)核心模块 CORNA见图1.3,该模块是整个程序的核心,它能在 1 的闸门时间里完成对被测信号频率计数的功能,并通过选择输出数据实现自动换档的功能。library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity corna is port(clr,sig,door:in std_logic; alm:out std

18、_logic; q3,q2,q1,q0,dang:out std_logic_vector(3 downto 0); end corna; architecture corn_arc of corna is begin process(door,sig) variable c0,c1,c2,c3,c4,c5,c6:std_logic_vector(3 downto 0); variable x:std_logic; begin if sigevent and sig=1then if door=1then if c01001then c0:=c0+1; else c0:=0000; if c1

19、1001then c1:=c1+1; else c1:=0000; if c21001then c2:=c2+1; else c2:=0000; if c31001then c3:=c3+1; else c3:=0000; if c41001then c4:=c4+1; else c4:=0000; if c51001then c5:=c5+1; else c5:=0000; if c61001then c6:=c6+1; else c6:=0000; alm=1; end if; end if; end if; end if; end if; end if; end if; else if

20、clr=0then alm=0; end if; c6:=0000; c5:=0000; c4:=0000; c3:=0000; c2:=0000; c1:=0000; c0:=0000; end if; if c6/=0000then q3=c6; q2=c5; q1=c4; q0=c3; dang=0100; elsif c5/=0000then q3=c5; q2=c4; q1=c3; q0=c2; dang=0011; elsif c4/=0000then q3=c4; q2=c3; q1=c2; q0=c1; dang=0010; elsif c3/=0000then q3=c3;

21、q2=c2; q1=c1; q0=c0; dang=0001; end if; end if; end process; end corn_arc; (4)模块 LOCK见图1.4,该模块实现锁存器的功能,在信号L的下降沿到来时将信号A4、A3、A2、A1锁存。library ieee; use ieee.std_logic_1164.all; entity lock is port(l:in std_logic; a4,a3,a2,a1,a0:in std_logic_vector(3 downto 0); q4,q3,q2,q1,q0:out std_logic_vector(3 down

22、to 0); end lock; architecture lock_arc of lock is begin process(l) variable t4,t3,t2,t1,t0:std_logic_vector(3 downto 0); begin if levent and l=0then t4:=a4; t3:=a3; t2:=a2; t1:=a1; t0:=a0; end if; q4=t4; q3=t3; q2=t2; q1=t1; q0qqqqqqqqqqqqqqqqq=0000000; end case; end process; end disp_arc;第五章 基于FPGA

23、数字频率计的设计与仿真5.1同步测周期频率计的原理频率信号的一个周期为时限进行脉冲计数传统的测周期计数器采用门控计数器来实现,即采用一个同被测频率信号周期宽度相同的门控脉冲来控制计数器的计停其缺点在于无法实现对被测在数字频率计中,测周期计数器是主要的电路,其功能是:使用标准时钟以被测信号的连续测周期计数 本文设计的同步测周期计数器假设其计数时钟为clk0, 频率为f0;被测信号为clkx,频率为fx采用一个D触发器对输入的被测信号clkx进行同步。在clk0的上升沿到来之前,如果clkx出现了上升跳变,则le信号变为高电平,计数器ct的重载信号和锁存器cout的使能信号有效当clk0的上升沿到

24、来时,计数器的计数值锁存,同时计数器重载为1,重新开始计数le变为低电平计数器在其他时间里进行加1计数,锁存器的值则保持不变该测周期计数器能在clkx的每个上升沿之后输出计数值,实现了对被测信号进行测周期计数,并始终输出其最新一个周期的计数值,cint端输出一个clk0周期宽度的高脉冲,用于指示新的计数值锁存。5.2数字频率计的VHDL实现同步测周期计数器的VHDL描述如下: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; enti

25、ty freq_count is -实体定义 port( reset: in std_logic; clk0 : in std_logic; clkx : in std_logic; cint : out std_logic; cout : out std_logic_vector(23 downto 0); end entity freq_count; architecture ar of freq_count is signal s0 : std_logic; signal ct : std_logic_vector(23 downto 0); begin p0: process(rese

26、tclk0) -计数器进程 begin if reset=0 then s0=0; cint=1; cout=conv_std_logic_vector(024); else if clk0event and clk0=1 then s0=clkx; if s0=0 and clkx=1 then cout=ct; cint=0; ct=conv_std_logic_vector(124); else cint=1; ct=ct+1; end if; end if; end if; end process p0; end ar; 此外,为了使频率计的设计更加灵活,频率计中分频器的分频系数也可改

27、为由外部输入。在频率计运行期间,由外部控制器设置不同的分频系数CO,这样可实现更宽范围的频率测量。5.3频率计的仿真验证此频率计的VHDL设计在Altera公司的Quartus II开发平台下进行了编译和仿真,它是在clk0输入10 MHz方波,clkx输入周期为156ms(频率为6.41KHz) 方波,分频系数C0取15000时的仿真波形。第六章 总结与展望通过这次实践,我了解了FPGA数字频率计的用途及工作原理,熟悉了FPGA数字频率计的设计步骤,锻炼了电子设计实践能力,培养了自己独立设计能力。此次毕业设计是对我专业知识和专业基础知识一次实际检验和巩固,同时也是走向工作岗位前的一次热身。毕

28、业设计收获很多,比如学会了查找相关资料相关标准,分析数据,提高了自己的设计及动手能力,懂得了许多经验的获得是前人不懈努力的结果。同时,仍有很多课题需要后辈去努力去完善。但是毕业设计也暴露出自己专业基础的很多不足之处。比如缺乏综合应用专业知识的能力,对材料的不了解,等等。这次实践是对自己大学三年所学的一次大检阅,使我明白自己知识还很浅薄,虽然马上要毕业了,但是自己的求学之路还很长,以后更应该在工作中学习,努力使自己成为一个对社会有所贡献的人致 谢在论文完成之际,我首先向关心帮助和指导我的指导老师许金星表示衷心的感谢并致以崇高的敬意!在论文工作中,我遇到了很多问题,论文的格式,专业的知识部分,一直

29、得到许金星老师的亲切关怀和悉心指导,老师渊博的学识、严谨的治学态度、求实的工作作风一直感染着我,他敏捷专业的思维给我留下了深刻的印象,我将终生难忘,再一次向许金星老师表示衷心的感谢,感谢他为学生营造的浓郁学术氛围,以及学习、生活上的无私帮助! 值此论文完成之际,谨向许金星老师致以最崇高的谢意!光阴似箭,默然回首,在学校的学习生活即将结束,回顾两年多来的学习经历,面对现在的收获,我感到无限欣慰。为此,我向热心帮助过我的所有老师和同学表示由衷的感谢!在我即将完成学业之际,我深深地感谢我的家人给予我的全力支持!最后,衷心地感谢在百忙之中评阅论文和参加答辩的各位专家、教授!参考文献1单片机原理及接口技术,徐煜明等,电子工业出版社,2005年1月 2单片机高级教程,何立民,北京航空航天大学出版,2007年1月 3VISUAL C+.NET应用编程实例进阶,陈宪,中国铁道出版社,2003-02 4潘松,黄继业.EDA 技术实用教程(第2 版)M.北京:科学出版社,2002

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号