收藏 分享(赏)

基于fpga的视频图像采集系统.doc

上传人:cjc2202537 文档编号:196785 上传时间:2018-03-23 格式:DOC 页数:11 大小:99.50KB
下载 相关 举报
基于fpga的视频图像采集系统.doc_第1页
第1页 / 共11页
基于fpga的视频图像采集系统.doc_第2页
第2页 / 共11页
基于fpga的视频图像采集系统.doc_第3页
第3页 / 共11页
基于fpga的视频图像采集系统.doc_第4页
第4页 / 共11页
基于fpga的视频图像采集系统.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

1、基于 FPGA 的视频图像采集系统嵌入式技术墨摘要关键词0 引言基于 FPGA 的视频图像采集系统黄颠挺,王少荣(华中科技大学电力安全与高效湖北省重点实验室,湖北武汉 430074)介绍了一种基于 FPGA 和 ARM 视频采集系统进行设计的新方法 .该系统采用摄像头芯片 LM9627,低端 FPGA 器件和 ARM 嵌入式系统实现了高速连续的视频采集.系统具有设计结构清晰,使用灵活和性价比高等优点.重点介绍了硬件程序设计和软件流程,并给出相应的关键代码.视频采集现场可编程门阵列 ARM 嵌入式系统随着计算机技术的发展,嵌入式计算机使用越来越广泛,单个嵌入式处理器运算能力已经可以和 PC 机媲

2、美,而且具有成本低,功耗小等特点.本设计采用 NI 公司的 LM9627 彩色 CMOS 传感器作视频采集,由一块 Altera 公司型号为 EP1K30 的 FPGA器件实现视频信号的传输,采用三星公司 ARM 内核的32 位处理器 S3C44B0 芯片作为处理器.系统原理框图如图 1 所示.图 1 系统整体框图1 采样系统的硬件设计为保证系统通用性,将系统硬件电路分为 3 个模块:LM9627 摄像头芯片单独作为摄像头模块;FPGA与 2 片 SRAM 组成数据缓存模块;使用 CVTECH 的S3C44B0ARM 板作为数据处理模块.图像数据缓存电路采用 2 片 CYPRESS 公司的51

3、2kbytesSRAMCY7Cl049V331】的 SRAM 作为临时图像缓冲区,交替存储两帧数据.FPGA 采用 Altera 公司开发的 ACEX 系列器件 EP1K30QC208【.将 SRAM 的存储区域映射到 ARM 芯片的存储空间,则 CPU 读取图像数据就如读取普通内存的数据一样没有区别,可以使用 CPU 的 DMA 功能,实现 SRAM 到 CPU外接的 SDRAM 的快速数据搬移.此种方法需要将 CPU的地址数据总线和 SRAM 的地址数据总线接入到FPGA,由 FPGA 完成总线切换,原理如图 2 所示.使用 CVTECH 的 S3C44B0 开发板【,建立了 CPU工作的

4、最小系统,包括电源电路,时钟电路,系统复位电路,程序存储器,数据存储器等.程序存储器采用一片 2M16bit 的 Flash 存储器芯片 TE28F32014,数据总线宽度为 16bit.数据存储器采用一片 SDRAM 存储器芯片 W986416DH,数据总线宽度也为 16bit.系统存储空间的分配如表 1 所示.图 2SRAM 存储器映射原理框图表 1ARM 板存储空间分配类型起始地址结束地址FLASH0x000000000x00400000SDRAMOxOaO00000OxOa8O00002FPGA 逻辑设计FPGA 逻辑程序设计使用 VHDL 语言,开发环境是Altera 公司的 Qua

5、rtus5.0.FPGA 的逻辑设计主要分为三部分:LM9627 的数据采集,数据的存储,CPU 的数据传输接口控制.2.1LM9627 图像数据的采集采用 LM9627 的主模式工作方式吲,FPGA 被动接收视频数据.数据采集过程主要利用 LM9627 提供的时钟信号,将对应的数据线上的像素数据存放入存储器中,具体就是实现存储器的地址产生器,像素点在 SRAM 中的具体存放地址根据 2 个同步信号来判断.将 LM9627的 PCLK 设置为 “FreeRunningMode“,HSYNC 信号的无效电平可以作为新一行的起始信号,在 HSYNC 的有效电平下 PCLK 采集的数据为有效数据 .

6、VSYNC 信号的无效电平指示新一帧的开始,采集过程的 VHDL 源码如下:ppclk:pclkandhsyncandvsync;PPCLKCNT:process(reset,hsync,pclk)begin 一每行像素计数器作为存储器的低 1O 位地址ifreset=0orhsync=.0.thenpclkcnt=(others=一 0)_一新一行数据开始elsifppclkeventandppclk= 0then一下降沿ifpclkcnt=“1100001100“then一每一行计数结收稿日期:200701.18 束电工技术 I2007I5 期 I55一删存储空问一一蝴蕊嵌入式技术pclk

7、cnt=(others=一 0)_一 780=0x30celsepclkcnt=pclkcnt+一地址递增endif;endif;endprocess;phsync-hsyncandvsync;PHSYNCNT:process(reset,hsync,vsync)Begin 一行计数作为存储器的高 9 位地址Ifreset=0orvsync=0thenhsyncnt=(others=一 0):elsifphsynceventandphsync=0thenifhsyncnt=“111111000“thenhsyncnt=(others=0):一 504=0xlf8elsehsyncnt=hsyn

8、cnt+1:endif;endif:endprocess;在采集数据之前必须保证数据在 PCLK 的下降沿有效,HSYNC 和 VSYNC 均设置为高电平有效 .有效像素时钟信号 ppclk 通过 pclk,hsync,vsync 相与得到,因此只要 ppclk 发生上升沿跳变,即可认为在数据线上的数据为有效像素数据.存储器的地址计数器的计数脉冲主要来自 ppclk 脉冲,在一个 ppclk 脉冲作用下,地址加 1.建立了二维地址,就是把每一行的像素计数值作为存储器的低位地址,用行计数器作为存储器的高位地址,两套地址分开计数,最后的存储器地址由两部分组合得到.这样,CPU就可以方便快速地从 S

9、RAM 中取得任何一点,一行或一块的数据,在编写 CPU 程序方面占有优势,并且采用两个宽度较短的地址计数器比单个长宽度的地址计数器更加节省 FPGA 内部资源.LM9627 芯片采集图像的最大分辨率为 664x504,也就是说行计数可以用 9 位计数器表示,每一行的最大像素个数位 664,可以用 1O 位计数器表示,行计数器值作为存储器地址的高 9 位,行像素计数器作为存储器地址的低 10 位,正好组成 SRAM 的19 位存储地址.代码片断如下:signalpclkcnt:stdlogicvector(9downtoO);signalhsyncnt:stdlogicvector(8down

10、toO):signalsramaddr:stdlogic_vector(18downtoo);sramaddr=hsynccntpclkcnt;2.2SRAM 的写操作控制这里只分析 SRAM 的写时序,是因为只有 CPU 才会发出 SRAM 的读操作,而 CPU 的地址数据控制总线直接接到 SRAM 上,就像操作内存一样,最多在 CPU 的ROMBANK 时序上做些调整 .CY7C1049V33 的写操作时序如图 3 所示:56IWWWI 电工技术CY7C1049V3325 各电平信号要求的保持时间均不超过 15ns.如果 MCLK 时钟频率 30MHz,PCLK 设置为 MCLK/4=7.

11、5MHz,PCLK 时间宽度为:.)l(/2d/Z/Ir一:一tsr,Ir 啪xKDATAVALID1H7nF图 38RAM 写操作时序图f=1/,o.Ik133x1O 叫 s=l33ns15ns时序完全满足要求.因此可以直接使用 PCLK 作为SRAM 的写信号.SRAM 的读写逻辑程序片断如下:oddsramaddr=sramaddr;一组合地址oddsramdata=Im9627 一 data;一一图像数据从LM9627 的数据输出端接入oddsramrd=1:一写操作时读使能引脚设置为高电平oddsramCS:nothsync;一一将水平同步信号的反相信号作为 SRAM 的片选信号od

12、dsram_wr=ppclk;两片 SRAM 分别取名为 EVENSRAM 和 ODDSRAM,以上是以 ODDSRAM 为例.EVENSRAM 逻辑完全相同.2.3CPU 读取图像数据CPU 通过总线方式读取 SRAM 内部的数据,因此FPGA 只需要把 CPU 的总线接口信号接入到 SRAM 端即可,代码片断如下:evensramCS=cpucs;一 CPU 的片选信号接到SRAM 的片选总线evensramaddr=cpuaddr;一 CPU 的地址信号接到 SRAM 的地址总线evensram_wr=1:ifcpuCS=0thenCPU 发出读操作cpudata=evensramdat

13、a;一一将 SRAM 数据总线切换到 CPU 数据总线evensramrd:cpurd;一将 CPU 的读信号送入SRAMelseCPU 没有发出读操作cpudata=ZZZZZZZZ“:evensramrd=1;endif;LM9627 中的数据直接通过 FPGA 以硬件方式往SRAM 中写数据,因此写满一帧数据的速度要比 CPU 读完一帧数据快.为了保证当 CPU 读取其中一块 SRAM时,LM9627 采集模块不会干扰 CPU 读取另外一块瓦而埘队SRAM 的操作,必须建立锁机制.实现两端握手联络的过程,是通过一根 CPU 的控制引脚(cpureading)来实现.当 CPU 读取 SR

14、AM 中的数据时将 cpureading 置高,当 LM9627 采集模块需要换写存储器时,首先判断CPU 是否正在对另外一块 SRAM 进行读操作,如果正在读,那么不改变变量 oddeven 的值,LM9627 采集模块仍然对刚刚写过了的 SRAM 再次进行写操作,这样也保证了 SRAM 中为最新的图像数据;如果 CPU 没有对SRAM 进行读操作,那么对 oddeven 的值进行异或操作 ,内部控制模块就对 2 片 SRAM 进行切换.发生中断操作后,CPU 就可以读取另外一片 SRAM 中的图像数据.3ARM 程序设计本设计采用的是武汉创维特公司(CVTECH)开发的 ARM 集成开发环

15、境 ARMADT1000,它采用 armeIf-gcc 编译器,提供强大的调试手段 .本系统采用汇编与 C 混合编程的方式,汇编语言主要做系统上电时的一些初始化工作,工作流程如图 4 所刁.系统上电初始化中断向量设置系统寄存器拷贝程序代码段核数据端至内存,未定义数据端清零,为 C 程序做准备I 设置程序堆桂 ll 跳转到 c 化碍 I图 4ARM 初始化流程图C 代码完成的工作如下.首先是 IIC 通信程序,S3C44B0 的 IIC 控制器设置为主控器件 ,LM9627 作为设备控制器,器件地址为 0X66,IIC 通信程序采用CVTECH 的 llC 软件包,改写相关函数,实现 IIC 的

16、通用接口函数用于实现 LM9627 的 IIC 通信,函数原型为:voidCWrite(unsignedcharslvaddr,unsignedcharaddr,unsignedchardata);unsignedcharIICRead(unsignedcharslvaddr,unsignedcharaddr);slvaddr 为器件的从地址 ,此应用中该值为 0x66,addr 为器件内部的寄存器地址,data 为 IICWr_1e 函数写入的数据,IICRead 函数返回该地址寄存器的值 .#defineSRAMBASE0x0a000000/SRAM 基地址unsignedintReadS

17、ramData(unsignedintsrow,unsignedintscol,unsignedinterow,unsignedintecol,unsignedchardst)(嵌入式技术蔓蠢蠢unsignedintrow,col;for(row=srow;rowerow;row+1for(col=scol:colecol:col+)faddr=(row10)Icol;dst+=(unsignedchar)(SRAMBASE+addr);)return(rowco1);)可以看出关于显示窗口的大小完全可以在数据读取函数中来完成,输人参数包括所需数据的起始行列,结束行列,数据存放地址指针.读取函

18、数仅做完全的数据搬移工作,偏移地址就是由行地址成高 9 位地址,像素地址组成低 10 位地址.硬件上的设计简化了程序的编写,地址的偏移仅是做一些简单的移位操作.4 结束语实验证明,该系统能完成对视频的采集与处理,现应用于实验室的监控系统中,系统只完成数据采集工作.工程中如有需要,还可用 CPU 对图像数据进行压缩处理,大大减小对传输设备速度的要求,从而可用一些慢速设备,比如无线电话数据传输作为传输终端;还可在 FPGA 内部增加一些简单的数据处理单元,比如图像数据的色度空间变换,图像压缩等.因此具有较好的应用前景.参考文献CypressCorp.CY7Cl049V33DataSheet.June19992】2AlteraCorp.ACEx1KProgrammableLogicDeviceFamilyDataSheet(ver3.4).May20033】Samsung.S3C44B0MicroprocessorDataSheet.4】IntelCorp.3VoltAdvancedBootBlockFlashMemory.April20005】WinbondElectronicsCorp.PreJimInaryW986416DHDataSheet.May2000

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 教育学

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报