需要高級(jí)視頻圖形功能的系統(tǒng)實(shí)施起來(lái)一直是個(gè)挑戰(zhàn)。傳統(tǒng)上,這些系統(tǒng)需要硬件特性和軟件功能的復(fù)雜組合,以創(chuàng)建應(yīng)用程序所需的必要更高級(jí)別的視頻和圖形。最新的基于 ARM 的 MCU 現(xiàn)在提供了一套全面的高級(jí)硬件功能,這些功能通常將常見(jiàn)的視頻和圖形標(biāo)準(zhǔn)實(shí)現(xiàn)為獨(dú)立的模塊,從而最大限度地減少對(duì)這些硬件功能“硬編碼”的需求。此外,廣泛的基于 ARM 的生態(tài)系統(tǒng)提供了大量軟件支持,以實(shí)現(xiàn)常見(jiàn)的應(yīng)用程序級(jí)功能(例如,輕松構(gòu)建圖形用戶(hù)界面或 GUI 的應(yīng)用程序),所需的低級(jí)編碼數(shù)量最少。廣泛的參考設(shè)計(jì)和硬件平臺(tái)允許設(shè)計(jì)人員利用制造商開(kāi)發(fā)的例程來(lái)簡(jiǎn)化他們自己的定制應(yīng)用程序的創(chuàng)建。讓我們看看現(xiàn)在基于 ARM 的 MCU 系列中提供的一些新的視頻硬件和軟件功能。
三個(gè)關(guān)鍵要素:輸入、處理和顯示
將視頻圖形的三個(gè)關(guān)鍵要素分為輸入、處理和顯示是很方便的。輸入功能通常允許設(shè)備連接到各種標(biāo)準(zhǔn)的各種傳感器和相機(jī)。處理功能支持將一種標(biāo)準(zhǔn)轉(zhuǎn)換為另一種標(biāo)準(zhǔn),創(chuàng)建用于顯示的多層圖形對(duì)象(例如,作為 GUI 中的元素),以及用于創(chuàng)建具有深度和陰影屬性的對(duì)象的更復(fù)雜的功能。最后,顯示功能將存儲(chǔ)在內(nèi)存中的圖形元素轉(zhuǎn)換為可以傳輸?shù)狡桨屣@示器或電視的數(shù)據(jù)?,F(xiàn)在讓我們使用基于 ARM 的 MCU 來(lái)更詳細(xì)地了解這些元素中的每一個(gè)。
視頻圖形輸入
大多數(shù)現(xiàn)代基于 ARM 的 MCU 都包含一個(gè)用于常見(jiàn)圖像傳感器的視頻輸入接口。這些接口通常使用標(biāo)準(zhǔn)格式(例如 RGB 或 YCbCr)將視頻輸入存儲(chǔ)到內(nèi)部存儲(chǔ)器中,這些格式可以進(jìn)行處理,然后顯示在標(biāo)準(zhǔn) LCD 面板上。愛(ài)特梅爾SAMA5D3系列基于 ARM 的 MCU 就是一個(gè)很好的例子,它說(shuō)明了一些所需的視頻輸入功能。主要的視頻輸入模塊是圖像傳感器接口 (ISI),并使用兩種流行的方法連接到圖像傳感器:與垂直和水平同步信號(hào)的硬件同步,或國(guó)際電信聯(lián)盟建議 (ITU-R) 標(biāo)準(zhǔn)(如 BT. 601/656)。BT.601/656 的使用減少了引腳數(shù),因?yàn)椴恍枰怪焙退叫盘?hào),但不如通用垂直和水平硬件同步模式靈活。圖像傳感器數(shù)據(jù)由高達(dá) 12 位的并行數(shù)據(jù)組成,并支持高達(dá) 2048 x 2048 的分辨率。完整的輸入數(shù)據(jù)路徑如下圖 1 所示。
?
?
圖 1:Atmel SAMA5D3 MCU 的視頻輸入路徑(由 Atmel 提供)。
時(shí)序信號(hào)和圖像傳感器輸入數(shù)據(jù)顯示在圖表的左側(cè)。圖中底部中間有兩條輸入路徑;一個(gè)用于預(yù)覽路徑,一個(gè)用于編解碼器路徑。可以格式化預(yù)覽路徑以轉(zhuǎn)換輸入視頻,然后直接在輸出 LCD 面板上顯示(可能是 RGB 格式)。2D 圖像縮放器和像素格式化器可用于實(shí)現(xiàn)簡(jiǎn)單的視頻縮放,并且需要剪輯。完整的路徑可以通過(guò)中斷和 DMA 訪(fǎng)問(wèn)來(lái)支持,而完全不涉及 CPU。如果需要視頻處理,可以使用圖 1 底部所示的編解碼器路徑將輸入數(shù)據(jù)轉(zhuǎn)換(例如,從 RGB 到 YCbCr)并以打包格式存儲(chǔ)在內(nèi)存中。
使用中斷和 DMA 傳輸管理數(shù)據(jù)路徑的能力對(duì)于提高視頻應(yīng)用的效率至關(guān)重要。這使得 ARM CPU 可以專(zhuān)注于實(shí)現(xiàn)管理功能并為功能差異化提供定制化處理。Atmel SAMA5D3 是具有重要自主操作的設(shè)備的一個(gè)很好的例子,當(dāng)處理效率至關(guān)重要時(shí),您應(yīng)該尋找它。
在許多情況下,視頻數(shù)據(jù)已經(jīng)經(jīng)過(guò)壓縮處理,需要以不同的格式捕獲。例如,安全攝像機(jī)通常以壓縮的 JPEG 格式提供視頻數(shù)據(jù),以減少傳輸視頻數(shù)據(jù)所需的帶寬。這可以降低接收端的功耗要求并簡(jiǎn)化數(shù)據(jù)帶寬要求。加密通常用于保護(hù)視頻數(shù)據(jù)免受網(wǎng)絡(luò)入侵。讓我們考慮一個(gè)使用STMicroelectronics STM32F207 MCU 作為目標(biāo)平臺(tái)的安全攝像頭設(shè)計(jì)示例。
STM32F207 數(shù)碼相機(jī)輸入是一個(gè)同步并行接口,能夠從外部 CMOS 相機(jī)模塊捕獲高速圖像數(shù)據(jù)。支持YCbCr4:2:2、RGB656、8/10/12/14位逐行視頻、JPEG等常見(jiàn)格式。JPEG 在低功耗應(yīng)用中很有用,因?yàn)樗?jīng)過(guò)壓縮,因此傳輸圖像所需的帶寬更少。STM32F207 在視頻流的水平同步部分接收 JPEG 視頻,如圖 2 所示。請(qǐng)注意,HSYNC 信號(hào)的寬度取決于每個(gè) JPEG 數(shù)據(jù)包所需的數(shù)據(jù)量。流的開(kāi)始和結(jié)束指示以 VSYNC 信號(hào)為界,以便于識(shí)別。
?
?
圖 2:在 STM32F207 上使用攝像頭輸入進(jìn)行 JPEG 捕獲(由 STMicroelectronics 提供)。
一旦捕獲了 JPEG 視頻數(shù)據(jù),就會(huì)使用 DMA 控制器將其存儲(chǔ)在內(nèi)存中,以減少 CPU 開(kāi)銷(xiāo)。在傳輸之前,視頻數(shù)據(jù)會(huì)被加密,以使網(wǎng)絡(luò)入侵者難以捕獲或篡改視頻(您是否經(jīng)??吹桨踩曨l數(shù)據(jù)在雀躍電影中“被黑”)。STM32F207 具有片上加密處理器,支持流行的加密標(biāo)準(zhǔn),如 Triple-DES 和 AES-256。加密處理器作為 32 位 AHB 外設(shè)訪(fǎng)問(wèn)并支持 DMA 傳輸。隨機(jī)數(shù)生成器和安全哈希處理器也可用于添加身份驗(yàn)證功能,以便可以證明安全攝像頭的命令和從攝像頭傳輸?shù)臄?shù)據(jù)來(lái)自預(yù)期的來(lái)源。
一旦數(shù)據(jù)被完全處理并準(zhǔn)備好發(fā)送,STM32F207 就有一個(gè)以太網(wǎng)控制器,該控制器使用符合 IEEE 802.3 的 MII 接口連接到外部 PHY,支持 10/100 數(shù)據(jù)傳輸。該控制器還支持 LAN 喚醒幀,以便在等待以太網(wǎng)端口活動(dòng)時(shí)可以使用低功耗模式。雙 2 KB FIFO(一個(gè)用于發(fā)送,一個(gè)用于接收)提供足夠的緩沖存儲(chǔ)來(lái)保持高效率,從而降低功耗。DMA 用于傳輸以太網(wǎng)流量以及進(jìn)一步減少 CPU 開(kāi)銷(xiāo)。普遍使用 DMA 將數(shù)據(jù)從輸入通過(guò)處理傳輸?shù)絺鬏?,這是低功耗視頻實(shí)現(xiàn)中的一種常見(jiàn)技術(shù),并且在任何以功率效率為關(guān)鍵考慮因素的設(shè)計(jì)中都應(yīng)該是一個(gè)關(guān)鍵元素。
視頻圖形處理
視頻圖形處理是高級(jí) ARM MCU 和 MPU 近年來(lái)增加的更復(fù)雜的功能之一。MPU 尤其為視頻處理添加了硬件加速,旨在創(chuàng)建可包含實(shí)時(shí)視頻的創(chuàng)新用戶(hù)界面。將視頻數(shù)據(jù)從一種格式轉(zhuǎn)換為另一種格式、裁剪、縮放和顏色校正以適應(yīng)目標(biāo)顯示器的屬性或變化的照明條件的能力可以顯著增強(qiáng)用戶(hù)體驗(yàn)。飛思卡爾 i.MX53xx _具有片上 2D 圖形處理單元 (GPU) 和單獨(dú)的 3D GPU。2D GPU 實(shí)現(xiàn)了針對(duì) OpenVG 1.0.1 圖形 API 和功能集的各種圖形和視頻處理功能。3D GPU 以 DirectX9 著色和紋理為目標(biāo),用于構(gòu)建高級(jí)圖形圖像。
2D GPU 在構(gòu)建視覺(jué)上引人注目的 UI 時(shí)特別有用,并且可以使用由 3D GPU 創(chuàng)建的圖形元素。2D GPU 支持各種源和目標(biāo)位圖格式(例如,從 ARGB4444 到 ARGB8888)中最高 2048 x 2048 的幀緩沖區(qū)上的位圖圖形操作,例如 BitBlt、填充和光柵化操作。提供了三個(gè)用于遮罩、圖案和 Alpha 層的獨(dú)立源位圖,以簡(jiǎn)化復(fù)雜圖形結(jié)構(gòu)的實(shí)現(xiàn)。矢量圖形引擎與 2D 單元一起提供多邊形和幾何操作。2D GPU 的框圖如下圖 3 所示。
?
?
圖 3:飛思卡爾 i.MX53xx MPU 嵌入式 2D GPU 框圖(由飛思卡爾提供)。
2D GPU 接受命令流,如圖 3 頂部所示。命令被分離并發(fā)送到 2D 單元或矢量圖形單元。2D 單元通過(guò)內(nèi)存仲裁器對(duì)圖形內(nèi)存上的像素、漸變、紋理和顏色進(jìn)行操作。矢量單元生成幾何形狀并對(duì)其進(jìn)行操作,也使用內(nèi)存仲裁器訪(fǎng)問(wèn)圖形內(nèi)存。仲裁器通過(guò)優(yōu)先化和組合內(nèi)存操作來(lái)最大化帶寬效率。
i.MX53 視頻圖形系統(tǒng)的架構(gòu)具有獨(dú)立的 2D、矢量和 3D 單元,這并不罕見(jiàn)。擁有支持不同標(biāo)準(zhǔn)的獨(dú)立模塊可以更輕松地創(chuàng)建特定功能的驅(qū)動(dòng)程序、中間件和更復(fù)雜的高級(jí)應(yīng)用程序接口 (API),讓設(shè)計(jì)人員能夠?qū)W⒂谒麄兊年P(guān)鍵差異化,而不是將時(shí)間投入到實(shí)現(xiàn)低級(jí)“家政”功能。很多時(shí)候,這些模塊還支持低功耗模式,其中可以關(guān)閉未使用的元件以顯著降低功耗。當(dāng)視頻圖形處理是您設(shè)計(jì)中的一項(xiàng)重要要求時(shí),請(qǐng)尋找這些類(lèi)型的功能。
視頻圖形輸出
在某些應(yīng)用中,不需要直接視頻輸入功能;但是,擁有視頻輸出功能可能很關(guān)鍵。例如,手持式測(cè)試設(shè)備可能需要圖形用戶(hù)界面和生成以圖形方式顯示實(shí)時(shí)測(cè)試結(jié)果的視頻輸出的能力。這些類(lèi)型的功能的常見(jiàn)示例可以在超聲醫(yī)療設(shè)備、材料檢查或電信頻率測(cè)試中找到。NXP LPC4350雙 ARM 內(nèi)核 MCU 是非常適合這些應(yīng)用的設(shè)備類(lèi)型的一個(gè)很好的例子。NXP LPC4530 的 LCD 面板輸出控制器如下圖 4 所示。
??
圖 4:NXP LPC4350 雙 ARM 內(nèi)核 MCU 上的 LCD 輸出(由 NXP 提供)。
到幀緩沖器的系統(tǒng)接口是通過(guò)圖 4 中左中所示的 AHB 主設(shè)備??刂破鲗⑾袼鼐幋a數(shù)據(jù)轉(zhuǎn)換為各種可能的顯示設(shè)備所需的格式,包括單或雙 Super Twisted向列 (STN) 面板或薄膜晶體管 (TFT) 彩色面板。支持從 320 x 240 到 1024 x 768 的顯示分辨率,在 TFT 顯示器上每像素真彩色非托盤(pán)顏色高達(dá) 24 位。245 個(gè) 16 位條目的 RAM 調(diào)色板可用于托盤(pán)化實(shí)現(xiàn)。請(qǐng)注意,當(dāng)存在雙面板時(shí)可以使用單獨(dú)的 DMA FIFO,或者當(dāng)只有一個(gè)面板時(shí)可以組合使用。這有助于提高傳輸效率并減少 CPU 開(kāi)銷(xiāo)。包含硬件光標(biāo)以簡(jiǎn)化圖形用戶(hù)界面 (GUI) 實(shí)現(xiàn)。
NXP LPC4350 上可用的雙 ARM 內(nèi)核對(duì)于具有大型或復(fù)雜 GUI 功能的應(yīng)用程序特別有用。其中一個(gè) ARM 內(nèi)核可專(zhuān)門(mén)用于管理用戶(hù)界面和測(cè)試數(shù)據(jù)的實(shí)時(shí)顯示。這有助于將時(shí)間關(guān)鍵功能與不太關(guān)鍵的管理或處理功能分開(kāi)。例如,數(shù)據(jù)處理的短暫延遲遠(yuǎn)不如數(shù)據(jù)顯示期間的延遲(造成“參差不齊”并分散測(cè)試結(jié)果的推出)那么明顯。將 CPU 專(zhuān)用于關(guān)鍵顯示功能也有助于優(yōu)化功耗,因?yàn)楫?dāng)顯示屏不活動(dòng)時(shí),可以將顯示處理器置于低功耗模式。您只需在需要更新顯示時(shí)喚醒 CPU。
基于 ARM 的生態(tài)系統(tǒng)支持
當(dāng)時(shí) ARM CPU 的普遍使用創(chuàng)造了一個(gè)非常強(qiáng)大的生態(tài)系統(tǒng),支持與視頻圖形相關(guān)的功能。軟件支持包括視頻編解碼器、用于構(gòu)建 GUI 功能的工具,甚至是高級(jí)視頻處理功能。一種流行的用戶(hù)界面 (UI) 構(gòu)建器是 Mentor Graphics 的 Inflexion UI。它支持拖放創(chuàng)建引人注目的 UI,這些 UI 可以針對(duì)運(yùn)行 RTOS 的應(yīng)用程序,并且可以使用目標(biāo)設(shè)備的 OpenGL 硬件圖形引擎來(lái)實(shí)現(xiàn) 2D、2.5D 或全 3D 效果。
另一個(gè)例子是 Segger 的 emWin。emWin 中間件系統(tǒng)為圖形 LCD 提供了高效的 GUI。它以“C”源代碼的形式提供,以便在基于 ARM 的設(shè)備上輕松實(shí)現(xiàn)。該系統(tǒng)包括對(duì)小部件庫(kù)、窗口管理器、渲染支持(帶有圖形庫(kù)、基本字體和觸摸/鼠標(biāo)支持)以及輸出和內(nèi)存設(shè)備驅(qū)動(dòng)程序的支持。這些只是 ARM 軟件生態(tài)系統(tǒng)中眾多圖形和面向 GUI 的元素中的兩個(gè)示例。
供應(yīng)商和第三方提供了豐富的硬件支持,他們提供了可以開(kāi)發(fā)基于視頻的應(yīng)用程序的開(kāi)發(fā)平臺(tái)。飛思卡爾 i.MX53 器件擁有一個(gè)完整的開(kāi)發(fā)平臺(tái),具有針對(duì)復(fù)雜設(shè)計(jì)的目標(biāo)參考設(shè)計(jì),例如無(wú)線(xiàn)攝像頭接口、可視電話(huà)平臺(tái)或更通用的開(kāi)發(fā)平臺(tái)。即使是 i.MX53 的簡(jiǎn)單入門(mén)套件,如MCIMX53-START-R-ND,也可用于評(píng)估 i.MX53 的一些高級(jí)視頻圖形功能,包括引導(dǎo) Linux、連接到相機(jī)和驅(qū)動(dòng)液晶面板。
概括
需要高級(jí)視頻圖形功能的系統(tǒng)現(xiàn)在受益于使用基于 ARM 的現(xiàn)代 MCU,這些 MCU 將通用視頻和圖形標(biāo)準(zhǔn)實(shí)現(xiàn)為獨(dú)立模塊,最大限度地減少對(duì)這些硬件功能“硬編碼”的需求。此外,廣泛的基于 ARM 的生態(tài)系統(tǒng)為實(shí)現(xiàn)常見(jiàn)的應(yīng)用程序級(jí)功能提供了大量軟件支持,并提供了硬件平臺(tái)來(lái)簡(jiǎn)化自定義應(yīng)用程序的創(chuàng)建。有關(guān) MCU 以及此處討論的視頻和圖形功能的更多信息,請(qǐng)使用提供的鏈接訪(fǎng)問(wèn) Digi-Key 網(wǎng)站上提供的產(chǎn)品信息頁(yè)面和培訓(xùn)模塊。
評(píng)論
查看更多