《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于Zynq的移動視頻監(jiān)控系統(tǒng)
基于Zynq的移動視頻監(jiān)控系統(tǒng)
2014年微型機與應用第15期
陳榮濤,,葛 芬
南京航空航天大學 電子信息工程學院,,江蘇 南京
摘要: 針對傳統(tǒng)固定監(jiān)控架設成本高、監(jiān)控有死角且需要布置的視頻采集端個數(shù)太多的情況,,提出一種基于ARM和FPGA相結(jié)合架構(gòu)的移動視頻監(jiān)控系統(tǒng)及其軟硬件實現(xiàn)方法,,在減少視頻采集端節(jié)點的前提下,,能夠全方位實時捕捉用戶所需的信息。該系統(tǒng)由電機控制模塊,、視頻采集模塊和無線網(wǎng)絡控制模塊構(gòu)成,,實現(xiàn)了無線視頻監(jiān)控系統(tǒng);基于Linux操作系統(tǒng),、Web服務器和視頻編碼器,,實現(xiàn)了用戶可以通過Internet遠程查看目標現(xiàn)場的狀況。
Abstract:
Key words :

  摘  要: 針對傳統(tǒng)固定監(jiān)控架設成本高,、監(jiān)控有死角且需要布置的視頻采集端個數(shù)太多的情況,,提出一種基于ARMFPGA相結(jié)合架構(gòu)的移動視頻監(jiān)控系統(tǒng)及其軟硬件實現(xiàn)方法,在減少視頻采集端節(jié)點的前提下,,能夠全方位實時捕捉用戶所需的信息,。該系統(tǒng)由電機控制模塊、視頻采集模塊和無線網(wǎng)絡控制模塊構(gòu)成,實現(xiàn)了無線視頻監(jiān)控系統(tǒng),;基于Linux操作系統(tǒng),、Web服務器和視頻編碼器,實現(xiàn)了用戶可以通過Internet遠程查看目標現(xiàn)場的狀況,。

  關鍵詞: 視頻監(jiān)控,;ARM;FPGA,;Linux,;Internet

  中國視頻監(jiān)控市場快速發(fā)展,數(shù)字監(jiān)控逐步成為主流,,網(wǎng)絡化、個人化和智能化將是中國視頻監(jiān)控市場重要的發(fā)展趨勢,。但當前基于流媒體傳輸?shù)募夹g對網(wǎng)絡條件要求較高,,不能大面積推廣,固定監(jiān)控成本太高,。如何將視頻監(jiān)控與Interne相結(jié)合,,使監(jiān)控人員可以隨時隨地實施監(jiān)控,是現(xiàn)代監(jiān)控技術急需解決的問題,。另一方面,,目前視頻監(jiān)控系統(tǒng)采用的微控制器多是ARM9、ARM11等系列微控制器,,ARM微控制器硬件外設出廠時已經(jīng)固定,,不利于用戶進行硬件擴展和升級,而ARM和FPGA相結(jié)合的多芯片解決方案又會導致系統(tǒng)成本太高,,同時還會造成系統(tǒng)資源的浪費,,功耗太大。針對以上不足,,本文提出了一種新的解決方案,,采用Zynq系列處理器,芯片采用的是高性能Cortex-A9雙核和FPGA相結(jié)合,,ARM部分可以解決高清視頻的處理問題,,可編程邏輯FPGA部分可以升級和擴展硬件。

1 移動視頻監(jiān)控系統(tǒng)架構(gòu)

  本設計的主控板為Digilent公司的ZedBoard開發(fā)板,,主芯片Zynq7020結(jié)合高性能雙核ARM Cortex-A9 MPCore處理系統(tǒng)和可編程邏輯于一體[1],。視頻采集端位于移動小車之上,從而達到移動采集視頻的目的,。系統(tǒng)的設計主要包括ARM控制部分的設計和FPGA邏輯部分的設計,。ARM部分主要用來運行操作系統(tǒng)和系統(tǒng)上的應用軟件,如Web服務器Boa,視頻編碼器mjpg-streamer,;FPGA部分主要用來擴展硬件資源,,進行小車電機驅(qū)動部分PWM IP核的設計。系統(tǒng)總體結(jié)構(gòu)框圖如圖1所示,。各模塊功能為:攝像頭負責視頻圖像采集,,Zynq主控模塊負責ARM操作系統(tǒng)部分和FPGA邏輯資源部分,電機控制模塊負責智能小車的運動,,Boa Webserver負責網(wǎng)絡的交互,,無線路由器負責無線網(wǎng)絡數(shù)據(jù)的收發(fā)。

001.jpg

  系統(tǒng)上電之后,,首先自動執(zhí)行芯片內(nèi)部固化的芯片初始化程序,,然后執(zhí)行第一階段的啟動加載器FSBL,使用比特流文件(PWM IP核設計生成的bit文件)對FPGA部分進行配置,,待FPGA配置完成后,,開始執(zhí)行U-boot引導程序,啟動Linux操作系統(tǒng)[2],。系統(tǒng)啟動完成后,,智能小車通過無線路由器產(chǎn)生無線信號,用戶在另一端就可以通過網(wǎng)絡來連接智能小車終端,,實施視頻監(jiān)控,。用戶和系統(tǒng)的交互實現(xiàn)如圖2所示。

002.jpg

  本文主要介紹電機控制部分的設計,,具體包括電機控制部分硬件電路的設計,,F(xiàn)PGA部分PWM IP核的設計,Linux操作系統(tǒng)PWM驅(qū)動程序的設計,。

2 電機控制部分的設計

  2.1 電機控制部分硬件電路的設計

  該模塊主要由L298P雙H橋直流電機驅(qū)動芯片實現(xiàn),。由于一個L298P芯片可以驅(qū)動兩個直流電機,小車有4個車輪,,因此需要兩塊L298P芯片[3],。同時,為了減少使用的FPGA I/O引腳數(shù)量,,在原理圖設計中采用了四二輸入或非門芯片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接口上的電動機正轉(zhuǎn);當ENA為1,,DIR1為0時(也就是IN1為1,,IN2為0時),P1接口上的電動機反轉(zhuǎn),;當ENA為0時,,P1接口上的電動機停止,。與P2口連接的電動機原理同上,。

003.jpg

  2.2 FPGA部分PWM IP核的設計

  Xilinx嵌入式系統(tǒng)部分的設計由其公司推出的EDK(Embedded Development Kit)開發(fā)套件實現(xiàn),EDK具有完成嵌入式系統(tǒng)設計的一整套工具,,即:硬件設計工具XPS(Xilinx Platform Studio)和軟件設計工具SDK(Xilinx Software Development Kit),,硬件設計步驟如下:(1)設置新工程路徑;(2)自定義IP配置外設,;(3)建立UCF文件,;(4)bit流的生成[4]。自定義IP的部分主要實現(xiàn)電機的正轉(zhuǎn),,反轉(zhuǎn)和停止控制,。關鍵VerilogHDL代碼如下:

  case(state)

  //電機停止

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

  ′GOING://電機正向旋轉(zhuǎn)

  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://電機反向旋轉(zhuǎn)

  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

  在本設計中,,對電機的控制,傳輸?shù)臄?shù)據(jù)量較小,,只需要添加一個低速的AXI4-Lite總線設備PWM模塊來控制PMOD接口就可以實現(xiàn)硬件設備之間通信,,其中AXI4-Lite的全局時ACLK設置為100 MHz,PWM模塊分配的起始物理地址為0x6CA00000,,空間大小為64 KB,,PWM配置信息如圖4所示。

004.jpg

  2.3 Linux下電機驅(qū)動部分的設計

  由于遠端傳輸是在Linux系統(tǒng)下TCP/IP協(xié)議實現(xiàn)的,,因此,,編寫Linux下的IP驅(qū)動,應用程序就可以通過Linux的標準接口訪問FPGA的PMOD接口設備,。本設計編寫的是字符型設備驅(qū)動程序,,包含設備加載、設備卸載以及文件操作函數(shù),。PWM模塊加載時系統(tǒng)調(diào)用module_init(pwm_init)宏實現(xiàn)模塊的初始化操作,,在本系統(tǒng)中pwm_init()函數(shù)主要完成以下工作:(1)內(nèi)核注冊字符型設備驅(qū)動,;(2)創(chuàng)建PWM設備類;(3)利用PWM設備類創(chuàng)建設備,;(4)將PWM模塊物理地址映射到虛擬地址上[5],。部分關鍵代碼如下所示:

  //XPS分配的物理地址

  #define PWM_MOUDLE_PHY_ADDR 0x6CA00000

  //注冊驅(qū)動

  pwm_driver_major=register_chrdev(0,DEVICE_NAME,,&pwm_driver_fops),;

  pwm_driver_class=class_create(THIS_MODULE,"

  pwm_driver"),;//創(chuàng)建設備類

  pwm_driver_device=device_create(pwm_driver_class,,NULL,MKDEV(pwm_driver_major,,0),,NULL,"pwm_device"),;

  //利用設備類創(chuàng)建設備

  //將PWM IP物理地址映射為虛擬地址

  pwm_fre_addr=(unsignedlong)ioremap(PWM_MOUDLE_ PHY_ADDR,,sizeof(u32));

  初始化工作結(jié)束,,但是僅有初始化函數(shù),,設備仍然無法工作,還需要有實現(xiàn)頻率和占空比的調(diào)節(jié)機制,??刂芇WM的頻率函數(shù)如下所示:

  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中的字符串轉(zhuǎn)化為整數(shù)

  for(i=0,;i<count-1,;i++)

  {

  frequency*=10;

  frequency+=buf[i]-′0′,;

  }

  //100 MHz/frequency,,100 MHz在XPS中已經(jīng)設定

  if(value>100000000)value=100000000;

  value=100000000/frequency,;

  //將計數(shù)值寫入到PWM模塊的pwm_fre_addr寄存器中

  outl(value,,pwm_fre_addr),;

  return count;

  }

  控制PWM占空比的函數(shù)和控制PWM頻率的函數(shù)一樣,。

3 實驗結(jié)果及測試

  系統(tǒng)的主控制板為Zedboard開發(fā)板,,上電啟動后,無線路由器會發(fā)布一個SSID為Tp_Link_5C90的無線網(wǎng)絡,,可以通過任何可以上網(wǎng)的設備連接這個網(wǎng)絡,。在瀏覽器中輸入網(wǎng)址:192.168.1.100,就會登錄到移動視頻監(jiān)控的網(wǎng)頁上,,通過界面的按鈕控制視頻終端的運行,。

  本文設計采用Xilinx All Programmable芯片Zynq作為主控CPU,F(xiàn)PGA部分可以實現(xiàn)邏輯擴展和功能補充,。例如:自定義通信協(xié)議,、IP核,同時還可以利用Xilinx的部分可重配置技術升級硬件系統(tǒng),易于后期擴展和硬件升級;ARM部分采用的是性能較高的Cortex-A9雙核,,使得對高清晰視頻的處理較為流暢,,而且系統(tǒng)整體功能也比較穩(wěn)定。相比于傳統(tǒng)的模擬監(jiān)控,,數(shù)字視頻處理技術提高了圖像的質(zhì)量和監(jiān)控效率。

  設計中采用軟硬件協(xié)同設計的方法,即:在整個系統(tǒng)及定義的基礎上,,同時對軟硬件進行設計和協(xié)調(diào),其中包括軟硬件的劃分(哪些功能使用軟件完成,,哪些功能使用硬件完成),、軟硬件系統(tǒng)的開發(fā)與聯(lián)合調(diào)試,降低了開發(fā)風險,,縮短了開發(fā)周期,。

參考文獻

  [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平臺的動態(tài)智能家居系統(tǒng)的設計[J].軟件,,2013,34(8):98-100.

  [4] 胡典榮,,郭春生.基于ZedBoard的SPI和以太網(wǎng)傳輸設計[J].杭州電子科技大學學報,,2013,33(5):126-129.

  [5] 陸佳華,,江舟,,馬岷.嵌入式系統(tǒng)軟硬件協(xié)同設計指南:基于Xilinx Zynq[M].北京:機械工業(yè)出版社,,2013.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉(zhuǎn)載,。