kaiyun官方注册
您所在的位置: 首页> 可编程逻辑> 业界动态> 基于SoPC的视频跟踪系统中OSD功能的实现

基于SoPC的视频跟踪系统中OSD功能的实现

2008-04-22
作者:王玉良1,2, 朱 丹1, 冯安

摘 要:介绍一种基于SoPC技术的视频跟踪系统" title="跟踪系统">跟踪系统中OSD功能的实现方案" title="实现方案">实现方案。首先在FPGA上实现SoPC设计,然后用一个M-RAM作为OSD缓存,并通过Nios Ⅱ处理器和自定义的API函数对OSD缓存中的内容进行刷新,最后通过OSD合成逻辑将字符/图形叠加到PAL-D视频信号中。
关键词:OSD SoPC视频跟踪" title="视频跟踪">视频跟踪FPGA


  OSD(On Screen Display)是指将系统的参数和状态信息在屏幕上显示出来,在电视机、录像机等家电产品中这种技术早已广泛应用。视频跟踪系统要求进行数字、符号、跟踪窗的实时显示,即具有OSD功能,包括无视频输入指示、锁定指示、跟踪状态和性能指示、显示脱靶量数据及其他操作参数等。
  OSD的实现方法基本上有三种:使用专用OSD器件;选用支持OSD功能的处理器;采用PLD。在实时性要求较高的视频跟踪系统中,需要使用大规模FPGA进行并行图像处理,并且在FPGA中实现SoPC设计,同时应能减小系统的体积和成本。如果只选用专用OSD器件或带有OSD功能的处理器反而会增加系统硬件设计的复杂度,降低系统的可靠性。因此,有必要采用与SoPC系统相结合的OSD实现方案。
1 视频跟踪系统
  基于SoPC技术的视频跟踪系统框图如图1所示。系统采用Altera公司的Stratix 系列FPGA及Nios Ⅱ软核处理器实现SoPC设计,将图像处理、目标识别与跟踪等协处理单元挂在Nios Ⅱ处理器上,并通过SPI、I2C等IP-Core实现对操纵杆、视频编解码器等设备的控制。系统支持PAL-D(576i25)标准输入输出。


2 OSD实现方案
2.1 SoPC系统的配置结构
  在SoPC系统中,实现OSD功能要与如图2所示的SoPC系统的配置结构相结合,系统采用Altera公司的MAX-II器件作为配置控制器,在系统启动(boot)时负责将FPGA的配置数据从外部Flash Memory传送到Stratix中。这里将OSD字符/图形库以只读数据的形式存放在外部CFI-Flash中,CFI-Flash同时装有FPGA的配置数据和软件程序,配置结束后MAX-Ⅱ需要将连接CFI-Flash的全部总线置为‘Z’,这样Nios Ⅱ处理器才能够获得CFI-Flash的总线使用权,以读取程序和OSD数据。


2.2 OSD实现结构
  OSD实现框图如图3所示。这里采用了FPGA中的一个M-RAM作为OSD缓存,其中每位与视频中的一个像素映射。因PAL-D复合视频信号为隔行扫描,因此,OSD缓存中的数据按奇/偶场方式存放,每场占用720×288/8=25 920B,M-RAM大小为64KB,可实现全视场范围的单色OSD映射。OSD缓存被定义为双口方式,输出与视频数据流同步。
  OSD缓存的数据位宽可定义为2n(n=0,1,…),但应该注意:数据位宽选得越大,NiosⅡ" title="NiosⅡ">NiosⅡ处理器的访问速度就越快,而OSD的水平方向定位也越复杂;数据位宽选得越小,水平方向定位越精确,但访问速度也会越慢,且实时性差。因此,进行折衷处理,选择lpm_width=8。
  M-RAM的读地址要根据行、场同步信号" title="同步信号">同步信号生成,图像原始分辨率为864×625,则水平计数器Cnt_Hor和垂直计数器Cnt_Ver为10bit宽,Cnt_Hor的异步清零端接脉冲化后的行同步信号HSYNC,Cnt_Ver的异步清零端接脉冲化后的场同步信号VSYNC。在有效图像分辨率为720×576范围内,使能地址计数器Cnt_Rd_Addr、Cnt_Rd_Addr的计数时钟为像素时钟的8分频,即每8个像素时钟读取一个数据,Cnt_Rd_Addr的异步清零端接脉冲化后的场同步信号VSYNC。
  OSD缓存读地址生成逻辑如图4所示。图中,1.6875MHz时钟脉冲化后接74165的STLD(并行数据加载信号),每隔8个像素时钟载入一个字节的OSD数据并串行输出。图5为最简单的OSD合成逻辑,图中,bit→piexl的映射逻辑用一个8位并-串转换器74165实现,使用两个8bit的Mux2_1,如果ctrl_bit等于‘0’,则YCbCr输出原图像数据;如果ctrl_bit等于‘1’,则Y输出0xEB,CbCr输出0x10。


2.3 OSD API
  OSD API的实现包括:创建API硬件接口;建立字符/图形库;OSD显示驱动函数(包括字节重构、字符显示、图形显示、消隐等)。
  API硬件接口可以通过SoPCBuilder建立,包括16位地址OSD_ADDR、8位数据OSD_DATA、写使能OSD_WEN和OSD缓存的异步清零信号OSD_ACLR。由于M-RAM不能设置初始数据,因此上电后首先将OSD_ACLR置位,然后对OSD缓存初始化后,再将OSD_ACLR置零,以免开机时系统出现花屏现象。
  字符/图形库可以通过字模提取软件得到,并定义到unsigned char const型数组中。打开Nios Ⅱ IDE中的System Library Properties窗口,将read-only data memory(.rodata)项设为ext_flash,即将OSD库放在外部的CFI-Flash中。
  OSD数据写入缓存时要注意两个关键问题,一是垂直方向上的隔行处理,即按照奇偶场规则写入缓存;二是水平方向上的字节拆分与重构,因为OSD缓存是整字节(8bit)访问的,为了实现字符/图形的像素级定位,该操作是必要的。例如,为了在位置3开始叠加如图6所示的11个bit‘1’,需要补5个bit的‘0’,并将重构后的“0x3f、0xf8”写入OSD缓存,该操作由软件完成。


3 结果与结论
  OSD实现效果如图7所示,监视器上叠加有字符、数字和图形,如果进一步设计,还可以实现彩色OSD、画中画以及透明效果,本文只是对这一方案进行了初步验证。
  实际应用证明,本文提出的设计方案新颖、合理,能够有效减小视频跟踪系统的体积、降低系统复杂度和成本,具有极大的实用价值。
参考文献

[1] Altera Corporation. Nios II Hardware Development Tutorial,2004.
[2] 杜升平, 曹剑中. FPGA在OSD中的应用. 科学技术与工程, 2006,(6)14:2065-2087.
[3] 宋传明, 陈宁.基于字符叠加技术的车载视频系统, 新技术新工艺, 中国仪器仪表, 2004,(9):8-10.

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。
Baidu
map