基于ARM与FPGA的高速数据采集技术研究图文.docx
《基于ARM与FPGA的高速数据采集技术研究图文.docx》由会员分享,可在线阅读,更多相关《基于ARM与FPGA的高速数据采集技术研究图文.docx(63页珍藏版)》请在冰豆网上搜索。
基于ARM与FPGA的高速数据采集技术研究图文
北京交通大学
硕士学位论文
基于ARM与FPGA的高速数据采集技术研究
姓名:
王亚庭
申请学位级别:
硕士
专业:
计算机系统结构
指导教师:
高金山
20071201
中文摘要
摘要:
本文研究基于ARM与FPGA的高速数据采集系统技术。
论文完成了
ARM+FPGA结构的共享存储器结构设计,实现了ARMLinux系统的软件设计,
包括触摸屏控制、LCD显示、正弦插值算法设计以及各种显示算法设计等。
同时
进行了信号的高速采集和处理的实际测试,对实验测试数据进行了分析。
论文分别从软件和硬件两方面入手,阐述了基于ARM处理器和FPGA芯片的
高速数据采集的硬件系统设计方法,以及基于ARMLinux操作系统的设备驱动程
序设计和应用程序设计。
硬件方面,在FPGA平台上,我们首先利用乒乓操作的方式将一路高速数据
信号转换成频率为原来频率1/4的4路低速数据信号,再将这四路数据分别存储到
4个FIFO中,然后再对这4个FIFO中的数据拼接并存储在FPGA片上的双端口
双时钟RAM中,最后将FPGA的双端口双时钟RAM挂载到ARM系统的总线上,
实现了ARM和FPGA共享存储器的系统结构,使ARM处理器可以直接读取这个
双端口双时钟的RAM中的数据,从而大大提高了数据采集与处理的效率。
在采样
频率控制电路设计方面,我们通过使FⅢO的数据存储时钟降低为标准状态下的1/n
实现数据采集频率降为标准状态的1/n,从而实现了由FPGA控制的可变频率的数
据采集系统。
软件方面,为了更有效地管理和拓展系统功能,我们移植了ARMLinux操作系
统,并在S3C2410平台上设计实现了基于Linux操作系统的触摸屏驱动程序设计、
LCD驱动程序移植、自定义的FPGA模块驱动程序设计、LCD显示程序设计、多线
程的应用程序设计。
应用程序能够控制FPGA数据采集系统工作。
在前端采样频率为125MHz情况下,系统可以正常工作。
能够实现对频率在5姗z
以下的信号波形的直接显示;对5MHz至40MHz的信号,使用正弦插值算法进行处
理,显示效果良好。
同时这种硬件结构可扩展性强,可以在此基础上实现8路甚
至16路缓冲的系统结构,可以使系统支持更高的采样频率。
关键词:
高速数据采集;嵌入式系统;Linux;ARM;FPGA;Linux设备驱动程
序;共享存储器;分类号:
TP274.2;TP316.81
ABSTRACT
ABSTRACT:
InthispaperWehaveresearchedondesignandrealizationofhi.gh
spe村dataacquisitiontechnology.WedesignedasharedmemorystructurebasedOn
ARM&FPGA.WeaccomplishedthesystemsoftwareunderLinnxenviroment,
includingthetouck.screencontrol,LCDdisplay,sineinterpolationalgorithmdesignand
variousofdisplayalgorithmdesign.Wehavetestedthehigh-speeddataacquisitionand
processingsystem,andanalyzedthetestdata.
Wedescribeoursystemintwoways.Oneisthehardwaredesign,theotheristhe
devicedriverdesignandapplicationprogramdesignbasedonARMlinuxOS.
Inthehardwaredesign,ontheFPGAchip,firstweconvertedonechannelof
high・speeddataintofourchannelsoflow-speeddatawhichfrequencyisaquarterofthe
originalfrequencywiththeping-pongoperatiorLSecondWestoredeachchannelofdata
InaFIFO.ThirdwerecombinedthedataintheFIFOsandstoredtheminadouble-port
RAM.
LastweconnectedtheRAMtothebusoftheARMsystem,whichisashared
memorywedeveloped.ARMprocessorc趾readthedatainRAMefficiently.We
designedthesamplingfrequencycontrolcircuitbytheFPGA,Bychangingthedata
storagefrequencyoftheFIFOwecontrolledthedataacquisitionfl'equmcy.
Inthesoftwaredesign,atfirstWeportedtheARMLInuxontoARMformore
effectiveadministrationandsystemupgrade.ThenWedesignedtheTouchScrcendevice
driver,LCDdevicedriver,FPGAdevic圮driver,LCDdisplayprogramand
Multithreadingapplication.
ThesystemcallworkstablywitlIthesamplingfrequency125MHz.It啪display
normallythewaveformofthesignal.whichfrequencyisbelow5MHz.AndWe锄use
thesineInterpolationalgorithmtoprocessanddisplaythehighfrequencysignal,
whichfrequencyisbelow40MHz.Thishardwarestl-uctureisahighlyscalablesys【em
structure,WCcanachieve8channelsandevm16channelsFIFObuffersystemsh'ucture,
whichwillmakethesystemsupporthighersamplingfrequency.
KEYWORDS:
Highspeeddataacquisition;Embeddedsystem;LInux;ARM;FPGA;
Linuxdevicedriver;SharedmemoryCLASSNO:
TP274.2;TP316.81
学位论文版权使用授权书
本学位论文作者完全了解北京交通大学有关保留、使用学位论文的规定。
特
授权北京交通大学可以将学位论文的全部或部分内容编入有关数据库进行检索,
并采用影印、缩印或扫描等复制手段保存、汇编以供查阅和借阅。
同意学校向国
家有关部门或机构送交论文的复印件和磁盘。
(保密的学位论文在解密后适用本授权说明)
学位论文作者签名:
j}丝导师签名』/k名‘,
签字日期:
少7年,。
月≯,日签字日期:
御/年『2月2/日I
独创性声明
独创性声明
本人声明所呈交的学位论文是本人在导师指导下进行的研究工作和取得的研究成果,除了文中特别加以标注和致谢之处外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得北京交通大学或其他教育机构的学位或证书而使用过的材料。
与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。
学位论文作者签名:
如睡签字隰矽7年}瑚
致谢
本论文的工作是在我的导师高金山副教授的悉心指导下完成的,高金山副教授严谨的治学态度和科学的工作方法给了我极大的帮助和影响。
在此衷心感谢三年来高金山老师对我的关心和指导。
感谢所有在校期间的授课老师,他们耐心细致的讲解使我积累了较为丰富的专业和理论基础。
在实验室工作及撰写论文期间,董晨、陈庆伟等同学对我论文的研究工作给予了热情帮助,在此向他们表达我的感激之情。
1引言
随着信息化时代的到来,各种电子设备的应用日益广泛,而且各种电子设备越来越复杂。
电子设备的研制与维修对电子测试设备提出了更高的要求。
作为传统电子测试设备的示波器也发展迅速。
当前,数字存储示波器(DigitalStorageOscilloscope)技术已经成得到了广泛的应用。
数字存储示波器的基本思想就是通过先进的数字化测试技术,高速采样和高精度模数变换,将信号波形数字化.然后对数字结果进行存储、处理并显示。
数字存储示波器在波形的记录、分析和比较方面,都比传统的模拟示波器有很大的改进。
它使得示波器不仅能显示信息,而且能够将信息存储起来便于分析.因此,数字存储示波器在科学研究和工程设计中的应用越来越广泛。
目前,数字存储示波器已经得到了很好的应用和发展,随着数字化测试技术的进步,数字存储示波器也朝着高速度、高精度、高集成度、低功耗方向迅速发展。
为适应野外作业和生产现场测试需要,手持式数字存储示波器无疑是最好的选择,而目前市场上较为成熟的有美国Tektronix公司的便携式数字存储示波器系列以及Fluke公司的手持式示波表系列等,采样频率100MHz以上的产品价格都在几万元以上,非常昂贵。
国内的一些厂商也介入了手持数字式波表这一领域,其中厦门利利酱等公司已经有成熟的产品上市,这些公司的产品采样率都在100MHz左右。
数字存储示波器是将波形存储在在存储器中。
存储时间可以无限长。
因此,数字存储示波器是一种既具有实时观察,又具有波形存储能力、精确度高、操作简单、可以通过计算机进行程序自动测量的高智能化示波器。
其组成包括控制、取样存储、显示。
控制部分通常包括键盘、CPU、存储器等;取样存储部分由A/D和D/A转换器组成;显示部分由LCD组成。
而手持式的数字存储示波器不仅要具有数字存储示波器的功能,同时还需要有体积小、低功耗等特点。
所以手持式的数字存储示波器的设计难度更大,设计难点包括存储速度、处理速度、功耗等。
本文针对这些方面,研究了具有高存储速度、高处理速度、低功耗的高速数据采集系统。
1.1高速数据采集系统概述1.1.1硬件部分
北京交通大学硕士学位论文
本系统的硬件结构采用是一个ARIVl+FPGA的架构,其中充分利用了FPGA的并行特性,采用乒乓原理进行前端设计,同时又利用了ARM低功耗高性能比的特点,将采集传入的数据在ARM平台上加以处理和显示,从而在较低频率的ARM平台上实现了对高速数据的快速但低功耗的采集与显示。
.
本系统最大的特点是将FPGA系统作为一个外设挂载到了ARlVi的总线上,使ARM处理器可以直接访问FPGA的片上RAM和寄存器中的数据,实现了FPGA与ARM共享存储器的系统结构,从而使数据采集及处理的效率有了大幅度的提高。
最后我们系统还使用了LCD和触摸屏等设备,系统使用LCD显示波形,用户通过触摸屏来对系统进行控制。
1.1.2软件部分
本文中,因为考虑到未来系统的便于扩展,存储资源的良好管理,应用程序中多线程的管理和相互通讯等因素,引入了ARMLinux嵌入式操作系统。
通过对操作系统的实时性、资源占用量、执行性能、可靠性,移植性等多方面的分析比较,ARMLiaux比Wince占用更少的系统资源,同时它最大的优势就是开源性。
同时可以看出,本系统使用了较多的内存映射,由于}tcLinux对内存的访问是直接的,即它对地址的访问不需要经过MMU,而是直接送到地址线上输出。
所有程序中访问的地址都是实际的物理地址,;tcLinux对内存空间不提供保护。
所以为了系统的可靠性,我们选择了ARMLinux操作系统。
在此基础上。
使用了CRAMFS根文件系统,并且系统中针对LCD和触摸屏等设备编写了Linux下的设备驱动程序,同时为了提高系统的响应速度,我们还设计的多线程的应用程序。
1.2论文主要内容
本文研究基于ARiel平台的,针对250M}Iz采样频率以下的高速数据采集和显示的嵌入式系统设计与开发。
其基本功能是利用前端FPGA并行处理的优势结合ARM的低功耗高性能特点,构造一个高速的数据采集系统.整个系统在Linux操作系统和应用程序的管理和控制下,完成了对信号的采集、存储、处理、显示等功能,并且设计了交互式的控制方式,可以调节信号采样频率、波形的显示方式等。
本系统具有低功耗、造价低、性能高以及可扩展性强等特点,可以用于工业、2
引言
科学研究、教育等领域。
论文的主要内容包括以下几方面
第一,介绍FPGA数据采集系统,利用乒乓操作技术解决了高速数据的采集
问题;利用存储器小端存储的特点解决了高速数据的存储问题。
第二,第二,介绍了Linux设备驱动程序的基本概念及设计方法,并设计了触
摸屏驱动程序以及LCD驱动程序;
第三,研究了基于Framebuffer机制的LCD的显示问题,并实现了波形的显
示以及对波形进行调幅、变频、移动等操作;
第四,研究了数据频率在采样频率l/3以下的时域波形显示问题,并实现了正
弦插值算法,系统可以在采样频率为125MHz时得到频率40MHz左右的信号波形.
2高速数据采集系统设计方案
高速数据采集系统的设计主要分为硬件和软件设计,在硬件上以ARM作为系统控制和数据处理,FPGA作为数据采集、预处理和存储。
考虑到未来系统便于扩展,存储资源的良好管理,应用程序中多线程的管理和相互通讯等因素,软件上使用了ARMLinux操作系统。
2.1系统功能描述
系统以ARM+FPGA嵌入式系统为架构,将高性能Samsung的¥3C2410ARM9嵌入式处理器与ALTERA的FPGA结合的高速数据采集及处理系统。
与单独使用ARM处理器相比,我们的系统具有更高的数据采集频率以及可扩展性。
系统设计需要实现的基本功能是:
1)利用前端ADC将高速模拟信号转换成数字信号之后,分成两路交替输出至FPGA模块;
2)在FPGA中,对数据进行缓冲后存入FPGA上的一块双端双时钟的RAM,
并作阈值比较。
3)当采集到的数据达到或超过阈值要求(即当存储器中的新数据达到一定的
数量、在系统中我们将阈值设置为存储器满)的时候,触发相关信号中断,通知ARM处理器有新数据到达,由ARM端来控制数据采集系统的运行并处理新数据。
4)在中断处理程序中ARM处理器对数据采集系统作出相应,然后通过应用程序进行数据处理,最后在LCD上显示出来,并通知FPGA进行下一次数据采集。
具体流程图如图2一l所示。
从效率、成本和实现难易程度的角度考虑,软硬件功能的划分如下:
高速数据的采集、缓冲、阈值比较、双端双时钟的RAM存储等功能都利用硬件FPGA搭建模块来完成,而硬件资源管理和数据处理和显示则由软件编程实现。
4
开始
启动数据采集
读取用户控制信息
4路FIFo缓冲』
读取RAM中信号数据
《徽≥d阈值输出存储到双端口RAM中并_)——J★恨据用户控制信息调月
处理算法\\做阈值作比较/,J、亍甲町嘲但
大于等于中断闷值
向ARM发出中断信号I调用LCD画点程序
显示波形
中断程序设置标志位并通
知用户数据处理进程
(a)数据采集(b)数据处理
图2-1系统功能流程
Figure2-1.Flowchartofsystem向nc血m
2.2硬件功能描述
硬件部分包括了前端的ADC、利用FPGA搭建的采集模块、ARM平台,需要完成的功能主要包括下面几个方面:
1)对高频模拟信号进行模数转换,将转换后的数字信号,分成两路交替输出
至FPGA缓冲模块;
2)FPGA利用乒乓操作方式对数据进行2分频缓冲之后,存入片上的一块双
端双时钟RAM之中;其中用以缓冲的4个FIFO大小都为64Byte,位宽为8bit,RAM大小为4KB,位宽为32bit。
当需要采集大量数据的时候,
可以扩展RAM的容量。
3)每个时钟同时从4路FIFO弹出4个8bit的值,拼接成32bit的长字,并行放入用以存储数据的RAM之中,同时根据RAM的写地址信号进行阈
北京交通大学硕士学位论文
值判断(阈值一般设置为RAM的最高地址,当写地址信号的值为RAM地址的最高地址时,表明RAM已满),超过阙值后向ARM发出中断信号。
4)ARM接收中断后通知用户进程读取、处理并驱动LCD显示。
2.3软件功能描述
软件部分主要包括了ARMLinux内核、ROMFS文件系统、IRQ中断处理程序、FPGA模块驱动程序、LCD驱动程序以及触摸屏驱动程序等部分,各自分别实现下述的功能:
1)ARMLinux内核和文件系统管理各类硬件和软件资源,便于后续系统功能
的扩充和升级。
例如,利用ARMLinux对LCD、前端FPGA、内存资源和上层应用程序运行等等进行管理。
2)FPGA模块驱动程序最主要的是实现虚拟内存映射功能,因为在用户进程
空间中不可以访问设备的地址空间。
通过内存映射机制,用户进程才可以直接访问FPGA的数据RAM,大大简化了系统结构,节省了数据传递的时间。
3)触摸屏驱动实现用户与系统的交互,改变波形的显示方式,并且通过FPGA
驱动程序用户进程可以实时调整采样频率,数据放大倍数等
41用户进程通过LCD驱动程序显示波形数据,并且基于Framebuffer机制的
LCD还为以后系统移植Qt/EmbeddedGUI打下了基础。
5)主程序通过各个驱动程序访问设备,并执行数据处理算法及波形显示算法
等相对复杂的代码。
6
3ARM9+FPGA硬件结构设计
系统的硬件结构主要由FPGA系统和ARM系统两部分组成。
其中ARM平台我们选择的是Samsung的¥3C2410,硬件系统设计的重点是基于FPGA的高速数据采集系统设计和FPGA与ARM共享存储器设计。
3.1系统硬件结构框图
图3.1表明了整个系统硬件层的体系结构关系,数据采集部分的时钟由时钟控制单元控制,这也是FPGA数据采集的核一fi,控制块。
数据存储部分以及FPGA与ARM平台的结构都是由RAM控制块实现的。
具体的功能及实现方式都会在后面模块具体设计中进行阐述.
图3-1系统硬件架构图
Figure3-1Systemarchitecturediagram
3.2硬件平台搭建及模块设计
为了实现2.2中提出的硬件功能设计和图3-1所表示的硬件结构图,采用了以下几个器件来完成硬件结构的搭建工作。
3.2.1前端高速ADC(模数转换器)
该器件是AD公司的AD9481芯片,如图3—2所示。
AD9481是一种采样精度为8bit,最高采样频率达250MHz的ADC转换芯片。
其优点之一,就是带有复用的CMOS输出以便于很容易地连接到现场可编程逻辑阵列(FPC'A)或者标准逻辑电7
路。
为了降低ADC的成本和功耗,AD9481内部包含了一个参考电源和采样保持电路,用户只需要提供一个3.3V的电源电压和一个差分解码时钟即可驱动芯片正常工作。
AD9481的模拟输入是一个差分缓冲,为了达到最好的动态效果,在VIN+和VIN-两个模拟输入端口的阻抗需要匹配。
另外,AD9481还针对外部定时信号和多个ADC同步等应用,提供了两个数字输入端1:
3。
经过前端变压器调整之后,该ADC实际输入信号电压峰峰值最大不可超过1V。
作为一款新型的高速低功耗的ADC,AD9481内部采用了流水线的结构,在实现高速的前提下保证了采样精度。
输出数据由两个输出口(PORTA和PORTB)交替输出,每一路的输出频率为最高为125MHz,相位差为180。
。
AD9481的数字输出与'ITI./CMOS兼容。
在这里,该器件主要实现的功能是将高速模拟信号转换成为数字信号,然后分两路传入FPGA中,同时提供对应通路的时钟信号输出。
FUNcrION^L8LOCKDI^GRAM
图3-2AD9481结构图
Figure3-2.FunctionalBlockDiagram
图3-3AD9481输出时序图
Figure3-3.TimingDiagram
S
3.2.2FPGA平台与功能模块设计
Altera公司的stratix开发板是一个强大的FPGA平台,平台的具体器件型号为EPlSIOF780C6,该器件集成了10570个LEs(109icelements),可以稳定地工作在400删z的频率之下。
另外,性能良好并且种类繁多的IPcore资源及强大的Q岫sⅡ6.0开发环境,可以帮助我们更快更有效地实现硬件关键模块的功能设计。
FPGA最显著的特点之一是其并行特性,结合乒乓原理,我们利用VmilogHDL语言和QumusII提供的口core,设计了一个4FIFO结构,对高速数据进行缓冲,然后将4个8bit的FIFO输出数值拼接成32位之后放入一个双端双时钟的RAM,同时通过检测RAM的写地址信号线以判断RAM写入数据量是否超过阈值,如果是的话则产生ARM平台的外部mQ中断信号,然后ARM通过IAnux下的FPGA驱动程序处理RAM中数据。
FPGA数据采集系统充分利用FPGA在并行处理和时序逻辑设计方面的优势,利用乒乓操作方式达到用低速模块处理高速数据流的效果。
数据采集模块包括数据缓冲和数据存储两部分,主要的时序如图3-4,FIFO时钟信号如图3-5。
图3-4数据采集模块数据流
Figure3-4.Dataflowofdataacquisitionmodule
1.数据缓冲
数据缓冲部分的作用是将高速数据信号分成4路低速数据,并写到4个FIFO中。
构建4个先进先出缓冲器FIF01~FIF04,以乒乓操作模块的方式将AD9481的输出信号分别存储到4个FIFO中。
其中PortA对应的两个数据缓冲区分别为FIF01和FⅢ03,PortB对应的两个数据缓冲区分别为Fm02和FIF04.9
北京交通大学硕士学位论文
位宽为8位的FⅢ01-4组成数据缓存。
它们具有同频不同相的写时钟信号,并且具有相同的读时钟信号Fn:
oRdclk。
由AI)9481时序图和数据缓冲的输入时序图可以看到,数据采集启动后数据缓冲模块FIF01一FIF04中存储数据分别为N,N+I,N+2,N+3….时序控制模块限定了每次启动后,数据都是从FIF01开始存放,以满足顺序读取的要求。
利用/lJ)9481提供的数据输出时钟DCo+和I)CO-,产生数据缓冲时钟信号,如图3-5。
信号FIF01-4分别对应数据缓冲器的数据输入时钟Wrclkl一4,如图3—4。
当启动一次数据采集时,在Dco+第一个上升沿(hi)9481输出第一个有效数据),开始产生数据缓冲器的输入时钟信号,保证有效数据顺序存储到各个缓冲器中。
图3—5
Figure数据缓冲器输入时钟时序图DiagramOfDataBuffer3-5.蛳Timing
2.数据存储
数据存储部分的作用,是将前端数据缓冲部分的4路数据信号,恢复成原来采样信号的顺序,即将4路8位信号拼接成一路32位信号,并保持其正确的顺序,如图3-4所示。
在每个Fn:
O_Rdclk上升沿,同时从FI]701—4中读取8位数据,并拼接成32位数据,存入一个32位位宽的双时钟双端口RAM中。
RAlI的写时钟RAMWrclk与FIFO的FIFO_Rdclk是同频信号。
由于FIFO时钟与输出之间存在有延迟(too),所以在设计中采用了把Fn:
o_Rdclk相位向后偏移一定相位的时钟信号作为RAM__Wrclk的方法,以避免产生竞争冒险(设计中使用了图3-5所示的FIF01作为FlFORdclk,FIF02作为RhM_Wrclk)。
在存储数据时,R埘采用小端结构。
每