版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目 录1.绪论11.1课题研究的意义11.2数据采集技术的发展历程和现状11.3本文的研究内容21.4系统设计涉及的理论分析22.系统设计42.1方案选择42.2系统框图53.单元电路设计63.1信号调理电路63.2高速模块73.3 FPGA模块设计83.4MCU模块设计83.5数据采集通道总体原理图93.6硬件电路总体设计94.软件设计104.1 信号采集与存储控制电路工作原理104.2 信号采集与存储控制电路的FPGA实现114.3 原理图中的各底层模块采用VHDL语言编写124.3.1三态缓冲器模块TS8124.3.2分频器模块fredivid134.3.3地址锁存器模块dlatch81
2、44.3.4地址计数器模块addrcount154.3.5双口RAM模块lpm_ram_dp164.4 数据显示模块设计184.4.1 主程序184.4.2 INT0中断服务程序194.4.3 INT1中断服务程序194.5软件仿真204.5.1三态缓冲器模块TS8204.5.2分频器模块fredivid204.5.3地址锁存器模块dlatch8214.5.4地址计数器模块addrcount215.系统调试215.1 单片机子系统调试215.2 FPGA子系统调试225.3 高速A/D模块的调试226 总结22致谢22参考文献23附录25高速数据采集系统设计摘要:随着数字技术的飞速发展,高速数
3、据采集系统也迅速地得到了广泛的应用。在生产过程中,应用这一系统可以对生产现场的工艺参数进行采集、监视和记录,为提高生产质量,降低成本提供了信息和手段。在科学研究中,应用数据采集系统可以获取大量的动态数据,是研究瞬间物理过程的有力工具,为科学活动提供了重要的手段。而当前我国对高速数据采集系统的研究开发都处于起步阶段,因此,开发出高速数据采集系统就显得尤为重要了。本文针对高速数据采集系统中的实时性、采集速率等问题提出了一种结合FPGA与单片机的低成本高速数据采集系统设计方案。该系统以高速SOC单片机C8051F360和FPGA EP2C8T144为核心,运用模块化设计方法,实现软硬件设计,具有一定
4、的实用价值。关键词:C8051F360;EP2C8T144;ADC;数据采集;高速1.绪论1.1课题研究的意义随着信息技术的飞速发展,各种数据的实时采集和处理在现代工业控制中已成为必不可少的。这就为我们的设计提出了两个方面的要求:一方面,要求接口简单灵活且有较高的数据传输率;另一方面,由于数据量通常都较大,要求主机能够对实时数据做出快速响应,并及时进行分析和处理。FPGA与单片机相比,有着频率高,内部延时小,内部存储容量大等优点,比单片机更适应与高速数据采集的场合。比如在某些高冲击、高振荡场合下,需要对冲击过程的加速度数据进行回收,包括实时采集、存储以及事后回读分析。在这样的环境下,要求数据回
5、收系统具有采集的高速、实时性;存储的及时、正确性。FPGA(现场可编程逻辑门阵列)在高速数据采集方面具有单片机和DSP所不具备的优点。FPGA所要完成的功能完全由内部可编程硬件电路实现,具有并行执行、速度快、多功能、低功耗、可现场反复编程等特点。使用FPGA构成数据采集系统还可以减化外围控制电路,使系统更加简洁有效。1.2数据采集技术的发展历程和现状在数字技术日新月异的今天,数据采集技术的重要性是十分显著的。它是数字世界和外部物理世界连接的桥梁。而随着现代工业和科学技术的发展,对数据采集技术的要求日益提高,在雷达、声纳、图像处理、语音识别、通信、信号测试等科研实践领域中,都需要高精度,高数据率
6、的数据采集系统。它的关键技术为高速高精度的ADC技术,高数据率的存储和缓存技术以及系统高可靠性保证等。通过数据采集技术,科研人员在实验现场可以根据需要实时记录原始数据,用于实验室后期的分析和处理,对工程实践和理论分析探索具有重大意义。正是由于目前数据采集技术广泛应用在科研实践和工业生产中的各个领域,当前国外对采集技术的研究和发展比较成熟。按通道数分有单通道的、双通道的、多通道的(多达上百通道);按采样率分可从几kHz到高达几个GHz;按分辨率分有8位、10位、12位、14位还有16位。在一些高端的示波器,频谱仪等测试仪器中,其采样率可达几个GHz,甚至几十个GHz。而国内由于发展时间短,芯片技
7、术等一些方面的限制,目前没有高水平的采集器出现。现在从高校到研究所到公司对采集器的需求越来越多,性能要求也越来越高。这种情况给我们研发和设计高速数据采集系统提供了很多机遇。1.3本文的研究内容设计一个高速数据采集系统,输入模拟信号为正弦信号,频率为200kHz,Vp-p小于等于0.5V。每次数据采集以20MHz的固定采样频率连续采集128点数据,采集完毕以后,用LCD模块回放显示采集信号波形。该系统具有实时采集、存储以及传输功能。(1)硬件设计:硬件部分包括FPGA最小系统电路、数据的实时采集电路、数据缓存部分以及与单片机通信接口部分电路等。(2)软件设计:通过编写程序,主要实现实时采集(A/
8、D采样)功能、数据缓存、与单片机进行通信等功能。(3)仿真结果及分析:主要是针对实时采集部分、数据缓存部分、与PC机通信部分进行时序仿真和功能仿真,根据仿真结果对设计进行分析。1.4系统设计涉及的理论分析1.4.1采样理论根据奈奎斯特定理,在进行模拟数字信号的转换过程中,只有采样频率fs大于被采样信号中最高频率fmax的2倍时,才能保证数字信号完整地保留了原始信号中的信息,实际应用中必须保证采样频率为信号最高频率的510倍。对于高频信号(f3MHz),则必须达到10MHz以上的采样速率。1.4.2模数转换(ADC)基本原理及常用AD转换技术模数转换器ADC用来把连续变化的模拟信号转换为一定格式
9、的数字量。ADC转换器实际上就是一个编码器,输入的模拟量经过信号调理电路,抗混滤波电路进入AD转换电路,AD转换电路将模拟信号转换为数字信号送入数据处理系统。AD转换部分通常包括采样和保持,量化和编码两个部分组成。(1)采样和保持:由于被转换的电压是一个随时间不断地变换的模拟量,也就是,在各个不同的瞬间它的大小是不同的。同时,要把一定幅度的电压转换为数字量都需要一定的时间。通常以一定的时间间隔周期地“读取”输入信号的大小,并转换为与其大小对应的数字量。这个过程被称为采样。采样定理告诉我们,一个频谱有限的模拟信号,其采样频率必须至少大于等于模拟信号最高有效频率分量的两倍,防止出现频谱的失真。由于
10、采样脉冲的宽度往往都是很小的,而实现转换是需要时间的,为使后续电路能很好的对这个采样结果进行处理,通常要把采样值保存下来,直到下一次采样再更新,这个过程为保持。(2)量化和编码:通过采样保持电路,输入信号虽然已经不是一个平滑的连续变化的电压,但它还是一个在某个区间范围内任意取值的模拟量。因此,用数字量来表示模拟量时就需要一个类似与四舍五入的过程,即量化。显然此过程,量化前后的值是不相等的,这个差值为量化误差。而且量化的等级越细,量化误差越小。量化后的信号,虽然是一个离散量,但是为了使数字系统可以对其进行传输和处理,还必须用若干位二进制代码来表示量化结果,这个过程就是编码。AD转换器的主要技术指
11、标如下:(1)分辩率(Resolution)指数字量变化一个最小量时模拟信号的变化量,定义为满刻度与n的平方的比值。分辩率又称精度,通常以数字信号的位数来表示。(2)转换速率(Conversion Rate)是指完成一次从模拟转换到数字的AD转换所需的时间的倒数。积分型AD的转换时间是毫秒级属低速AD,逐次比较型AD是微秒级属中速AD,全并行串并行型AD可达到纳秒级。采样时间则是另外一个概念,是指两次转换的间隔。为了保证转换的正确完成,采样速率(Sample Rate)必须小于或等于转换速率。因此有人习惯上将转换速率在数值上等同于采样速率也是可以接受的。常用单位是ksps和Msps,表示每秒采
12、样千百万次。(3)量化误差(Quantizing Error)由于AD的有限分辩率而引起的误差,即有限分辩率AD的阶梯状转移特性曲线与无限分辩率AD(理想AD)的转移特性曲线(直线)之间的最大偏差。通常是1个或半个最小数字量的模拟变化量,表示为1LSB、12LSB。(4)偏移误差(Offset Error)输入信号为零时输出信号不为零的值,可外接电位器调至最小。(5)满刻度误差(Full Scale Error)满度输出时对应的输入信号与理想输入信号值之差。(6)线性度(Linearity)实际转换器的转移函数与理想直线的最大偏移,不包括以上三种误差。1.4.3现场可编程门阵列(FPGA)基础
13、知识现场可编程门阵列(FiledProgrammable GateArray),简称FPGA,是在CPLD的基础上发展起来的高性能可编程器件。其集成度很高,密度从数万门系统到数千万门系统不等,可以完成及其复杂的时序和组合逻辑电路功能,适用于高速,高密度的高端数字逻辑设计领域。FPGA产品一般分为两种类型,一类是基于乘积项(ProductTerm)技术,用电可擦除可编程只读存储器(EEPROM)或闪存(Flash)制造,多用于5000门一下的小规模设计。另一类基于查找表(LookUp table)技术,用静态存取存储器(SRAM)工艺制造,密度高,触发器多,多用于10000 门以上的大规模设计。
14、采用SRAM工艺制造的FPGA,掉电后数据会消失,因此,调试期间可以用下载电缆配置FPGA器件,调试完成后,需要将数据固化到一个专用的EEPROM中,上电后,由这片配置EEPROM先对FPGA加载数据,十几个毫秒后,FPGA就可正常工作。FPGA的基本组成部分有可编程输入输出单元,基本可编程逻辑单元,嵌入式RAM,丰富的布线资源,底层嵌入功能单元,内嵌专用硬核等。(1)可编程输入输出单元输入输出单元(InputOutput)简称YO单元,它们是芯片与外界电路的接口部分,完成不同的电气特性下对输入输出信号的驱动和匹配需求。为了使FPGA有更灵活的应用,目前大多数FPGA的IO单元被设计为可编程模
15、式,即通过软件的灵活配置,可以适配不同的电气标准与YO物理特性;可以调整匹配阻抗特性,上下拉电阻;可以调整输出驱动电流的大小等。(2)基本可编程逻辑单元基本可编程逻辑单元是可编程逻辑的主体,可以根据设计灵活的改变其内部连接和配置,完成不同的逻辑功能。FPGA一般是基于SRAM工艺的,其基本可编程逻辑单元几乎都是由查找表(LUT,Look-Up table)和寄存器(Register)组成的。查找表一般完成纯组合逻辑功能。组合逻辑的输入作为地址线连接到查找表,查找表中已经事先写入了所有可能的逻辑结果,通过地址查找到相应的逻辑。寄存器用于完成同步时序逻辑设计。(3)嵌入式RAM目前大多数FPGA内
16、部都内嵌了块RAM(Block RAM)。FPGA内部嵌入可编程RAM模块,大大的扩展了FPGA的应用范围和使用灵活性。FPGA内部的RAM可以灵活配置为单端口RAM,双端口RAM,FIFO等常用存储结构。通过对RAM赋予初值,还可以实现ROM的功能。(4)丰富的布线资源布线资源连通FPGA内部所有单元,连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。FPGA内部有着非常丰富的布线资源,这些布线资源根据工艺,长度,宽度和分布位置的不同而被划分为不同的等级。有一些是全局性的布线资源,用于完成器件内部的全局时钟和全局复位置位的布线;一些叫做长线资源,用作完成器件Bank(分区)间的一些高速
17、信号和一些第二全局时钟信号的布线;还有一些叫做短线资源,用以完成基本逻辑单元之间的逻辑互联和布线等。在实现过程中,设计者一般不用直接选择布线资源,而是由布局布线器自动根据输入的逻辑网表的拓扑结构和约束条件选择可用的布线资源连通所用的底层单元模块,所以往往容易比忽略。其实布线资源的优化与使用和设计的实现结果有直接关系。(5)底层嵌入功能单元随着FPGA的发展,PLL,DLL,DSP,CPU等模块越来越多的被嵌入到FPGA的内部,以满足不同场合的需要。(6)内嵌专用硬核这里的内嵌专用硬核与前面的“底层嵌入单元”是有区别的,这里讲的内嵌专用硬核主要是指那些通用性相对较弱,不是所有FPGA器件都包含硬
18、核。FPGA的主要器件供应商有Xilinx,Altera,Lattic,Actel和Atmel等。2.系统设计2.1方案选择随着数据采集对速度性能指标越来越高,高速数据采集系统在自动控制、电气测量、地质物探、航空航天等工程实践中得到了十分广泛的应用。高速数据采集系统一般分为数据采集和数据处理两部分。在数据采集时,必须以很高的速度采集数据,但在数据处理时并不需要以同样的速度来进行。因此,高速数据采集需要有一个数据缓存单元,现将采集的数据有效地存储,然后根据系统需求进行数据处理。传统的数据采集系统通常采用单片机直接控制A/D转换器完成数据采集。用单片机控制A/D转换器,一般要通过启动A/D转换、读
19、取A/D转换值、将数据存入存储器、修改存储器地址指针、判断数据采集是否完成等过程。从本质上来说,基于单片机的数据采集系统是通过软件来实现特定功能的。在许多情况下,采用软件解决方案其速度限制是很难克服的。MCS-51单片机大多数指令的执行时间需要12个机器周期,完成一次A/D转换大约需要几十微秒。即使对于单片机机器周期、时钟频率可达100MHz的C8051F360单片机,如果用来控制高速A/D转换器,也很难达到几MHz以上的采样速率。通常构成高速缓存的方案有三种:第一种是高速SRAM切换方式。高速SRAM只有一组数据、地址和控制总线,可通过三态缓冲门分别接到A/D转换器和单片机上。但A/D采样时
20、,SRAM由三态门切换到A/D转换器一侧,以使采样数据写入其中。当A/D采样结束后,SRAM再由三态门切换到单片机一侧进行读写。这种方式下的优点是SRAM可随机存取,同时较大容量的高速SRAM有现成的产品可供选择,但硬件电路较复杂。第二种是FIFO(先进先出)方式。FIFO存储器就像数据管道一样,数据从管道的一头流入,从另一头流出,先进入的数据先流出。FIFO具有两套数据线而无地址线,可在其一端写操作而在另一端读操作,数据在其中顺序移动,因而能够达到很高的传输速度和效率。第三种是双口RAM方式。双口RAM具有两组独立的数据、地址和控制总线,因而可从两个端口同时读写而互不干扰,并可将采样数据从一
21、个端口写入,而由单片机从另一个端口读出。双口RAM也能达到很高的传输速度,并且具有随机存取的优点。可编程逻辑器件的应用,为了实现高速数据采集提供了一种理想的途径。利用可编程逻辑器件高速性能和本身集成的几万个逻辑门和嵌入式存储器块,把数据采集系统中的数据缓存、地址发生器、控制等电路全部集成进一片可编程逻辑器件芯片中,大大减少了系统的体积,降低了成本,提高了可靠性。同时,可编程逻辑器件实现逻辑重构,而且可实现在系统编程以及有众多功能强大的EDA软件的支持,使得系统具有升级容易、开发周期短等优点。由于本设计的高速采集系统,采样频率要求达到20MHz,同时要求采集的信号在LCD模块上显示模型,故采用单
22、片机和FPGA相结合的设计方案。模拟信号经过调理以后送高速A/D转换器,由FPGA完成高速A/D转换器的控制和数据存储,单片机从FPGA存储器中读取数据,经处理后在LCD上显示波形。2.2系统框图高速数据采集系统采用单片机和FPGA相结合的设计方案。系统框图如图2.2所示。模拟信号经过调理后送高速AD转换器,由FPGA内部的控制逻辑实现对高速AD转换器的控制和数据存储,单片机通过系统总线实现与FPGA的接口,通过该接口获取原始数据,然后通过算法完成对数据的处理及应用。整个系统由信号调理电路、AD转换器、FPGA模块、MCU模块、键盘及LCD显示模块等组成。数据采集系统首先对采集的信号进行前端处
23、理,如信号放大、滤波、直流电平位移等预处理,以满足AD转换器对模拟信号的要求。FPGA模块主要实现对高速ADC的控制及数据存储,单片机通过与FPGA器件的数据交换获得采集到数字信息,再进行相关的处理,并通过LCD显示及键盘接口实现较灵活的人机交换。图2.2 高速数据采集系统框图3.单元电路设计3.1信号调理电路在数据采集中,因AD转换器对模拟信号的幅度有一定的要求范围。ADS930在单端工作方式下,输入的模拟信号应在12V之间,为了使AD转换器能正常工作,确保最小的相对误差,在信号进行模数转换前,对输入的信号进行预处理,使之满足AD转换器的幅度要求。信号调理电路由射极跟随器、增益可调放大器、低
24、通滤波器几部分组成。(1)射极跟随器本设计采用射极跟随器,既可获得较高的输入阻抗,还可以在被测信号源与数据采集电路之间起到隔离作用。其原理图如图3.1.1所示。跟随器可以获得很高的输入阻抗,但是为了对信号源呈稳定的负载,在电路的输入端并联了一个电阻R1,这时,前置放大器的等效输入电阻约等于R1。(2) 增益可调放大器为了满足后接AD转换器输入电压范围的要求,因此对放大器的要求是增益可调,直流电平可调。根据以上要求,设计的放大电路原理图如图3.1.2所示。 增益可调放大器采用反相放大器的结构,放大倍数的计算公式如下: A=-RP1/R2 其中,RP1为精密电位器,调节RP1就可以调节放大器的增益
25、。如果R2取1k,RP1取10k,则增益的可调范围为0-10 。来自前置放大器的是双极性的交流信号,而A/D对输入信号的要求通常是单极性的。为了适合A/D的要求,本放大器中加了电平移位电路。电平位移电路有RP2组成,C1用于滤除高频噪声。调节Rp2就可以改变Vos的值,不过注意,Vos的值要经过1+RP1/R2倍的放大才送到输出端,因此,调节放大倍数的同时也会改变放大器输出端的直流偏移量。上述放大器中电位器RP1、RP2需手动调节,如果采用数控电位器代替,就可以得到程控放大器,这在自动化仪表设计非常重要。为了满足模拟输入信号的要求,整个信号调理电路应该有足够的带宽。为了防止信号中的无用分量(如
26、高频干扰信号)也经过通道被采样,信号在进入A/ D 之前要进行抗混叠低通滤波。为了简化电路,本设计中抗混叠滤波器采用了RC低通滤波,如图中所示R3和C2构成。低通滤波器的截止频率计算公式如下: f =1/(2pi*R3*C2) 图3.1.1 射极跟随器图3.1.2增益可调放大器3.2高速模块首先,A/D的转换速率取决于模拟信号的频率范围,根据设计题目要求,A/D转换速率应大于10MHz,为留有余量选择30MHz采样频率的ADC器件。其次,根据A/D转换原理,转换过程中存在量化误差。量化误差取决于量化位数,位数越多量化误差越小。题目对模拟信号的转换精度没有特别的要求,因此,选用常见的8位A/D转
27、换器。最后,FPGA为3V器件,故优先选用3V工作电压下的ADC器件,以简化电源设计和电平匹配。因此,我们采样了BURRBROWN公司的ADS930器件,该器件为8位30MHz采样AD转换器,具有单端差动输入、内部基准、高速宽跟踪捕捉的高速流水ADC器件。工作电压3V一5V,单端输入电压1V 2V。ADC的模拟输入采用单端输入、交流耦合方式,此时其IN(24)引脚与其内部参考电压的分压输出端CM(26)引脚相连,以保证15V的偏置电压。数字端主要包括数据输出DOD7,时钟CLK和数据输出使能/OE等,与FPGA器件相连,根据时序受FPGA控制。3.3 FPGA模块设计在高速数据采集方面,FPG
28、A具有单片机和DSP无法比拟的优势,FPGA的时钟频率高,内部延时小,而且速度快、效率高、组成形式灵活。FPGA内的嵌入式阵列块(EAB)可作为存储器使用,构成双口RAM或FIFO。设计中使用了Altera公司EP2C8T144,内含8256个基本逻辑单元(LE),18个嵌入式可编程RAM模块可灵活配置成单口RAM、双口RAM、FIFO等,满足大部分数字系统的设计要求。系统图如图3.3所示,其中与单片机接口的信号包括数据总线、地址锁存ALE、片选CS2、读使能RD、AD启动控制START和批量转换结束应答EOC等,与ADS930接口的信号包括ADC的8位数据、ADC读使能ADC OE和ADC时
29、钟等。控制操作时通过START启动AD转换,之后由FPGA控制ADS930进行模数转换,其转换时钟由40MHz有源晶振经FPGA内部锁相环2分频获得,实现20MHz的采样速率,每个时钟将AD转换的结果数据在存储到FPGA内部的双口RAM,同时地址计数器加1,以指向下一个RAM地址,供下次写入数;当双口RAM存储满时输出EOC有效,通知单片机获取批量数据。采用EP2C8TI44器件时,最大可实现8KB的双口RAM及接口逻辑,这样每批采样数据即为8032个,单片机可以等到一批数据采样完成后通过总线读取这些数据,再进行处理,并且单片机的数据处理和FPGA通过ADS930的数据采样可以同步进行,有效地
30、提高了单片机的工作效率。对于1次需采集更大容量数据的要求时,可采用更大容量的FPGA器件(如EP2C35),也可采用外置双口RAM器件(如IDT7312)实现。FPGA内部各模块通过VHDL语言和ALTERA提供参数化模块实现。3.4MCU模块设计本设计中单片机采用采用了Silicon Labs公司推出增强型51单片机C8051F360,解决了传统单片机系统的各种问题。由于C8051F360单片机内部集成了众多功能模块,几乎不需要外部电路就能构成最小系统,因此MCU模块仅设计了一片CPLD器件(EPM3064),主要实现键盘接口、LCD接口及地址译码等。CPLD的内部逻辑用VHDL语言和ALE
31、RTA的参数化模块实现,采用CPLD使电路具有很大的灵活性 。 图3.3 信号采集与存储控制电路系统图3.5数据采集通道总体原理图根据上述各部分的电路设计,可以得到如图3.5所示的数据采集通道原理图。运算放大器单位增益带宽为150MHz,当放大器的增益为10时,带宽为15MHz,不但满足设计要求,而且留有余地。ADS930的数据引脚、时钟引脚与FPGA I/O引脚直接相连。3.6硬件电路总体设计在前面设计的基础上,可以得到附录1的硬件电路总体原理图。单片机与FPGA的连线除了并行总线外,还包括启动信号START和数据采集结束信号EOC。START信号从单片机的P3.2引脚发出,送到FPGA的I
32、/O引脚(第60脚),EOC信号从FPGA的I/O引脚(第44脚)发出,送到单片机的外部引脚中断引脚INT1。高速数据采集系统的显示器件采用LCD模块LCD12864.LCD模块的数据线D0D7与单片机的数据总线相连,RS、RW和E等控制信号由FPGA内部逻辑电路产生,因此LCD模块的E、RS和RW信号线与FPGA的I/O引脚相连。高速数据采集系统只需要一只用于启动数据采集的按键。对于这种简单的按键,可以采用两种设计方案:一种是将按键直接与单片机的I/O引脚相连,通过软件定时检测按键是否闭合,并进行消抖处理,如键有效,则执行键处理程序。该方案的不足之处是需要单片机较多的软件开销。另一种方案是将
33、按键与FPGA的I/O引脚相连,然后在FPGA内部设置一消抖计数器,消抖计数器输出作为外部中断信号与单片机的INT0相连。单片机在INT0中断服务程序中实现按键处理。显然,该方案有效地简化了单片机软件设计。图3.5 数据采集通道原理图4.软件设计4.1 信号采集与存储控制电路工作原理双口RAM作为高速缓存,是信号采集与存储控制电路的核心部件。双口RAM模块一方面存储A/D转换产生的数据,另一方面向单片机传输数据,因此,双口RAM的一个端口(读端口)与单片机并行总线相连,另一端口(写端口)直接与高速A/D的数据相连。由于高速数据采集系统每次只需要采集128字节的数据,因此,双口RAM的容量设为1
34、28*8即可。在双口RAM和单片机的接口中,地址所存模块用于锁存单片机并行总线低8位地址,或非门将片选信号/CS(来自地址译码器)和写信号/WR相或非得到高电平有效的双口RAM读使能信号。高速A/D转换器ADS930是在输入时钟信号的控制下进行A/D转换的。ADS930要求它的的输入时钟信号有尽量小的抖动,50%的占空比,输入时钟的边沿越陡越好。在所示原理框图中,ADS930的时钟信号通过参考时钟CLK0分频得到。在FPGA系统中,CLK0可以是直接由外部有源晶振产生的时钟信号,也可以是通过内部PLL产生的时钟信号。为了将高速A/D输出的数字量依次存入双口RAM中,专门设计了一地址计数器模块。
35、地址计数器模块实际上是一个7位二进制计数器,其输出作为双口RAM写端口的地址。地址计数器和高速A/D转换器采用同一时钟信号,这样地址的变化与A/D转换器输出数据变化同步。将高速A/D转化器时钟ADCCLK反相后作为双口RAM写端口的写使能信号,保证了写使能信号有效时数据是稳定的。地址计数器除了产生地址信号之外,还有两根与单片机连接的信号线START和EOC。START信号由单片机I/O引脚发出。当START信号为低电平时,地址计数器清零,恢复为高电平后,地址计数器从0开始计数,计到127时停止计数,并发出由高到低的EOC信号作为单片机的外部中断请求信号。进行一次数据采集的过程是,单片机发出ST
36、ART信号(负脉冲有效),地址计数器从0开始计数,在计数过程中,A/D转换数据被存入双口RAM。当计数器计到127时停止计数,发出EOC信号作为单片机的外部中断信号,单片机通过执行中断服务程序从双口RAM中读入数据。整个数据采集过程的时序关系如图4.1所示。图4.1 触发控制模块各信号时序关系 4.2 信号采集与存储控制电路的FPGA实现如图4.2所示为由FPGA实现的信号采集与存储控制电路顶层原理图。在本设计中,双口RAM的存储容量为128*8,因此,lpm-ram-dp的数据宽度选为8位,地址总线宽度选为7位。lpm-ram-dp的数据输出端q7.0无三态输出功能,为了能够与单片机数据总线
37、相连,数据输出需要加一个三态门TS8,以实现输出三态控制。利用单片机系统的片选信号和读信号/RD实现对三态门的选通。需要注意,由于加了三态门控制,lpm-ram-dp中已不需要读使能信号rden,可在对lpm-ram-dp参数设置时取消rden信号,等效于rden始终为高电平。lpm-ram-dp的端口采用寄存器输入和输出,为同步型存储器,使用时必须采用一同步时钟clk0实现地址、数据等信息的输入输出。lpm-ram-dp没有BUSY端,当写地址和读地址相同时,数据为冲突,读写不能正常工作,实际使用时应避免出现这种情况。图4.2信号采集与存储控制电路顶层图4.3 原理图中的各底层模块采用VHD
38、L语言编写4.3.1三态缓冲器模块TS8三态缓冲器电路顶层图如图4.3.1 图4.3.1三态缓冲器源代码如下:library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity ts8 is port( en: in std_logic; di: in std_logic_vector(7 downto 0); do: out std_logic_vector(7 downto 0) ); end ts8; architecture one of ts8 is begin process(en,d
39、i) begin if en=1 then do=di; else do=ZZZZZZZZ; END IF; END PROCESS; END;4.3.2分频器模块fredivid分频器电路顶层图如图4.3.2 图4.3.2 分频器源代码如下:LIBRARY IEEE; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity fredivid is port(clkin:in std_logic; clkout: out std_logic ); end fredivid; architecture one of
40、 fredivid is signal q:std_logic_vector(2 downto 0); begin process(clkin) begin if(clkinevent and clkin=1) then if(q=11)then q=00; else q=q+1; end if; end if; end process; process(q) begin if(q(1)=1) then clkout=1; else clkout=0; end if; end process; end; 4.3.3地址锁存器模块dlatch8地址锁存器电路顶层图如图4.3.3 图4.3.3 地
41、址锁存器源代码如下:library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity dlatch8 is port( cp: in std_logic; d: in std_logic_vector(7 downto 0); q: out std_logic_vector(7 downto 0) ); end dlatch8; architecture one of dlatch8 is begin process(cp,d) begin if(cp=1) then q=d; end if;
42、end process; end;4.3.4地址计数器模块addrcount地址计数器电路顶层图如图4.3.4 图4.3.4地址计数器源代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity addrcount is port(clr,clk:in std_logic; eoc:out std_logic; q:buffer std_logic_vector(6 downto 0);end;architecture one
43、of addrcount is begin process(clr,clk) begin if(clkevent and clk=1) then if clr=0 then q=0000000; elsif(q=1111111) then q=1111111; else q=q+1; end if; end if;end process; process(q) begin if(q=1111111) then eoc=0; else eoc=1; end if; end process;end one; 4.3.5双口RAM模块lpm_ram_dp 双口RAM电路顶层图如图4.3.5 图4.3
44、.5 双口RAM源代码如下:LIBRARY ieee; USE ieee.std_logic_1164.all; LIBRARY altera_mf; USE altera_mf.all; ENTITY lpm_ram_dp IS PORT ( clock: IN STD_LOGIC ; data: IN STD_LOGIC_VECTOR (7 DOWNTO 0); rdaddress: IN STD_LOGIC_VECTOR (7 DOWNTO 0); wraddress: IN STD_LOGIC_VECTOR (7 DOWNTO 0); wren: IN STD_LOGIC := 1;
45、q: OUT STD_LOGIC_VECTOR (7 DOWNTO 0) ); END lpm_ram_dp; ARCHITECTURE SYN OF lpm_ram_dp IS SIGNAL sub_wire0: STD_LOGIC_VECTOR (7 DOWNTO 0); COMPONENT altsyncram GENERIC ( address_aclr_a: STRING; address_aclr_b: STRING; address_reg_b: STRING; indata_aclr_a: STRING; intended_device_family: STRING; lpm_
46、type: STRING; numwords_a: NATURAL; numwords_b: NATURAL; operation_mode: STRING; outdata_aclr_b: STRING; outdata_reg_b: STRING; power_up_uninitialized: STRING; read_during_write_mode_mixed_ports: STRING; widthad_a: NATURAL; widthad_b: NATURAL; width_a: NATURAL; width_b: NATURAL; width_byteena_a: NATU
47、RAL; wrcontrol_aclr_a: STRING ); PORT ( wren_a: IN STD_LOGIC ; clock0: IN STD_LOGIC ; address_a: IN STD_LOGIC_VECTOR (7 DOWNTO 0); address_b: IN STD_LOGIC_VECTOR (7 DOWNTO 0); q_b: OUT STD_LOGIC_VECTOR (7 DOWNTO 0); data_a: IN STD_LOGIC_VECTOR (7 DOWNTO 0) ); END COMPONENT; BEGIN q NONE, address_acl
48、r_b = NONE, address_reg_b = CLOCK0, indata_aclr_a = NONE, intended_device_family = Cyclone, lpm_type = altsyncram, numwords_a = 256, numwords_b = 256, operation_mode = DUAL_PORT, outdata_aclr_b = NONE, outdata_reg_b = CLOCK0, power_up_uninitialized = FALSE, read_during_write_mode_mixed_ports = DONT_
49、CARE, widthad_a = 8, widthad_b = 8, width_a = 8, width_b = 8, width_byteena_a = 1, wrcontrol_aclr_a = NONE ) PORT MAP ( wren_a = wren, clock0 = clock, address_a = wraddress, address_b = rdaddress, data_a = data, q_b = sub_wire0 ); END SYN; 4.4 数据显示模块设计根据要求,每一次数据采集通过按键来启动。采集完128点数据以后,数据采集单元向单片机发出中断请求
50、,单片机通过中断服务程序从双口RAM中读入128点采集数据;将读入的128点采集数据存放在单片机高128字节内部RAM中;对128字节数据进行处理,在LCD上显示与采集数据对应的波形。根据数据采集的工作过程,高速数据采集系统控制软件分为主程序、INT0中断服务程序、INT1中断服务程序三部分。4.4.1 主程序主要完成C8051F360单片机内部资源初始化、在LCD上显示采集数据的波形,其主程序流程图如图4.4.1所示。 图4.4.1 主程序流程图4.4.2 INT0中断服务程序 INT0中断服务程序的功能是读入键值,执行功能。本数据采集只定义了一个功能键KEY0,当该键有效时,P3.2引脚产
51、生一个负脉冲。4.4.3 INT1中断服务程序 当数据采集系统完成128点数据采集后,将启动一次外部中断INT1。INT1中断服务程序的功能就是从FPGA的双口RAM中读取128字节的采集的数据,并将其存放在单片机内部RAM的高128字节(地址80HFFH)。读取完毕以后,设置一标志。源程序如下: INT1: PUSH A PUSH PSW PUSH DPH PUSH DPL MOV DPTR,#CS1 MOV R7,#80H MOV R0,#80H INTT1: MOVX A,DPTR MOV R0,A INC R0 INC DPTR DJNZ R7,INTT1 SETB XSBZ POP
52、DPL POP DPH POP PSW POP A RETI4.5软件仿真4.5.1三态缓冲器模块TS8 图4.5.1三态缓冲器仿真图 三态缓冲器模块TS8功能:lpm-ram-dp的数据输出端q7.0无三态输出功能,为了能够与单片机数据总线相连,数据输出需要加一个三态门TS8,以实现输出三态控制。4.5.2分频器模块fredivid图4.5.2 分频器仿真图分频器模块fredivid功能:保证地址计数器和高速A/D转换器采用同一时钟信号,使地址的变化与A/D转换器输出数据的变化同步。4.5.3地址锁存器模块dlatch8图4.5.3地址锁存器仿真图地址锁存器模块dlatch8功能:用于锁存单
53、片机并行总线低8位地址。4.5.4地址计数器模块addrcount 4.5.4 地址计数器仿真图地址计数器模块addrcount功能:一个7位二进制计数器,其输出作为双口RAM写端口的地址。5.系统调试高速数据采集系统是硬件和软件相结合,单片机系统、数字系统和模拟系统相结合的综合电子系统。调试时应“硬件和软件相结合”、“各子系统单独调试和联合调试相结合”的原则。从硬件上高速数据采集系统由三部分组成:单片机子系统、FPGA子系统以及高速数据采集子系统。5.1 单片机子系统调试对单片机子系统来说,主要调试其软件功能是否正常。由于高速数据采集系统的软件比较简单,主要调试LCD显示功能是否正常。为了测试LCD能否正确显示波形曲线,可在单片机数据缓存冲区设定128字节数据,运行波形显示程序,观察LCD上显示的曲线是否正确。5.2 FPGA子系统调试对FPGA子系统的调试,通过Quartus软件进行输入、编译、引脚锁定,下载到FPGA中。下载成功以后,可用示波器作以下测试:按单片机K0键,应在单片机的INT1脚检测到负脉冲,同时在ADCCLK引脚观测到
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2022年大学轻工纺织食品专业大学物理下册期末考试试题A卷-含答案
- 石河子大学《中学历史课程标准与教材分析》2022-2023学年第一学期期末试卷
- 石河子大学《遥感数字图像处理》2023-2024学年第一学期期末试卷
- 一抹红的诗句
- 石河子大学《习近平总书记关于教育的重要论述研究》2023-2024学年第一学期期末试卷
- 石河子大学《生药学实验》2021-2022学年第一学期期末试卷
- 石河子大学《基础素描》2023-2024学年第一学期期末试卷
- 沈阳理工大学《专业创新课程-嵌入式计算机产品案例》2023-2024学年期末试卷
- 沈阳理工大学《信号与系统》2021-2022学年第一学期期末试卷
- 沈阳理工大学《人工智能实例与应用》2023-2024学年期末试卷
- 《春节的文化与习俗》课件
- 手机棋牌平台网络游戏商业计划书
- 学校体育与社区体育融合发展的研究
- 医疗机构高警示药品风险管理规范(2023版)
- 一年级体质健康数据
- 八年级物理(上)期中考试分析与教学反思
- 国家开放大学《财政与金融(农)》形考任务1-4参考答案
- 2023银行网点年度工作总结
- 工厂反骚扰虐待强迫歧视政策
- 计算机教室(微机室)学生上机使用记录
- FAI首件检验报告
评论
0/150
提交评论