ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:136.59KB ,
资源ID:10174767      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10174767.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数字频率计 完整课程设计报告.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数字频率计 完整课程设计报告.docx

1、数字频率计 完整课程设计报告河南科技大学课 程 设 计 说 明 书课程名称 现代电子系统设计题 目 简易数字频率计设计学 院 电 信 学 院班 级 电 信 科 072学生姓名 王 俊指导教师 王 勇日 期 2010-01-08课程设计任务书(指导教师填写)课程设计名称 现代电子系统课程设计 学生姓名 专业班级 设计题目 简易数字频率计设计 一、 课程设计目的掌握高速AD的使用方法;掌握频率计的工作原理;掌握GW48_SOPC实验箱的使用方法;了解基于FPGA的电子系统的设计方法。二、 设计内容、技术条件和要求设计一个具有如下功能的简易频率计。(1)基本要求: a被测信号的频率范围为120kHz

2、,用4位数码管显示数据。b测量结果直接用十进制数值显示。c被测信号可以是正弦波、三角波、方波,幅值13V不等。d具有超量程警告(可以用LED灯显示,也可以用蜂鸣器报警)。e当测量脉冲信号时,能显示其占空比(精度误差不大于1%)。(2)发挥部分a修改设计,实现自动切换量程。b构思方案,使整形时,以实现扩宽被测信号的幅值范围。三、 时间进度安排布置课题和讲解:1天 查阅资料、设计:4天实验:3天 撰写报告:2天四、 主要参考文献何小艇 电子系统设计 浙江大学出版社 2008.1潘松 黄继业 EDA技术实用教程 科学出版社 2006.10指导教师签字: 2009年 12月 14摘 要 在电子技术的应

3、用当中,任何一个电子系统都是有给定的输入信号,然后产生相应的输出信号,在这其中对信号的处理相当复杂,因此就显得对信号的分析尤为重要。本课程设计正是基于这个考虑,设计一个简易的频率计,对信号的频率和占空比进行测量,从一个方面对信号做出精确的分析。简易数字频率计的设计是基于FPGA实验开发系统进行的,通过对各个模块的编程,实现相应的功能。本设计主要由几个部分组成:模数转换模块,比较模块,频率测量模块以及占空比测量模块。由于不是在实际生产中的应用,本设计主要实现对正弦波、方波、三角波的频率及占空比的测量。对输入的信号进行处理,产生相应的脉冲信号,然后再把此脉冲信号作为频率测量和占空比测量模块的输入信

4、号,通过计数及对计数值进行处理,产生相应的输出结果,送给数码管显示,使大家很容易读出一个信号的频率及占空比的具体值。 关键词:信号、频率、占空比、FPGA、模块目 录一、任务解析二、系统方案2、1 被测信号转换2、2 频率测量三、系统原理四、模块设计4、1 模数转换模块4、2 比较模块4、3 频率测量模块.4、4 占空比测量模块.五仿真六、总结和心得体会七、参考文献附录一.附录二.一. 任务解析本课程设计是制作一个简易的数字频率计,其主要实现的功能:a被测信号的频率范围为120kHz,用4位数码管显示数据。b测量结果直接用十进制数值显示。c被测信号可以是正弦波、三角波、方波,幅值13V不等。d

5、具有超量程警告(可以用LED灯显示,也可以用蜂鸣器报警)。e当测量脉冲信号时,能显示其占空比(精度误差不大于1%)。根据其功能,主要考虑从以下几个方面进行实现: 由于被测信号的产生直接由信号发生器产生,所以不需要考虑对信号发生器的设计。首先,对被测信号通过AD进行转换,把转换的结果和给定的阈值进行比较,产生相应的脉冲信号。得到脉冲信号之后,先进行频率测量,给定1S的基准信号,在1S信号内对脉冲信号进行计数,计数的方式采用BCD码,然后把计数结果直接送数码管显示,对应的就是十进制的数值。然后对脉冲信号进行占空比测量,给定一个高频的基准信号,在脉冲信号的高电平期间对脉冲信号进行计数,把计数结果进行

6、相应的运算,运算结果直接送数码管显示,对应的也是十进制显示。为了实现占空比精度的要求,在适当的范围内竟可能提高基准信号的频率。要求对120Khz频率的信号进行测量,而数码管显示的才四位,所以必须进行量程切换,本设计是在编程的过程中实现其自动切换,通过一个led灯来表示相应的单位。对于超量程警告,也是在编程的过程,用得到的被测信号的频率和一个阈值进行比较,把比较的结果也是通过一个led灯指示出来。通过对任务的解析,结合相应功能的要求,得出简易数字频率计总的原理框图如下:二. 系统方案由于本课程设计是基于特定的硬件平台,在GW48-SOPC实验开发系统上进行实现。因此设计的方案也是根据特定的硬件环

7、境而提出来的。实验中我们需要的被测信号,时基信号以及显示译码都有特定的硬件实现,因此我们不需要过多的考虑。我们要重点考虑的是被测信号的转换,对被测信号频率的计量以及占空比的计量。2、1 被测信号转换在实验的过程中我们用于测量和计算的数字量,而被测信号是模拟量,不便于测量和计算,因此要对被测信号进行模拟到数字的转换。基于我们的硬件平台考虑到有两个方案进行转换。方案一:利用高速A/D 5510/5540 进行转换A/D 5510/5540是美国公司生产的新型模数转换器件,它是一种采用CMOS工艺制造的位高阻抗并行A/D芯片,能提供的最小采样率为 20MSPS。在高速转换的同时能够保持较低的功耗,在

8、推荐 工作条件下,A/D5510/5540的功耗仅为130。由于A/D5510/5540不仅具有高速的A/D转换功能,而且还带有内部采样保持电路,从而大大简化了外围电 路的设计;同时,由于其内部带有了标准分压电阻,因而可以从的电源获得满刻度的基准电压。A/D 5510/5540可应用于数字TV医学图像、视频会 议、高速数据转换以及QAM解调器等方面。A/D5510安装在实验系统配套的GW_ADDA板上,A/D处于使能状态,除了数据线外,任一器件的控制信号线只有时钟线,这有利于高速控制和直接利用MATLAB/DSP Builder工具的设计。GW_ADDA板上工作时钟必须由FPGA的I/O口提供

9、,且DAC和ADC的工作时钟是分开的。无法直接利用MATLAB和DSP Builder进行自动流程的设计,优点是时钟频率容易变化,且可通过Cyclone中的PLL的到几乎任何时钟频率。由此即可测试ADC的最高转换频率。由于A/D5510/5540的转换时间很短,因此可以转换很高频率的信号,满足我们设计要求0-20KHz被测信号信号。方案二:利用ADC0809进行转换ADC0809是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式A/D转换器。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。是目前国内应用最广泛的8位通用A/D

10、芯片。ADC0809已安装在实验系统上,并且其转换时钟CLK已经事先接有750KHz的频率,ADC0809模拟信号输入通道为8个,但能够使用的仅有IN0、IN1。相比于AD5510/5540,ADC809我们更为熟悉,在以前的实验中经常使用到,更了解其功能,及使用方法。但ADC0809的转换速率相对较低。对比一二两个方案,我个人认为选择二方案比较合适,虽然AD5510/5540转换的速率很高,但是对于我们来说是一个相对陌生的器件,不能很好的使用它。而对于ADC0809来说,虽然转换速率不是很高,但也几乎能满足设计的要求,况且对于ADC0809比较了解,出现问题容易检查,也便于和下一个模块进行结

11、合,因此选择方案二。2、2 频率的测量 对于频率的测量没有现成的硬件模块,因此对于频率的测量需要我们用VHDL语言进行实现。对于频率的测量主要考虑有两种实现方案。方案一: 直接测频法测频法就是在确定的闸门时间Tw内,记录被测信号的变化周期数(或脉冲个数)Nx,则被测信号的频率为:fx=Nx/Tw。测量的过程如图所示,在TW时间内通过计数器记录被测信号脉冲的个数,然后把记录结果锁存,经过运算后,送数码管显示,即为所测频率。,方案二: 测周期法测周期法需要有标准信号的频率fs,这个标准信号应该取一个频率适中的高频信号,在待测信号的一个周期Tx内,记录标准频率的周期数Ns,则被测信号的频率为:fx=

12、fs/Ns。测量测周期法的过程如上图所示,在待测信号的一个周期Tx内,记录标准信号周期的个数,然后把记录结果锁存,经过运算后,送数码管显示,即为所测频率。,比较一二两种方案: 这两种测频率的原理基本一样,都是通过在给定的时间内记录脉冲的个数,经过一定的运算处理,得出结果显示出来。并且这两种方案的计数值都会产生误差,都与计数器中记录的数值Nx或Ns有关。但是考虑到用VHDL语言编写乘除的算法比较困难,并且经过乘除运算后所得结果的误差较大,因此选用方案一。 方案一得好处是闸门信号直接可以选择1S的时钟信号,在这1S时间内记录的被测信号脉冲的个数,正好就是被测信号的频率,不再需要进行运算处理。不但减

13、少编程的难度,而且也减小了实验的误差。因为侧周期法的标准信号是一个高频信号,在不同的被测信号的脉冲下所造成的误差有很大的不同。而在1S闸门信号下,记录的脉冲个数,对于所有被测信号的产生的误差基本是一样。考虑到以上的各因素,我认为方案一是比较理想的选择。三. 系统原理经过对系统方案的分析,结合具体的实验要求,系统的详细的原理框图如下: 被测信号经信号发生器产生,作为ADC0809的输入信号,ADC0809对输入信号进行采样,保持,转换等一列的处理后,输出8位的数字量。然后输出的8位数字量作为数字比较器的输入信号和给定的8位阈值进行比较,输出相应的比较结果,即脉冲信号。这就是前置级对被测信号进行放

14、大,整形得到脉冲信号的原理。 然后把得到的脉冲信号同时作为频率测量模块和占空比测量模块的输入信号。对于频率的测量,选择方案二的实现方法,把给定1Hz信号进行二分频,得到0.5Hz的信号,即高低电平的保持时间为1S,在高电平期间对脉冲信号进行计数,在低电平期间对计数结果进行锁存,并把计数器清零,等待下一个高电平到来进行计数。同时把锁存的结果直接送数码管显示。 对于占空比的测量原理和频率的测量基本一样,其区别是先给定一个高频的基准信号,在脉冲信号的高电平期间对基准信号进行计数,并把计数的结果进行锁存。同时把脉冲信号二分频,在二分频后信号的高电平期间对基准信号进行计数,并把计数结果锁存。然后利用在脉

15、冲信号高电平期间的计数值和脉冲信号二分频后的高电平期间的计数值进行相除运算,把运算结果进行进制转换,转换成BCD码,直接可以送数码管显示,显示出的两位十进制值,即表示被测信号的占空比。四. 模块设计本系统除了特定硬件资源外,还需通过软件实现四个模块的设计,分别是:模数转换模块、比较模块、频率测量模块、占空比测量模块。4、1 模数转换模块 通过编程实现对ADC0809的控制,具体的程序见附录,其控制模块见下图: D7.0是被测信号经过ADC0809转换后的数字量输出,CLK状态机的工作时钟,EOC转换结束的标志信号,高电平表示转换结束。ALE,START,OE,ADDA都是ADC0809的控制信

16、号,ADDA为模拟通道选择,低电平选择通道0,ALE为通道地址锁存信号,START为启动AD转换的信号,OE为ADC0809转换结果输出的使能信号。Q7.0是最终转换输出的8位数字量,可以直接送数码管显示。其具体与ADC0809的连接电路图如下:模拟信号由IN0输入,通过控制模块对时序,经过ADC0809转换之后,最后转换的结果由Q 7.0 输出。4、2 比较模块比较模块主要是把ADC0809转换的结果和给定的阈值进行比较,输出产生脉冲信号,得到的脉冲信号就是后面用于频率测量和占空比测量模块的输入信号。为什么要进行被测信号到脉冲信号的转换呢?因为我们无法直接对方波之外的被测信号进行频率和占空比

17、的计算。需要把被测信号转换成脉冲信号,在给定的时间内对脉冲的个数进行计数,从而算出其频率和占空比。通过编程实现的比较模块见右图:经过Q7.0输出的结果,直接给d7.0做为输入,通过在编写程序的过程中设定一个阈值,然后用输入和这个阈值作比较,如果大于则输出为高电平,小于或等于则输出为低电平。fin输出的频率在一定的误差范围内也就是被测信号的频率。对于阈值的设定,主要影响正弦波和三角波经AD转换后所得脉冲信号的占空比。而对于方波信号的影响几乎可以忽略,但是阈值的设定要在一个相对合适的范围内,不能太小也不能太大,本设计中选取的值为“10000000”。4、3 频率测量模块对于频率的测量原理在前面的方

18、案设计中已经做出很详细的阐述,下面就具体的模块在做一下分析。clk1为1Hz的时钟信号,fin是经比较模块的输出信号,在1S的信号下对fin信号进行计数。因为计数频率范围为5位,所以在模块内部编写5个十进制的计数器,要求低位的计数值溢出信号做为高位的输入信号,从而显示频率的计量。实验要求为用四位数码管显示频率,而我们计数的结果为五位,因此要考虑到量程切换。但是根据的我的设计方案实验系统上只有三位数码管可用来频率显示,所以设置了一个量程转换,当千位的计数值大于零,给出一个输出信号k,表示单位Khz,从而来弥补计数显示为不够的问题。因为计数器的范围为0-99999Hz,而设计要求的的范围为0-20

19、0000Hz,因此通过万位的计数值和2作比较,当大于时,给出一个buzzer,可以接蜂鸣器用于超量程报警。计数的结果由cnq1,cnq2,cnq3输出给译码器,在由译码器直接送数码管显示。例如:当k=0时,数码管显示为100,即为实际的被测信号的频率就为100Hz, 当k=1时,数码管显示为100时,则实际的频率为10.0Khz.4、4 占空比测量模块占空比的测量原理在前面也已经做了详细的介绍,下面也就具体的模块做一下深入分析:clk3M为基准信号,在fin的高电平期间就对这个基准脉冲信号的个数进行计数,同时也在fin二分频后的高电平期间对这个基准信号进行计数,把这两个得到的计数结果进行相除运

20、算,相除后得到的结果进行个位和十位分离,然后再进行进制转换,转换结果由译码器送显。具体运算的过程如下:zhankongbi=ge2*100/shi2;ge=conv_std_logic_vector(zhankongbi rem 10),4);shi=conv_std_logic_vector(zhankongbi/10) rem 10),4);为得到占空比的数码管显示,把zhongkongbi和10求余,结果转换成四位二进制,即求的数码管的个位显示。把zhongkongbi除以10后再和10求余,结果转换成四位二进制,即求的数码管的十位显示。五. 仿真各个模块的源程序见附录,对于各个模块的仿

21、真如下:模数转换模块:clk为状态机的时钟信号,eoc为转换结束信号,其他均为ADC0809的控制信号。当eoc变高电平后,转换结果输出,从仿真波形上可以很清晰的看出输出结果为17。比较模块:d为比较器输入,设定的阈值为128,当大于或小于128由fin可以很清晰的看出输出的结果,如果被测信号是周期信号,对应的fin输出也是周期信号。频率测量模块clk1为1Hz信号,fin是输入的脉冲信号,cnp1,p3为记数频率的结果,图中显示的结果为12.5Khz,没有超过量程。图为仿真波形,对于超量的频率设定不太容易实现,故仿真结果没有给出。但在实际的实验中,可以实现这个结果。占空比模块:3M的基准信号

22、在试验系统板直接可以给出,但在仿真中也应该给一个较高频率的时钟信号,对于占空比测量,在可以允许的范围内应竟可能的给一个高频的基准信号,因为频率越高输出的占空比结果会越接近真实值。仿真中给fin是一个占空比为65的方波信号,输出的结果为64基本满足真实值,满足设计要求。对总的系统仿真:从仿真波形图可以看出,仿真的结果并不像我所期望的那样,占空比没有显示出来,但在实验系统上下载调试时却能很好的显示出来。分析其原因,可能是输入信号的设定值不太合适,多次改变输入值,还是得到同样的结果,我想可能是各个模块之间连接有误,或者QuartusII在综合的过程中,综合出现错误,目前这个问题还没有解决。六. 总结

23、与心得体会本次课程设计很快结束了,但对于课程设计中的点滴依然记忆犹新,从拿到这个选题之后我就在思考,如何实现其设计要求。由于基础不是很好,对于这个题目,刚开始确实不知道从何下手,不过很快就有了点头序,大致的方向就是通过计数器对脉冲信号进行计数,然后把计数结果进行数值转换,送给数码管显示其频率值及占空比。这仅仅是一个大致的框架,至于要实现系统的功能,还需要进行一步一步的细化。对设计要求进行分析,可以把整个系统分成不同的模块,通过对不同模块的设计来实现整个系统的功能。下面考虑的重点就是对不同模块的设计,对模拟信号转换模块,对转换结果的比较,对频率和占空比的测量。模块设计这部分的难点就是通过语言来实

24、现模块的功能,功能和语言结合起来,很具有灵活性,特别对于VHDL语言基础不好的我确实是一个挑战。对程序的编写,仿真调试确实发了不少时间,不过几经修改,虽然不是最完美的程序,但经编译下载后也能实现设计的要求,心里颇感欣慰。从课程设计开始到结束自己一路走来,确实收获不少东西。这次的课程设计是众多次课程设计中最认真的一次吧,从设计到编程,再到撰写报告,都是我认真的一步一步做下来的。这期间我体会到了自己知识的不足,也感受到了成功的喜悦。通过自己亲自动手参与,更能体会到我们学电子的乐趣,理论知识的学习毕竟是单调无味的。以后就面临毕业了,可能这样的机会不会太多了,现在或许有些后悔之前对待实验和设计的态度。

25、这在大学期间最后一次的课程设计,我最大的收获就是一种态度。只要认真对待,总会有个好的结果的,虽然有些问道到现在还没有解决,但我依然认为我这次设计做的很成功。至于没有解决的问题,我会尽可能的寻求解决的办法。七. 参考文献现代电子系统设计 浙江大学出版社 何小艇主编 EDA技术使用教程 科学出版社 潘松 编著VHDL硬件描述语言与数字逻辑电路设计 西安电子科技大学出版社 侯伯亨编著附录一:系统的总电路图附录二:模数转换模块:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ADCINT IS PORT(D : IN STD_LOGIC_VECTOR(7

26、 DOWNTO 0); CLK : IN STD_LOGIC; EOC : IN STD_LOGIC; ALE : OUT STD_LOGIC; START : OUT STD_LOGIC; OE : OUT STD_LOGIC; ADDA : OUT STD_LOGIC; LOCK0 : OUT STD_LOGIC; Q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); END ADCINT;ARCHITECTURE behav OF ADCINT ISTYPE states IS (st0, st1, st2, st3,st4) ; SIGNAL current_st

27、ate, next_state: states :=st0 ; SIGNAL REGL : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL LOCK : STD_LOGIC; BEGINADDA = 0;Q = REGL; LOCK0 ALE=0;START=0;LOCK=0;OE=0; next_state ALE=1;START=1;LOCK=0;OE=0; next_state ALE=0;START=0;LOCK=0;OE=0; IF (EOC=1) THEN next_state = st3; ELSE next_state ALE=0;START=0;LO

28、CK=0;OE=1; next_state ALE=0;START=0;LOCK=1;OE=1; next_state next_state = st0; END CASE ; END PROCESS COM ; REG: PROCESS (CLK) BEGIN IF (CLKEVENT AND CLK=1) THEN current_state=next_state; END IF; END PROCESS REG ; LATCH1: PROCESS (LOCK) BEGIN IF LOCK=1 AND LOCKEVENT THEN REGL 10000000then fin=1; else fin=0; end if;end process; end one ;频率测量模块:library ieee;use ieee.std_logic_1164.all;use ieee.

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1