完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
单片FPGA图像预处理系统的设计与实现
采用单片FPGA设计与实现图像处理系统的方法,并对系统硬件进行了分析和设计,对FPGA内电路模块进行了VHDL建模,在FPGA开发平台ISE4.1上实现了设计。 关键词: FPGA 预处理 VHDL 状态机 预处理系统是中科院国家天文台即将立项的国家重大工程项目——空间太阳望远镜(Space Solar Telescope,SST)[1][2]科学数据处理单元(Science Data Processing Unit,SDPU)的一个子系统。SDPU的功能是对由观测仪器采集到的科学数据进行一系列复杂的图像处理,以满足天文学者对太阳的分析要求。预处理系统是一个单片的FPGA系统,完成积分、改善图像质量和偏振测量的分量控制等功能。本文具体介绍了预处理系统在SDPU的位置和功能、硬件设计框图和接口时序、设计结构及其VHDL建模以及在ISE4.1平台上实现的设计。 1 预处理系统的位置和功能 1.1 预处理单元在SDPU的位置 SDPU结构框图如图1所示,从图中可知预处理在其中的位置。SDPU的数据处理过程:CCD把采集到的图像数据进行A/D转换后实时地送至预处理单元,预处理单元负责消除图像的时间相关性(帧间冗余),从而既压缩数据量又提高信噪比,同时预处理还要进行偏振参数处理;完成了图像预处理后,把数据存放到海量存储器中;海量存储器在接收到离线的压缩单元的数据申请时,先把压缩单元处理完成的数据取回,再向压缩单元送去待处理的数据,压缩单元对数据的处理主要是除去帧内空间相关性(采用小波算法进行软件压缩);经压缩的数据,每当卫星过顶时由海量存储器送到下传单元进行下传。整个系统由管理机进行协调管理。 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建模[3][4][5],建模完成后是编程、验证和实现。VHDL是标准化的硬件描述语言,利用它进行硬件建模,其系统描述的抽象级别比较高,而且得到几乎所有商用成熟(COTS)开发平台和仿真工具的支持,既缩短设计周期,又可减小投资风险。 3.1 VHDL建模 下面分别介绍各个模块,并给出各模块的主要输入、输出和大致的逻辑结构和功能。 (1)积分器:如图5所示,积分器有2个数据输入(din、buffdin)、1个数据输出(addout)和2个控制输入端(init、adden)。din是来自CCD的数据输入端,buffdin是内存输入加法器的数据,addout是加法器的输出。控制端init是实现存储单元高6位的清零任务。当init有效时分配器会把CCD送来的数据作为低位数据,高位以零赋值,不经加法器直接送到addout端完成高位清零任务;adden在2个输入的数据均稳定下来以后使能加法器进行运算。 (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的设计,使系统具有体积小、重量轻、功耗小等特点。而这些优点一直是航空航天电子系统所追求的目标。本文介绍的设计技术对其他应用系统的设计具有借鉴性。 参考文献 1 中科院国家天文台SST研究组,德国马普高层大气研究所.SST A相报告(第二版).北京:国家天文台,1997 2 中科院国家天文台SST研究组,德国航空宇航研究所.SST评估研究报告.北京:国家天文台,1997 3 北京理工大学ASIC研究所.VHDL语言100例详解.北京:清华大学出版社,1999 4 Sjoholm S,LindhPL.VHDL for designers.Europe:prentice Hall,1997 5 李广军,孟宪元.可编程ASIC设计及应用.成都:电子科技大学出版社,2000 |
|
相关推荐
1 个讨论
|
|
1333 浏览 1 评论
助力AIoT应用:在米尔FPGA开发板上实现Tiny YOLO V4
1041 浏览 0 评论
2408 浏览 1 评论
2113 浏览 0 评论
矩阵4x4个按键,如何把识别结果按编号01-16(十进制)显示在两个七段数码管上?
2376 浏览 0 评论
1872 浏览 49 评论
6009 浏览 113 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 09:52 , Processed in 0.673852 second(s), Total 39, Slave 31 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号