K9MDG08U5M在航拍相机中的应用

2010-08-06 09:27
通信技术 2010年3期
关键词:存储器指令编程

单 洁

(西安邮电学院通信工程系,陕西 西安 710061)

0 引言

随着数字技术的迅速发展,高分辨率 CCD航拍相机已经初步应用于航天、航空、军事等领域。对于高分辨率 CCD相机技术而言,图像的保存与恢复是难点之一。目前常用的存储设备有硬盘、光盘、各种动静态及固态存储器件,其中闪存在便携设备中具有容量大、价格低廉、控制方法灵活、与微处理器 接口方便等特点,且体积小、功耗低、抗震抗干扰性强等优点,更适合作为数码相机的存储器。因此,研究闪存在高分辨率CCD相机中的应用技术有重要的意义。

目前有关闪速存储器应用的文献比较多,文献[1]介绍的图像采集记录系统是以Samsung公司的64 M闪速存储器作为图像存储介质,但是这些应用不能满足大容量存储要求。

1 用K9MDG08U5M 构成CCD航拍相机的存储系统

本相机系统采用 DALSA公司生产的一款超大分辨率全帧转移型面阵CCD FTF4027M,其有效像素1100万,象元尺寸为 9 um×9 um,工作频率 27 MHz,可四象限同时读出,读出速度快,最大可达每秒8幅。设计要求最高拍摄频率2帧/秒,存储容量不小于120帧 。这就对存储器的容量和速度提出了很高要求:① 航拍相机要求重量轻、功耗低、工作性能稳定等;② 原始图像1 M×12 bit(12位AD转换),尽管图像经过压缩处理,但由于原始图像分辨率过高,120帧图像仍然需要很大的存储空间;③ CCD读出速度快,就单端输出来说每秒就有2帧图像,原始数据就有22 M ×12 bit,按压缩率为 1/3.5压缩后存储,要求存储器的速度达到9.428 Mbyte/s,这对存储器的读写速度要求很高[2]。因此,根据以上的难点,笔者在众多的存储设备中选用了 NAND FLASH存储器K9MDG08U5M。系统框图见下页图1。

当快门开启时,镜头将光线会聚到感光器件 CCD ,CCD是半导体器件,主要功能是把光信号转换为电信号。这样得到了对应于拍摄景物的电信息图像。由于CCD的输出是模拟信号,因此需要使用一个ADC 器件来进行数字化处理。随后这些数据信息经过DSP读出并进行压缩、转换等处理,再转换成特定的图像格式。最后,以图像文件的形式存储在FLASH存储器中。事后可通过 LCD查看拍摄的照片和通过 USB2.0接口将照片传输到计算机上。

图1 系统框图

2 系统中的主要器件

2.1 信号处理器

在本系统中图像压缩采用 TMS320C6205,这是一款高性能的定点数字信号处理器[3]。工作频率为200 MHz时,每个指令周期为5 ns,运算速度可达1600 MIPS;具有VLIW体系结构,每周期最多可有8个 32 bit的指令并行执行;8个独立的功能单元,有两个 16 bit乘法器和6个算术逻辑单元;采用加载存储体系结构,数据在多处理单元之间的传输依靠32个32 bit的通用寄存器。C6205的外部存储器寻址空间为52 MByte,片内有1 Mbit的SRAM。片内RAM被分为两块:① 内部程序/cache存储器;② 内部数据存储器。32 bit EMIF可与不同存储器接口,可方便地配置不同速度、容量、复杂程度的存储器。此外,C6205还有四通道Bootloading DMA处理器、两个多通道缓冲串口(McBSP)和32 bit/33 MHz PCI接口,并且片内PLL时钟发生器可对输入时钟进行不同的倍频处理。这种芯片很合适处理图像压缩等运算密集的工作。

2.2 闪存K9MDG08U5M

K9MDG08U5M是三星公司开发的目前单片容量最大闪存芯片,它的单片容量高达 16 GB。K9MDG08U5M内部是由 16片K9W8G08U1M构成,所以仅需研究K9W8G08U1M的结构就可以了。

2.2.1 内部结构

K9W8G08U1M的单片容量达到 1 GB,同时还提供有256 M额外容量。该闪存芯片是通过与非单元结构来增大容量的。芯片容量的提高并没有削弱它的功能,它可以在300 μs内完成一页 2112个字节的编程操作,还可以在 2 ms内完成128 K字节的擦除操作,同时数据区内的数据能以50 ns/byte的速度读出,已经与一般的SRAM相当。8位I/O端口采用地址、数据和命令复用的方法。这样既可减少引脚数,还可使接口电路简单。片内的写控制器能自动执行写操作和擦除功能,包括必要的脉冲产生,内部校验等,完全不用外部微控制器考虑,简化了器件的编程控制难度。工作电压为 1.8 V或3.3 V,符合当前低功耗的国际潮流。

该芯片具有以下特点:① 以页为单位进行读和编程操作,以块为单位进行擦除操作,具有快编程和快擦除的功能;② 数据、地址采用同一总线,实现串行读取。随机读取速度慢且不能按字节随机编程;③ 芯片尺寸小,引脚少,是位成本最低的固态存储器;④ 芯片包含失效块,失效块不会影响有效块的性能。其内部结构如图2所示。

图2 原理框图

在整个图像存储系统中,K9MDG08U5M是设计核心,它由地址译码器、存储阵列、命令寄存器、控制逻辑和高电压产生器和I/O缓存、全局缓存及输出驱动组成。

2.2.2 与 TMS320C6205硬件接口设计

K9MDG08U5M与 TMS320C6205的硬件接口电路见图 3。K9MDG08U5M只有8根数据地址复用总线,而TMS320C6205的EMIF接口数据和地址总线分别有32位和20位,所以必须经过一种合理的总线转换将其连接,本系统采用 2片K9MDG08U5M并行存储。具体电路连接方法是读写使能信号可直接相连;控制线CLE和ALE分别与EMIF的数据线ED9和ED11直接连接;EMIF的片选信号/CE1与字节使能信号/BE0相与后与 FLASH 的片选信号相连;由于EMIF的ARDY 信号为低时,DSP自动插入等待时钟周期,因此FLASH 的RY/ #BY信号经过上拉电阻与ARDY信号相连,这种设计使FLASH的写操作可不运行数据测试算法,简化了程序设计。

图3 K9MDG08U5M与TMS320C6201接口电路

图中的MAX708是一个电源电压监测芯片。当电压正常时,管脚/PFI 输入电压高于1.25 V,系统正常工作;当工作电压降低时,管脚/PFI的输入电压低于1.25 V(门限电压)时,管脚 /PFO输出跳为高电平,经过反向后输出,使得存储器进入写保护状态。当电源电压超过门限电压300 ms后,才解除写保护状态,可以正常写入数据。这样可以保证写入存储器的数据都是有效的。MAX708的工作电流只有50 μA。

3 软件设计

Flash的基本操作有读、按页读、页编程、缓存编程、存储单元复录和块擦除等。对Flash的操作要靠写入一系列特定的地址和数据序列完成。在每次对Flash写入之前要对其原来内容进行擦除。对Flash写操作是按页进行的,每次页编程之前要有5个周期的地址输入,这样速度远远低于系统要求,解决方法只有连续写操作,即只在每幅图像之前写入地址,然后连续写入一幅图像的数据,这样速度大大提高。同样,采用连续读操作,顺序读出一幅或多幅图像会提高速度。这样对 K9MDG08U5M的操作就简化为连续读写和擦除操作。

海量数据存储是本系统的瓶颈,设计要求实时拍摄,每秒2幅照片,数据量 22 M×12 bit,K9MDG08U5M写操作最快速度为7 Mbyte/s,如果压缩率为1/3,则数据量11 Mbyte/s大于K9MDG08U5M写操作速度。本系统采用JPEG2000方法,压缩率可达到 1/3.5,数据量为 9.428 Mbyte/s,2片K9MDG08U5M并行基本满足要求。如果特殊情况下数据量超过Flash峰值,解决方法有:第一寻找更好的压缩方法提高压缩率;第二采用四片并行存储32位数据。

3.1 块擦除

K9MDG08U5M的擦除操作是以块为基础进行的。块地址装载将从一个块擦除指令开始,并在两个循环内完成。实际上,当地址线A12~A17悬空时,只有地址线A18~A30可用。装入擦除确认指令和块地址即可开始擦除。该操作必须按此顺序进行,以免存储器中的内容受到外部噪声的影响而出现擦除错误。

3.2 写操作

在写入连续数据输入指令(80h)后装载连续数据,当写入页编程确认指令(10h)即可开始编程操作。假定分辨率为11 M原始图像,经过压缩处理后成为4 M,在相机工作前先将FLASH清除,然后第一幅图像保存在连续的2 k页,中间无需再写入地址。以此类推,整片 K9MDG08U5M可以保存2048 幅这样的照片。写数据操作流程如图4。

3.3 读操作

K9MDG08U5M的默认状态为读状态。读操作是以通过5个地址周期将00h地址写到指令寄存器为开始指令,一旦该指令被锁存,就不能在下页中写入读操作了。当地址变化时,随机读操作可以将选定页中的2 k字节数据在25 μs内存入数据寄存器中。系统可以通过分析 R/#B 脚的输出来判断数据转移是否完成。而存入数据寄存器的数据可以很快地被读出,如一页的数据通过连续的RE脉冲可以在50 ns内读出。

3.4 坏块管理

闪存同其它固体存储器一样均会产生坏块。坏块是包含一位或多位无效位的块。在K9MDG08U5M中坏块不影响正常部分的工作,这是因为其各块之间是隔离的。坏块可以通过地址的布置系统找到,而三星公司确定地址为 00h的第一块一定是正常的。坏块在多数情况下也是可擦写的,并且一旦被擦掉就不能恢复。因此,系统必须能根据坏块信息来识别坏块,并通过流程图建立坏块信息表,以防止坏块信息被擦除。

图4 写操作流程

在闪存的使用中,可能会产生新的坏块,从而使正常工作出现一些错误。在擦除和编程操作后,如果出现读失败,应当进行块置换。块置换是由容量为一页的缓冲器来执行的,可以通过发现一个可擦的空块和重新对当前数据对象进行编程来复制块中的剩余部分。为了提高存储空间的使用效率,当由单个字节错误而引起的读或确认错误时,应由 ECC收回而不要进行任何块置换。

3.5 注意事项

在写操作时,三条关键控制检测线/CE、/RE、/WE必须处于正确状态,当/CE 或 /WE 不是低电平或/RE不是高电平时,编程操作将被禁止。由于该Flash的操作时序是ns级,所以在调试时要注意指令的安排顺序和有选择地加入空操作指令,以满足其精确的时序要求;擦除操作耗时较多,应减少擦除操作;由于FLSAH 在使用过程中会出现坏块,因此尽量避免频繁地对同一地址操作,以免造成局部单元提前损坏。

4 结语

本系统最大的特点就是数据量大实时性高,DSP在计算过程中必须进行数据的交换、存储,无论采用查询方式还是中断方式都会影响CPU资源,在本系统利用C6205的DMA控制器对通过EMIF的外部存储器进行访问,可独立于CPU操作,提高CPU利用率。我们在实际工作中发现,大多数情形下,数据传输所花费时间往往超过数据处理的时间,成为系统中的瓶颈。因此,合理使用DMA提高数据传输效率,有实际应用价值[4]。

整个系统的试验过程中,本部分工作正常,有效地将高分辨率CCD相机的数据实时存入到Flash中,经过软件对存储数据的恢复分析,数据存储正确,无漏存数据或错误数据。这种数据存储方式对各种大容量数据采集以及存储系统的设计具有很好的参考意义。

[1] 刘智,薛旭东. 闪速存储器K9F1208UOM在图像采集系统中的应用[J].单片机及嵌入式系统应用, 2004(02):58-61

[2] 达选福,张伯济,边川平. 高速CCD图像数据存储技术[J]. 光子学2003,32(11):1393-1395.

[3] 李方慧,王飞,何佩琨.TMS320C6000 系列DSPs原理与应用[M].北京:电子工业出版社,2003.

[4] 李朝晖. TMS320C6201 DMA在视频图像编码中的应用[J].华北航天工业学院学报,2003,13(09):12-15.

猜你喜欢
存储器指令编程
静态随机存储器在轨自检算法
编程,是一种态度
元征X-431实测:奔驰发动机编程
编程小能手
纺织机上诞生的编程
ARINC661显控指令快速验证方法
杀毒软件中指令虚拟机的脆弱性分析
任意2~k点存储器结构傅里叶处理器
中断与跳转操作对指令串的影响
一种基于滑窗的余度指令判别算法