PC104(Plus)总线的数据接收存储显示系统设计方案
摘要: 随着数字视频视觉技术和视频采集技术的发展,很多应用场合都需要对接收到的模拟数据进行模数转换,然后再进行数据的实时存储和同步显示。为此,本文介绍了对模数转换后的数字信号所进行的处理,提出了一种基于PC104 (Plus)总线的双通道大容量高速数据的接收、存储和显示系统的设计方法。
0 引言
在现代数字信号处理领域,对于大容量高速数据的存储和显示是进行后续相关处理的基础,也是信息处理系统的关键组成部分。随着数字视频视觉技术和视频采集技术的发展,很多应用场合都需要对接收到的模拟数据进行模数转换,然后再进行数据的实时存储和同步显示。为此,本文介绍了对模数转换后的数字信号所进行的处理,提出了一种基于PC104 (Plus)总线的双通道大容量高速数据的接收、存储和显示系统的设计方法。该系统通过FPGA-PC104(Plus)接口对数据进行接收和预处理,再通过FIFO数据传输通道来上传数据,最后由工控机的软件来实现数据的实时存储和同步显示。其中工控机软件采用Linux(2.6内核)下Qt/Embedded的GUI来设计,并用
1 系统结构
本系统由数据接收模块、FPGA控制模块和工控机显示存储模块组成,其系统结构如图1所示。图中的FPGA选用Xilinx Spartan3系列的XC3S2000F456,其最大用户IO为333个,系统门达到200万门,并内置576KB的RAM块;FIFO选用IDT公司的IDT72V36110,该芯片容量为512KB,可支持36位输入、输出数据,最高工作频率可达166MHz;另外,PLX9054是PLX公司的总线桥接芯片,它支持多种工作模式,本系统采用C模式。在该模式下的DMA传输时,PLX9054对PC104(Plus)总线和本地总线都是主控制器;工控机选用Senbo公司的LX-3072PC/104 CPU模块,该模块搭载的AMD Geode LX800 CPU,其工作频率高达500MHz,遵从PC/104+标准,并提供有PC104(Plus)总线,同时集成了PS/2、RT、IDE、USB2.0和10M/100M网口等接口,而且功耗低,可靠性高,可广泛适用于数据采集、通信等领域。为了保证系统的实时性和稳定性,本工控机上运行的是Linux操作系统。

数据接收模块的两路输入通道分别连向FPGA的IO端口,在FPGA模块的控制下,两路输入数据同时分别进入各自的FIFO进行缓存。为了避免PLX9054控制本地端时的总线竞争以及简化时序设计,可将两片FIFO的输出端复用,且经由FPGA的IO端口连向PLX9054的本地数据端,进而在FIFO产生相应状态响应的时候,由FPGA控制模块向PLX9054发出读取FIFO的中断请求,PLX9054在响应中断后,即将数据以DMA的方式经由PC104(Plus)总线上传至上位机,上位机通过PCI驱动读取DMA传输的数据,然后进行数据分析,再分别进行存储和显示。
2 系统设计
2.1 数据接收模块设计
本系统中的数据接收模块采用J18型37针视频通信接口,该接口协议可根据实际需求自行定义,但最大为32位。由于输入数据为高速数字信号,因此,为防止输入FPGA的信号产生过冲,可在视频通信接口的后端对32位数据分别进行RC端接,并串联33Ω的电阻和0.01μF的电容。
2.2 FPGA控制模块设计
本系统的数据传送采用DMA结合中断的方式。该方式不仅能保证数据传输的速率,而且能提高系统的工作效率。接收高速数据时,要使用缓冲区对数据进行缓存,但是,如果等缓冲区全部存满以后再进行DMA传输,那么,在数据流速率比较高的时候,就会造成数据的丢失。因此,在FIFO半满时就必须进行数据的DMA传输,这样可使工控机从FIFO读取数据和FPGA从外部接收数据能同时进行。
FPGA控制模块是本系统的硬件核心,其主要功能是完成系统复位,接收数据进行缓存,控制读取两个FIFO数据的逻辑顺序,并控制DMA传输。FPGA控制模块电路如图2所示。

在图2电路中,为了保证FPGA与FIFO同步工作,应将两片FIFO的各自读写时钟连接在一起,且分别由FPGA输入到时钟驱动芯片以后获得.
为了满足PLX9054上电启动速度的要求,其时钟应由晶振直接提供。
系统上电后,PLX9054NFPGA发出复位命令

同时由FPGA对FIFO进行复位,并完成对FIFO的初始化,以使其处于工作状态。在FP-GA接收数据时,存储数据通道和显示数据通道的数据同时进入FPGA,为了使工控机软件能够区分两路数据,可在FPGA内部根据数据同步信号分别对两路数据加上帧头,然后同时写入FIFO1的D1[0…31]和FIFO2的D2[0…31]。数据半满后,FPGA要根据两片FIFO的半满信号

和

对其进行读取控制。FIFO的读取控制主要由

实现。在实际应用中,存储数据一般要求能够优先上传,且数据连续,而对同步显示的要求相对较低,显示数据的速率也较低,只要能够满足显示刷新率的要求即可,因此,本设计中存储数据缓冲区FIFO1的半满信号

的优先级高于

。具体实现方法是对

进行逻辑运算,图3所示是其运算逻辑图。

运算后可得到化简结果

,然后令


;之后再在FPGA内部将

、

做与运算,可得到

,然后判断

,若为低,则FPGA向PLX9054发出中断

。这样就能保证两片FIFO的数据根据优先级不断向上发送。
PLX9054响应中断

后,即可通过LHOLD申请对本地总线进行控制,FPGA则通过LHOLDA作出应答,进而由PLX9054获得本地总线控制权并启动DMA传输周期。FPGA收到读信号

和地址选通信号

后,产生

信号,并在最后一个数据传送信号

有效之前一直保持有效。在此期间,FPGA将根据图3所示的运算逻辑结果,并按照优先级读取相应FIFO的数据进行上传。具体的控制及数据传输时序如图4所示。
由图4可见,当

同时有效时,其FIFO1的优先级高于FIFO2,故可满足设计要求。





本文给出了一种基于FPGA控制逻辑的高速数据接收存储显示系统的硬件设计方案,同时详细介绍了Linux系统下基于Qt/Embedded和Fr-amebuffer的工控机存储显示程序的实现方法。
暂无评论