《毕业设计论文基于FPGA的数据采集和回放系统的结构的设计.doc》由会员分享,可在线阅读,更多相关《毕业设计论文基于FPGA的数据采集和回放系统的结构的设计.doc(46页珍藏版)》请在三一办公上搜索。
1、摘 要数据采集系统一般由数据输入通道、数据存储与管理、数据处理、数据输出及显示这五个部分组成。输入通道要实现对被测对象的检测、采样和信号转换等工作。数据存储与管理要用存储器把采集到的数据存储起来,建立相应的数据库,并进行管理和调用。本课题设计了以FPGA 为核心逻辑控制模块的高速数据采集和回放系统,设计中采用了自顶向下的方法,先从系统的角度分析该系统要完成哪些功能。用系统级行为描述表达一个包含输入输出的顶层模块,同时完成整个系统的模拟与性能分析。然后将系统划分为各个功能模块,详细论述了各模块的设计方法和控制流程。FPGA模块设计使用VHDL语言,在QUARTUSII中实现软件设计和完成仿真。最
2、后在硬件上进行试验结果的验证,根据实验结果作修改后得出结果。本文给出了一些模块图形及端口说明和设计实现的思想,整个采集系统可实现现场模拟信号采集和信号的频率计数。 关键词:FPGA 数据采集 时钟逻辑运算 VHDL语言 AbstractGenerally,data acquisition system is made of the data input channels,data storage and management,data processing,data output and display of these five parts.Input channels of the mea
3、sured object in order to achieve the detection,sampling and signal conversion and so on .Data storage memory is used and managed to store data collected,which creats the corresponding database,and management and calls. The topic is designed to FPGA logic control module as the core of the high-speed
4、data acquisition and playback system,which is used the method of top-down approach.In the first place,the perspective of system analysis of the system which functions to complete act with system-level descripition of the expression that contains the top-level input and output modules,at the same tim
5、e the whole system simulation and performance analysis. Then the system is divided into various functional modules,which are use the language of VHDL in QUARTUSII to achieve the completion of the design and simulation software.Finally,it has test results for hardware verification,in accordance with
6、the revised results for the outcome. In this paper, it has gave a number of modules and port descripition and graphic design ideas. The entire sampling system can be realized at the scene analog signal sampling and signal frequency count.2 16 17Key words:FPGA data acquisition clock logic count the l
7、anguage of VHDL目 录 摘要IAbstractII绪论11 系统的总体结构31.1 基于FPGA的数据采集和回放系统的结构31.2 系统组成框图介绍42 系统原理与方案选择52.1 AD芯片选型及其原理52.1.1 AD芯片的选型52.1.2 ADC0809的引脚功能52.1.3 ADC0809应用说明及时序图62.2 频率测量原理及方案选择72.2.1 直接测频法原理72.2.2 等精度测频原理82.2.3 测频方法的选择92.3 FPGA内部运算模块的设计原理92.4 LED数码管显示原理及方案选择92.4.1 LED数码管的工作原理92.4.2 FPGA实现LED数码管静态
8、显示控制实现原理92.4.3 采用FPGA实现LED数码管动态显示控制实现原理102.4.4 LED数码管显示方案的选择103 系统设计及主要模块的实现113.1 系统设计的顶层实体原理113.2 AD控制转换功能模块的设计113.2.1 AD控制转换模块的端口说明113.2.2 AD控制转换控制模块的编程思想123.2.3 该模块的仿真波形及分析133.3 频率计模块133.3.1 检测模块的端口说明及编程实现133.3.2 频率控制模块端口说明及编程实现143.3.3 计数模块端口说明及编程实现163.3.4 锁存模块端口说明及编程实现173.4 分频模块183.4.1 分频模块的端口说明
9、及编程实现193.5 LED数码管显示203.5.1 LED数码管的端口说明及编程实现203.6 LED点阵显示模块213.6.1 该模块端口说明及编程实现224 软硬件调试244.1 软件使用中遇到的问题244.2 AD转换工作中遇到的问题244.3 频率计遇到的问题244.3.1 计数模块244.3.2 频率控制模块254.3.3 频率计254.4 点阵调试遇到的问题254.5 系统调试现象25结论26致谢27参考文献28附录系统程序2942绪 论在进入21世纪以后,伴随着半导体工艺的发展,集成电路的规模、性能和市场都有着突飞猛进的发展,越来越多的大规模集成电路被应用都计算机、通信、电子等
10、领域。集成电路以其高性能和低成本成为了众多领域的宠儿。集成电路是信息技术产业群的核心和基础。建立在集成电路技术进步基础上的全球信息化、网络化和知识经济浪潮,使集成电路产业的战略地位越来越重要,对国民经济、国防建设和人民生活的影响也越来越大。多年来,世界集成电路产业一直以3-4倍于国民经济增长速度迅猛发展,新技术、新产品不断涌现。目前,世界集成电路大生产的主流加工工艺技术水平为8英寸,0.35-0.25微米,正在向0.18微米、0.15微米、12英寸加工工艺过渡。目前,世界最高水平的单片集成电路芯片上所容纳的元器件数量已经达到80多亿个。未来电子产品的发展趋势为功能日渐复杂,然而体积却日渐缩小、
11、功率消耗的要求越来越严格,因此系统晶片(SoC)为半导体产业的重要发展趋势,系统晶片以互补金属氧化物半导体(CMOS)制造为主,将各种功能的元件整合至单一晶片中。除了CMOS制造之外,还有其他种类的制造技术,例如矽锗(SiGe)、双极型(Bipolar)、-族如砷化镓(GaAs)、氮化镓(GaN)、-族半导体等,大部分用于利基型之应用,如无线通讯之射频晶片、光通讯元件等。FPGA是现场可编程逻辑门阵列,它作为IC设计的领域,能灵活的实现各种功能。由于它的IP核能够可重复使用,这已经是当今IC设计的趋势。由于FPGA的加入改变了传统的IC设计的产品研究时间,同是缩短了产品上市时间,减低了开发成本
12、。此外,它还具有静态可重复编程和动态的系统重构特性,极大地提高了电子设计系统的灵活性和通用行。近年来,数据采集与处理的新技术、新方法,直接或间接地引发其革新和变化,实时监控(远程监控)与仿真技术(包括传感器、数据采集、微机芯片数据、可编程控制器PLC、现场总线处理、流程控制、曲线与动画显示、自动故障诊断与报表输出等)把数据采集与处理技术提高到一个崭新的水平。在计算机广泛应用的今天,数据采集的重要性是十分显著的。它是计算机与外部物理世界连接的桥梁。它在现代信息领域发挥着重要作用,是信息产品不可或缺的重要组成部分。因此选择基于FPGA数据采集系统设计是很有意义也是很有必要的。 数据采集系统一般由数
13、据输入通道、数据存储与管理、数据处理、数据输出及显示这五个部分组成。输入通道要实现对被测对象的检测、采样和信号转换等工作。数据存储与管理要用存储器把采集到的数据存储起来,建立相应的数据库,并进行管理和调用。数据处理就是从采集到的原始数据中,删除干扰噪声、无关信息和不必要的信息,提取出反映被测对象特征的重要信息。另外,就是对数据进行统计分析,以便于检索;或者把数据恢复成原来的物理量形式,以可输出的形态在输出设备上输出,如打印、显示、绘图等。数据输出及显示就是把数据以适当的形式进行输出和显示。本课题研究的主要内容是基于FPGA的数据采集和回放。其功能的实现是利用A/D转换芯片ADC0809采集外部
14、模拟信号形成数据,用FPGA芯片完成数据的采集,并利用D/A芯片DAC0832完成模拟信号的回放,同时利用显示模块完成相关的显示。 1 系统的总体结构 传统的数据采集系统,通常采用单片机或DSP作为控制模块控制ADC,存储器和其他外围电路的工作。随着数据采集对速度性能的要求越来越高,传统的采集系统的弊端越来越明显。单片机的时钟频率较低且用软件实现数据采集,使得采集速度和效率降低,软件运行时间在整个采样时间中占很大的比例。而FPGA(现场可编程门阵列)有单片机无法比拟的优势。FPGA时钟频率高,内部延时小,全部控制逻辑由硬件完成,速度快、效率高。1.1 基于FPGA的数据采集和回放系统的结构3该
15、系统的组成原理图见图1-1。该系统功能的实现是由FPGA经过一系列的逻辑运算和时钟运算给出控制启动ADC0809工作的信号,然后接收ADC0809的反馈信号,用FPGA芯片完成数据的采集,并利用D/A芯片DAC0832完成模拟信号的回放同时指挥频率计模块部分经过一系列的检测采集及计算,再将结果传递给FPGA,然后将结果送显。图1-1 系统总体方框图1.2 系统组成框图介绍本系统主要由四大部分组成AD转换模块、频率计模块、显示模块、分频模块。其组成部分的简要介绍如下:(1) AD转换部分:利用FPGA生成一个A/D采样控制器模块,产生STRAT(启动信号)、ALE(地址选通)、OE(转换数据输出
16、使能)三个信号来控制ADC0809工作状态。然后通过ADC0809的反馈信号将转换出的数据采集到FPGA的内部RAM中存储为下一步的处理做准备。(2) 频率计部分:这个部分包含了四小模块,它们分别是锁存器、检测信号模块、计数模块。而在形成频率计时主要是要产生clk(时钟信号)、teten(计数许可信号)、load(锁存信号)、clr_cnt(计数清零信号)这些为测量信号的频率做准备的信号。同时检测模块主要做的就是及时检测出信号的转换已经有一个周期,发出一个脉冲信号提示计数部分测频。(3) 显示部分:该部分主要是接收FPGA传递过来的数据同时通过驱动程序及相关的查表将结果显示出来。(4) 分频部
17、分:该部分主要是给其它三个部分提供所需的时钟信号,进行后续处理。2 系统原理与方案选择2.1 AD芯片选型及其原理2.1.1 AD芯片的选型AD芯片按照处理速度可分为低速、中速、高速。市场上的AD芯片也有很多,但是基于本系统的需要及价格方面的考虑,故选择ADC0809这款芯片。ADC0809是采样位数为8位的、以逐次逼近原理进行模数转换的器件。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。其主要特性有为:13(1)8路8位A/D转换器,即分辨率8位。(2)具有转换起停控制端。 (3)单个5V电源供电 (4)模拟输入电压范围05V,不
18、需零点和满刻度校准。 (5)工作温度范围为-4085摄氏度 (6)低功耗,约15mW。2.1.2 ADC0809的引脚功能ADC0809芯片有28条引脚,下面说明各引脚功能。IN0IN7:8路模拟量输入端。D1D8:8位数字量输出端。ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路。ALE:地址锁存允许信号,输入,高电平有效。START:A/D转换启动信号,输入,高电平有效。EOC:A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。OE:数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态
19、门,输出数字量。CLK:时钟脉冲输入端。REF(+)、REF(-):基准电压。Vcc:电源,单一5V。GND:地。2.1.3 ADC0809 应用说明及时序图其时序图见图2-1。其工作原理为:(1)ADC0809内部带有输出锁存器,可以与FPGA直接相连。 (2)初始化时,使ST和OE信号全为低电平。 (3)送要转换的哪一通道的地址到A,B,C端口上。 (4)在ST 端给出一个至少有100ns宽的正脉冲信号。 (5)是否转换完毕,我们根据EOC信号来判断。 (6)当EOC变为高电平时,这时给OE为高电平,转换的数据就输出到FPGA。 图2-1 AD0809时序图2.2 频率测量原理及方案选择2
20、.2.1 直接测频法原理常用的直接测频方法主要有测频法和测周期法两种。测频法就是在确定的阀门时间Tw内,记录被测信号的变化周期数(或脉冲个数)Nx,则被测信号的频率为:Fx=Nx/Tw.测频法原理如图2-2。测周期法就需要有标准信号的频率fs,待测信号的一个周期Tx内,记录标准频率的周期数Ns,则被测信号的频率为:Fx=Fs/Ns,测频法原理如图2-3。7 8 9 图2-2 测频法原理图2-3 测周期法原理2.2.2 等精度测频原理等精度测频原理如图2-4,在测量过程种,有两个计数器分别对标准信号和被测信号计数。首先给出阀门开启信号(预置阀门上升沿),此时计数器并不开始计数,而是等到被侧信号是
21、上升沿到来时计数器才真正开始计数。然后预置阀门关闭信号(下降沿)到时,计数器并不立即停止计数,而是等到被测信号的上升沿到来时才结束计数,完成一次测量过程。可以看出,实际阀门时间t与预置阀门时间t1并不是严格相等,但差值不超过被测信号的一个周期。等精度测频实现方法的原理图见图2-5。设在一次实际阀门时间t中计数器对被测信号的计数值为Nx,对标准信号的计数值为Ns。标准信号的频率为fs,则被测信号的频率为:fx=Nxfs/Ns。 图2-4 等精度测频原理图2-5 等精度测频实现方法原理图2.2.3 测频方法的选择计数器测频法主要有两种实现方法:直接计数测频法和等精度测频法。直接测频法只是简单地记下
22、单位时间内的周期信号的重复次数,其计数值会有1个计数误差。此方法测量精确度主要是取决与基准时间和计数器的计数误差。等精度测频方法是在直接测频方法的基础上发展起来的。他的阀门时间不是固定的值,而是被测信号周期的整数倍,即与被测信号同步,因此,摒除了对被测信号计数所产生1个计数误差,并且达到了在整个测试频率的等精度测量。但是这种测量方法整体实现起来太过复杂,因此没有选择。2.3 FPGA内部运算模块的设计原理逻辑运算模块主要是时钟逻辑运算,这是FPGA设计里面最复杂的模块,所以要考虑到各种情况的出现。系统之所以能够正常工作全部由逻辑运算模块进行运算处理,产生相应控制和操作。时钟主要有采样周期时钟、
23、扫描时钟、AD工作时钟等。各种逻辑运算的控制量由逻辑运算产生。原理上要求扫描周期内要保证单次扫描的快任务全部完成,即扫描周期采样周期快任务数,只有这样才有可能插入慢任务进行数据采集。3 4 112.4 LED数码管显示原理及方案选择2.4.1 LED数码管的工作原理LED数码管用7段发光二极管来显示数字,每一段都是一个发光二极管,加上小数点共有8个发光二极管。一般把所有段的相同一端相连,连接到地(共阴极接法)或者是连接到电源(共阳极接法)。共阴极LED数码管的公共端连接到地,另一端分别接一个限流电阻后在接到控制电路的信号端,当信号端为高电平时,该段即被点亮,否则不亮。共阳极接法相反,公共端连接
24、到电源,另一端分别接一个限流电阻后再接到控制电路的信号端,只有信号端为低电平是才被点亮,否则不亮。2.4.2 FPGA实现LED数码管静态显示控制实现原理FPGA实现LED静态显示控制的实现是运用硬件描述语言设计一个显示译码驱动器,即将要显示的字符译成7段码。由于FPGA有相当多的引出端资源,如果显示的位数N较少,可以直接使用静态显示方式,即将每一个数码管都分别连接到不同的8个引出端线上,共需要8XN条引出端线控制。5 102.4.3 采用FPGA实现LED数码管动态显示控制实现原理LED数码管动态显示的实现方法是依次点亮各个数码管使其循环显示,它利用的视觉暂留特性,可以达到多个数码管同时显示
25、的视觉效果。采用扫描方式来实现LED数码管动态显示,控制好数码管之间的延时是相当重要的。根据人眼视觉暂留原理,LED每秒导通16次以上,人眼就无法分辨LED数码管短暂的不亮,认为是一直点亮状态(其实LED数码管是一定的频率在闪动的)。但是,延时(导通频率)也不是越小越好,因为LED数码管达到一定亮度需要一定时间。如果延时控制不好则会出现闪动,或者亮度不够。2.4.4 LED数码管显示方案的选择LED数码管静态显示的实现方法简单,如果采用这种方法占用了太多的硬件资源。LED数码管动态显示占用硬件资源少的优点,实现方法相对要复杂一些。但是,对于本次的设计来说引出端的硬件资源非常有限,故我采用的是动
26、态显示的方法。3 系统设计及主要模块的实现3.1 系统设计的顶层实体原理该系统的顶层实体的原理图见图3-1。该顶层实体中由逻辑运算模块计算出所需要的时钟如采样周期时钟、扫描时钟、AD工作时钟、频率计阀门时钟。分别将它们传输给AD控制转换模块、LED显示模块、频率计模块、LEDALL点阵模块。使它们能够正常的完成系统的功能。 图3-1 顶层实体原理图3.2 AD控制转换功能模块的设计3.2.1 AD控制转换模块的端口说明该模块的方框图见图3-2。端口说明如下:DB:输入端口,它是8bit二进制数据输入。它的数据来源于ADC0809转换结束输出的数据;CLK_AD:输入端口,它是ADC0809的时
27、钟输入。它的时钟信号输出是250KHz的方波信号。ENABLE:输出端口,它是ADC0809的输出使能端口。当ENABLE为1ADC0809的八个输出管脚输出转换后的数据。START:输出端口,它是ADC0809的转换启动端口。在ADC0809启动前START信号必须给出一个至少有100ns宽的正脉冲信号,才能保证转换的正常启动。 EOC:输入端口,它是ADC0809转换结束的标志。当EOC为高电平时表示转换结束。R:输入端口,它是ADC0809转换复位的标志。当R为高电平时表示状态机恢复初始状态。OUTDA:输出端口,它是8bit二进制的数据输出。它的数据是ADC0809转换结束后的数据。主
28、要是将这些数据写入到DAC0832芯片中进行处理。 图3-2 AD控制模块方框图3.2.2 AD控制转换控制模块的编程思想由于在硬件设计上,ALE和START并在一起,通道选择端固定在选通通道0上,开始转换的同时锁存通道0。AD控制器模块实现是通过莫尔状态机实现的。它主要是产生AD转换所需要的时序。故此状态机有七种状态分别是S0、S1、S2、S3、S4、S5、S6。其中S0代表的是转换的初状态此时START=0,ENABLE=0。S1代表的是转换启动状态此时START=1,ENABLE=0。S2代表的是转换期间状态此时START=1,ENABLE=0。S3代表的是转换结束状态此时START=0
29、,ENABLE=0,EOC=1。S4代表的是数据输出状态此时START=0,ENABLE=1,EOC=1。S5代表的是读入数据状态此时START=0,ENABLE=1。S6代表的是返回AD转换的初始状态。每当有时钟上升沿的到来时,状态机根据各个状态条件来决定下一个状态及相关的端口输出。3 4 7 8 9 14 153.2.3 该模块的仿真波形及分析模块的仿真波形见图3-3。由该仿真波形可以得出本模块的编写没有问题。因为它输出信号ENABLE、START、EOC波形与AD工作时序图(见图2-2)一致 。 图3-3 AD控制部分仿真波形3.3 频率计模块频率计模块是这个系统设计的最复杂的一个部分,
30、它包含了四个小模块分别是检测模块、频率控制模块、计数模块、锁存模块。其中检测模块是检测AD转换数据中的8bit二进制数据,一旦检测到设定的特殊码就产生一个高电平的脉冲;频率控制模块主要是负责产生计数所需的控制信号;计数模块则是记录标准时钟1s内检测模块产生高电平次数每来一个高电平则计数值加1;锁存模块就是锁存住每次的计数值,然后在上升沿到来时将计数值传输给LED显示模块。它的方框图见图3-4。 图3-4 频率计模块方框图3.3.1 检测模块的端口说明及编程实现(1) 该模块的方框图见图3-5。端口说明如下:CLK:输入端口,它是检测模块扫描时钟。主要是用来与AD转换后的数据实现同步的扫描信号,
31、它的来源是AD芯片送出的信号ENABLE(数据转换输出使能)。DB:输入端口,它是检测模块的8bit二进制数据输入的端口。它的数据来源于 AD转换后输出的8bit二进制数据。Q:输出端口,它是检测模块的结果输出端口。当它输出高电平脉冲信号时,它代表了检测到了AD转换数据中的8bit二进制数据中设定的特殊码到来。 图3-5 检测模块方框图(2) 该模块的编程实现该模块的编程思想是通过扫描时钟对AD转换结束后的数据进行逐个数据进行扫描,然后根据扫描的数据判断是否扫描到设定的特殊码,如果是就发送一个高电平的脉冲信号。然后将这个信号传递个后面的模块进行后续处理。(3) 该模块的仿真波形及分析模块的仿真
32、波形见图3-6。由图中可以看出,一旦有数据被检测到就会输出一个高电平,无则输出低电平。这与编程思想相符合。图3-6 检测模块仿真波形3.3.2 频率控制模块端口说明及编程实现(1) 该模块的方框图见图3-7。端口说明如下:CLK:输入端口,它是频率控制模块的时钟输入端口。它主要是产生控制信号的标准输入时钟。它的频率是1Hz。TETEN:输出端口,它是频率控制模块的计数允许的输出端口。当它为高电平时,表示允许计数器的计数。LOAD:输出端口,它是频率控制模块的锁存允许的输出端口。当它为高电平时表示允许其将计数器的计数值锁存。CLR_CNT:输出端口,它是频率控制模块的计数清零信号输出端口。当它为
33、高电平时表示允许其将计数器的计数值清零。每次计数开始时该信号就需要输出一个高电平的脉冲。 图3-7 频率控制模块方框图(2) 频率控制模块编程实现 该模块的作用是产生测频所需要的各种控制信号。控制信号的标准输入时钟为1Hz,每两个时钟周期进行一次频率测量。该模块产生3个控制信号率测量TETEN,LOAD,CLR_CNT。其中CLR_CNT信号用于在每次测量开始时,对计数器的复位,以清除上次的测量结果,复位信号高电平有效,持续时间为半个时钟周期的时间。TETEN为计数允许信号,在其为上升沿时计数器模块开始对输入信号的频率进行测量。测量时间恰为一个时钟周期(正好为单位时间1s),在此时间里对被测信
34、号的脉冲数进行计数,即为信号的频率。然后将计数值锁存,并送到数码管显示进行后续处理。设置锁存器的好处是使显示的数据稳定,不会由于周期性的清零信号而不断闪烁。在每一次测量开始时,都必须重新对计数器清0。控制模块的几个控制信号的时序关系如图3-8所示。从图中可看出,计数使能信号teten在1s的高电平后,利用其反相值的产生锁存信号load,随后产生清零信号上升沿clr_cnt。清零信号是CLK与TETEN同或得到的。 图3-8 控制信号时序关系图(3) 该模块的仿真波形及分析模块的仿真波形见图3-9。由波形图中可以看出,TETEN是CLK1的二分频。每次计数开始CLR_CNT置高电平即清零。LOA
35、D信号波形与TETEN信号波形相反。这与控制信号的时序关系相符合。图3-9 频率控制模块的仿真波形3.3.3 计数模块端口说明及编程实现(1) 该模块的方框图见图3-10。端口说明如下:CLK:输入端口,它是频率计数模块的时钟输入端口。它是标准时钟信号,其频率为1Hz。CLR:输入端口,它是频率计数模块的清零信号输入端口。它的作用是在每次计数开始时清除上次计数值。它是高电平有效。ENA:输入端口,它是频率计数模块的计数允许信号输入端口。当它为高电平时,表示允许计数器的计数允许。CQ:输出端口,它是频率计数模块的计数值的输出端口。它是加法器的输出结果,是4bit二进制数据即为BCD码。CARRY
36、_OUT:输出端口,它是频率计数模块的计数值的进位信号的输出端口。它输出的是加法器的进位信息。 图3-10 计数模块方框图(2) 计数模块编程实现该计数模块是由六个带有异步清零端,进位信号输出的模为10的计数模块级连而成。通过freq.vhd 进行元件例化实现。当清零信号的高电平到来时,不管此模块处于何种状态,它的计数值均要清零。由此可以看出清零信号的优先级最高。通过freq.vhd 进行元件例化实现的技术模块的内部信号连接关系为:当时钟上升沿到来并且计数器计数允许即ENA为高电平时,计数器开始计数,当计数值达到9以后,计数值清零并且进位信号输出一个高电平。此时这个高电平的进位信号作为敏感信号
37、触发下个计数模块的工作,如果这个计数模块的计数值达到9以后,计数值清零并且进位信号输出一个高电平。接着这个高电平的进位信号又作为敏感信号触发下一个计数模块的工作,依次类推直到所有的计数模块工作。它的级联输出是24bit的二进制加法数据。(3) 该模块的仿真波形及分析模块的仿真波形见图3-11。由波形图中可以看出,每当有清零信号CLR来到时计数值清零,当时钟上升沿时计数器计数,计到9时计数值变为0,此时进位端CARRY _OUT输出高电平。这与编程思想相符合。 图3-11 计数模块仿真波形3.3.4 锁存模块端口说明及编程实现(1) 该模块的方框图见图3-12。端口说明如下:LOAD:输入端口,
38、它是锁存模块的锁存允许的输入端口。当它为上升沿时计数值开始锁存,也可以将这个信号当作时钟信号。DIN:输入端口,它是锁存模块的锁存数据的输入端口。它是24bit的二进制数据输入,它的数据来源于级联的计数模块的各个计数值输出。DOUT:输出端口,它是锁存模块的锁存数据的输出端口。它是24bit的二进制数据输出,它的数据来源于级联的计数模块的各个计数值输出。 图3-12 锁存模块方框图(2) 锁存模块的编程实现这个模块的功能实现思想是当锁存信号的上升沿到来时,将锁存来自于级联的计数模块的输出的各个计数值传递给锁存输出端口。(3) 该模块的仿真波形及分析模块的仿真波形见图3-13。由波形图中可以得出
39、,一旦锁存信号LOAD的上升沿到来时,将锁存的数据输出。 图3-13 锁存模块仿真波形3.4 分频模块分频器通常用来对某个给定频率进行分频,得到所需的频率。整数分频器的实现非常简单,可采用标准的计数器,也可以采用可编程逻辑器件设计实现,但在某些场合下,时钟源与所需的频率不成整数关系,此时可采用小数分频器进行分频。所以对于基于FPGA的时钟分频,可以简单分为奇数分频与偶数分频,而且分频后时钟的占空比也是可变的,最简单的时钟分频就是对时钟进行计数,然后输出时钟信号等于计数器各位相与,这样得到的分频信号,其占空比很小,即时钟高电平只有一个,但由于FPGA设计的对时钟跳变沿的判断的精确性,故这种分频方
40、式也是可取的。3.4.1 分频模块的端口说明及编程实现(1) 该模块的方框图见图3-14及3-15。端口说明如下:CLKIN:输入端口,它是系统时钟信号输入端口。该时钟信号的频率是50MHz。CLK_LED:输出端口,它是LED数码管扫描信号的输出端口。它的时钟信号输出频率是2.5KHz。CLK_AD:输出端口,它是模数转换芯片ADC0809的转换时钟信号的输出端口。它的时钟信号输出频率是250KHz。FREQ1:输出端口,它是频率控制模块的标准时钟信号的输出端口。它的时钟信号的输出频率是1Hz。CLK_1M:输出端口,它是作为过渡信号连接CLK端口的时钟信号的输出端口。它的时钟信号的输出频率
41、是1MHz。 图3-14 分频模块方框图 图3-15 分频模块方框图(2) 分频模块的编程实现它主要是由FPGA提供50MHz的时钟信号,将其经过50分频产生1MHz信号后,再将1MHz信号经过4、400、1000000分频分别产生250KHz、2.5KHz及1Hz。其中250KHz的信号用于AD转换提供时钟信号;2.5KHz是用于给LED数码管提供扫描数据所用的时钟信号;1Hz是用来给频率控制模块提供标准测量时钟1s,用于查看被测信号的周期个数。(3) 该模块的仿真波形及分析模块的仿真波形见图3-16、3-17。由波形图中可以看出,分频得到的结果与编程思想相符。由于软件的时钟限制故不能完全反
42、应出它们的对应关系。 图3-16 分频模块FREQ1仿真波形 图3-17 分频模块PIN仿真波形3.5 LED数码管显示LED的显示模块原理:LED有段码和位码之分,所谓段码就是让LED显示出8.的八位数据,一般情况下要通过一个译码电路,将输入的4位2进制数转换为与LED显示对应的8位段码。位码也就是LED的显示使能端,对于共阴级的LED而言,低电平使能(在本实验箱中所有的LED均位共阴级的)。3.5.1 LED数码管的端口说明及编程实现(1) 该模块的方框图见图3-18。端口说明如下:CLK1:输入端口,它是数码管扫描时钟信号输入端口。该时钟信号的频率2.5KHz。OUTB:输出端口,它是显
43、示数据位选择输出端口。OUTA:输出端口,它是显示数据输出端口。 图3-18 LED数码管模块方框图(2) LED编程实现设计了一个3位的循环计数器,将计数结果输入到编写的38译码器程序中,译码结果输出即可依次点亮每个LED。同时再编写一个关于数码管数据转换所需的数据表。通过查表得到我们日常所见的十进制数。例如:要让8个LED同时工作,显示数据,就是要不停的循环扫描每一个LED,并在使能每一个LED的同时,输入所需显示的数据对应的8位段码。虽然8个LED是依次显示,但是受视觉分辨率的影响,看到的现象是8个LED同时工作。(3) 该模块的仿真波形及分析模块的仿真波形见图3-19。由波形图中可以看出,当时钟上升沿到来时,将计数值中的每四位数据转换为相应数码管输出所用的八位数据,并输出其LED数码管的相应的输出使能端。这与编程思想相符。图3-19 LED数码管模块仿真波形3.6 LED点阵显示模块LED点阵工作原理:它的行为扫描选通信号、列为数据输入。显示采用逐