皖南电机-旋转世界
行业新闻News 当前位置:首页 >> 行业新闻

基于ARM和FPGA架构的移动视频**系统设计与实现

点击次数:0    发布时间:2025-01-22

摘要:面对传统固定**的高成本、**盲区和视频采集节点数量过多等问题,本研究提出了一种结合ARM和FPGA架构的移动视频**系统及其软硬件实现方案。该系统在减少视频采集节点的同时,实现了对用户所需信息的全面实时捕捉。系统由电机控制模块、视频采集模块和无线网络控制模块组成,实现了无线视频**,并基于Linux操作系统、Web服务器和视频编码器,允许用户通过互联网远程查看目标现场情况。随着中国视频**市场的快速发展,数字化**逐渐成为主流,网络化、个人化和智能化成为市场的重要发展趋势。然而,现有基于流媒体传输的技术对网络条件要求高,难以大规模推广,而固定**成本过高。如何将视频**与互联网结合,使**人员能随时随地实施**,是现代**技术亟待解决的问题。此外,目前视频**系统多采用ARM9、ARM11等系列微控制器,这些微控制器的硬件外设在出厂时已固定,不利于用户进行硬件扩展和升级,而ARM和FPGA结合的多芯片解决方案又会导致系统成本过高,同时造成资源浪费和功耗过大。针对这些问题,本研究提出了一种新型解决方案,采用Zynq系列处理器,结合高性能Cortex-A9双核和FPGA,ARM部分负责高清视频处理,可编程逻辑FPGA部分负责硬件升级和扩展。

1. 移动视频**系统架构

本设计以Digilent公司的ZedBoard开发板为主控板,搭载Zynq7020芯片,集成了高性能双核ARMCortex-A9MPCore处理系统和可编程逻辑。视频采集端位于移动小车之上,实现移动视频采集。系统设计包括ARM控制部分和FPGA逻辑部分。ARM部分负责运行操作系统和软件应用,如Web服务器Boa和视频编码器mjpg-streamer;FPGA部分负责扩展硬件资源,设计小车电机驱动部分PWMIP核。系统总体结构如图1所示。各模块功能如下:摄像头负责视频图像采集,Zynq主控模块负责ARM操作系统和FPGA逻辑资源,电机控制模安徽皖南电机 块负责智能小车运动,BoaWebserver负责网络交互,无线路由器负责无线网络数据收发。

系统上电后,首先执行芯片内部固化的初始化程序,然后执行第一阶段启动加载器FSBL,使用比特流文件对FPGA部分进行配置。皖南电机待FPGA配置完成后,执行U-boot引导程序,启动Linux操作系统。系统启动完成后,智能小车通过无线路由器产生无线信号,用户在另一端可以通过网络连接智能小车终端,实施视频**。用户与系统的交互如图2所示。

本文主要介绍电机控制部分的设计,包括硬件电路设计、FPGA部分PWMIP核设计、Linux操作系统PWM驱动程序设计。

2. 电机控制部分设计

2.1 电机控制部分硬件电路设计

该模块主要由L298P双H桥直流电机驱动芯片实现。由于一个L298P芯片可以驱动两个直流电机,小车有4个车轮,因此需要两块L298P芯片。同时,为减少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部分PWMIP核设计

Xilinx嵌入式系统部分的设计采用其公司推出的EDK(嵌入式开发套件)开发套件实现,EDK包含完成嵌入式系统设计的一整套工具,包括硬件设计工具XPS(Xilinx平台设计)和软件设计工具SDK(Xilinx软件开发套件)。硬件设计步骤如下:(1)设置新工程路径;(2)自定义IP配置外设;(3)建立UCF文件;(4)生成bit流。自定义IP部分主要实现电机的正转、反转和停止控制。关键VerilogHDL代码如下:

case(state)

//电机停止

′NOP:{pwm_left,pwm_right}<={7′d0,7′d0};

′GOING://电机正向旋转

begin

if(dis_value>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设置为100MHz,PWM模块分配的起始物理地址为0x6CA00000,空间大小为64KB,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模块物理地址映射到虚拟地址上。部分关键代码如下所示:

//XPS分配的物理地址

#definePWM_MOUDLE_PHY_ADDR0x6CA00000

//注册驱动

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");//利用设备类创建设备

//利用设备类创建设备

//将PWMIP物理地址映射为虚拟地址

pwm_fre_addr=(unsignedlong)ioremap(PWM_MOUDLE_PHY_ADDR,sizeof(u32));

初始化工作完成后,但仅有初始化函数,设备仍然无法工作,还需要实现频率和占空比的调节机制。安徽皖南电机控制PWM的频率函数如下所示:

staTIcssize_tsys_pwm_frequency_set(structdevice*dev,structdevice_attribute*attr,constchar*buf,size_tcount)

{

longvalue=0;

inti;

基于ARM和FPGA架构的移动视频**系统设计与实现

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);

returncount;

}

控制PWM占空比的函数和控制PWM频率的函数类似。皖南电机价格表

3. 实验结果及测试

系统的主控制板为Zedboard开发板,上电启动后,无线路由器会发布一个SSID为Tp_Link_5C90的无线网络,可以通过任何可以上网的设备连接这个网络。在浏览器中输入网址:192.168.1.100,就会登录到移动视频**的网页上,通过界面的按钮控制视频终端的运行。

本文设计采用XilinxAllProgrammable芯片Zynq作为主控CPU,FPGA部分可以实现逻辑扩展和功能补充。例如:自定义通信协议、IP核,同时还可以利用Xilinx的部分可重配置技术升级硬件系统,易于后期扩展和硬件升级;ARM部分采用的是性能较高的Cortex-A9双核,使得对高清晰视频的处理较为流畅,而且系统整体功能也比较稳定。相比于传统的模拟**,数字视频处理技术提高了图像的质量和**效率。

设计中采用软硬件协同设计的方法,即:在整个系统及定义的基础上,同时对软硬件进行设计和协调,其中包括软硬件的划分(哪些功能使用软件完成,哪些功能使用硬件完成)、软硬件系统的开发与联合调试,降低了开发风险,缩短了开发周期。

参考文献

[1]XilinxInc.UG585,Zynq-7000AllProgrammableSoCTechnicalReferenceMannual[Z].2013.

[2]XilinxInc.UG873,Zynq-7000AllProgrammableSoC:Concepts,ToolsandTechniques[Z].2013:12-35,40-53.

[3]王芳芳,张欢.基于Zynq平台的动态智能家居系统的设计[J].软件,2013,34(8):98-100.

[4]胡典荣,郭春生.基于ZedBoard的SPI和以太网传输设计[J].杭州电子科技大学学报,2013,33(5):126-129.

[5]陆佳华,江舟,马岷.嵌入式系统软硬件协同设计指南:基于XilinxZynq[M].北京:机械工业出版社,2013.

【扫一扫 关注我们】

热门搜索:皖南电机,安徽皖南电机,皖南电机价格表  |苏ICP备2023027627号-1 | ©2024 motor.tongfjd.com |

联系我们

contact us

安徽皖南电机

咨询电话

13013676025

扫一扫,关注我们

返回顶部