• 沒有找到結果。

輸入端模組架構

第四章 輸入端與輸出端模組

4.2 輸入端模組架構

在 DSP 晶片上負責處理輸入影像的硬體區塊為 SVIP,而在軟體層所建立用來操作 此硬體區塊的模組名稱為 tmVcapSvip,該模組具有 TSSA 的基本分層架構,但由於影像 的擷取來自硬體,相較於其它無硬體結構的模組,必須多具備一層操控硬體區塊的層面,

該層位於軟體架構的最底部稱為 DL 層,是用來控制設定 SVIP 硬體區塊。而影像資料 在進入 DSP 晶片之前必須先經過一個類比訊號轉換為數位訊號的過程,由於執行這部 分功能的晶片位於 DSP 的外部,所以必須把晶片的資訊提供給 DSP,而這些晶片的設 定資訊則是由 BSL 層來管理,並提供給輸入端的模組 tmVdecAna 以及 tmVcapSvip 來使 用,整體輸入端的架構如圖 4.5 所示。

由圖 4.5 可以看到在執行輸入端的模組時,應用程式會直接操控上層的軟體模組 (tmVdecAna、tmVcapSvip),操控方式則是藉由呼叫模組所提供的介面函式來執行,而 這些被呼叫的介面函式則會往下層傳遞訊息,告知模組下層目前所要處理的程序有哪些,

並藉由 DL 層與 BSL 層的函式內容來協助模組與硬體之間的設定。接下來會先針對 tmVdecAna 模組的設定資訊來探討,了解模組與外部晶片的設定關係,而 tmVcapSvip

tmVcapSvip tmVdecAna

(interface)

BSL (board information, Ex.tmbslPnxLiteDemo)

tmdlSvip

Video

Codec (A/D) Ex. 7115 or

19978

SVIP HW

TSSA Output Pin Application

圖 4.5 輸入端分層與模組架構

40 端 A/D 的資訊時,就會藉由 tmVdecAna 模組的函式 tmVdecAna_Open( ),到 BSL 層拿 取 A/D 的硬體設定資訊,並將取得的資訊存放在此資料結構中,同時將此資料結構的位 址設定給應用程式上的指標,讓應用程式也取得這些設定資訊。

而 tmVdecAna_Open( )函式主要是透過 tmbslCore 中 GetInterface( )的函式來取得 BSL 層中硬體註冊的資訊,由於註冊的硬體資訊不只一種,所以 tmVdecAna 模組就會 利用到不同的巨集來讀取資料,如圖 4.7 所示,而這些巨集會傳入不同的介面 id 給 tmbslCore 中的 GetInterface()函式,GetInterface()函式就會依據傳入的介面 id,到儲存於 BSL 層中的資料來搜尋比對,並將取得的資訊的位址回傳給 tmVdecAna 模組。

圖 4.6 tmVdecAna 模組存放硬體資訊的資料結構

typedef struct _tmVdecAnaUnitInfo_t {

tmbslVdecAnaVideoInSources_t VISources[MAX_PHYSICAL_UNITS];

…… ……

ptmbslVdecAnaConfig_t pDecBoardCfg[MAX_PHYSICAL_UNITS];

ptmbslVdecAnaVbiConfig_t pDecVbiBoardCfg[MAX_PHYSICAL_UNITS];

ptmbslVdecAnaExt2Config_t pDecExt2BoardCfg[MAX_PHYSICAL_UNITS];

} tmVdecAnaUnitInfo_t, *ptmVdecAnaUnitInfo_t;

……

41

tmVdecAna 模組所呼叫的巨集種類大致可分為以下五種:

tmbslVdecAnaBoardGetInterface()

是用來取得目前板子上的 A/D 晶片的相關資訊,所以在定義巨集的時候,會把能讓 BSL 識別的介面 id 傳入給 tmbslCoreGetInterface()函式,讓 tmbslCore 層知道目前 所需要的是 A/D 的資訊,並到儲存硬體資訊的資料結構中尋找吻合的 id,再將資料 回傳給上層。

tmbslVdecAnaSvipGetInterface()

是用來取得 DSP 晶片上提供給 A/D 晶片連接的 SVIP 資訊。在 DSP 上的處理輸入 影像的部分,在硬體上分成兩個單元,一組是 SVIP,另一組為 FGPI(Fast General Purpose Input port),FGPI 除了可以處理攝錄的影像資訊,當板子上有兩組 DSP 晶 片要傳送資訊時,FGPI 可以用在第二顆 DSP 晶片,處理前一顆 DSP 晶片傳遞過來 的資料。由於目前皆是使用 SVIP 來處理輸入訊號,所以這個部分主要是將 SVIP 單元的資訊提供給上層。

tmbslVdecAnaVbiGetInterface()

是用來取得影像中的 VBI (Vertical Blank Interval)資料的設定資訊,不同的 A/D 晶片 都具有自己的 VBI 設定方式,在註冊時會將這部分的資訊儲存到 tmbslCore 中,並 在這部分把資訊提供給上層。

tmbslVdecAnaExtGetInterface()

此巨集主要是提供一些擴充的資訊來給軟體層的輸入模組使用,但程式上未必會使 用到,在這裡只是一併寫入執行。

tmbslVdecAnaExt2GetInterface() 同上 tmbslVdecAnaExtGetInterface()。

當 tmVdecAna 模組取得 BSL 資訊後,就會將這些設定資訊存放到圖 4.7 所示的結 構中,並將這個結構的位址回傳給應用程式的全域資料結構中設定,此時應用程式便取 得輸入端 A/D 這塊硬體單元的資料,接下來即可依據這些資料來設定程式上的一些參數。

此外 tmVdecAna 模組上還提供了一些介面函式來給應用程式操作,表 4.2 中列舉了幾個 常使用到的函式,例如取得輸入影像的狀態、格式標準、串流數……等資訊的功能函式。

應用程式便可藉由這些函式取得的資訊內容,來對運作上的一些結構參數做設定,而關 於 tmVdecAna 模組這部分的探討也到此告一段落,接下來下一節就針對輸入端架構上 的另一部分,tmVcapSvip 模組開始進行介紹。

42

表 4.2 tmVdecAna 模組函式