SoPC的自感知运动图像采集系统设计_第1页
SoPC的自感知运动图像采集系统设计_第2页
SoPC的自感知运动图像采集系统设计_第3页
SoPC的自感知运动图像采集系统设计_第4页
SoPC的自感知运动图像采集系统设计_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、【Word版本下载可任意编辑】 SoPC的自感知运动图像采集系统设计 设计中调用移位存放器IP核,将间隔为640的3个数作为输出,这样同时取到三行同一列的三个数据,将这三个数据存入存放器分别作两次缓存延迟,从而得到33的邻域数据,根据配置模块提供的行列计数的位来判断该邻域中间点所在行和列的奇偶性,从而计算出不同的RGB值。至此,每点图像数据量变为原来的3倍。为了便于在液晶屏开展图像显示的验证和SDRAM的缓存,在该模块将RGB数据开展了抽样处理,采用隔点隔行采样使得每帧图像分辨率降为320240像素。 2.2 缓存模块 考虑到系统需要缓存的数据量较大,在各种随机存储器件中,SDRAM器件价格低

2、、容量大、速度也较快,非常适合用于图像采集系统。但SDRAM的控制逻辑比较复杂,要求有一个专门的控制器。 缓存模块是由Sdram控制器,三个FIFO以及分时切换电路组成。SDRAM控制器负责外部SDRAM的读写操作。三个FIFO中Write_FIFO用来数据输入,Read_FIFO11和Read FIFO2用来数据输出,容量均为512,位宽设为16 b。考虑到SDRAM只有16 b的位宽,输入的RGB信号分别只取各自的5位。 2.2.1 SDRAM控制器 SDRAM控制器是由命令生成状态机和数据通道两个模块构成。系统的初始化、读写和刷新的控制采用有限状态机来实现。如图2所示,其状态转移系统复位

3、后由复位状态(Reset)进入初始化(Init)状态。初始化包含初始化延时、初始化预充电、初始化刷新和初始化模式存放器设置4个子状态。初始化时将模式存放器设置为长度为“1”的突发读写方式。设置完模式存放器后,系统进入空闲状态。当3个FIFO半满信号有效后。SDRAM控制器进入行激活状态,经过两个周期空操作(ActiveNOP)状态后进入读或者写状态。 读数据过程由Read CAS状态开始,经过CAS延时,进入Read_Data状态。突发计数器从Read_CAS态开始计数,当计数到读写请求的突发长度时,状态机进入Read_Precharge状态将打开的行关闭。在图像采集中,用突发方式存完一行后,

4、下存取的将是不同的行。根据这一特点,在SDRAM控制器中开展了优化,在读写操作完成后执行自动预充电,将打开的行关闭,将预充电的时间隐藏在数据访问中,从而提高了SDRAM访问的速度。写操作过程由Write_Data和Write_Precharge状态组成。当激活一行完成后,进入到Write_Data状态,突发计数器对周期计数,计数到突发长度时,状态机进入Write_Precharge状态将打开的行关闭。需要注意的是Read_Precharge和Write_Precharge后都需要两个空操作才能再打开新的一行。 由于图像数据流的连续性,每隔65 s就有一行数据输入,因此在SDRAM控制器中没有必

5、要再设置刷新计数器,而是在响应图像采集数据请求后将采集的一行数据存入SDRAM后对SDRAM开展刷新。由于HY57V641620HG要求在65 ms内完成4 096次刷新,该设计验证时按照每帧图像(320240)(60帧s)格式采集,需要在采集一行后完成4 09*.4次刷新,因此需执行5次刷新操作。在Write_Precharge完成后,如果写操作是由FIFO半满信号有效引起的,状态机将进入自动刷新状态,完成5次刷新操作后回到Idle状态。如图3所示,数据通路模块受OE信号的控制,使数据的进出和相应的操作指令在时序上同步。OE为1时,数据可由DQ脚写入SDRAM,OE为0时,数据可从SDRAM

6、的DQ读出。 经测试SDRAM控制器满足设计要求,在Model-Sim6.0中其时序仿真波形图如图4所示。 2.2.2 帧存分时切换机制 Write_FIFO,Read_FIFO1和Read_FIFO2都是16 b位宽,而SDRAM只有16 b的数据位宽,三个FIFO都要访问SDRAM,这就涉及到相互竞争的问题,在同一时刻只能有一个访问SDRAM。为此需要设计一个分时切换机制。由于SDRAM的操作时钟为100 MHz,而采集像素时钟为25 MHz,经过抽样后时钟频率更是大大降低。在采集周期内,SDRAM完全可以和三个FIFO的接口轮流切换,从而不会影响采集的速度。 如图5所示,其工作过程为:

7、(1)图像经格式转换模块输出,写入Write_FIFO的输入端口。 (2)当控制电路检测到Write_FIFO中读出端的数据量大于256(三个FIFO容量均为512 word)时,产生写命令,并拥有写互斥锁。SDRAM控制器接到命令,以100 MHz时钟将256个数据写入SDRAM。 (3)Write_FIFO输出256个数据后,读出端的数据量小于256,并且由于Read_FIFO1中初始状态的输入端数据小于256,Read_FIFO1拥有读互斥锁,产生读命令,SDRAM控制器接到命令,以100 MHz时钟将256个数据读出,并写入Read_FIFO1。 (4)当Read_FIFO1收到256

8、个数据,其输入端数据大于256,并且由于Read_FIFO2中初始状态的数据小于256,Read_FIFO2拥有读互斥锁,产生读命令,SDRAM控制器将256个数据读出,并写入Read_FIFO2。 (5)这样就完成了操作,之后就是循环操作。地址信号也是由控制电路产生,每经过读写,地址增量为256,这样就可以保持信号的连续性。 (6)Write_FIFO在一定周期内向SDRAM中连续写入两帧连续图像;Read+FIFO1根据SDRAM中的地址读取其中的一帧图像数据;而Read_FIFO2读取另一帧图像数据。 通过这个机制,三个FIFO中始终都有数据,不会发生读空、写满情况,使得存储器两端的数据

9、读写方便,只要在write FIFO的输入端和ReadFIF01、Read FIFO2的输出端开展操作就行,在时钟的上升沿将数据写入或输出,实现了异步方式。 3 运动检测模块 该模块采用帧间差分法,其基本原理是将连续的两帧或几帧的图像对应的像素值相减,在环境亮度变化不大的情况下,如果对应像素值相差很小,则认为此处景物是静止的,如果图像区域某处的像素值变化很大,可认为这是由于图像中运动物体引起的。其算法实现简单,能够适应各种动态环境,稳定性较好。 设计中对相邻两帧图像的每个像素RGB分量分别取差值。当差值大于阈值时(这里取经验值16),就认为存在差异,如果做比较的两个像素的RGB分量只要有一个分

10、量有差异,则令此点的数值为1,这样就得到一幅320240像素大小的二值差值图像。然后传统处理方法是统计值为1的点的个数,如果其数量超过预设值,就认为两幅图像有差异。这种方法设计简单,但是准确率还不够高,为此该设计提出了一种改良的算法,引入了图像处理常用的两种操作腐蚀和膨胀。腐蚀与膨胀是一对逆运算,如果先腐蚀再膨胀,便构成了开运算。一般来说,开运算能够去除孤立的小点,毛刺和小桥(即连通两块区域的小点)。而总的位置和形状不变。 对上述二值图像开展开运算处理,可以消除小颗粒的噪声的干扰,从而尽可能降低误判和漏判。 设计流程如图6所示,通过调用ALTSHIFTTAPS IP核,并利用输出TAPS,构建

11、一个1111像素大小的图块作为构造元素,然后腐蚀: (1)用1111的构造元素,扫描图像的每一个像素; (2)用构造元素与其覆盖的二值图像做“与”操作; (3)如果都为1,结果图像的该像素为1,否则为0。 接着再将上述结果作为第二个ALTSHIFTTAPS的输入,再次构建1111个像素的构造元素,然后开展膨胀处理: (1)用11ll的构造元素,扫描图像的每一个像素; (2)用构造元素与其覆盖的二值图像做“或”操作; (3)如果都为0,结果图像的该像素为0,否则为1。 得到运动判定信号DETECT,并用这个信号控制数据写入过程,一旦判定信号为1,就启动后续的图像存储过程。 4 SD卡图像存储模块

12、 (1)接口电路模块。在各种存储设备中,SD卡不仅小巧,而且功耗很低,另外市面上常见SD卡的容量可到达2 GB以上,因此非常适合用于对体积和功耗要求严格的嵌入式图像存储。该设计选用APACER公司的一款高速SD卡(传输速率为150X,容量4 GB)。为了增强系统的可扩展性,该设计在FPGA芯片中嵌入Altera公司新近推出的第二代高性能Nios软核处理器,其处理能力超过200 MIPS,并在Nios中完成SD卡驱动程序设计。前端的采集缓存电路与Nios系统之间的数据和控制信号由定制的接口模块完成。 定制IP核DATAIN_FIFO是在SoPC Builder环境下完成(如图7所示),DATAI

13、N_FIFO写端口的时钟信号、写请求信号同步于SDRAM控制模块的ReadFIFO1,而DATAIN_FIFO的读端口的时钟、读请求信号则由CPU控制。以上信号除了waitrequest之外,都由Avalon交换构造自动产生和控制。waitrequest信号可以直接连接到异步FIFO的rdempty输出,当FIFO读空之后,waitrequest有效,插入等待周期,一直到从端口的数据准备好才输出readdata。开始和结束采集控制信号由DETEcT信号和DMA中断信号决定,确保采集到的数据刚好为一帧320240图像。 由于Nios系统提供了成熟的SPI接口,所以设计中采用SPI总线协议模式来读

14、写SD卡。因为MMC卡在复位阶段要求SPI的时钟频率要小于等于400 kHz,为了提高读写速度,本设计设计的接口不再兼容MMC卡,其设置SPI的SCK引脚的输出频率在数据传输时设为25 MHz。 (2)BMP图像文件创立程序。为提高程序运行速度。并考虑到该系统的实际需要,程序只实现了写BMP图像文件功能。程序主要由SD卡操作驱动接口函数和文件系统层组成。 驱动函数目的是为文件系统层提供所需的SD卡初始化函数和SD卡写多块数据函数。图8是SD卡写函数流程图示意图。当写函数接收到主程序的写文件指令后,就向SD卡发送多块写命令,卡将发送给主机一个应答令牌,并且等待主机发送一个发送数据块来,当应答R1

15、为0时,说明可以发送数据,块大小设置为512 B。数据块之后附有16位的CRC校验,因为CRC校验计算占用了很大部分发送的时间,该系统采用自定义用户指令对这部分开展了加速处理。 要使写入SD卡的数据在装有Windows或Linux操作系统的上位机中得到正确访问,需要在SD卡上创立它们支持的文件系统。考虑到FAT12目前已经很少使用,在此设计的文件系统只支持FAT16和FAT32。并且将整个卡作为一个分区处理。 图9是系统的软件工作主要流程图。在主程序中,系统启动后,先开展初始化操作,包括中断初始化、文件系统初始化和SD卡底层驱动的初始化。随后系统进入主循环等待状态,一旦检测到DETECT_PI

16、O电平的变化就暂停SDRAM数据写入,以防SDRAM缓存的图像数据被覆盖,同时根据当前的时间创立一个BMP格式的文件,然后往里填写文件头和文件信息头,随后连续写一帧RGB数据。文件创立完毕后系统继续处于检测等待状态,并恢复SDRAM数据写入。 5 系统*价 该设计在自制实验板上(见图10)开展了软、硬件仿真和调试,调试环境参数设定如下:采集时钟频率为25 MHz,Nios时钟频率为100 MHz、每帧图像大小为320240像素。调试结果如下:系统采集速度在60帧s左右。对五米之内场景动态变化的响应时间在5 ms左右,SD卡保存单帧图像时间约为9 s(每帧图像数据量是153 600 B),连续工作一个星期无任何故障发生。结果说明该系统图像采集和处理速度超过一般的以软件

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论