整理:模擬電視軟件系統分析簡結

                           模擬電視軟件系統   

電視軟件系統架構圖1.11.2(帶OS層)所示;它是個層次清晰的軟件基礎平臺,共分爲應用層、通用層、驅動程序層、OS,OSD的庫文件,應用層(application)用來提供軟件工程師作定製化修改,通用層(Utilities layer)用來提供一些通用的應用程序,驅動程序層(DRIVER)用來對芯片器s件(HARDWARA)進行驅動的程序編寫,OSD庫文件(OSD LIBRARY)用來提供OSD設計中底層應用程序。其中修改OSD菜單主要用工具來實現,生成OSD的代碼部分(OSD FILES);然後來程序應用的代碼合二爲一,就成了全部的程序代碼。 對於電視系統可以通過並口、串口或JTAG口一般都是基於RS232的,配合系統開發工具,提供給軟硬件工程師作系統開發用。通過UARTDDC2BI接口對系統作程序更新、寄存器在線讀寫等。另外也可以通過JTAG(JOIN TEST ACTION GROUP)口進行各種各樣的調試。

   

                   電視軟件系統架構圖1.1

                  電視軟件系統架構圖1.2

 

一、對於具體的電視軟件系統,我們把它的結構分幾個流程和三個部分來看。   

幾個流程:UI流程、開機流程、關機流程、源切換流程、TV自動搜索流程、TV換臺流程、動態刷新流程等。

三個部分:初始化部分,系統主循環,和中斷服務系統(如圖2)。

   系統模塊圖2

 

(一)、幾個流程說明:

 

UI流程:這個流程比較簡單,實現了從一個Button被按下,然後執行相關操作,最後OSD顯示出來的每個步驟。

      開機流程分兩種:一個是冷開機,即打開電源開關開機,一個是熱開機,即在待機狀態下按遙控器開機。在這個流程裏,實現了從開機一剎那,MCU復位從0000地址處開始執行到最後屏的背光打開,圖像顯示出來的每個步驟。

     關機流程:在這個流程裏,實現了從遙控器按下,UI模塊解碼得到關機命令,然後進入待機狀態的每個步驟。

      源切換流程:這是核心流程,因爲這個流程控制了信號從輸入到輸出一系列變換,設置,然後顯示出來。在這個流程裏,實現了信號源開始切換時,設置相關寄存器,等待信號穩定,獲得信號格式,然後根據信號格式設置相關寄存器,直到最後顯示出來得每個步驟。

      TV自動搜索流程:這個流程實現了TV搜臺功能,並且包括了獲取CNI,根據CNI進行自動排序的APS(Auto program system)功能。

      TV換臺流程:這個流程實現了TV換臺的功能,包括了設置Tuner的頻點,自動檢測伴音制式,麗音制式,自動微調等一系列步驟。

動態刷新流程:一些寄存器要根據輸入信號實時刷新,一般在while(TRUE)或定時中斷函數中加入一些handler來實時刷新這些寄存器。

   

(二)、三個部分說明:

初始化部分:系統上電後先進行系統的初始化 ,初始化程序主要完成基本的I/O的設置,硬件的初始化,變量的初始化等。

系統進入主循環:主循環是系統的核心模塊,絕大部分的軟件處理工作是在主循環中實現的。

中斷服務程序:中斷服務程序完成需要實進處理的功能,內容包括通訊、搖控、定時等。

 

二、軟件系統的詳細說明

  (一)、 軟件系統主要包括以下幾個方面或模塊:

1:硬件更新:對底層一些硬件驅動的初始化和更新,即對硬件的復位控制和相關寄存器的設定上。

2:通訊命令處理:接收並處理串口輸入的調試或升級命令。

3:模式處理:對輸入的信號進行模式更新斷送。

4:電源處理:響應電源開關,一般是搖控開關機。當接收到搖控器發出的開關機命令時,分別對時鐘、內存、LVDS信號、ADC通道,主/子畫面通道進行復位或清零處理操作。

5:模式的建立:判斷模式後,設定系統輸出,建立新的顯示模式。

6:定時處理,檢測處掛的實時時鐘的信號,如果系統設置了開關朵時間,每次都會判斷開關機時間是否已經到達,如果已經和設置的時間吻合,則發出開關機消息。

7:菜單處理:響應菜單的操作,將其轉化爲相應的消息發送給送給處理模式。

8TV處理:可設置自動、手動、微調的標誌量,對TUNER進行搜臺操作,除搜臺外,該模塊一般進行AFE(自動頻率跟蹤)自動校正工作,防止搜到的頻點有偏差。

  (二)、幾個重要的模塊說明

 1、初始化:

軟件初始化程序是對各類變量、函數及相關寄存器、功能模塊作初始化賦值,是整個程序中不可或缺的一部分,本程序初始化流程如圖:

 1):初始化GPIO.GPIO口就是通用輸入、輸出端口。在聲音輸入選擇、面板指示燈顯示、HDMI處理、DVI處理時都需要用到GPIO口,需要對其進行賦初值 ,使GPIO口輸出高或低電平 ,或使GPIO處於接收信號的狀態。

  2):初始化硬件系統寄存器:初始化硬件系統寄存器包括設定處部FLASH等待狀態;初始化兩個物理通道爲邏輯通道並分配主、子通道信號數據存儲空間;初始化中斷寄存器;軟件復位;設置系統時鐘值,含晶振輸入時鐘(TCLK XTAL)、主接口傳輸時鐘(HCLK,其它時鐘值都由其合成而來,並對各個功能模塊選擇相應的時鐘頻率,初始化DDS(直接頻率合成)時鐘頻率並進行DDS;初始化解碼器,設置相應寄存器;初始化模式偵測寄存器(IFM,此信息可以用於確定初頻信號的格式,並可偵測到輸入格式的改變,它也能偵測到隔行掃描格式的半幀類型,判斷當前模式變化及設定相尖標誌位,用於後期模式的處理。

  3):讀取E2PROM;如果是新的E2PROM,那麼進行默認的E2PROM的初始化。如果檢測到的是已經初始化過的EEPROM,那麼就可以讀取上次關機時保存的數據值,用於此次開機時的初始化值。

 4):初始化外部設備:含初始化實時時鐘模塊、初始化聲音模塊、初始化高頻頭設置、初始化HDMI設備,初始化SAA7117視頻解碼器。初始化實時時鐘模塊的主要工作是設定定時中斷寄存器,初始化聲音模塊的主要工作是初始化功放芯片TPA3004D2和麗音芯片MSP3410的寄存器,通過這一初始化來設定揚聲器,耳機的聲音大小及聲音模式,設定麗音接收狀態,選擇重低音開關,選擇SCART 的輸入通道,IIS的解調參數等。初始化高頻頭的設定就是設定IF信源下的初始頻道及起始狀態,按照頻道表搜臺時需要將頻點寫入EEPROM。初始化HMDI設備用來寫相關寄存器,使HDMI 設備處於初始化狀態。初始化SAA7117視頻解碼器用來寫相關寄存器,SAA7117是視頻解碼器芯片,對採集到的圖像信號進行解析,可實現主、子通道兩條通道同時輸出模擬或數字信號,用於多畫面顯示方式。

  5):初始化酒店設置:因爲酒店機的要求與家用機的要求有所不同,例如需要能頻道鎖定、最大音量控制、開機音量設定、開機自動恢復,開機進入指定,面板鎖定、開機LOGO等,所以需對一些變量再賦值,以達到機店機的特殊需要。

  6):初始化LCD屏的參數:因液晶屏是不同廠家生產的,每一款都有其特定的參數及特徵,在初始化需要對屏參進行初始化配置。屏參含伽馬校正曲線、分辨率、每行的點數和每場的行數、像索頻率,行頻和場頻、行/同步寬度進行,行/場同步位置、上電時序等參數。此外屏接收信號有兩種方式,即LVDS信號和TTL信號,若爲LVDS信號時,則還需對LVDS寄存器作相應的初始化操作。

 7):初始化OSD相關參數:初始化OSD 的相關參數主要包括:初始化OSD BUFFER 空間,初始OSD 隊列(OSD消息以隊列的模式依次發出,觸發相關的事件,使OSD顯示不同的狀態);初始化OSD語言,初始化OSD透明度,初始化OSD 按鍵(根據不同的紅外接收協議設置不同),始始化OSD 像素擴展,初始化字庫等動作。

 8: 初始化全局變量:在    EEPROM 中已經設置了一些用戶變量,對另一些全局變量還需初始化,包含彩色制式初始化,初始化暗平衡,初初化降噪,初始化背光值,電影模式偵測(FILM MODE)初始化,定時開機狀態的初始化,斜角度平滑處理的初始化(DCDI,色抑制初始化(CCS);自動顏色處理初始化(ACC,動態顏色管理初始化(ACM),運動自適應逐行處理初始化(MADI,設置12畫面狀態爲初始化狀態。

  9):設定允許開機標誌位,顯示開機LOGO:設定開機的寄存器,允許開機,隨後發出OSD消息,顯示開機logo,正式開機。

  10):初始化信源通道,選擇正確的解碼芯片:確定當前主通道所選用的信源,檢測當前的解調信源需要外部芯片還是內部芯片,使用外部芯片作模擬部分解碼,則針對不同的信源作相應的處理,包括聲音部分的解碼,確保密碼正確,在屏幕上顯示正確的信息。

  11):初始化當前聲音制式:初始化主、子通道聲音系統,售對當前聲音制式(B/G,,L,I,D/K,

M/N)和麗音狀態 FM/AM,.NICAM)的初始化,使聲音部分解碼正解。

 2、搜臺:

搜臺有兩種方式:其一爲全頻道搜臺,另一種是按頻道表搜臺。顧名思義,全頻道搜臺是所有頻點都 搜索,頻點的範圍由具體的高頻頭決定,而按頻道表搜臺就電郵近頻道表上的頻點來搜索,並不是全部頻點,其範圍由頻道表決定。

 

採用全頻道搜臺,支持存儲200個臺,所用的是ALPS 的高頻頭,帶寬範圍是43-866MHZ,在這麼寬的範圍裏,並不是每一個頻點上都會有臺的,而且節目與節目之間至少有8MHZ 的間隔,(以中國爲例,還有的地區節目帶寬的間隔是6MHZ,),用戶有自動搜臺和手動搜臺兩種選擇,雖然使用兩個高頻頭,但搜以過程公平還只使用主通道的那個高頻頭,在搜臺結束後,兩個高頻頭共享這份存儲數據。

   1):自動搜臺流程:

      自動搜臺流程如圖:搜臺流程圖1所示:   

      自動搜臺是按照從低頻段到高頻的順序進行的,在全頻道的檢測哪些頻點是有臺的信號,從流程可以粗略的看到高頻頭循環流程,

 

一個新的頻點

是否有同步信

是否小於1.9

是否有同步信號

是否在大於3.8

存臺

是否小於1.9

50KHZ向前走

 

        搜臺流程圖1

 

對於確認此頻道是否有臺,主要依賴幾個依據:有沒有同步信號 是判斷的前提,從高頻頭讀取電壓現來判斷這個電壓值是否大於3.8伏而後大小於1.9伏,這個過程是必要條件。

 

(2):存臺的過程:

 一般節目在信號的最佳頻點,共大約有2.5MHZ的帶寬範圍存在同步信號,但不是左右均分,左邊要寬點兒,如圖2中的虛線所示。自動搜臺開始時,先把最低的頻點(43MHZ)寫入高頻頭,經過一段時間的延時(高頻頭內鎖相環需要一定的時間穩定,一般是延時150MS)後,讀取其同步信號,如果這個前提條件都不成立,則繼續向前搜索(以1MHZ的步寬),要是有同步狀態,則進行下一步的判斷。

  

下面的圖2說明在同步信號的判斷過程。

首先,在進入在同步信號的範圍內後,縮短向前搜索的步距長度,以100KHZ的步距繼續向前進行搜索。在推進過程中的第一個判斷是要找到AFE電壓大於3.8伏的點。

其次:在找到3.8伏的點後,需要再次縮短步距的長度,這時以50KHZ的寬度向前繼續搜索找到最佳頻點。此時,反饋回來的電壓有可能是大於3.8伏的,也有可以是小於3.8伏的,但應該是大於1.9伏的。如果出現小於1.9伏的,就有可能是在讀取電壓值時出錯了。這是要進行有沒有同步信號的判斷,要是沒有同步信號,則認爲此點是假臺,要是仍有信號,爲了不漏臺,則繼續下一步的判斷。

最後,在找到小於1.9伏的點後,往回跳一個步長度,則認爲是最佳調頻點,並把此點保存下來,但究竟往回跳一個多大的寬才合適, 這是一個經驗值,需要經測試才能得出來。

 

3、模式處理:

  模式處理是主程序中非常重要的一個模塊,其主要功能是針對輸入信號的不同格式進行識別處理,系統首先需要檢測是否有同步信號輸入,並且檢測同步信號是否穩定,判斷輸入信號屬於哪種模式,從而開始建立模式,給出輸出信號。

1)處理流程:

建立模式的處理流程,如圖3所示:

 

2:判斷依據:

 如何來判定輸入的信號是否是有效呢?程序每次進行主循環後都會根據硬件更新(hardwara update)模塊判斷信號的同步狀態是否發生改變。狀態分爲三個模式:穩定,穩定到不穩定,不穩定到穩定。因此會對這三種狀態作不同處理。

2.1):穩定狀態:如果輸入信號一直處於穩定狀態,也就是說探測穩定的同步、頻率、同步極性等,一直處於穩定狀態,那麼將不改變模式處理過程。

2.2):穩定到不穩定:當系統的同步信號由原來的穩定狀態發生改變,變爲不穩定狀態時,不能得到穩定的同步信號時,就作無信號處理。

2.3):從不穩定到穩定:當新的模式輸入後,同步信號將穩定狀態到不穩定狀態,再從不穩定狀態到穩定狀態,然後進行模式判定,系統會根據輸入的行、場頻、來從支持的模式表中查找出信號格式。如果不能找到合適的模式先無法接近模式表中的任何一種模式,那麼當前輸入的將作無效模式處理。

 

3

(3)模式表查詢:

  當有新的模式輸入時,能常採用靜態數組來確定信號屬於哪一種模式,一般我們會定義結構體數組,把系統所有的模式都放到數組中,因此要定義結構體數組,要求結構體中的屬性能區分模式 。通常根據行,場頻率,行的點數和場 和行數,隔行或逐行來區分不同的信號模式,另外我們在模式表中定義模式屬性的類別,用來判定是電腦信號,標清信號,高清信號等類別。其中模式表的查詢流程如圖4如示:

4

40SD 處理

   OSD是連接用戶操作和電視機內部功能的一個人機界面,通常符合外觀時尚、用格調,操作方便,人性化等求。同大多數界面發展一樣,由靜態的發展到動態的,由單字符的發展到多字符的,由不透明的到可調節透明程度背景,調節項目和操作也更加豐富,昜加人性化。

      OSDR 的主要實現方法和類型:

   目前主要有兩種OSD實現方法,外部OSD發生器與視頻處理器間的疊加合成;視頻處理器內部支持0SD,直接在視頻緩存內部疊加生成OSD.

   外部OSD生成器與視頻處理器的疊加合成的實現原理:由一個MCUM內建的字符發生器及顯示緩存,得用快速消隱(FAST-BLANK)信號切換電視的畫面和OSD顯示內容,使OSD的字符等內容加在最終用戶的畫圖上。在OSD和顯示畫面疊加的處理過程中,通過調整兩者的比例可以實現OSD的半透明效果。同時,對OSD信號中的紅、綠、藍信號進行重新編碼,可以得到不同的OSD顏色效果。

   另一種方法是處理器內部支持osd,直接在視頻緩存內部疊加生成osd,這一類視頻處理通常具有內部和外部緩存,同時具有osd發生器,osd 的合成和控制直接在內存內完成。

   Osd 具有字符型(font-based)和位圖型。但爲了節約資源,早期的osd採用字符型,字型osd的優點是可以使用osd內少量的資源,並且MCU只需指定顯示內容即可顯示對應的OSD 信息。

 位圖型OSD的顯示效果理論上可到非常完美的程度,可以提供類似Windows中的具有立體感的各種物體,如具有陰影的按鈕,顏色豐富的圖形 和文字。當然其缺點就是須具有足夠多的OSD顯示緩存,以及像按鈕等像素處理帶來的對CPU速度的要求。

  對於OSD的軟件製作,目前也有兩種方法,一種直接通過對源代碼的更改進行OSD的製作,另一種方法就是使用OSD的工具生成可視的OSD,然後通過工具軟件自動轉化 爲代碼加入到程序中。後者將逐漸的取代前者。

  OSD的事件處理方法:

   在主函數中,一般在主循環中會提供函數接口來處理OSD發出的消息。其中OSD的事件可以分爲以下三種:

  A:模式事件處理:一般發生在切換信源端口的時候,引起新的模式的判斷以及新的模式的建立。新的模式建立,確定模式後, 會給出識別信息的模式LOGO,包括的信源名稱,臺號。麗音標誌。

  B:定時事件處理:主要處理OSD的定時中斷,該中斷用於OSD的超時(timeout)處理。表現在如果沒有按鍵輸入的情況,OSD在到達設定的時間後結束或切換功能。

  C:按鍵事件處理:這是OSD處理的最重要部分,而且用戶大部分操作都是通過遙控控制或面板按鍵來實現的。當按下數字鍵的時候,MCU會通過處部中斷處理接收紅外線碼。‘

.

5、定時處理

  定時處理是將實時時鐘作爲基準,通過實時時間與所需時間與所處理時間相比較,從而得到相應的處理。這裏涉及三個IC之間的協調;主芯片GC32,實時芯片(PT7c4372)、電源芯片MCU.

1)、定時處理的流程:

在機器第一次開機時間,默認給實時時鐘一個初始當前時間,用戶也可以通過菜單對時間進行調整重新設置。在正常工作狀態下,主芯片會通過IIC 總線從實時時鐘芯片處獲得到實時時間,用戶可以通過菜單看到具體時間,因爲實時時鐘有一個處掛電池,所以在待機或斷電的情況下仍可以正常運行。

控制流程圖只列出了主循環與實時時鐘的交互相關部分。

通過控制流程可以知道,主芯片是從實時時鐘芯片取得實時時間,然後將它作爲菜單時間的;並隨實時時鐘的更新而更新。再次,將它作爲睡眠,定時開關機的判斷依據,從 可以看到,每次主循環中都可以得到實時時間。GC32的主循環輪一次的大約時間爲3ms,而用戶最小的可見時間的是鈔,所以並不需要每次都爲其進行更新。

2)、更新菜單上的時間顯示:

主循環很快,循環80次的時間大約是0.3秒,所以在更新時間時顯示加了一個計數判斷,即是每80次才刷新一次,只要保證及時更新菜單中秒的顯示即可。


  
3)、睡眠、定時開關機處理流程:

 

 

  首先,主芯片會從實時時鐘那裏得到實時時間,通過與用戶所定的睡眠、開關機時間相比,判斷當前時間是否是需要進行相當的處理。主芯片通過發送消息的方式通知電源管理芯片進行相應的開關機處理。

 

6、電源管理

  該系統的電源管理模塊中使用是一塊MCU來管理電源什麼時候是提供低電壓,什麼時候提供高電壓,控制開機過程是直接開機還是待機再開機的。當然了其主要目的是降低待機的功耗。能待機的原因是隻有電源管理電源和實時時鐘在工作。電源管理程序中包含了名箇中斷,還有對MCU和液晶屏之間的I/O口時序控制,電源管理系統如圖所示:

 

具體工作流程如下:

A:電源控制MCU通過鍵盤中斷來接收主芯片發來的開機狀態信息。

B:電源控件MCU通過外部中斷0來接收實時時鐘發過來的開機關信息。

C:電源控制MCU通過外部中斷1 來接收遙控開關機信息。

D:+5v‑SEB是當待機的時候,只有電源控制MCU和實時時鐘的時候供電的,以求最大限度減少功耗。

關於程序中的中斷及作用定義如下:

A:外部中斷1和定時中斷1:接收遙控紅外編碼中斷,來判斷是否有遙控操作,在產生外部中斷1時,定時中斷1開始計時,通過獲取兩個脈衝下降沿相隔的時間長度來計算來識別紅外編碼傳輸的數據信息。

B:外部中斷0 因爲電視機具有定時開關機的功能,該功能的實現主要是通過主芯片外掛的實時時鐘來實現的。待機過程中,用戶設定的時間到達後,時鐘芯片會給電源管理芯片發送一個外部爲斷 0,從而電源管理芯片響應,進行由待機開機的操作,從而實現上電操作。

C:鍵盤操作:

用於對交流電源通電後, 是直接上電還是進入待機狀態的判斷。

 

對於該主機,本次開機狀態時由上次的關機決定的,如上次是直接關閉交流電而關機,則本次開機就直接給系統上電。如果上次是先經待機再斷開電源,則本次開機則是開機後處於待機狀態。

 

那麼系統是怎麼記錄這些信息呢?下圖的流程反應了上電和斷電的軟件流程。

 

 注:本文是結合TCL基於GNSS寫的書和MST公司資料整理而成。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章