当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]基于PCI总线的高速CCD图像存储系统设

1 引言

侦察与监视在军事斗争中的地位举足轻重。在各种侦察/监视技术中,航空侦察占有重要的地位,可见光侦察是一种重要的侦察形式,无人侦察机显示出了广阔的发展前景,现代科学技术的发展为现代航空侦察与监视技术带来了新的发展契机。

航空侦察一个主要的途径就是利用高性能高速摄像机进行航空拍照,采集各种图像信息。然而,数字化的侦察图像分辨率高、信息量大,使后续的处理、传输、存储等过程的实现变得极为困难,从而给机载图像/视频系统的设计与实现带来了巨大的挑战。为了解决这些问题,本文基于某型高速相机,利用低成本FPGA,构建了一个高性能的图像采集存储系统,完成对高分辨率、高帧率侦察图像的采集和存储。

2 某型高速相机简介[1]

系统选择的高速相机是一款高分辨率、高速度线扫数字相机,其图像传感器采用先进的CCD(Charge-Coupled Device)图像传感器,采用了世界尖端水平的高灵敏度扫描成像技术——高速率的TDI(Time Delay and Integration)技术、多重曝光技术并加强蓝色响应,从而使该型相机可提供比单输出线扫相机更好的灵敏度特性,总的数据传输率可高达200MB/s。

相机接口主要包括后面板上的六个接口:其中四个为数据输出接口,每个接口包括16位数据信号,1位数据同步信号,1位同步时钟信号,信号的电平输出格式为LVDS电平格式;另外两个接口分别为控制信号接口和电源接口。在控制信号的作用下,相机同步输出包含同步时钟信号(STROBE)和水平同步信号(LVAL)在内的 8×8bit标准的灰度图像数据,图像分辨率可选择为4096×30`72(本系统采用分辨率)和2048×3072。

相机控制接口信号中,行触发信号(EXSYNC)至关重要。它负责图像数据的触发输出,行触发信号的上升沿触发数据并指示数据有效。相机触发要求此信号存在下降沿,最小触发频率为300HZ。

3  系统硬件设计及工作原理

本设计硬件系统主要包括电平转换,数据接收预处理和数据采集存储三个部分。图1为系统硬件原理框图。在总线结构上,系统采用了满足高速数据传输的PCI总线结构,PCI9054是PLX公司推出的一种32位33MHz的PCI总线主控I/O加速器,它采用多种先进技术,使复杂的PCI接口应用设计变得相对简单。

从资源和成本方面考虑,FPGA选用Altera公司的低成本Cyclone系列芯片-EP1C6Q240C8。存储介质则选用SCSI磁盘阵列,它能满足高速、大数据量的存储。

图1 系统原理框图
 


系统工作原理:

系统上电,首先完成一系列初始化工作:PC通过底层驱动配置PCI9054的寄存器,使之处于正常工作模式(C模式)[2]; FPGA上电,配置用户电路(此时,FPGA内部逻辑和PCI9054都处于等待状态)。

PC应用程序启动后,向PCI9054发送数据传输指令,PCI9054收到数据传输指令,通过LOCAL BUS通知FPGA开始工作:FPGA产生行触发信号(EXSYNC),触发相机进行拍照、传输数据。然后,PCI9054进入工作状态,开始采集数据,并将数据存储到磁盘阵列。FPGA内部逻辑和PC应用程序通过行计数判断一帧图像传输完毕,相继进入等待状态。但是,PC应用程序在接收完一帧图像,进入等待状态后,延续一定时间,会自动触发下一个数据传输指令通知FPGA开始下一帧图像传输。

3.1   电平格式转换

PCI9054芯片电平格式为3.3V LVTTL格式,相机输出信号的电平格式为LVDS格式,基于系统总体需要,有必要在进行图像预处理前将LVDS相机输出信号转换成LVTTL格式电平。

3.2   数据接收预处理

FPGA完成图像预处理功能。FPGA是以并行运算为主导的芯片,处理速度更快。数据预处理过程包括:数据缓冲、位并转换。

数据缓冲[3]:相机利用4个通道输出图像数据,每个端口的数据传输以本端口时钟为参考,传输过程中由于各种差异如传输电缆的长度不同,使得各个端口的时钟信号产生相对的相位漂移,从而使四个端口数据输出不完全同步,这不利于图像数据的同步采集。为消除数据异步,FPGA内部设计了由4个FIFO组成的数据缓冲器组。每个端口的有效数据宽度为16bit,传送一行4096个数据需用512个时钟周期,因此FIFO深度设为512个字。相机送来的4个LVAL信号为各对应通道写使能信号, 4个STROBE信号作为对应通道写时钟。FIFO输出端采用系统时钟(15MHz)作为统一的数据同步时钟,并设计一个读请求信号,当FIFO半满时读取数据,经过缓存的数据以与系统时钟同步的64bit宽度格式输出。

       位并转换:PCI9054芯片LOCAL端的有效数据位数有两种选择:8bit和32bit(可更改9054寄存器设置,为了保证数据采集速度,本系统设置为32bit)。但是相机的输出数据通过缓冲之后仍然为64bit,为了满足PCI9054数据采集位数要求,必须将64bit数据进行位并转换,变成32bit传输。本系

统设计在FPGA内部将数据的高32bit和低32bit分别送入二选一BUSMUX的输入端,系统时钟的电平选

择数据输出。64bit数据转化成32bit数据传输,但数据率变成原来的两倍(30M/s)。

3.3     数据采集存储

对于整个系统来说,存储系统的持续存储速度是个至关重要的参数。数据的采集存储采用微机为主体,在其PCI总线上挂载一块SCSI的接口卡和9054接口卡,9054接口卡用于数据采集,SCSI接口卡上挂载两个SCSI硬盘,组成RAID-0的硬盘阵列,这样可以大大提高硬盘的持续存储速度。利用PCI9054进行数据采集时,数据的传输路径为:PCI总线-内存-硬盘阵列。现有两种传输方案可供选择:第一种为单线采集存储,显然,这种方案会降低数据的的采集速度。本系统选用第二种方案:流水线存储,如图2所示。理论上,流水线方式的数据采集速度应该是单线采集的两倍。

图2 流水线存储时序示意图
 


4 部分软硬件程序设计

3.4   PCI9054 Local Bus 硬件驱动

PCI9054局部总线是外设(FPGA)和9054之间通信的桥梁。9054图像数据的采集需要使9054局部总线信号满足一定的时序要求,保证数据传输的同步,即需要FPGA端硬件驱动。驱动是用Verilog HDL代码编写的一个状态机,代码如下[2][4]:

always @ (posedge CLK)

begin

  casex (CurrentState)

   1‘b0: begin

                      if (!LLADS_)

                      begin       LLREADY <= 1;    CurrentState <= 1;         end

                      else begin       LLREADY <= 0;    end

            end

   1‘b1: begin

                      if (LLBLAST_)      //突发循环重复

                      begin       LLREADY <= 1;    CurrentState <= 1;         end

                      else                //最后一个循环

                      begin       LLREADY <= 0;    CurrentState <= 0;         end

              end

        default:

               CurrentState <= 0;

        Endcase         end

assign LLREADY_ = (LLREADY) ? 1‘b0 : 1‘b1;

4.2  PCI9054驱动层和应用层设计

系统所用PCI采集卡非windows标准硬件,驱动程序需要自行开发,这里使用WDM编程。为了提高速度采用双线程操作。由于写磁盘比较慢,如果等写完磁盘再读local bus显然效率太低,所以启动双线程双buffer读写数据[5]。

部分程序代码:

BOOL GetData()

{ ……

//创建等待驱动中断线程以及写文件线程

hEvent_Disk=GreateEvent(NULL,TRUE,TRUE,NULL);  hEvent_Mem = CreateEvent(NULL,TRUE,FALSE,NULL);

_beginthread(WaitForDataThread,0,NULL);                   _beginthread(WriteDiskThread,0,NULL);

//启动DMA传输

SetDma();   BlockDmaLocalToPci(dmabuffer, BLOCK_ONE_DMA);

}

void WaitForDataThread(void * pParam)

{}

void WriteDiskThread(void * pParam)

{}

4.3 数据传输指令生成

PC应用程序产生数据传输指令,触发数据传输。指令的产生是通过9054在PC端的底层驱动,设置9054 LOCAL端USERO管脚电平,使FPGA进入工作状态,并产生相机行触发信号(EXSYNC),触发相机拍照传输数据。USERO信号为高电平时,FPGA和9054都处于等待状态;USERO下降沿触发数据传输,使FPGA和9054进入工作状态;数据传输完毕,USERO拉高。时序如图3。

5         系统测试及工程考虑

本系统测试微机环境为:CPU,Pentium(R) 4. 2.40GHz;内存,333MHz,512MB/s;北桥芯片,845PE;操作系统,Windows Server 2003;SCSI硬盘空间,120G。

系统测试结果:图像单线稳定存储速率为37.2 MB/s ,流水线稳定存储速率为71.2MB/s;持续记录时间为25分钟。

       工程考虑:系统速度主要限制于两个瓶颈,一是硬盘本身,二是PCI总线。本系统虽然采用了高速硬盘,但还有一个操作效率的问题。数据从FPGA到PCI9054的传输介质采用一般硬盘线,此类硬盘线的上限频率为33M,限制数据采集速度;同时由于系统需要通过PCI总线转移数据,而计算机的PCI总线多为32位、33MHz的总线,这个总线的理论数据为132MB/s,当总线上仅仅有一个设备时,实测实际总线持续传输速率在100MB/s以下,当总线上再挂载磁盘适配器时,总线的数据传输速率会更低。系统稳定性主要取决于FPGA内部逻辑的容错性和微机的稳定性。在高速存储的环境下,微机系统容易死机,因此微机选择具有高稳定性的Windows Server 2003操作系统作为图像采集的存储环境。

本文作者创新点是利用FPGA和PCI9054完成了对高速、高分辨率图像的采集存储。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭