孫海洲,祝月文,王 哲,鄒開元,王素珍*
(1.青島大學電子信息學院,山東 青島 266071;2.海信智動精工有限公司,山東 青島 266520)
針對市場對4K 超高清電視和2K 高清電視日益增長的需求,電視機生產廠家需要一種能夠同時檢驗多種格式的視頻信號源,來滿足人工快速測試或機械自動化測試要求[1-7]。為此,視頻信號源需要匹配一種高效的控制系統,對多種視頻格式的電視機主板進行測試。
STM32F103ZET6 芯片工作時鐘頻率為72 MHz,內置512 KB 的FLASH 閃存和64 KB 的SRAM,具有144 個GPIO 管腳,可連接多種外部設備,在控制系統等方面已有廣泛應用[8-16]。結合實際的應用場景,本文使用STM32F103ZET6 芯片實現了一拖二的多種格式視頻信號源控制系統。系統使用按鍵和多級控制菜單實時控制下游視頻信號源輸出多種格式的彩條測試信號,實現了控制系統可視化操作,方便自動控制測試;基于兩組控制指令接口與下游視頻信號源進行I2C 通信和多管腳并行發碼,保證了控制指令準確性和可靠性,實現了一拖二的多種格式視頻信號源;同時,具有斷電保護功能,提高了工廠的生產測試效率。
控制系統采用一塊基于STM32F103ZET6 芯片的上位機來控制下游兩塊基于FPGA 的視頻信號源的信號輸出狀態,最多可同時測試4 塊4K 超高清電視機主板、2 塊2K 高清電視機主板和2 塊模擬電視機主板的性能。
控制系統的工作原理圖如圖1 所示。用戶可通過按鍵和基于LCD 屏顯示的多級控制菜單操作控制系統,可同時控制下游基于FPGA 的視頻信號源A、B 并行輸出多種獨立的彩條測試信號,對多塊電視機主板進行測試。

圖1 控制系統工作原理圖
受控的視頻信號源A、B 皆為本團隊自主研發的基于Xlinx Artix-7 系FPGA 芯片的多種格式視頻信號發生器。視頻信號源基于3 枚FPGA 芯片同時生成模擬視頻信號、2K 和4K 的并行數字視頻信號。模擬部分通過DA 轉換的ADV7340 芯片生成3路獨立的不同分辨率的模擬彩條測試信號,經AV接口、分量接口和VGA 接口輸出;2K 數字視頻信號(RGB 格式)經過SIL9136 芯片(需I2C 配置)轉換為串行的HDMI 接口信號,生成4 路獨立的不同分辨率的彩條測試信號,經HDMI1、HDMI2、HDMI3 和HDMI4 接口輸出;4K 超高清數字視頻信號(YUV 格式)經過ITE6615 芯片(需I2C 配置)轉換為串行TMDS 信號,生成2 路獨立的不同分辨率超高清彩條測試信號,經HDMI5 和HDMI6 接口輸出。該視頻信號源系統可滿足市場上主流的2K 高清電視機主板和4K 超高清電視機主板的測試,且兼容模擬電視機主板的測試。如圖1 所示,系統可通過控制指令接口A 使用I2C 通信配置視頻信號源A 的SIL9136 芯片和ITE6615 芯片,并向下游FPGA 發送并行控制碼控制視頻信號源A 同時產生9 路彩條測試信號,可同時對1 塊模擬電視機主板、1 塊2K高清電視機主板和2 塊超高清4K 電視機主板進行測試,對應彩條測試結果將在電視機主板連接的顯示器上顯示。視頻信號源A、B 的結構和功能完全相同。
控制系統面板分為正面及背面兩部分,結構示意圖如圖2 所示,各功能模塊通過PCB 電路板內部線路與STM32 主控芯片管腳相連。正面的TFT_LCD 顯示屏可顯示多級控制菜單,用戶通過按鍵“UP”、“DOWN”、“RIGTH”、“LEFT”和“HOME”,選擇信號源的不同格式視頻信號輸出;“SYS _RESET”、“RESET1”、“RESET2”分別為系統復位及信號源A 及B 的復位按鍵。背面由供電模塊、STM32 芯片、SWD 程序下載口和控制指令接口A、B組成。STM32 芯片為主控芯片,完成主控程序執行和數據處理;SWD 程序下載口可下載更新控制系統軟件程序;控制指令接口A、B 通過排線與下游視頻信號源A、B 連接,使用I2C 通信配置下游視頻信號源的SIL9136 芯片和ITE6615 芯片,并向FPGA 芯片發送并行控制碼,控制下游兩塊視頻信號源輸出相應格式的視頻信號。

圖2 控制系統面板結構示意圖
控制系統按照功能可分為多級菜單顯示和指令輸出控制兩部分。控制系統的整體算法流程圖如圖3所示。上電后控制系統首先將各項基礎功能模塊初始化,如GPIO 口初始化、LCD 屏顯示初始化、按鍵初始化、外部中斷初始化和I2C 通信初始化等。然后控制系統輪巡檢測下游視頻信號源的HPD 熱插拔信號(來自SIL9136 芯片和ITE6615 芯片的Hotplug 管腳),HPD 信號拉高代表下游視頻信號源的HDMI 口有待測試電視機主板接入。當檢測到HPD 信號拉高時,控制系統使用I2C 通信讀寫下游視頻信號源的SIL9136 芯片和ITE6615 芯片的相關寄存器完成對芯片功能的配置,使芯片SIL9136 和ITE6615 能夠輸出高清和超高清的HDMI 接口信號。

圖3 控制系統整體算法流程圖
接著控制系統將顯示多級控制菜單,其選擇由按鍵控制。當控制系統檢測到“UP”、“DOWN”、“LEFT”、“RIGHT”、“HOME”鍵按下時,系統的多級菜單顯示將產生對應變化,用戶可選擇多級菜單的選項執行不同功能,如向FPGA 發送并行控制碼等;當控制系統檢測到“RESET1”、“RESET2”鍵按下時,控制系統將重新輪巡檢測下游視頻信號源的HPD 信號完成對下游視頻信號源的SIL9136 和ITE6615 芯片的配置,并向下游FPGA 發送并行控制碼,命令下游視頻信號源恢復初始輸出狀態;當控制系統檢測到“SYS_RESET”鍵按下時將完成系統復位操作。下游基于FPGA 的視頻信號源A、B 接收到上游控制系統發送的并行控制碼后,將向待測試電視機主板傳輸對應的彩條測試信號,測試結果將在電視機主板連接的顯示屏上顯示。
控制系統配置了8 枚按鍵,用戶可使用按鍵操作多級控制菜單,完成控制發碼和系統復位等操作。按鍵電路采用上拉輸入,當按鍵按下時會將其連接的STM32 芯片管腳電平拉低,控制系統將執行對應的按鍵功能。控制系統按鍵功能初始化后,將除“SYS_RESET”鍵外的7 枚按鍵分別關聯了不同外部中斷,使按鍵控制更為靈敏準確(“SYS_RESET”鍵直接連接STM32 芯片的NRST 管腳,按下后將拉低電平復位STM32 芯片,實現系統復位)。控制系統始終持續檢測按鍵按下觸發的外部中斷,當檢測到某按鍵按下觸發的外部中斷時,將調用對應的外部中斷函數完成對應按鍵功能:按下“RESET1”鍵可使控制系統重新配置下游視頻信號源A 的SIL9136 芯片和ITE6615 芯片并向FPGA 芯片發送控制碼,命令其輸出的彩條測試信號恢復初始狀態;按下“RESET2”鍵可使控制系統重新配置下游視頻信號源B 的SIL9136 芯片和ITE6615芯片并向FPGA 芯片發送控制碼命令其輸出的彩條測試信號恢復初始狀態;按下“UP”鍵可向上選擇菜單項;按下“DOWN”鍵可向下選擇菜單項;按下“RIGTH”鍵可進入下一級菜單,若已經到達最后一級菜單,按此鍵可對所選擇的彩條測試信號狀態進行確認輸出;按下“LEFT”鍵可返回上一級菜單,若在LCD 屏顯示“當前輸出狀態”界面時按此按鍵將返回第一級主菜單界面;按下“HOME”鍵可使LCD屏顯示“當前輸出狀態”界面,用戶可在此界面查看當前設置的輸出狀態。
控制系統配置了一塊4.3 寸800 列×480 行像素分辨率的TFT_LCD 顯示屏用于可視化操作,顯示多級控制菜單,方便用戶實時查看和選擇下游受控視頻信號源A、B 的信號輸出狀態。LCD 顯示屏的四級控制菜單選擇輸出控制信號,其顯示結構如圖4所示。其中第一級菜單為主菜單,包含四個選項:“SAVE_STATE”(在斷電前存儲當前下游兩路視頻信號源的信號輸出狀態以實現斷電保護)、“READ_STATE”(讀取斷電保護存儲的數據向下游視頻信號源發送并行控制碼,恢復視頻信號源在斷電前的信號輸出狀態)、“通道A”(控制下游基于FPGA 的視頻信號源A 的信號輸出狀態)、“通道B”(控制下游基于FPGA 的視頻信號源B 的信號輸出狀態,通道A 和通道B 的信號可同時獨立輸出)。在第一級主菜單選擇“通道A”(或通道B)將進入第二級菜單(通道A、B 的第二、三、四級菜單結構相同,下文只介紹通道A 的菜單結構),包含三個選項:“模擬視頻信號”、“2K 高清視頻信號”、“4K 超高清視頻信號”。在第二級菜單選擇“模擬視頻信號”或“2K高清視頻信號”或“4K 超高清視頻信號”后將進入第三級菜單,可選擇下游視頻信號源的AV、VGA 等接口,然后將進入第四級菜單選擇各種分辨率的彩條測試視頻信號輸出。其中,“HDMI1”、“HDMI2”、“HDMI3”和“HDMI4”接口的第四級菜單結構相同,皆可選擇輸出“1080p×1920@60”、“1080i×1920@60”、“1080i×1920@50”和“576i×720@50”四種彩條測試信號;“HDMI5”和“HDMI6”接口的第四級菜單結構相同,皆可選擇輸出“2160p×3840@ 60”、“2160p×3840@30”兩種彩條測試信號。當在第四級菜單中選擇某種分辨率的彩條測試視頻信號輸出后,控制系統將向下游FPGA 發送并行控制碼,控制視頻信號源輸出對應的彩條測試信號。

圖4 多級菜單結構圖
多級菜單顯示算法流程如圖5 所示,下面以繪制多級菜單某一級菜單顯示界面為例展開介紹此算法:

圖5 多級菜單顯示算法流程圖
第一步,建立一個存儲當前級菜單參數的結構體,參數包括菜單的功能項數量、菜單的標題、各功能項名稱、各功能項類型(設置兩個常量TYPE_SUBMENU 和 TYPE _ PARAMETER,TYPE _SUBMENU 代表功能項有下級子菜單,TYPE_PARAMETER 代表功能項無子菜單有關聯的可執行功能函數)、指向各功能項關聯的子菜單結構體或各功能項關聯的可執行功能函數的指針、指向當前級菜單上一級菜單的結構體的指針(若無上一級子菜單,指針指向NULL)。
第二步,獲取當前級菜單結構體中存儲的當前級菜單的功能項數量、當前級菜單的標題、各功能項名稱信息,并在LCD 屏上顯示。
第三步,設置一個功能項選擇光標計數變量并歸零,使LCD 屏上顯示功能項選擇光標,并指向當前級菜單的第一個功能項。
第四步,獲取當前級菜單結構體中各功能項的類型,判斷并獲取指向其下一級子菜單結構體或其關聯的可執行功能函數的指針。然后獲取指向當前級菜單上一級菜單結構體的指針,以備返回上一級菜單。
第五步,持續檢測按鍵中斷:當檢測到按下“RIGHT”鍵時,判斷當前光標所指向的功能項是否有下級子菜單,若有下一級子菜單,則利用其指向下一級菜單結構體的指針,繪制下一級菜單的顯示界面,否則執行指針指向的可執行功能函數;當檢測到按下“LEFT”鍵時,判斷當前級菜單是否有上級子菜單,若有上一級子菜單,則利用指向上一級菜單結構體的指針,繪制上一級菜單的顯示界面,否則在LCD 屏上顯示字符“已到達第一級菜單(主菜單)”;當檢測到按下“UP”鍵時,判斷當前功能項選擇光標計數是否為0(即功能項選擇光標是否已到達當前級菜單的第一個功能項),若為0 則將功能項選擇光標計數的值變為當前級菜單結構體中的功能項數量減1,使LCD 屏上的功能項選擇光標到達當前級菜單的最后一個功能項,否則將當前功能項選擇光標計數減1,使光標到達當前選擇光標所在功能項的上一個功能項;當檢測到按下“DOWN”鍵時,判斷當前功能項選擇光標計數是否等于當前級菜單結構體中的功能項數量減1(即功能項選擇光標是否已到達當前級菜單的最后一個功能項),若等于則將功能項選擇光標計數的值歸0,使光標到達當前級菜單的第一個功能項,否則將當前功能項選擇光標計數值加1,使光標到達當前選擇光標所在功能項的下一個功能項;當檢測到按下“HOME”鍵時,則在LCD 屏上繪制“當前輸出狀態”界面,然后持續檢測按鍵中斷,判斷是否按下“LEFT”鍵,若按下則繪制第一級菜單(主菜單)顯示界面,否則將停留在“當前輸出狀態”界面。
本文“當前輸出狀態”界面顯示算法流程圖如圖6 所示。首先設置56 個char 型全局變量,存儲通道A、B 下游兩塊視頻信號源各接口可選擇輸出的56 種彩條測試信號的輸出狀態(全局變量值為0代表對應的彩條測試信號未輸出,值為1 代表正在輸出),并全部置0。然后在LCD 屏上顯示56 個表示通道A、B 的所有可輸出的彩條測試信號種類的字符串,底部背光全部設為白色(底部背光為白色表示未輸出,為黃色表示正在輸出)。接著獲取當前通道A、B 選擇輸出的彩條測試信號狀態,若某種彩條測試信號正在輸出,存儲其輸出狀態的全局變量置1,其對應的彩條測試信號字符串底部背光為黃色,否則存儲其輸出狀態的全局變量置0,其對應的字符串底部背光為白色。最后持續檢測按鍵中斷,若檢測到按下“LEFT”鍵,則在LCD 屏上繪制第一級菜單(主菜單)顯示界面,退出“當前輸出狀態”顯示界面。

圖6 “當前輸出狀態”界面顯示算法流程圖
基于“當前輸出狀態”界面顯示算法,本文控制系統設計實現了斷電保護功能。在關機前選擇多級控制菜單的“SAVE_STATE”選項,將56 個存儲彩條測試信號的輸出狀態的全局變量數值存入STM32芯片內部FLASH 中;在開機后選擇多級控制菜單的“READ_STATE”選項讀取FLASH 存儲的56 個全局變量,依據全局變量向下游FPGA 發送控制碼,實現了斷電保護數據,保證了設備開機后能快速執行斷電前的生產測試方案,提高了生產測試效率。
控制系統配置了A、B 兩組控制指令接口,使用I2C 通信配置下游視頻信號源的SIL9136 芯片和ITE6615 芯片并向FPGA 芯片發送并行控制碼,一拖二控制下游視頻信號源A、B。
如圖2 和圖7 所示,控制系統的STM32 芯片通過A、B 兩組控制指令接口與下游視頻信號源A、B連接,實現一拖二控制操作。兩組控制指令接口各由一個雙排15 列插針連接器(HEADER15×2)組成,將STM32 芯片的GPIO 管腳與下游視頻信號源的FPGA 芯片、SIL9136 芯片和ITE6615 芯片連接,控制指令接口包括4 個模擬(ANALOG)信號控制管腳、5 個2K 信號控制管腳、3 個4K 信號控制管腳、3個配置SIL9136 芯片的I2C 通信管腳(HPD 管腳檢測下游熱插拔信號,SCL 和SDA 管腳模擬I2C 通信協議的SCL 和SDA 總線)、3 個配置ITE6615 芯片的I2C 通信管腳、4 個共地管腳(將控制系統與下游視頻信號源共地)和8 個懸空管腳。STM32 芯片自身的硬件I2C 較不穩定,為降低誤碼率,控制系統使用GPIO 管腳模擬I2C 通信協議SCL 和SDA 總線的時序,采用模擬I2C 的方式進行I2C 通信。由于下游視頻信號源的FPGA 芯片擅長處理并行數據,控制指令接口采用多管腳并行發碼可進一步減少控制過程的誤碼率。

圖7 控制指令接口結構圖
控制系統采用多管腳并行發碼的方式,發送并行控制碼與下游視頻信號源的FPGA 芯片進行通信。如圖7 所示,每組控制指令接口的4 個模擬信號控制管腳的高低電平狀態將生成4 位二進制模擬并行控制碼,與下游視頻信號源的FPGA 芯片進行通信,決定下游視頻信號源模擬視頻信號的輸出狀態,如表1 所示。

表1 控制模擬視頻信號輸出的4 位并行控制碼
5 個2K 信號控制管腳生成5 位二進制2K 并行控制碼,決定下游視頻信號源2K 高清視頻信號的輸出狀態,如表2 所示;3 個4K 信號控制管腳生成3位二進制4K 并行控制碼,決定下游視頻信號源4K超高清視頻信號的輸出狀態,如表3 所示。當按下“RESET1”鍵時,控制指令接口A 的管腳將全部拉低,命令下游視頻信號源A 恢復初始信號輸出狀態。按下“RESET2”鍵同理,將視頻信號源B 恢復初始信號輸出狀態。

表2 控制2K 高清視頻信號輸出的5 位并行控制碼

表3 控制4K 超高清視頻信號輸出的3 位并行控制碼
基于STM32 的一拖二視頻信號源控制系統的實物如圖8 所示;控制系統通過排線與受控的視頻信號源實物連接,如圖9 所示;控制系統功能測試場景如圖10 所示,其穩定性測試實驗在海信集團某生產測試車間內完成。穩定性測試實驗共5 輪,設備連接完畢后,每輪使用控制系統的多級控制菜單隨機選擇1 000 次下游視頻信號源A、B 各接口的彩條測試信號輸出,統計每輪測試實驗中控制系統發碼誤碼率。經過測試,5 輪系統發碼誤碼率均為0。實驗結果表明,控制系統的控制指令接口與下游受控視頻信號源之間通信較為穩定,控制發碼準確可靠,基于STM32 的一拖二視頻信號源控制系統達到了預期的性能要求。

圖8 控制系統實物圖

圖9 控制系統與受控的視頻信號源實物連接圖

圖10 控制系統功能測試場景圖
結合電視機生產廠家的實際生產測試需求,本文提出了一種基于STM32 的一拖二多種格式視頻信號源控制系統的設計方法。控制系統基于STM32F103ZET6 主控芯片設計了LCD 多級菜單顯示模塊和控制指令接口模塊等功能模塊,提高了控制系統的操作便利性,實現了一拖二控制下游視頻信號源;基于Keil μVision5 編程開發平臺,設計實現了控制系統整體算法和多級菜單顯示等算法。控制系統使用按鍵和多級控制菜單實時控制下游視頻信號源各接口輸出彩條測試信號,實現了控制系統可視化操作;創新性地設計了多管腳并行發碼的控制方式,提高了控制系統的控制指令準確性和可靠性;設計實現了斷電保護功能,提高了工廠的生產測試效率。最終實際測試結果證明,本控制系統的操作簡單可靠,控制發碼穩定準確,工作性能良好,滿足了工廠大規模快速測試電視機主板的需求。