摘要: 采用单片FPGA设计与实现图像处理系统的方法,并对系统硬件进行了分析和设计,对FPGA内电路模块进行了VHDL建模,在FPGA开发平台ISE4.1上实现了设计。
本文介绍的预处理系统是中科院国家天文台即将立项的国家重大工程项目——空间太阳望远镜(Space SolarTelescope,SST)科学数据处理单(Science DataProcessillg unit,sDPu)的一个子系统。SDPU的功能是对由观测仪器采集到的科学数据进行一系列复杂的图像处理任务,以满足天文学者对太阳的分析要求。预处理系统是一个单片的FPGA系统,由于本系统是一个星载系统,除了功能设计外,还采用了可测性设计技术,设计出了一个高可靠性的系统。
1 预处理系统的位置和功能
1.1 预处理单元在SDPU的位置
SDPu的功能是对科学数据进行一系列复杂的处理,它担负着巨大数据量的高速采集、压缩、编码、存储任务,并具有高可靠度的容错技术。SDPU的结构如图1所示,它主要由电荷耦合器件(cha玛e coupledDevice,CCD)阵列、预处理(Pre-Processing,PP)阵列、中央(Cen仃a1 ProcessiIlg UIlit,CP叻、海量存储器(MaSsMemo吼M卜D、压缩单元DSPl和DSP2、下传子系统(Dovm Lilll(System,DLs)等构成的。SDPU的任务按顺序包括如下过程:数据采集、积分、相关运算、ccD图像标定、stockes参数计算、小波图像压缩、通信格式化和下传等。数据采集由SST的5个观测仪器共17个通道构成的CCD(探测器)阵列来完成;积分的工作是在预处理完成的;CCD修正和stockes计算、小波压缩是由两个DsP模块(DSPl、DSP2)来完成;通信格式化和下传任务是由下传子系统(DLS)完成;各单元处理的数据都是由海量存储器(MM)暂存;系统总体调度和管理由CPU来进行。

1.2 预处理系统的功能
(1)提高信噪比。SDPU各个仪器的信噪比要求各不相同,但都是通过累加多帧连续的极化图像来改善图像的质量。各仪器在不同的模式下,积分的帧数亦各不相同,预处理要正确识别和处理。
(2)压缩数据量。每日流入预处理的数据量为2506GB,而下传的容许值仅8GB。因此在SDPU中采用了二级压缩方法,由DSP进行帧内的空间相关性消除,但图像压缩比仅为5:1。预处理单元的压缩比平均为60:1,主要是消除帧间的时间相关性。
(3)Stockes参数测量。太阳望远镜的主光路中插入了一个偏振分析器,该分析器具有3个可控的元件,通过控制元件状态可以组合成进行偏振光的Stockes参数各分量的图像测量:SQ1(左旋分量)、SQ2(右旋分量)、SU1、SU2、SV1、SV2。预处理要正确识别观测状态并进行相应的正确处理。
(4)观测模式。在图像的信噪比和物体移动产生的拖影之间选择了一个折中的解决方案,从而定义了如下3个标准的观测模式:爆发模式、活动区模式和宁静态模式。而活动区模式和太阳宁静态模式是基本爆发模式的多次重复,且有:活动区模式=突发模式×6;宁静态模式=活动区模式×10。根据不同的观测模式,预处理有不同的工作行为。
2 预处理系统的硬件设计
图1中的预处理实际上是一个预处理阵列,一共有16个通道,因此需要16个预处理模块,每个通道的预处理设计大致相同。以下给出的是一个通道的设计示例。
2.1 硬件电路设计框图
预处理单元的硬件电路如图2所示。白色的方框都是预处理单元的逻辑设计,整个系统除了收发器和存储器,其他的重要功能结构都设计在单片FPGA中(虚框是FPGA的内部)。CCD向预处理送去数据和同步信号,同时管理机给预处理送去观测模式和观测状态等信号。预处理则根据这些信号,完成规定数据处理任务。数据、同步信号和模式状态信号都是由RS422差分驱动传送到预处理;预处理对送来的数据进行积分,积分的帧数根据观测模式的不同,分别是4、40、240帧。积分操作相应需要读写存储器地址生成,积分期间必须把上次积分完成的数据送到海量存储器中,以便下一次积分时再次使用这段存储空间,为此设计了数据传送相应的存储器访问逻辑和数据传送逻辑。内存设计成双存储器结构以及积分和数据传送进行切换的使用方法,因此设计了相应的选择逻辑。由于16个通道的预处理共享一套总线向海量存储器传送数据,因此必须设计一个仲裁电路来进行仲裁,它是用一个状态机来实现的。状态机把总线顺序判给数据有效的预处理单元进行数据传送,传送完成后状态机回收总线权。

2.2 接口及时序
预处理主要有4个接口:(1)CCD的数据和同步信号输入。(2)管理计算机的模式状态信号的输入。(3)向海量存储器送去的数据和同步。(4)接收状态机的仲裁状态和授权信号。其中:(4)无法给出规整的时序关系,(3)除多了通道号等标志信号,(3)和(1)基本类似。预处理同CCD的接口及时序图如图3所示。信号包括:10位数据din、点同步信号ps、行同步信号ls、帧同步信号fs。

管理计算机传送给预处理的直接命令及时序图如图4所示。传送到预处理的信号有:观测模式信号Mode、偏振测量的分量信号Segment、系统全局复位信号Reset。

预处理同海量存储器的接口信号:16位数据、时钟CLK、行同步ls、帧同步fs、数据有效、通左右旋分量号和道号等。除了后三种信号在1帧图像内是一个固定电平外,其他信号的时序关系和CCD到预处理的时序关系相同。
3 FPGA的开发
FPGA的开发过程采用的是top-down的设计方法。首先分模块对系统进行VHDL建模,建模完成后是编程、验证和实现。VHDL是标准化的硬件描述语言,利用它进行硬件建模,其系统描述的抽象级别比较高,而且得到几乎所有商用成熟(COTS)开发平台和仿真工具的支持,既缩短设计周期,又可减小投资风险。
3.1 VHDL建模
下面分别介绍各个模块,并给出各模块的主要输入、输出和大致的逻辑结构和功能。
(1)积分器:如图5所示,积分器的两个操作数一个来自CCD,另一个来自存储器中上一次的累加结果,积分器还要负责扩展位的清零问题;数据传送和积分操作在时间上是并行进行的,因此把存储器设计成两个体(Bank)的结构;数据和地址选通逻辑是用于控制积分和数据传送所工作的内存体号;状态机是总线仲裁机构,它轮询17个通道,授予和回收17个通道到海量存储器的共享总线的使用权。

(2)积分地址生成:如图6所示,积分地址生成的输入有:点同步ps、行同步ls、帧同步fs和分量信号segment,通过点计数器、行计数器和分量计数器并行生成的积分地址,通过译码等逻辑最后产生适合存储器芯片的地址、片选和读写有效信号。

(3)送数地址生成:如图7所示,其输入是送数时钟dsclk,利用点计数器、行计数器和帧计数器级联形式产生12MB(1个bufffer,6个分量共6帧图像)的数据地址空间,计数器的溢出分别送到命令生成单元和FIFO接口单元。

(4)数据和地址选择逻辑:如图8所示,控制信号buffsel,用于判决积分和送数操作的buffer号(即A或B);控制信号dir,用于判决是向全加器送去1个输入数据还是接收全加器的输出数据(数据方向控制)。

(5)状态机:状态图如图9所示。状态机用于裁决16个通道中的哪一个通道有权使用海量存储器的共享数据总线向海量存储器传送数据,以时钟同步来进行状态的转换,且状态是顺次转换的。当轮询到某个通道时,若数据没有准备好,则继续向后轮询;若该通道的数据就绪,则状态机把总线权授予该通道,该通道即可以进行数据传送操作。数据传送完成以后,状态机回收总线并继续顺次向后轮询;状态采用one-hot编码方式,当rdy=1时,数据就绪,可以传送,dsen是可以进行数据传送的使能信号。若要每单元都能正确地完成积分任务,则必须在30秒内把16个通道都轮询一周。

(6)命令生成和同步FIFO接口:命令生成模块集中生成各电路单元所需要的各种命令。同步FIFO接口产生同海量存储器接口的时钟、同步信号、数据有效标志、buffer号和通道号标识等信号(由于二者的逻辑散乱无法用图式给出)。
3.2 实现和验证
根据文中所建立的模型,本系统的目标芯片选用Xilinx公司10万门的SpartanII器件,输入、调试、综合、仿真、最终实现和器件编程等设计的整个过程都是在Xilinx公司的ISE4.1平台上进行的。具体步骤如下:
(1)用VHDL写出各模块的RTL描述,对各模块单独进行行为和时序仿真。
(2)当各模块的仿真都通过以后,分别产生schematic symbol。
(3)在schematic编辑器里把各模块连接起来,完成系统的连接。
(4)对系统进行行为和时序验证(包括约束设置和一些设置调整)。
(5)最后是实现和下载,进行硬件与系统级联调。
4 结论
预处理地面样机系统经联调和运行性能测试证明,达到了预定的功能和目标,并满足系统可测和高可靠度的要求。预处理系统的成功设计大大减轻了卫星上科学数据对存储容量要求;避免了前端数据处理的瓶颈效应;同时保证了数据的质量。单片FPGA设计,使系统具有体积小、重量轻、功耗小等优点。该优点一直是航空航天电子系统所追求的目标。本文介绍的设计技术对其他应用系统的设计具有借鉴性。