属虎的属相婚配表摘 要: 针对传统固定架设成本高、有死角且需要布置的视频采集端个数太多的情况,提出一种基于ARM和FPGA相结合架构的移动视频系统及其软硬件实现方法,在减少视频采集端节点的前提下,能够全方位实时捕捉用户所需的信息。该系统由电机控制模块、视频采集模块和无线网络控制模块构成,实现了无线视频系统;基于Linux操作系统、Web服务器和视频编码器,实现了用户可以通过Internet远程查看目标现场的状况。
中国视频市场快速发展,数字逐步成为主流,网络化、个人化和智能化将是中国视频市场重要的发展趋势。但当前基于流传输的技术对网络条件要求较高,不能大面积推广,固定成本太高。如何将视频与Interne相结合,使人员可以随时随地实施,是现代技术急需解决的问题。另一方面,目前视频系统采用的微控制器多是ARM9、ARM11等系列微控制器,ARM微控制器硬件外设出厂时已经固定,不利于用户进行硬件扩展和升级,而ARM和FPGA相结合的多芯片解决方案又会导致系统成本太高,同时还会造成系统资源的浪费,功耗太大。针对以上不足,本文提出了一种新的解决方案,采用Zynq系列处理器,芯片采用的是高性能Cortex-A9双核和FPGA相结合,ARM部分可以解决高清视频的处理问题,可编程逻辑FPGA部分可以升级和扩展硬件。
本设计的主控板为Digilent公司的ZedBoard开发板,主芯片Zynq7020结合高性能双核ARM Cortex-A9 MPCore处理系统和可编程逻辑于一体[1]。视频采集端位于移动小车之上,从而达到移动采集视频的目的。系统的设计主要包括ARM控制部分的设计和FPGA逻辑部分的设计。ARM部分主要用来运行操作系统和系统上的应用软件,如Web服务器Boa,视频编码器mjpg-streamer;FPGA部分主要用来扩展硬件资源,进行小车电机驱动部分PWM IP核的设计。系统总体结构框图如图1所示。各模块功能为:摄像头负责视频图像采集,Zynq主控模块负责ARM操作系统部分和FPGA逻辑资源部分,电机控制模块负责智能小车的运动,Boa Webserver负责网络的交互,无线由器负责无线网络数据的收发。
系统上电之后,首先自动执行芯片内部固化的芯片初始化程序,然后执行第一阶段的启动加载器FSBL,使用比特流文件(PWM IP核设计生成的bit文件)对FPGA部分进行配置,待FPGA配置完成后,开始执行U-boot引导程序,启动Linux操作系统[2]。系统启动完成后,智能小车通过无线由器产生无线信号,用户在另一端就可以通过网络来连接智能小车终端,实施视频。用户和系统的交互实现如图2所示。
本文主要介绍电机控制部分的设计,具体包括电机控制部分硬件电的设计,FPGA部分PWM IP核的设计,Linux操作系统PWM驱动程序的设计。
该模块主要由L298P双H桥直流电机驱动芯片实现。由于一个L298P芯片可以驱动两个直流电机,小车有4个车轮,因此需要两块L298P芯片[3]。同时,为了减少使用的FPGA I/O引脚数量,在原理图设计中采用了四二输入或非门芯片SN74HC02D,这样用两个I/O引脚就可以控制L298P的4个输入端。DIR1、DIR2、PWM1、PWM2通过Zedboard的PMOD接口与FPGA相连。原理图如图3所示,图中IN1、IN2、IN3、IN4为输入信号,ENA、ENB为使能信号。ENA控制IN1、IN2的输入使能,ENB控制IN3、IN4的输入使能。当ENA为1,DIR1为1时(也就是IN1为0,IN2为1时),P1接口上的电动机正转;当ENA为1,DIR1为0时(也就是IN1为1,IN2为0时),P1接口上的电动机反转;当ENA为0时,P1接口上的电动机停止。与P2口连接的电动机原理同上。
(4)bit流的生成[4]。自定义IP的部分主要实现电机的正转,反转和停止控制。关键VerilogHDL代码如下:
在本设计中,对电机的控制,传输的数据量较小,只需要添加一个低速的AXI4-Lite总线设备PWM模块来控制PMOD接口就可以实现硬件设备之间通信,其中AXI4-Lite的全局时ACLK设置为100 MHz,PWM模块分配的起始物理地址为0x6CA00000,空间大小为64 KB,PWM配置信息如图4所示。
由于远端传输是在Linux系统下TCP/IP协议实现的,因此,编写Linux下的IP驱动,应用程序就可以通过Linux的标准接口访问FPGA的PMOD接口设备。本设计编写的是字符型设备驱动程序,包含设备加载、设备卸载以及文件操作函数。PWM模块加载时系统调用module_init(pwm_init)宏实现模块的初始化操作,在本系统中pwm_init()函数主要完成以下工作:(1)内核注册字符型设备驱动;(2)创建PWM设备类;(3)利用PWM设备类创建设备;(4)将PWM模块物理地址映射到虚拟地址上[5]。部分关键代码如下所示:
初始化工作结束,但是仅有初始化函数,设备仍然无法工作,还需要有实现频率和占空比的调节机制。控制PWM的频率函数如下所示:
系统的主控制板为Zedboard开发板,上电启动后,无线由器会发布一个SSID为Tp_Link_5C90的无线网络,可以通过任何可以上网的设备连接这个网络。在浏览器中输入网址:192.168.1.100,就会登录到移动视频的网页上,通过界面的按钮控制视频终端的运行。
本文设计采用Xilinx All Programmable芯片Zynq作为主控CPU,FPGA部分可以实现逻辑扩展和功能补充。例如:自定义通信协议、IP核,同时还可以利用Xilinx的部分可重配置技术升级硬件系统,易于后期扩展和硬件升级;ARM部分采用的是性能较高的Cortex-A9双核,使得对高清晰视频的处理较为流畅,而且系统整体功能也比较稳定。相比于传统的模拟,数字视频处理技术提高了图像的质量和效率。
设计中采用软硬件协同设计的方法,即:在整个系统及定义的基础上,同时对软硬件进行设计和协调,其中包括软硬件的划分(哪些功能使用软件完成,哪些功能使用硬件完成)、软硬件系统的开发与联合调试,降低了开发风险,缩短了开发周期。
[3] 王芳芳,张欢.基于Zynq平台的动态智能家居系统的设计[J].软件,2013,34(8):98-100.
[5] 陆佳华,江舟,马岷.嵌入式系统软硬件协同设计指南:基于Xilinx Zynq[M].:机械工业出版社,2013.