摘 要: 针对传统固定监控架设成本高、监控有死角且需要布置的视频采集端个数太多的情况,提出一种基于arm和fpga相结合架构的移动视频监控系统及其软硬件实现方法,在减少视频采集端节点的前提下,能够全方位实时捕捉用户所需的信息。该系统由电机控制模块、视频采集模块和无线网络控制模块构成,实现了无线视频监控系统;基于linux操作系统、web服务器和视频编码器,实现了用户可以通过internet远程查看目标现场的状况。
中国视频监控市场快速发展,数字监控逐步成为主流,网络化、个人化和智能化将是中国视频监控市场重要的发展趋势。但当前基于流媒体传输的技术对网络条件要求较高,不能大面积推广,固定监控成本太高。如何将视频监控与interne相结合,使监控人员可以随时随地实施监控,是现代监控技术急需解决的问题。另一方面,目前视频监控系统采用的微控制器多是arm9、arm11等系列微控制器,arm微控制器硬件外设出厂时已经固定,不利于用户进行硬件扩展和升级,而arm和fpga相结合的多芯片解决方案又会导致系统成本太高,同时还会造成系统资源的浪费,功耗太大。针对以上不足,本文提出了一种新的解决方案,采用zynq系列处理器,芯片采用的是高性能cortex-a9双核和fpga相结合,arm部分可以解决高清视频的处理问题,可编程逻辑fpga部分可以升级和扩展硬件。
1 移动视频监控系统架构
本设计的主控板为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驱动程序的设计。
2 电机控制部分的设计
2.1 电机控制部分硬件电路的设计
该模块主要由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口连接的电动机原理同上。
2.2 fpga部分pwm ip核的设计
xilinx嵌入式系统部分的设计由其公司推出的edk(embedded development kit)开发套件实现,edk具有完成嵌入式系统设计的一整套工具,即:硬件设计工具xps(xilinx platform studio)和软件设计工具sdk(xilinx software development kit),硬件设计步骤如下:(1)设置新工程路径;
(2)自定义ip配置外设;
(3)建立ucf文件;
(4)bit流的生成[4]。自定义ip的部分主要实现电机的正转,反转和停止控制。关键veriloghdl代码如下:
case(state)
//电机停止
′nop:{pwm_left,pwm_right}31)
{pwm_left,pwm_right,dir_lself,dir_rself}
<={7′d100,7′d100,1′d0,1′d0};
else
{pwm_left,pwm_right,dir_lself,dir_rself}<=
{{dis_value[4:0],2′b0},{dis_value[4:0],2′b0},1′d1,1′d1};
end
′return://电机反向旋转
begin
if(dir_value==3′b010)
{pwm_left,pwm_right,dir_lself,dir_rself}<={7′d80,7′d80,1′d1,1′d0};
else
{pwm_left,pwm_right,dir_lself,dir_rself}<={7′d80,7′d80,1′b0,1′b1};
end
endcase
在本设计中,对电机的控制,传输的数据量较小,只需要添加一个低速的axi4-lite总线设备pwm模块来控制pmod接口就可以实现硬件设备之间通信,其中axi4-lite的全局时aclk设置为100 mhz,pwm模块分配的起始物理地址为0x6ca00000,空间大小为64 kb,pwm配置信息如图4所示。
2.3 linux下电机驱动部分的设计
由于远端传输是在linux系统下tcp/ip协议实现的,因此,编写linux下的ip驱动,应用程序就可以通过linux的标准接口访问fpga的pmod接口设备。本设计编写的是字符型设备驱动程序,包含设备加载、设备卸载以及文件操作函数。pwm模块加载时系统调用module_init(pwm_init)宏实现模块的初始化操作,在本系统中pwm_init()函数主要完成以下工作:(1)内核注册字符型设备驱动;(2)创建pwm设备类;(3)利用pwm设备类创建设备;(4)将pwm模块物理地址映射到虚拟地址上[5]。部分关键代码如下所示:
//xps分配的物理地址
#define pwm_moudle_phy_addr 0x6ca00000
//注册驱动
pwm_driver_major=register_chrdev(0,device_name,&pwm_driver_fops);
pwm_driver_class=class_create(this_module,
pwm_driver);//创建设备类
pwm_driver_device=device_create(pwm_driver_class,null,mkdev(pwm_driver_major,0),null,pwm_device);
//利用设备类创建设备
//将pwm ip物理地址映射为虚拟地址
pwm_fre_addr=(unsignedlong)ioremap(pwm_moudle_ phy_addr,sizeof(u32));
初始化工作结束,但是仅有初始化函数,设备仍然无法工作,还需要有实现频率和占空比的调节机制。控制pwm的频率函数如下所示:
static ssize_t sys_pwm_frequency_set(struct device*dev, struct device_attribute*attr,const char*buf,size_t count)
{
long value=0;
int i;
frequency=0;
//修改频率之前,关闭pwm模块
outl(value,pwm_fre_addr);
//将写入pwm_frequency中的字符串转化为整数
for(i=0;i100000000)value=100000000;
value=100000000/frequency;
//将计数值写入到pwm模块的pwm_fre_addr寄存器中
outl(value,pwm_fre_addr);
return count;
}
控制pwm占空比的函数和控制pwm频率的函数一样。
3 实验结果及测试
系统的主控制板为zedboard开发板,上电启动后,无线路由器会发布一个ssid为tp_link_5c90的无线网络,可以通过任何可以上网的设备连接这个网络。在浏览器中输入网址:192.168.1.100,就会登录到移动视频监控的网页上,通过界面的按钮控制视频终端的运行。
本文设计采用xilinx all programmable芯片zynq作为主控cpu,fpga部分可以实现逻辑扩展和功能补充。例如:自定义通信协议、ip核,同时还可以利用xilinx的部分可重配置技术升级硬件系统,易于后期扩展和硬件升级;arm部分采用的是性能较高的cortex-a9双核,使得对高清晰视频的处理较为流畅,而且系统整体功能也比较稳定。相比于传统的模拟监控,数字视频处理技术提高了图像的质量和监控效率。
设计中采用软硬件协同设计的方法,即:在整个系统及定义的基础上,同时对软硬件进行设计和协调,其中包括软硬件的划分(哪些功能使用软件完成,哪些功能使用硬件完成)、软硬件系统的开发与联合调试,降低了开发风险,缩短了开发周期。
参考文献
[1] xilinx inc. ug585, zynq-7000 all programmable soc technical reference mannual[z]. 2013.
[2] xilinx inc. ug873, zynq-7000 all programmable soc: concepts, tools and techniques[z]. 2013:12-35,40-53.
[3] 王芳芳,张欢.基于zynq平台的动态智能家居系统的设计[j].软件,2013,34(8):98-100.
[4] 胡典荣,郭春生.基于zedboard的spi和以太网传输设计[j].杭州电子科技大学学报,2013,33(5):126-129.
[5] 陆佳华,江舟,马岷.嵌入式系统软硬件协同设计指南:基于xilinx zynq[m].北京:机械工业出版社,2013.
巴西成立了一个称为ABCripto的加密货币联盟
物联网带来的好处多还是威胁多
全球应对COVID-19给以太网交换机和路由器市场结果造成一定影响
直流电机的结构组成
比特币近期走势报告显示,下跌情况严重或将还会继续向下跌
基于Zynq的移动视频监控系统的电机控制设计
关注世界卫生日,三星洗衣机助力全民健康
太赫兹脉冲的“电场”组分在半导体铁磁材料的太赫兹磁化调制中起着关键作用
中国产LED产品召回事件屡屡发生 抽检产品质量良莠不齐
折叠共源共栅运算放大器原理及设计
通过嵌入式AI解决方案来深挖终端计算性能
盘点:2016年VR市场的发展现状
鸿蒙系统内核中哪些地方会用到自旋锁?
为什么虚拟机比容器更安全
传感器加载连接装置是决定电子秤性能的重要环节之一
英特尔卖掉闪存业务是明智的选择
如何使用波形分集雷达抑制风力涡轮机干扰
Automechanika Frankfurt 强势回归:国际汽车售后市场在法兰克福全面复苏
大气网格化联网在线检测解决方案
PCIe链路端到端的数据传递 PCLe总线的层次结构