引言
在以dsp为核心的视频处理系统中,视频采集的方法通常可以分为两大类:自动的视频采集和基于dsp的视频采集。前者通常采用cpld/fpga控制视频解码芯片,通过fifo或者双口ram向dsp传送数据,特点是数据采集模块独立运行,占用dsp资源少,但实现相对复杂,成本偏高;后者通常由dsp控制视频解码芯片并同步各种时序,将视频数据读入。其特点是实现相对简单,成本有所降低,但对视频解码芯片的控制较为复杂,占用dsp处理时间。
如果通过适当的逻辑电路让数字图像传感器芯片直接接入dsp,则可省去视频控制解码芯片、cpld/fpga、fifo或双口ram,在不增加dsp软件开销的情况下,大大降低系统的复杂程度和成本,缩短开发周期。
硬件系统设计
系统总体结构
系统结构框图如图1所示。dsp采用ti公司发布的c6000系列高速浮点型信号处理器tms320c6713,其峰值处理速度达1350mflops(百万次浮点每秒)。其外部存储器接口emif(external memory interface)包括4个ce空间,其中ce0被配置为16位同步空间,接sdram;ce1为16位异步空间,接flash;ce2为16位异步空间,经过地址译码和总线缓冲将数字图像传感器ov7620接入;ce3为8位异步空间,经过数据锁存和总线隔离将lcd显示模块接入。
图1 dsp视频采集处理系统总体结构框图
ov7620的配置和硬件连接
ov7620是omnivision公司生产的cmos彩色/黑白图像传感器,在本系统中被配置为16位逐行扫描qvga方式,rgb原始数据输出,分辨率为320×240,sccb总线,内部默认的行曝光方式;同时使能href信号对pclk进行门控,即只有当href有效时像素时钟信号才被输出到pclk引脚上,否则该引脚保持无效。这样edma可以始终处在使能状态,从而简化采集过程。
图2 ov7620与dsp的硬件连接框图
ov7620与dsp的硬件连接框图如图2所示。在对ov7620复位结束后,dsp通过gpio模拟sccb总线完成对ov7620内部功能寄存器的配置,之后数帧内图像数据和同步信号将逐渐稳定。y通道和u/v通道在分别经过74hc244总线缓冲器之后接入emif低16位数据总线。ce2与地址线ea20、ea21经过译码产生2片74hc244的选通信号,此时ov7620的读地址为0xa0000000。
edma数据采集
在16位逐行扫描方式中,图像的每行rgb原始数据均被ov7620先后输出两次,因此,只须读取其偶数次href信号对应的数据即可获得整个图像信息。这样可以减少图像采集所占用的存储空间和总线资源。
ov7620同步和控制信号与gpio的对应关系如表1所列。
表1 ov7620同步和控制信号与gpio的对应关系
本系统采用edma的第12个通道(edma12)进行图像数据采集。该通道被配置为16位一维传输方式,中断禁止,pclk的上升沿触发edma12搬移一个16位数据存入到sdram中,每次edma任务搬移一个href(320个16位)的图像数据。帧同步信号vsync上升沿触发dsp中断,对edma通道进行初始化,使能水平参考信号href中断并关闭edma通道(放弃第1个href的数据),开始一帧的数据传输。href下降沿触发dsp产生中断,标志ov7620一次href数据输出的结束。如果接下来一次href数据需要被读入,则中断服务程序会对edma12参数进行修正,使能edma12通道,开始下一行数据的传输;否则,就禁止edma12,放弃下一次href数据。每接收1帧图像数据共产生240次href中断和120次edma数据传输。以下是ov7620数据采集的部分源代码:
interruptvoidint6_ext6(void){
/*vsyncgpio6帧同步中断*/
edma_opencha(pclk_edma_chanl);
/*打开edma通道,准备ov7620数据搬移*/
eer&=~(1< /*关edma使能,放弃第1个href的数据*/
icr=href_int_chanl;
/*清href(gpio7)int7中断标志*/
ier|=href_int_chanl;
/*使能href(gpio7)int7中断*/
}
interruptvoidint7_ext7(void){
/*hrefgpio7水平参考中断*/
if(!href_data_switch){
href_data_switch=true;
/*接下来的href数据有效*/
(*(edma_param_pointer+pclk_edma_
chanl)).cnt=imagesize_width;
/*修正edma传输参数计数值*/
ecr|=1< /*清上周期遗留的pclk触发事件*/
eer|=1< /*使能edma,开始读下一行数据*/
}
else{
href_data_switch=false;
/*接下来的href数据无效*/
eer&=~(1< /*禁止edma,接下来href数据不读*/
}
}
lcd模块的驱动
采用液晶显示模块可以使图像处理结果实时显示出来,方便调试和演示,成本也较低。本系统选用北京宁和电子科技发展有限公司开发的nhc_34彩色液晶显示控制模块。该模块支持256色彩色显示,每个像素点用1个字节表示,分辨率为320×234;支持标准intel8位异步总线时序,有2页显示缓存,可任意设定显示页和操作页。
lcd模块读写周期最短为350ns,而dsp外部总线接口时钟频率一般在100mhz以上,即小于10ns。通过配置emifce3空间控制寄存器cectl3(地址为0x01800014),可以将ce3空间的读写周期延长,与lcd模块无缝连接。但这样液晶模块的读写操作会过长地占用系统总线,降低对其他存储空间(尤其是对sdram)的访问效率,进而影响系统的整体速度。
本系统采用了数据锁存和总线缓冲的方法,通过377锁存器模拟低速总线控制信号时序,利用244数据缓冲器对低速总线数据进行隔离。图3给出了dsp与lcd模块硬件连接图。系统有2片74hc377(简称为“377”),一片用来锁存模拟lcd模块的读写控制信号(控制377),另一片用来锁存写入数据(数据377),由异步写使能控制线awe作为377的触发沿输入;ce3和ea20、ea21经过译码产生2个377的使能信号,dsp写数据377的地址为0xb0000000,写控制377的地址为0xb0040000。数据377的输出经一片总线缓冲器hc244(写出244,hc244简称为“244”)连接到lcd模块总线上,该244输出使能信号来自控制377。另有一片hc244(读入244)用来将lcd模块总线接到dsp低8位总线上,其输出使能信号同样由ce3和ea20、ea21经过译码产生,地址为0xb0080000,是dsp对lcd模块的读地址。
图3 lcd模块与dsp的硬件连接
dsp根据lcd模块总线时序,通过定时器延时中断来间隔地写入数据到控制377,以模拟相应低速总线的控制信号,并适时从读入244读取数据(读周期),或者写入数据到数据377(写周期),就可以完成对lcd模块的读/写操作。lcd写周期驱动例程如下(该程序通过延时来控制时间间隔):
#defineset_cs_lcd() ctrl377valu|=0x01;ctrl377reg=ctrl377valu
/*向液晶模块写入数据子程序。subaddress:0~3为a1、a0的值;writevalu:待写入lcd的数据*/
voidwrite2lcd(unsignedcharsubaddress,unsignedchar
writevalu){
ctrl377valu|=subaddress<<3;
ctrl377valu&=(subaddress<<3)|0xe7;
/*根据a0、a1的值更新ctrl377valu的对应位*/
ctrl377valu&=~0x23;/*使能cs、wr和lcd_wren*/
ctrl377reg=ctrl377valu;
/*输出控制数据到377控制锁存器*/
lcd_wr_reg=writevalu;
/*输出待写数据到377数据锁存器*/
delay(wr_lcd_delaytime310);
/*延时t420ns×6=120ns*/
set_wr_lcd();
/*置位wr信号,上升沿将数据写入lcd*/
delay(wr_lcd_delaytime); /*延时20ns*/
set_cs_lcd();
/*置位cs,使地址信号无效*/
delay(wr_lcd_delaytime35);/*延时100ns*/
set_wren_lcd();
/*写出244输出禁止,数据无效*/
delay(wr_lcd_delaytime32);
/*延时40ns,周期结束*/
}
软件系统设计
软件系统流程如图4所示。dsp在复位完成之后首先进行系统的初始化,配置锁相环、emif和gpio,并硬件复位ov7620,通过gpio模拟sccb总线配置其内部功能寄存器,之后对lcd模块清屏。当edma没有被使能时,ov7620的同步信号仍能被edma事件寄存器捕获并保持,所以把edma的初始化放在ov7620和lcd模块的初始化之后,并在使能之前清事件标志。在中断被使能之后,ov7620的帧同步信号会触发系统中断,开始进行数据的循环采集,并在每帧数据采集完成之后置位相应标志,通知主程序进行处理。主程序在接到通知后对ov7620的原始数据进行插值和平滑,生成待处理的rgb24位色图像数据。图像处理和运算的结果被送到lcd模块进行动态显示,lcd的显示任务主要由中断服务程序完成,而此时主程序已开始等待和处理下一帧图像。
图4 dsp视频采集系统软件流程
结论
本系统通过总线隔离和地址译码,只使用简单的逻辑芯片将ov7620接入dsp,并充分发挥edma独立传送的特点,仅占用dsp少量的软件开销和总线资源,就完成图像数据的采集。与采用视频接口芯片、外围fifo和cpld/fpga等方案相比,很大程度上降低了系统成本,缩短了开发周期,而对系统总线的占用却并没有增加。利用数据锁存和总线缓冲实现了对lcd模块异步低速总线的接入;利用edma进行总线模拟,进一步降低dsp对lcd模块读/写的参与,减少系统中断次数,优化系统性能,能够将图像处理的结果实时和直观地显示出来。
与其他dsp嵌入式系统相比,本系统具有处理速度快、接口简单、成本低、能实时显示的特点,适用于视觉导航、视频实时处理等要求高速处理图像的场合,以及有实时演示要求的场合。
5G对物联网产业的升级起着举足轻重的作用
Formal Verify形式验证的流程概述
恩智浦运用突破性技术改善LED光源品质
工控机的使用场景 工控机的使用事项
LET2023圆满收官 明年5.29-5.31羊城再聚
基于DSP的最小图像采集处理系统设计
人工智能与物联网带动的第四次工业革命
四色沉金尺:当三星堆文明照进制造业,开放创新的时代从未止步
功率二极管的主要参数
安凯微物联网摄像机芯片AK3918Av100斩获“年度优秀创新产品奖”
美女孩发明革命性“超级电容器”:充满一部手机仅需20秒
Apple Watch能够告诉游泳者一些关于他们的游泳练习的准确信息
解耦时必须注意以下事项
诺基亚2720经典翻盖手机亮相,搭配内外双屏设计
小米3真机拆解:一探传说中的Tegra 4真容
特斯拉斥资4200万元,在上海建新厂用来生产电动汽车充电桩
NASA终止“资源探险家计划”,震惊科学界
视频监控已经不再是以前那样,正在慢慢形成的超级视频监控云
2020年,国家推出了“新基建”战略
螺母生产流程以及优化措施