基于EDA的数字频率计系统设计_第1页
基于EDA的数字频率计系统设计_第2页
基于EDA的数字频率计系统设计_第3页
基于EDA的数字频率计系统设计_第4页
基于EDA的数字频率计系统设计_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

1、编号: 毕业设计说明书基于EDA的数字频率计系统设计电子工程与自动化学院测控技术与仪器Arwen尚玉玲副研究员题 目: 院 (系):专 业:学生姓名:学 号:指导教师:职 称:理论研究 实验研究 工程设计 工程技术研究 软件开发题目类型: 年 月 22 日摘 要频率计又称为频率计数器,是一种专门对被测信号频率进行测量的电子测量仪器,其最基本的工作原理为:当被测信号在特定的时间段T内的周期个数N时,则被测信号的频率f=NT.电子计数器是一种基础测量仪器,到目前为止已有三十多年的发展历史。早期,设计师们追求的目标主要是扩展测量范围,再加上提高测量精度、稳定度等,这些也是人们衡量电子计算机的技术水平

2、,决定电子技术器价格高低的主要依据。目前这些技术日臻完善,成熟。应用现代技术可以轻松地将电子计数器的频率扩展到微波频段。本文介绍了频率计的一种实现方法,即由FPGA和单片机相结合,构成整个系统的测控主体,被测信号输入到FPGA中进行频率的测量,FPGA将测得的数据返回给单片机,由单片机控制液晶1602进行显示。1602每行可以显示16个字符,总共有两行,即总共可以显示32个字符,因此,若要扩展频率计的计数范围,列如扩展到几十兆赫兹,显然1602要比数码管好用,方便扩展频率范围,编程也方便。此外,本次设计也加入了串口发送部分,可以把测得的频率数据通过串口发送给上位机,方便测量人员对于数据的读取,

3、具有现实的应用意义。关键词:单片机 FPGA 测频 VHDLAbstractFrequency meter, also known as a frequency counter, is a specialized electronic measuring instruments ,measuring the frequency of the measured signal, its most basic working principle is: When the number of cycles of the measured signal N within a specific time

4、period T,the measured signal frequency f = N / T. Electronic counter is a basic measuring instruments so far has been more than 30 years of development history. Early pursuit of the goal of the designers is to extend the measuring range, plus improve the measurement accuracy, stability, and these al

5、so measure the level of computer technology, the decision based primarily on the level of prices of electronic technology. These technologies are getting more sophisticated, mature. The application of modern technology can be easily extended to the frequency of the electronic counter microwave band.

6、 This paper describes an implementation method of frequency meter, that is, using the combination of FPGA and microcontroller, constitute the entire system monitoring body, the signal input to the FPGA for frequency measurements, FPGA return the measured data back to the microcontroller, the microco

7、ntroller control of liquid crystal display 1602. 1602 can be displayed 16 characters per line, two lines that can display a total of 32 characters, so that it can be used to expand the scope of counting frequency meter, columns such as extended to tens of megahertz, apparently digital handy than 160

8、2 to facilitate the extended frequency range, the programming is also convenient. In addition, this design also joined the serial transmission section, you can put the measured frequency data be sent to the host computer via the serial port to facilitate the measurement of personnel for data be read

9、, it has a practical application significance.Key words:microcontroller FPGA frequency measurement VHDL目 录引言11 数字频率计的要求21.1 主要内容21.2 技术指标 32 电子计数法测频原理33 整个测频系统的构思框图44 本次设计的硬件部分54.1 单片机部分54.2 FPGA部分 105 本次设计的软件部分115.1 单片机部分的程序流程图125.2 FPGA部分的程序 135.2.1 闸门产生模块135.2.2 测频控制器155.2.3 6位10进制计数器165.2.4 锁存器1

10、85.2.5 数据输出部分195.3 FPGA测频的顶层原理图216 电路调试216.1 硬件调试216.2 软件调试236.3 调试故障及解决办法256.3.1 硬件调试故障及解决办法256.3.2 软件部分调试257 测量记录集数据分析 278 结论29参考文献.30致 谢 .31附录A .32附录B. 35引言数字频率计是数字电路中的一个典型应用,实际的硬件设计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。随着现场可编程门阵列FPGA的广泛应用,以EDA工具作为开发手段,运用VHDL等硬件描述语言,将使整个系统大大简化,提高了系统的整体性能和可靠性。 随着

11、微电子技术、 大规模可编程逻辑器件 、新型显示器件和计算机技术的飞速发展,电子仪器也得到了进一步的发展,如功能单一的传统测量仪器逐步向智能仪器发展。 数字频率计是一种基本的测量仪器, 它被广泛应用于航天、电子、测控等领域。数字频率计可实现的方法、可选用的器件是多种多样的,可以运用传统模拟电路的手段如响应测频法、比较测频法测量,但是模拟信号由于其自身的特点没有数字信号稳定,因此数字电路出现后,马上就出现了数字频率计。但是数字电路的方法使用大量的数字元器件,电路原理复杂,硬件调试麻烦。以 EDA技术为核心的设计方法,使用的元器件少,原理电路简单,调试方便,只需要修改源程序即可。 EDA( 电子设计

12、自动化) 代表了当今电子设计技术的最新发展方向,它的基本特征是: 设计人员按照自顶向下 ( Top- Down) 的设计方法,对整个系统进行方案设计和功能划分,系统的关键电路用一片或几片专用集成电路( ASIC) 实现,然后采用硬件描述语言( HDL) 完成系统行为级设计,最后通过综合器和适配器生成最终目标器件 EDA 技术可以通过软件编程对目标器件的结构和工作方式进行重构,能随时对设计进行调整,具有集成度高、结构灵活、开发周期短、快速可靠性高等特点,数字设计在其中快速发展,应用这种技术可使设计过程大大简化。 VHDL 语言最大的特点是描述能力极强, 可以覆盖逻辑设计的诸多领域和层次, 并支持

13、众多的硬件模型 其特点包括: 设计技术齐全,方法灵活,支持广泛; 系统硬件描述能力强; VHDL 语言可以与工艺无关地进行编程; VHDL 语言标准规范,易于共享和重用 频率是周期性信号在单位时间(1s)里变化的次数,而测量频率的方法从原理上大体可以分为: 电桥法 频响法 谐振法 模拟法 拍频法 比较法 差频发 李萨如图形法频率测量方法 示波法 电容充放电法 测周期法 数字法 电子计数式本次设计就是采用电子计数式中的测频法来进行测量,其基本原理是:首先让被测信号与标准信号一起通过一个闸门,然后用计数器计数信号脉冲的个数,把标准时间内的计数的结果,用锁存器锁存起来,最后把锁存的结果传给单片机,单

14、片机控制液晶1602进行显示。本次设计还加入了串口发送部分,单片机可以通过串口,将测得的数据发送到上位机,上位机可以用labview来接收显示,这就等于加入了虚拟仪器的思想。1 数字频率计的要求1.1 主要内容 (1) 研究基于EDA的数字频率计系统设计方法与原理。 (2) 硬件电路设计(FPGA和单片机结合,构成整个系统的测控主体,在 AT89C51 单片机的控制下送入FPGA芯片)。 (3) 基于EDA技术、VHDL语言完成各模块设计并仿真实现。 (4) 实现整机系统。1.2 技术指标: 基本指标:(1)测量范围:1HZ99.999KHZ,分频1HZ。(2)特点:利用EDA技术可提高电路设

15、计的效率。(3)方法:分模块设计,采用自底向上的文法。(4)输入波形:正弦波,方波,三角波。(5)显示方法:5位LED数码显示。(6)测量的范围在1HZ99.999KZH,分频为1HZ,并在数码管上显示。 (7)能够在EDA试验箱上显示出上述的波形并能够实现分频。 扩展部分:(1)测量的范围扩大,从1hz到999.999khz。(2)显示部分,由于测量频率有原来的5位数变成了6位数,如果用数码管来显示则显得累赘,因此改用液晶1602来进行显示。(3)增加串口发送部分,让上位机也可以显示,加入了虚拟仪器的思想。2 电子计数法测频原理在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案

16、、测量结果都有十分密切的关系。因此,频率的测量就显得更为重要。测量频率的方法有多种,其中电子计数器测量频率具有精度高、使用方便、测量迅速,以及便于实现测量过程自动化等优点,是频率测量的重要手段之一。数字式频率计的测量原理有两类:一是直接测频法,即在一定闸门时间内测量被测信号的脉冲个数 ;二是间接测频法即测周期法,如周期测频法。直接测频法适用于高频信号的频率测量,通常采用计数器、数据锁存器及控制电路实现,并通过改变计数器阀门的时间长短在达到不同的测量精度;间接测频法适用于低频信号的频率测量。直接测频法:即在一定闸门时间内测量被测信号的脉冲个数,计数结果直接显示在数码管上,当脉冲个数为N,闸门时间

17、为T时,则所测被测信号的频率f=N/T。优点:该方法精度高、使用方便、测量迅速,以及便于实现测量过程自动化,测量结果就是频率,简单易实现。缺点:存在量化误差和闸门时间误差,不宜测量低频信号的频率。间接测频法:即通过测量被测信号的周期来间接测频率,该方法以被测信号的周期Tx为闸门时间,对周期已知的脉冲信号计数N,则被测信号的频率为Fx=1/NTc。优点:测量精度高,误差较小缺点:不易实现,电路比较复杂,结果不直观综合比较以上两种方案,本着简单易实现和高性价比的原则。选用直接测频法。根据频率的定义,若某一信号在T时间内重复变化了N次,则可知该信号的频率为F=N/T这种方法可简称为“定时计数”,其实

18、际属于比较法测频,比较的时间基准是闸门信号T。一般的数字频率计主要由4个部分构成: 输入电路、闸门电路,计数显示电路和控制电路,信号调理器、闸门电路,计数、译码、显示、清零、时基和逻辑控制电路等组成。测频的原理框图如下:显示器译码器计数电路主门(与门)放大整形Us(Fs) 控制(逻辑)电路门控双稳分频整形Fc 10ms 10s图 2.1 测频的原理框图3 整个测频系统的构思框图用单片机或者FPGA都可以单独实现测频,而只基于单片机的频率测量计设计主要是以单片机为基础,原理简单,但由于自身精度问题使测量的范围小,且本次设计的任务书要求用FPGA和单片机构成整个测频体系的主体,并且基于FPGA和单

19、片机结合的频率测量设计主要是以单片机作为系统的主控部件,FPGA完成对时序逻辑控制、计数功能,能较好的利用了FPGA的高精度、高速等方面的优势。单片机和FPGA,首先从它们的工作方式上说,完全就是两种截然不同的器件,一般单片机集成度较高,它可以单独完成信号采集、运算、还有I/O设备控制;而FPGA的特点则是逻辑控制能力很强,且性价比非常高,但是不适合单独使用,且没有指令系统,常会与DSP、ARM、单片机等结合使用,发挥各自的优势,使系统的功能更全面、高效、可靠。另外,FPGA的价格要比单片机贵很多。FPGA与单片机相对比,主要优势是速度快、应用灵活,主要是源于FPGA的硬逻辑方式,由于FPGA

20、的逻辑功能全部用硬件电路实现,因此所有的延迟只来源于门电路,而且一般的门电路延时都在ns级别。根据测频的原理以及这次设计的任务书的要求,整个测频系统的构思框图如下:整形电路FPGA输入信号选通信号测量数据1602显示AT89C51 LCD输出 按键控制 上位机显示 串口输出图3.1 整个测频系统的构思框图输入信号为正弦波、方波、三角波的任意一种,经过整形电路以后都变成便于FPGA进行测频的脉冲信号,FPGA对输入的信号进行计数,接着根据单片机传来的选通信号把测得的24位数据(FPGA传过来的是BCD码,测频的范围要达到六位数故有24位BCD码)输出给单片机,单片机将数据处理后送去1602显示,

21、并根据按键的有无选则是否发送给上位机。4 本次设计的硬件部分 硬件部分是整个测量体系的基础,硬件的好坏也关系到这次设计的成败。这次设计的硬件主要分为两大模块:单片机部分和FPGA部分。4.1 单片机部分单片机部分的硬件电路分为六个模块:单片机主体系统、整形电路模块、显示模块、独立按键模块、下载器串口模块及MAX232的串口发送模块。下面对各个模块进行分析。这部分的设计思路是:利用单片机P2口接收FPGA传送过来的测频数据,将接收到的数据经P0口送到液晶1602进行显示,同时判断有无按键按下,若有,则同时将测得的数据通过串口发送给上位机进行显示。整形电路的作用是把输入的正弦波,三角波、和方波整形

22、成周期性的脉冲信号,以便于直接输入FPGA进行测频。 下面是各个小模块的电路图(1)单片机主体部分单片机最小系统包括单片机、复位电路和晶振电路,其原理图如图4.1: 图4.1 单片机主体本次用的单片机是AT89S52,AT89S52主要性能特点:4k Bytes Flash片内程序存储器;128 bytes的随机存取数据存储器(RAM);32个外部双向输入/输出(I/O)口;2个中断优先级、2层中断嵌套中断;6个中断源;2个16位可编程定时器/计数器;2个全双工串行通信口;看门狗(WDT)电路;片内振荡器和时钟电路;与MCS-51兼容;全静态工作:0Hz-33MHz;三级程序存储器保密锁定;可

23、编程串行通道;低功耗的闲置和掉电模式。这次用的AT89S52其32个I/O口都基本上用上了。其P1口用来接收按键信息以及控制下载口,如图4.2:按键电路 下载口图4.2 按键电路以及下载口电路AT89S52的P0口用来把测得的数据送给液晶显示,因为P0口要接负载,所以应先对其进行写1操作,即接排阻拉高,P0口所接电路如图4.3所示:图4.3 液晶1602电路 液晶部分本来en端和rst端是接到P20和P21的,但是结合到后面的FPGA要向单片机传送数据部分的电路,采用并行传送,一次传送8位,而现在P0和P1口已经被占用了,P3口的几个脚也被串口部分占用了,这样就没有一个完整的并行I/O口可以用

24、来接收数据,因此后面我把液晶部分的en端和rst改接到P33和P32脚去了。这样就可以把P2脚完整的空出来以接收FPGA传送过来的数据,便于软件部分的编写。单片机的晶振电路和复位电路都是固定的接法,在此也不做详细介绍,只把电路贴出来,其中晶振的频率是11.0592MHZ的晶振,之所以选11.0592MHZ的晶振而不是选12MHZ的晶振,原因是如果用12MHZ的晶振则上位机不能正常接收串口传来的数据,接收到的只是一堆乱码,这一点已经经试验验证过了,如果把晶振频率改为11.0592MHZ则可以正常显示接收到的数据。晶振电路和复位电路如图4.4所示。复位电路 晶振电路图4.4 单片机的晶振电路和复位

25、电路(2)电平转换电路图4.5电平转换电路这部分电路的作用是将单片机发出来的数据的电平转换为电脑可以识别的电平,其主体芯片为MAX232,MAX232芯片是专门为电脑的RS-232标准串口设计的接口电路,使用+5v单电源供电。内部结构基本可分三个部分: 第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。 第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。8脚(R2IN)、9

26、脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DP9插头;DP9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。 第三部分是供电。15脚DNG、16脚VCC(+5v)。串行接口DB9常用信号脚说明如下:1脚 数据载波检测 DCD; 2脚 接收数据 RXD;3脚 发送数据 TXD; 4脚 数据终端准备 DTR5脚 信号地 GND; 6脚 数据设备准备好DSR7脚 请求发送 RTS; 8 清除发送 CTS9脚 振铃指示

27、RI 本次用到的就只有从MAX232接收数据的2脚以及向MAX232发送数据的3脚,因为本次设计只需要进行单向数据传送。其中公头和母头的接法是不一样的,在具体的使用时要加以区分,否则不能进行正常的数据传送。(3) 整形电路部分 图4.6 整形电路这部分电路的主体芯片是LM393,LM393是由两个独立的、高精度的比较器组成的集成电路,失调电压低、失调电压最大为2mv。它专为获得宽电压范围、单电源供电而设计,也可以以双电源供电;而且无论电源电压大小,电源消耗的电流都很低。它还有一个特点:即使单电源供电,比较器的共模输入电压范围都接近地电平。 LM393主要应用于限幅器、简单的模/数转换器、方波发

28、生器、延时发生器、宽频压控振荡器、MOS时钟计时器、多频振荡器和高电平数字逻辑们电路。393被设计成能直接连接TTL和CMOS;当用双电源供电时,它能兼容MOS逻辑电路,这是低功耗的393相较于标准比较器的独特优势。 LM393的优势:高精度比较器;减少由于温漂引起的失调电压;可以单电源供电;输入共模电压范围接近地电平;兼容逻辑电路。 LM393的特点:电源电压范围宽(单电源:2V到36V,双电源:正负1V到正负18V);电源电流消耗很低(0.4mA);输入偏置电流低(25nA);输入失调电流低(正负5nA);最大输入失调电压(正负3mv);输入共模电压范围接近地电平;差模输入电压范围等于电源

29、电压;输出饱和电压低(250mv at 4mA);输出电平兼容TTL,DTL,ECL,MOS,CMOS逻辑系统。整形电路是对正弦波,三角波等一些不是方波的待测信号转化成方波信号,便于测量。使用的是LM393芯片做的的过零电压比较器,来实现电路的整形。电路中R1,R2,R3形成正反馈,在R2上的分压构成比较器的参考电压Vref,输入信号从负端输入,运放处于开环工作状态,具有很高的开环增益,当输入信号电压Vi小于参考电压,运放处于负饱和状态,V0=V0L;当输入信号电压大于参考电压时,运放立即转入正饱和状态,V0=V0H,由于运放的开环增益很大,所以V0几乎是突变的,输出电压V0就是只有高低电平变

30、化的周期性脉冲,本次设计引入正反馈,构成一个迟滞比较器可以避免输入信号附近的微小干扰,避免输出电压产生抖动。迟滞比较器是一个具有迟滞回环传输特性的比较器。在反相输入单门限电压比较器的基础上引入正反馈网络,就组成了具有双门限值的反相输入迟滞比较器。由于反馈的作用这种比较器的门限电压是随输出电压的变化而变化的。它的灵敏度低一些,但抗干扰能力却大大提高。迟滞比较器又可理解为加正反馈的单限比较器。4.2 FPGA部分 FPGA是现场可编程门阵列(Field Programmable Gate Array)的简称,与之相应的CPLD是复杂可编程逻辑器件(Complex Programmable Logi

31、c Device)的简称,两者的功能基本相同,只是实现原理略有不同,所以有时可以忽略这两者的区别,统称为可编程逻辑器件或CPLD/PGFA。CPLD/PGFA几乎能完成任何数字器件的功能,上至高性能CPU,下至简单的74电路。它如同一张白纸或是一堆积木,工程师可以通过传统的原理图输入或硬件描述语言自由的设计一个数字系统。通过软件仿真可以事先验证设计的正确性,在PCB完成以后,利用CPLD/FPGA的在线修改功能,随时修改设计而不必改动硬件电路。使用CPLA/FPGA开发数字电路,可以大大缩短设计时间,减少PCB面积,提高系统的可靠性。这些优点使得CPLA/FPGA技术在20世纪90年代以后得到

32、飞速的发展,同时也大大推动了EDA软件和硬件描述语言HDL的进步。FPGA一般可由三种可编程电路和一个用于存放编程数据的SRAM组成,这三种可编程电路是:可编程逻辑块(CLB)、输入/ 输出模块( IOB)和互联资源( IR)。CLB是FPGA 的主要组成部分,是实现逻辑功能的基本单元。它主要是由逻辑函数发生器、触发器、译码器等电路组成。IOB提供了器件引脚和内部逻辑阵列之间的连接,通常排列在芯片的四周。其主要是由输入触发器、输入缓冲器、输出触发/锁存器和输出缓冲器组成。每一个IOB控制一个引脚,有输入、输出或双向I/O三种功能。这部分的硬件主要是一块FPGA最小系统版和一个usb-blast

33、er 下载器,如图4.7所示:图4.7 FPGA主体板FPGA最小最小系统板的主体芯片是EP2C5T144C8,其资源表如下: 这块芯片的特色为:器件LE = 4,608;内部RAM = 119,808;PLL = 2;配置EPROM芯片采用EPCS4,大小为4Mbit;板载50M有源贴片晶振;电源采用大口电源插座,单5V供电;板上有电源指示灯和复位开关;板载3个贴片 LED,可以做简单的测试实验,更多实验利用引线完成所有IO口和时钟引脚通过排针引出,通过这些接口可以扩展任何存储器和外设。支持NiosII嵌入式CPU的开发。外表美观大方, 含有定位孔, 摆放自如.板载两种下载模式,即AS 模式

34、和JTAG模式。 一般来说Altera公司Cyclone或者CycloneII系列FPGA相应的配置器件会选择EPCS 系列串行 FLASH。一般使用 AS 模式下载 EPCS 系列器件。但有时候可能遇到 AS模式不能成功下载的案例,原理图以及 PCB板都是按照推荐电路设计,这时候我们可以通过Flash Loader检验EPCS器件是否良好。 即通过JTAG方式下载EPCS系列器件。如果这种方式还是不能进行正确的 AS 模式的下载的话,可能 EPCS 器件本身已经不能正常工作了。5 本次设计的软件部分 如果说硬件是整个测试系统的基础的话,那么软件就是整个测试系统的精华,要实现所要求的功能,比如

35、说测量频率的范围、精度等,所有这些都是要靠软件来实现。一个完整的软件开发流程应该包括以下这几个步骤;(1)、调研报告:向客户调研软件项目的需求,需要工作流程,功能要求等等。编写需求分析报告,并经过评审通过为止。(2)、系统分析:根据调研报告,分析软件系统的功能要求,外部接口,系统的运行环境(软、硬)以及开发环境。 (3)、概要设计:根据调研报告,系统分析结果完成系统的功能划分。数据库的结构设计(概念设计、物理设计),编写概要设计说明书,并经过评审通过为止。(4)、详细设计:根据概要设计说明书,完成详细功能切分,界面设计以及功能函数、接口函数的分类,编写详细设计说明书,并经过评审通过为止。 (5

36、)、编码:根据详细设计说明书,完成编写各类代码的工作。 (6)、单元测试:将软件系统按功能划分成单元,进行单项测试。 (7)、系统测试:在单元测试无误的情况下,完成整个软件的总体测试,并进行软件系统的安装制作(制作成安装盘制作成安装盘制作成安装盘制作成安装盘),通过安装程序在目标机器上进行安装,再多次测试软件的整体性能,并编写出软件测试报告。 (8)、用户手册:在软件项目开发完成,并且系统测试无误后,编写用户操作手册(包括安 装说明、使用说明、运行环境以及注意事项)。 (9)、使用培训:软件研发结束后,应对用户进行培训。 (10)、文档管理:软件项目的所有文档,包括源程序移交专人保管。(11)

37、、系统维护:经常进行系统维护工作(根据“客户信息反馈表”酌情进行维护)。在本次设计中,软硬件都比较简单,显然不用这么多步骤,只需结合相应的硬件和所要实现的功能来编写就行,另外也应该用自己所擅长的编程语言来进行编写。软件部分也是根据整个测频体系的构成,把软件部分分成单片机和FPGA两大部分。5.1 单片机部分的程序流程图开始判断有无按键按下串口方式初始化有1602初始化串口发送给上位机无1602第一行显示THE FREQUENCY IS结束en=1,接收FPGA传来的数据。数据送到1602进行显示图5.1 单片机部分的程序流程图总体程序以及注释见附录。5.2 FPGA部分的程序 这部分程序的功能

38、就是实现测频,因此包括的部分有:闸门产生模块,测频控制器 ,十进制计数器,6位10进制计数器,锁存器,数据输出部分。下面一一进行介绍; 5.2.1 闸门产生模块 频率计电路工作时先要产生一个计数允许信号(即闸门信号),闸门信号的宽度为单位时间,如1S。在闸门信号有效时间内,对被测信号计数,即为信号的频率。该频率计电路的精度取决于闸门信号T。这部分最初的构思是利用FPGA自带的50MHZ的晶振,进行一次50分频,六次10分频,进而产生出1HZ的闸门信号,但是后面发现这样分频产生的闸门信号作为输入时所测得的数据一值在跳动,因此怀疑这块板子的晶振不稳定,于是决定从外部信号源输入一个稳定的闸门给FPG

39、A进行测量。本设计中选取的基准信号频率为1khz,为了得到1s高电平的周期性闸门信号,本设计采用对频率为1khz基准信号进行3个10分频,这样得到的门闸信号高电平为1秒钟。10进制计数器的VHDL程序如下: library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity jishu10 is -十进制计数器的实体描述部分port(clk,rst,en:in std_logic; -端口定义cq:out std_logic_vector(3 downto 0);cout:out std_logic);

40、end jishu10;architecture behav of jishu10 is -十进制计数器的结构体描述部分beginprocess(clk,rst,en)-进程语句variable cqi:std_logic_vector(3 downto 0); -VHDL的变量定义beginif rst=1 then cqi:=(others=0); -判断开始计数的条件elsif clkevent and clk=1 thenif en=1 then if cqi=9 then cqi:=(others=0);cout=1 ; -计数满就产生溢出else cqi:=cqi+1;cout=0

41、;end if;end if;end if;cq=cqi;end process;end behav;编译成功后进行仿真,仿真结果如图5.2.1:图5.2.1 10进制计数器仿真图仿真结果正确,将底层VHDL产生的10进制计数器生成为元件图一边顶层调用,如图5.2.2:图5.2.2 10进制计数器顶层图将生成的10进制计数器按图5.2.3连接来得到1S高电平门闸信号。图5.2.3 1s闸门产生图对生成的电路进行仿真,得到仿真波形如图5.2.4:图5.2.4 1s闸门产生仿真图将其电路生成如图5.2.5,以便顶层调用。图5.2.5 1s闸门产生顶层图5.2.2 测频控制器 测频控制器应具有三个功

42、能: (1)产生 1S 闸门信号,控制计数器的启停; (2). 产生计数清零信号,使计数器在下一个计数周期前清零; (3). 产生锁存信号,将计数器的计数结果送入锁存器和显示器。测频控制器的时序应该如图5.2.6所示: 计数器在使能允许的高电平内进行计数,当使能信号置低后,锁存信号有效,图5.2.6测频控制器时序图计数结果进行输出,计数结果输出完后锁存信号置低,复位信号有效,在下一次计数之前先复位清零。现在控制信号发生器用74161构成4分频计数器,用一个与非门,一个或非门和一个异或门实现3种译码状态,与闸门模块按图5.2.7进行连接。图5.2.7测频控制器图对其进行编译,编译成功后进行仿真,

43、仿真结果如图5.2.8图5.2.8测频控制器仿真图将测频控制器生成元器件图,供顶层调用:图5.2.9测频控制器顶层图5.2.3 6位10进制计数器 将前面生成的10进制计数器元件图按图5.2.10连接,产生6位10进制计数器,其计数结果可以从1到:图5.2.10 6位10进制计数器图其中,元件BZ的程序如下:library ieee;use ieee.std_logic_1164.all;entity BZ is -并置元件部分实体 port(c1:in std_logic_vector(3 downto 0); -第一个计数器的计数结果 c2:in std_logic_vector(7 do

44、wnto 4); -第二个计数器的计数结果 c3:in std_logic_vector(11 downto 8); -第三个计数器的计数结果 c4:in std_logic_vector(15 downto 12); -第四个计数器的计数结果 c5:in std_logic_vector(19 downto 16); -第五个计数器的计数结果 c6:in std_logic_vector(23 downto 20); -第六个计数器的计数结果 D:out std_logic_vector(23 downto 0) -第七个计数器的计数结果 );end entity;architecture

45、bhv of BZ is begin process(c1,c2,c3,c4,c5,c6) begin D=c6&c5&c4&c3&c2&c1; -把六个四位数据并置成二十四位数据end process; end bhv;其作用是把6个10进制计数器各自产生的4位数字,按从低到高的顺序并置成24位数据,以便于FPGA发送给单片机。因为单片机的I/O口有限,不能一次性的接收24位数据,所以并置成的24位数据还要进行处理。将6位10进制计数器进行编译,编译通过后进行仿真,仿真结果如下:图5.2.11 6位10进制计数器仿真图其仿真波形真确无误后生成元件符号图如下图所示:图5.2.12 6位10进制

46、计数器顶层图5.2.4 锁存器 锁存器的作用是当计数的使能信号无效后,即计数完成后将计数的结果输出,使输出结果可以稳定的显示在液晶上,其中锁存信号是由测频控制器产生的 。其程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity lock1 isport(clk: in std_logic; cin:in std_logic_vector(23 downto 0); cout: out std_logic_vector(23 downto 0);end entity lock1 ;a

47、rchitecture one of lock1 issignal a:std_logic_vector(23 downto 0);beginprocess(clk,a)beginif clkevent and clk=1 then -时钟信号的上升沿来了就把计数 a=cin; -结果输出 end if;end process;cout=a;end one;编译成功后生产的元件图如下: 图5.2.13 锁存器顶层图5.2.5 数据输出部分 这部分是整个测频程序的关键部分,也是花时间最多的一部分,程序如下:library ieee;use ieee.std_logic_1164.all;enti

48、ty reg_8 isport(en,rst:in std_logic;din:in std_logic_vector(23 downto 0); -计数器记得的二十四位数据dout:out std_logic_vector(7 downto 0); -要输出的八位数据end reg_8;architecture behav of reg_8 issignal count: integer range 4 downto 0; -把count定义为五位的全局变量begin process(en,din,count,rst)-variable count: integer range 4 down

49、to 0;beginif rst=0then -复位信号来了,先把count清零count=0; elsif count=4 then - count自加到4后要进行清零count=0;-以便进行下一次状态的循环elsif enevent and en=1 then -使能信号上升沿来了 countdoutdoutdoutnull;end case;end process;end behav;这部分程序的作用是将锁存器传过来的24位数据分三批,每批传8位地传给单片机,是FPGA与单片机的通信部分。其中使能en和复位rst是由单片机产生的,单片机先令rst=0,使计数变量count=0,接着令en=1,产生第一个使能信号,使count=1,将低八位数据传送给单片机;接着再令en=1,产生第二个使能信号,使count=2,将中八位数据传送给单片机;最后再令en=1,产生第三个使能信号,使count=3,将高八位数据传送给单片机。这样24位数据就完全传送给单片机了。单片机接收数据的顺序也是先从低八位,到中八

温馨提示

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

评论

0/150

提交评论