基于SOPC的运动视觉处理系统设计
扫描二维码
随时随地手机看文章
0 引言
随着深亚微米工艺的发展, FPGA的容量和密度不断增加,以其强大的并行乘加运算(MAC)能力和灵活的动态可重构性,被广泛应用于通信、图像等许多领域。但是在复杂算法的实现上,FPGA不如嵌入式处理器方便,所以在设计具有复杂算法和控制逻辑的系统时,往往需要和嵌入式处理器结合使用,这就是 SOPC(System on a Programmable chip,可编程片上系统)技术。 SoPC是 SoC和 FPGA结合的产物,由单个可编程重构的芯片完成整个系统的主要功能。SoPC设计灵活多变,可以用原理图,硬件描述语言甚至是 C/C++高级语言进行设计;同时还具有可重构、可裁减、可扩充等特点,升级方便。 SoPC兼备 SoC和 FPGA二者的优点,具有如下特点:
●丰富的 IP核资源,包括通用 IP核和专用的 IP核
●在系统可编程,设计、编译、下载与调试简单方便
●内置嵌入式软核处理器,存储器,外设接口控制器
●大量可编程重构的逻辑资源
●功能强大的时钟管理电路
●支持多种 I/O接口标准
此外,由于减小了处理器和存储器之间的传输线距离,SoPC无论在速度,还是信号完整性,电磁兼容等方面,比板级系统都有明显的优越性。
1 功能框图
在数字视频视觉采集与处理板级系统开发的基础上,本文采用 SoPC实现运动视觉处理与控制系统的设计方案。硬件采用 Altera公司 StratixII系列 FPGA,软件开发工具包括 QuartusII,NiosII5.1 IDE,DSP Builder,MegaCore IP Library5.1和 Matlab7.0等。整个 SoPC系统工作原理为:摄像头采集的视频图像数据由图像传感器接口进来;数字信号处理块和数字图像与数字视频处理 IP核完成视频图像的处理,如运动检测、分割、特征提取、压缩等; Nios II嵌入式处理器主要完成整个系统的控制功能;I2C总线用于访问 CMOS图像传感器的内部寄存器;PC机可以通过 USB接口访问 SoPC,如果距离较远的话,可以通过以太网口进行数据的传输;视频图像及其处理后的结果既可以通过外部存储器接口存放在 CF卡, FLASH等存储介质中,也可以通过 LCD显示器接口在液晶显示屏上直接显示。该运动视觉 SoPC的功能框图如图 1所示:
该模块主要负责视频图像的采集,摄像头参数的设置和云台步进电机的控制。其中,通过 I2C总线可以设定摄像头内部控制寄存器。在 FPGA中,实现 I2C总线控制器的途径有两种:一种是在 Nios II中用软件模拟实现;另一种是采用第三方,比如 Sciworx,CAST,Digital Core Design等公司提供的 IP核。这些 IP核具有工作参数,可以根据需要进行设定。以 CAST公司提供的 I2C总线控制器为例,传输速率最高为 100Kbps,可以工作在 4种模式下,分别是主发送器模式、主接收器模式、从发送器模式和从接收器模式。双路 CMOS图像传感器接口控制视频图像采集的时序,帧同步和行同步;云台控制信号是根据视频图像处理后的结果,控制云台的两个步进电机的转动。这两个模块需要自己开发,形成具有自主知识产权的 IP核。
3 视频图像处理模块
该模块包括 NiosII 32位嵌入式处理器,数字信号处理块,数字图像与数字视频处理 IP MegaCore,以及其他一些逻辑电路,这是运动视觉处理与控制 SoPC设计的重点和核心,分别分以下几个部分介绍。
(1) Nios II嵌入式处理器
Nios II嵌入式处理器是一款通用的 RISC结构的 CPU,它定位于广泛的嵌入式应用。在 Nios II IDE集成开发环境中,按照操作提示添加、设置相关参数,在几分钟之内就能生成一个 Nios II嵌入式处理器。其硬件开发过程为:
① 分析系统所要完成的功能、达到的性能
② 启动 SOPC Builder,选取具体的 FPGA型号
③ 定义 CPU,外围器件,存储系统等模块
④ 为各个模块分配基地址和中断请求号(IRQ)
⑤ 生成 Nios系统模块,引脚锁定,编译软件开发过程为:
① 在 SOPC Builder中启动 Nios II IDE
② 创建 C/C++软件工程,并指定目标硬件
③ 利用工程模本编写相应的程序
④ 编译后,即可下载到硬件中运行
Nios II IDE中可以采用 C/C++或者汇编语言进行程序的编写,其文件扩展名分别为 .c和.s。一个单独的 Nios II/f CPU大约需要占用 1800个 LEs,如果再添加一些定时器,外围器件等,那么占用的逻辑单元会进一步增加。