基于FPGA图像信号发生器设计的原理与实验结果分析

基于FPGA图像信号发生器设计的原理与实验结果分析,第1张

在自适应光学系统中,哈特曼波前传感器检测到的波前信息通过高速CCD相机采集输出,然后由波前处理机完成斜率计算、波前复原运算和控制运算。自适应光学系统研制时,为了缩短研制周期,哈特曼传感器和波前处理机需要同步进行设计和研制,以便同步完成后进行系统集成调试。

然而,通常都要等到哈特曼传感器研制完成,并且配合必要的光学系统之后,才能输出子光斑图像给波前处理机进行调试。这样给波前处理机的研制周期带来了很大压力。因此,如果可以建立一个模拟前端系统哈特曼传感器作为子光斑图像输出的信号源,则可以简化波前处理机对调试环境的要求、缩短其研制周期。本文以XC2V1500-FPGA和K9F1G16UOM-FLASH ROM为载体,设计了一种模拟哈特曼传感器中CCD相机图像输出的信号发生器。该系统不仅能为波前处理机的调试提供信号源,而且还可以为已经研制完成的波前处理机提供算法验证的支持。

1、系统原理及组成

图像信号发生器的基本原理如下:通过模拟产生CCD相机输出控制时序,将特定图像进行循环播放输出。目标图像数据可通过PC机进行加载,并且需要进行非易失性存储。这样在完成图像加载之后,系统一经启动就能够将图像数据按照要求进行输出。目标图像按要求均是灰度图像,可以是单帧、也可以是多帧,可以是从相机采集而来,也可以是通过Matlab仿真模拟得到的。选择载入不同的目标图像序列,则系统可以完成不同的需求任务。

系统组成如图1所示,主要由主控模块、USB接口模块、数据存储模块和Camera Link接口模块组成。

基于FPGA图像信号发生器设计的原理与实验结果分析,基于FPGA和FLASH ROM的图像信号发生器设计,第2张

 

主控模块由一片XC2V1500-FPGA来实现。CY7C68013A芯片组成USB接口模块,实现PC机与系统的通信功能。8片并行K9F1G16UOM-FLASHROM芯片组成数据存储模块,可提供1 GB的存储空间、良好的读写速度。对于Camera Link接口模块,采用3片DS90CR287、1片DS90LV019和1片DS90LV048A来实现,可以支持Carnera Link接口的初级配置(Base)、中级配置(Medium)和高级配置(Full)。Camera Link接口是一种应用最广泛的高帧频相机接口,具有差分传输、传输速率高的特点。

系统的任务可以分为两个过程:首先PC机通过USB总线和FPGA将目标图像序列写入FLASH;然后由于FLASH是一种非易失存储器,接下来系统一旦启动后FPGA就能够模拟产生CCD相机时序、将FLASH中的数据进行循环输出。这两个过程的实现可加载不同的FPGA程序来完成。

2、系统实现

2.1、USB接口模块

USB接口具有传输速度快、即插即用等优点,所以使用USB来实现PC机与系统的通信。CY7C68013A作为USB 2.0控制器,有3种接口工作模式:Ports,Slave FIFO和GPIF。根据系统构成和实际要求,选用Slave FIFO模式的数据传输方案。具体的硬件连接如图2所示。

基于FPGA图像信号发生器设计的原理与实验结果分析,基于FPGA和FLASH ROM的图像信号发生器设计,第3张

 

图2 Slave FIFO模式的硬件连接图

CY7C68013A通过固件编程来配置具体的功能。应用程序通过USB驱动程序建立与USB外部设备的联系。本文采用了Cypress公司提供的通用驱动CyUsb.sys,该驱动程序完全满足本系统设计的要求。应用程序可以通过两种方式来访问CyUsb.sys:
(1)使用Windows API如SetupDiXxxx和Deviceio Control;
(2)使用Cypress公司提供的CyAPI.lib。

本文采用CyAPI.lib来访问USB驱动,CyAPI.lib提供了简单高效的与Cyusb.sys通信的方法,方便掌握、可有效缩短USB设备的开发周期。

在完成图像数据写入功能时,FPGA接收到图像数据写入的命令后,使faddr地址指向用于下传数据的端点FIFO,然后开始获取来自USB控制器的数据,FPGA内部USB通信模块工作情况如图3所示。IFCLK是由FPGA提供的40MHz时钟,CY7C68013A的端点FIFO被配置为同步工作。

图3 CY7C68013A的工作时序

2.2、FLASH ROM无效块管理
选取 SAMSUNG 公司的 NAND 型的K9F1G16UOM-FLASH作为存储芯片,单片容量为1 Gb、数据宽度为16 b。大容量的FLASH器件一般都是按块(block)管理其存储空间。FLASH芯片可能有包含一个或多个无效位的无效块,这在NAND型FLASH中是不可避免的。无效块出现的几率很小,但影响很大。如果对FLASH中的无效块进行 *** 作,无效块会在数据记录的过程中造成数据的丢失和误码,影响数据的有效性和完整性。由于无效块和有效块相互隔离,无效块并不会影响有效块的 *** 作,因此只要在数据存储前将FLASH中的无效块剔除,就可有效避免数据的丢失和误码。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/2621328.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-10
下一篇 2022-08-10

发表评论

登录后才能评论

评论列表(0条)

保存