褚亭強
(南京郵電大學 電子科學與工程學院,江蘇 南京 210003)
基于ZYNQ的HDMI顯示端設計與實現
褚亭強
(南京郵電大學 電子科學與工程學院,江蘇 南京 210003)
高清晰度多媒體接口(High-Definition Multimedia Interface,HDMI)顯示接口是嵌入式實現的視頻采集及處理系統的重要組成部分,并有逐漸成為此類系統的顯示端標準接口的趨勢。然而在ZYNQ平臺中由于沒有在芯片中集成HDMI控制器,所以普遍采用模擬視頻信號顯示,限制了處理效果的展示和人機之間的交互。采用ADI的開源HDMI IP核以及Xilinx提供的相關IP核結合ADI HDMI發送器ADV7511,在ZYNQ平臺上以軟硬件協同的工作方式設計實現了HDMI顯示端。方案分別基于無操作系統和Linux操作系統環境實現,其中無操作系統實現可以被移植用于一些特定場合或供硬件系統測試使用;而在Linux操作系統下,通過結合直接渲染管理器(Direct Rendering Manager,DRM),本方案可以方便Linux系統下該顯示系統的移植與集成。關鍵詞: ZYNQ;高清晰度多媒體接口;直接渲染管理器;ADV7511芯片
隨著生活水平的提高,人們對高清視頻的需求越來越強烈,這促進了視頻顯示技術的蓬勃發展,集中體現在視頻信號帶寬的提升,以及視頻信號與音頻信號的集成。為了滿足這些需求,通用視頻信號接口從最初的復合視頻接口、S-Video接口、色差分量接口、數字視頻接口(Digital Visual Interface,DVI)[1],一直到高清晰度多媒體接口(High-Definition Multimedia Interface,HDMI),不僅適應了不斷提高的視頻信號清晰度的要求,也滿足了數字信號高速傳輸的需求。ADV7511是ADI的一款最高支持1 080p高清視頻且符合HDMI 1.4標準的低功耗HDMI發送器,支持數字視頻、數字音頻、I2C控制接口。在基于ZYNQ-7000的HDMI顯示系統中使用ADV7511 HDMI發送器將視頻信號轉換為HDMI顯示器可以接收的信號,即可靈活地實現HDMI顯示。
在高清視頻顯示中,大尺寸、高分辨率、高刷新率的顯示器成為標配,與此同時配套的顯示系統也朝著綜合化、信息化、智能化方向發展。隨著這種趨勢,顯示的信息量也迅速增大。這對顯示控制核心的互聯性能和帶寬提出了很高的要求,同時在一些視頻監視領域,畫面特征變化極為迅速,圖形更新速度也必須很快,這樣才能避免畫面的斷續。現有的方案基本采用DSP+FPGA或者是專用GPU實現,但是隨之而來的問題便是功耗和成本的大幅升高。為此,本方案采用基于Xilinx高性能ZYNQ-7000全可編程處理器平臺,采用軟硬件協同設計的方法,完成了一種高可用性高性能的顯示系統。
本文詳細闡述了基于ZYNQ的HDMI顯示系統的硬件和軟件設計方法和步驟,并且設計了無操作系統下的HDMI顯示系統,以滿足實時性要求高的場合;同時為了兼顧實用性和易用性,本文說明了Linux操作系統下該HDMI顯示系統驅動的原理及移植步驟,為ZYNQ-7000在實際運用中實現人機交互提供了技術支撐。
1.1 ZYNQ-7000簡介
ZYNQ-7000平臺為整個顯示系統的核心,采用ARM+FPGA架構,以ARM處理器為中心,FPGA可編程邏輯部分為擴展子系統[2],兩部分以AXI(Advanced eXtensible Interface)總線進行連接,通過AXI-Lite傳輸控制信號,AXI-Stream傳輸數據信號,成功地將ARM處理器的軟件可編程能力和FPGA的硬件可編程能力有機地結合起來[3]。其中ARM部分采用Cortex-A9雙核處理器,在系統中稱為PS(Processing System),頻率可以達到1 GHz,完全適合運行Linux操作系統。FPGA(XC7Z020)部分擁有85k邏輯單元、53k查找表、150個36 kbit的RAM塊等資源,適合做較為復雜的邏輯設計[4-5]。
1.2 系統硬件框架設計
基于ZYNQ的HDMI顯示系統框架如圖1所示,其中實線表示數據流,虛線表示控制流。
整個硬件系統宏觀上包括ZYNQ-7000全可編程處理器平臺、ADV7511 HDMI發送器和顯示器等組成。在ZYNQ內部由PS作為控制中心,通過AXI4-GP(General Purpose)接口與AXI-Lite對接實現對各個硬件模塊的控制。同時通過利用AXI-Stream總線將PS的AXI-HP(High Performance)接口對接,傳輸高速視頻流,該系統平臺主要實現視頻流的讀取與顯示。

圖1 硬件框架
2.1 無操作系統HDMI顯示軟件設計
軟件是系統的中樞系統,對硬件起著初始化、控制的作用[6]。在不同的應用場合,對系統有著不同的需求。為了適應對系統實時性要求高的場合,通常對硬件系統直接控制,無需使用操作系統進行調度。為了方便描述,在軟件層次,將系統劃分為HDMI芯片ADV7511配置和HDMI視頻數據流傳輸兩個部分。圖2為無操作系統情況下的軟件框架圖。為了方便演示,本設計首先將一幅1 280×720的圖像數據寫到DDR中,再回讀視頻數據到HDMI顯示器上以檢測結果是否正確[7]。

圖2 系統軟件框架
2.1.1 HDMI 芯片ADV7511配置部分
本設計采用ADV7511 HDMI發送器,軟件流程如圖3所示。由于ADV7511的控制寄存器是I2C接口,所以采用I2C IP核對其寄存器進行讀寫操作[8]。根據ADV7511的官方參考設計將輸出格式設置為兼容HDMI1.4和DVI1.0的16 bit YCrCb4∶2∶2格式,初始分辨率采用1 280×720, 幀率為60 f/s(幀/秒),對應的水平時序和垂直時序中的幀長分別為1 650和750,經簡單的計算可知像素時鐘為74.250 MHz。

圖3 軟件實現流程
2.1.2 HDMI視頻數據流傳輸部分
視頻數據流傳輸部分,為了方便演示,簡化演示原理如圖4所示。本設計先將一幅分辨率為1 280×720的圖片存入DDR中,再通過VDMA反復回讀到顯示屏上顯示。配置流程如圖4所示。其中內存圖像行跨度(image stride)是指當視頻圖像存儲在內存時,圖像的每一行末尾也許包含一些擴展的內容,這些擴展的內容只影響圖像如何存儲在內存中,并不影響圖像如何顯示出來。

圖4 視頻數據通道配置流程圖
2.2 PetaLinux操作系統下HDMI顯示驅動移植
嵌入式操作系統是嵌入式系統的重要內容之一[9-10]。Linux系統自20世紀90年代以來逐漸趨于成熟,經過大批程序員的努力,嵌入式Linux逐漸得到了廣泛運用,成為嵌入式操作系統市場的主流[11]。隨著Xilinx公司收購嵌入式Linux解決方案提供商Petalogix及其PetaLinux技術,PetaLinux成為ZYNQ系列芯片在嵌入式應用中的必備之選。經過Petalogix工程師的不懈開發,Petalinux嵌入式Linux SDK包含了構建、開發、測試和部署針對ZYNQ-7000 全可編程SoC的嵌入式Linux項目所需的工具,可以滿足大多數開發人員的需求。但是在現有的PetaLinux軟件開發包內核中并沒有集成ADI開源IP核驅動,本方案在硬件設計中ADI開源IP核的基礎上將ADI開源Linux驅動移植到PetaLinux系統中,以滿足在PetaLinux系統中使用HDMI的工程實踐需要[12]。
2.2.1 HDMI顯示系統驅動架構
基于PetaLinux,本設計構建了ZYNQ-7000的顯示系統驅動框架,并通過運行Qt,以觀察HDMI顯示器顯示輸出結果。在這個過程中PetaLinux系統通過調用Xilinx I2C驅動來使用AXI-I2C IP核讀寫ADV7511寄存器達到配置ADV7511的目的,其中顯示系統驅動負責對視頻流處理,整個處理框架建立在Linux的DRM(Direct Rendering Manager)之上,而ADI-DRM驅動在Linux系統中作為一個DRM從設備存在。軟件框圖如圖5所示。

圖5 軟件框圖
用戶空間軟件部分:
1)用戶空間庫函數包括Qt GUI預編譯庫和DRM預編譯庫。
2)系統控制臺和Qt應用包括顯示基于命令行的系統控制臺和Qt GUI界面。
內核空間軟件部分:
1)ASoC包括Linux內核中通用ASoC框架以及驅動AXI-SPDIF IP核的ADI-ASoC驅動。
2)DRM包括Linux內核中通用DRM框架與驅動ADI-HDMI IP核處理視頻流的ADI-DRM驅動[13]。
3)AXI-I2C包括Linux內核中Xilinx AXI-I2C驅動,提供I2C讀/寫函數用來操作ADV7511。
4)AXI-VDMA包括Linux內核中Xilinx AXI-VDMA驅動,兼容Linux DMA框架,用來加速視頻數據傳輸。
2.2.2 DRM系統架構及ADI DRM驅動
DRM是Linux內核中負責顯卡GPU接口的一個管理機制。但是隨著顯示技術的發展,普遍采用GPU對3D顯示以及多種特效顯示進行加速,這通常需要多個應用同時發送指令給內核,這時采用內核中沿用已久的fbdev機制處理這些指令顯得越來越力不從心;同時這些應用需要使用大量的內存,最初由應用程序直接管理這些系統資源,但是多個應用程序對這些資源進行訪問便會引起訪問沖突。于是DRM便被提出并發展為現代主流顯示控制機制,且目前也被引進到嵌入式領域,甚至最新的安卓系統也提供API支持。
DRM提供一組API給用戶空間,使用戶空間的程序通過發送簡單的指令和數據來控制GPU、內存以及顯示器等系統資源,例如顯示模式設置、framebuffer管理、視頻解碼硬件加速等工作。用戶空間的程序可以方便地采用發送指令的方式讓內核完成3D渲染硬件加速或者視頻解碼。
DRM系統架構如圖6所示,可以看出DRM 服務存在于內核中,應用程序想要使用它必須通過內核的系統調用把請求提交給內核。用戶程序想要控制某個GPU則需要控制相關的設備節點并使用ioctl進行DRM API的調用。處于安全以及方便移植的考慮,應用層程序一般采用通過C語言封裝過的libdrm庫來操作DRM系統。

圖6 DRM系統架構
DRM系統包含兩部分,一部分是通用的DRM核心,另一部分是DRM驅動。其中DRM核心為DRM驅動提供基礎框架以及通用ioctl指令,DRM驅動由GPU廠家編寫并統一注冊到DRM核心中。DRM驅動的工作是完成硬件控制部分的API并指明其驅動支持的GPU類型;同時DRM驅動通常包含有一些硬件廠商為支持某種GPU的附加功能所獨有的API,這些API可以通過ioctl調用。
在基于ZYNQ的嵌入式Linux操作系統中,ADV7511作為一個DRM編碼器從設備存在于顯示系統中。對于ZYNQ-7000顯示系統而言,常用的方案是將ADV7511與其他IP核組件組合起來形成系統顯示核心。通過在PL端將HDMI IP核與TPG,CFA,Image Enhance等其他一些圖像處理IP核集成在一起構成硬件加速IP核,并被內核作為GPU來控制。要移植ADV7511驅動首先要移植ADI DRM驅動,ADI DRM驅動目錄在內核目錄的drivers/gpu/drm/adi_axi_hdmi/下,主要的功能由3個文件完成:axi_hdmi_crtc.c,axi_hdmi_drv.c,axi_hdmi_encoder.c。axi_hdmi_crtc.c主要負責從Framebuffer里面讀取數據并且產生視頻所需時序;axi_hdmi_encoder.c主要負責將經過CRTC處理的比特流通過ADV7511內部編解碼器轉換為適合顯示器顯示的視頻格式;最后axi_hdmi_drv.c負責 ADV7511的掛載并且將ADI DRM注冊到系統的DRM框架內。
ADV7511寄存器讀寫控制,需要使用AXI I2C接口。相關驅動代碼在drivers/gpu/drm/i2c/下,其中adv7511_core.c用來初始化芯片并控制視頻通道同時使用設備樹統一將I2C控制寄存器注冊到系統中。
實驗階段,采用基于XILINX官方ZYNQ開發板平臺、ZYNQ(ZC7020CLG484)異構系統芯片對軟硬件設計進行了驗證。
本HDMI顯示方案在有無操作系統情況下均采用相同硬件底層架構,僅在軟件層采用了不同的設計。相比于Linux操作系統,控制無操作系統HDMI顯示在軟件上需要做更多的工作,編寫應用程序的時候需要更多地考慮硬件結構,開發難度較大,產品周期較長,但是可以從底層有針對性地對代碼進行優化,提高性能,以適應各種不同的專業性強的應用場合。而在Linux系統中,通過對HDMI控制器的層層抽象與封裝,開發人員可以方便地移植現有的通用程序到新的ZYNQ平臺上,并可以集中精力研究用戶層程序的開發,但是與無操作系統相比性能必然會有所損失。所以在具體產品開發時,要根據實際需要靈活選擇實現方案。
本文基于ZYNQ平臺采用ADI開源IP核在FPGA底層進行設計與優化的同時對相關軟件控制代碼在有無操作系統的情況下進行了設計與開發[14],提供了對HDMI顯示控制的一系列有效的解決辦法,充分展示了在設計HDMI顯示系統過程中視頻和圖像的存儲、傳輸和顯示等各個功能特性,并比較了有無操作系統下HDMI顯示端的設計與實現的結果,同時還對ZYNQ 內部資源進行深入挖掘,充分展示了ZYNQ的軟硬件協同合作的優越性。本設計可以移植到任何需要高清顯示的ZYNQ系統中,為ZYNQ系統設計人員提供便利。
[1] 閆志紅.基于ARM9的HDMI接口設計[D].濟南:山東大學,2012.
[2] 佚名.Zynq-7000可擴展處理平臺[J].世界電子元器件,2011(6):43-46.
[3] 徐鵬,王瑜,丁煒.一種全新的網絡處理器[J].現代電信科技,2001(8):16-19.
[4] Xilinx Corporation.Zynq-7000 all programmable SoC technical reference manual[EB/OL].[2016-06-01].http://china.xilinx.com/ .
[5] Xilinx Corporation.Zynq-7000 all programmable SoC ZC702 base targeted reference design manual[EB/OL].[2016-06-01].http://china.xilinx.com/.
[6] 琚贇.SoC系統級設計中對操作系統的支持技術的研究[D].北京:華北電力大學,2006.
[7] Analog Devices Corporation.ADV7511 WIKI[EB/OL].[2016-06-01]. https://wiki.analog.com/.
[8] 賀貝,龔向東,曾振興.NiosII的I2C控制IP及其在成像系統中的應用[J].單片機與嵌入式系統應用,2010(5):59-61.
[9] 徐士強.基于ARM9的嵌入式Linux系統的研究與應用[D].南京:南京郵電大學,2012.
[10] 殷榮慶.嵌入式Linux系統的探索與設想[J].合肥師范學院學報,2009(6):41-44.
[11] Xilinx Corporation.PetaLinux tools documentation: reference guide[EB/OL].[2016-06-01].http://china.xilinx.com/.
[12] 莊俊杰.基于DM365的網絡視頻傳輸系統的設計與實現[D].杭州:浙江工業大學,2013.
[13] 孟繁星.基于ZYNQ-7000的視頻圖像處理系統設計[J].信息通信,2015(8):60-62.
[14] 殷榮慶.嵌入式Linux系統的探索與設想[J].合肥師范學院學報,2009(6):41-44.
責任編輯:許 盈
Implementation of HDMI display terminal based on ZYNQ video processing system
CHU Tingqiang
(SchoolofElectronicScience&Engineering,NanjingUniversityofPostsandTelecommunications,Nanjing210003,China)
HDMI (High-Definition Multimedia Interface) display interface is an important component of embedded video capture and processing field and it also gradually becomes standard display interface in such systems. However, since ZYNQ (a high performance video processing platform with heterogeneous CPU) has no original support to HDMI hardware controller, the representation of processing results and hum-machine interaction are always mitigated due to analog video signal based display scheme. To address this problem, a HDMI video display scheme is introduced by synergy between software and hardware on ZYNQ. The scheme exploits the ADI HDMI transmitter ADV7511, combining it with ADI HDMI open source IP core as well as XILINX official IP cores. This design in the environment of with and without operating system respectively. In the case of no OS, this design can be transplanted for hardware system test or for specific usage. In contrast, the implementation of this design in Linux can also be transplanted and integrated within DRM framework for various applications.
ZYNQ; high-definition multimedia interface; direct rendering manager; ADV7511 chip
褚亭強.基于ZYNQ的HDMI顯示端設計與實現[J].電視技術,2017,41(2):23-27. CHU T Q.Implementation of HDMI display terminal based on ZYNQ video processing system[J].Video engineering,2017,41(2):23-27.
TN948.57
A
10.6280/j.videoe.2017.02.006
2016-07-19