視頻控制器概述
定義 視頻控制器一般由顯卡驅(qū)動(dòng)程序或DirectX中自帶 視頻控制器模塊是芯片與顯示平臺(tái)的數(shù)據(jù)接口,對(duì)檢驗(yàn)芯片設(shè)計(jì)是否成功起著重要的作用,有必要把它單獨(dú)劃分為一個(gè)子模塊。為了提高設(shè)計(jì)的成功率,在設(shè)計(jì)初期采用了基于FPGA的原型驗(yàn)證。整個(gè)系統(tǒng)的FPGA原型驗(yàn)證平臺(tái)分為2個(gè)部分,硬件設(shè)計(jì)和基于RISC CPU的軟件解碼,兩部分協(xié)同工作,既可以驗(yàn)證軟件和硬件的解碼結(jié)果,又可以加速整個(gè)解碼過(guò)程。
視頻控制模塊原理及功能分析輸出視頻控制模塊有2個(gè)時(shí)鐘域:系統(tǒng)時(shí)鐘域和顯示時(shí)鐘域。系統(tǒng)時(shí)鐘頻率根據(jù)所選用的SDRAM類型而采用固定的166MHz;對(duì)于分辨率為1280×720的高清電視來(lái)說(shuō),顯示時(shí)鐘域可以選用70 MHz 左右的頻率。系統(tǒng)時(shí)鐘域含有2個(gè)對(duì)外接口:1、系統(tǒng)接口,主要包含上層系統(tǒng)發(fā)出的指令以及輸出控制模塊的反饋信息;2、DRAM接口,包含數(shù)據(jù)專用總線為輸出控制模塊提供的信號(hào),用來(lái)于向DRAM請(qǐng)求顯示的圖像數(shù)據(jù)。系統(tǒng)時(shí)鐘域中的顯示輸入控制子模塊(Disp In Ctrl)首先用于接收系統(tǒng)傳來(lái)的StartDisp和EndDisp信號(hào),來(lái)啟動(dòng)或關(guān)閉視頻數(shù)據(jù)的輸出顯示功能,同時(shí)發(fā)出幀圖像顯示完畢信號(hào)(FrameDone),通知系統(tǒng)更換下一副圖像的地址信息(ImageAddress);其次,它用于向DRAM發(fā)出請(qǐng)求,通過(guò)專用數(shù)據(jù)通道讀取需要顯示的圖像數(shù)據(jù);它還要控制輸入多路選擇模塊(Input MUX),從而完成向片內(nèi)SRAM寫(xiě)數(shù)據(jù)的任務(wù);最后,該模塊要與顯示時(shí)鐘域的信息交互,向時(shí)鐘域同步模塊(Clk Domain Sync)發(fā)送顯示使能信號(hào)(DispEn Sys),控制圖像顯示的開(kāi)啟和關(guān)閉。系統(tǒng)時(shí)鐘域的另一個(gè)子模塊——輸入多路選擇模塊會(huì)按照一定的規(guī)律選擇片內(nèi)雙口SRAM,控制存儲(chǔ)器地址,完成向存儲(chǔ)器寫(xiě)入顯示圖像數(shù)據(jù)的任務(wù)。
顯示時(shí)鐘域含有一個(gè)對(duì)外顯示設(shè)備接口,主要包含用于顯示的控制信號(hào)和已完成轉(zhuǎn)換的數(shù)據(jù)信息。顯示時(shí)鐘域包含2個(gè)子模塊,一個(gè)是輸出多路選擇子模塊(Output MUX),用于實(shí)現(xiàn)對(duì)雙口SRAM的選擇和地址控制,按照一定的規(guī)律讀取要顯示的圖像數(shù)據(jù);還要進(jìn)行數(shù)據(jù)的打包。另外一個(gè)子模塊是顯示輸出控制模塊(Disp Out Ctrl),用于實(shí)現(xiàn)對(duì)TV編碼器的控制、YUV信號(hào)向RGB信號(hào)的轉(zhuǎn)換以及對(duì)數(shù)字圖像的縮放,信號(hào)包括顯示時(shí)鐘、行同步、幀同步以及RGB圖像數(shù)據(jù)等;它還要控制輸出多路選擇模塊以讀取顯示數(shù)據(jù);最后,它要與系統(tǒng)時(shí)鐘域進(jìn)行交互, 配合數(shù)據(jù)在兩個(gè)時(shí)鐘域之間的傳遞。
時(shí)鐘域同步模塊是輸出控制模塊設(shè)計(jì)的重點(diǎn),它主要負(fù)責(zé)兩個(gè)時(shí)鐘域之間的控制信號(hào)傳遞??鐣r(shí)鐘域的信號(hào)傳遞設(shè)計(jì)較為麻煩, 所以設(shè)計(jì)中將傳遞的信號(hào)分為兩類:數(shù)據(jù)信號(hào)和控制信號(hào),其中控制信號(hào)就是通過(guò)時(shí)鐘域同步模塊傳遞。對(duì)需要跨時(shí)鐘域傳遞的信號(hào)數(shù)進(jìn)行精簡(jiǎn),在最后方案中只需要2個(gè)信號(hào):WrDone信號(hào)由系統(tǒng)時(shí)鐘域發(fā)出,通知顯示時(shí)鐘域某塊雙口SRAM中的數(shù)據(jù)已經(jīng)更新完畢,可以讀取并進(jìn)行顯示輸出;RdDone信號(hào)由顯示時(shí)鐘域發(fā)出,通知系統(tǒng)時(shí)鐘域某塊雙口SRAM中的數(shù)據(jù)已經(jīng)顯示完畢,可以更新其內(nèi)部的數(shù)據(jù)。信號(hào)在不同的時(shí)鐘域之間傳遞需要采取消除亞穩(wěn)態(tài)(Metastability)的處理措施,可使信號(hào)通過(guò)兩級(jí)寄存器鎖存輸出。設(shè)計(jì)中有兩點(diǎn)值得注意,首先,時(shí)鐘域同步電路應(yīng)放在一個(gè)獨(dú)立的模塊中,保證綜合工具的優(yōu)化、時(shí)序分析的正確,并方便電路的分析和調(diào)試;同時(shí),為了能夠使信號(hào)的目標(biāo)時(shí)鐘域采集到信號(hào)變化,設(shè)計(jì)中傳遞的控制信號(hào)都采用電平信號(hào)表征。
時(shí)鐘域之間要傳遞的另一種信號(hào)是數(shù)據(jù)信號(hào),由于數(shù)據(jù)信號(hào)數(shù)目較多、變化也較快,所以它們的傳遞通過(guò)雙口DPRAM實(shí)現(xiàn)。雙口DPRAM要求讀寫(xiě)端口對(duì)同一存儲(chǔ)地址的操作要滿足一定的時(shí)間間隔,否則會(huì)出現(xiàn)數(shù)據(jù)傳輸錯(cuò)誤,甚至?xí)茐挠布娐?。因此為了避免DPRAM的讀寫(xiě)沖突,設(shè)計(jì)中采用了“乒乓”緩沖的方法,兩塊DPRAM交替存取解碼后用于顯示的亮度或色差數(shù)據(jù):當(dāng)顯示部分讀取一塊DPRAM中的數(shù)據(jù)時(shí),系統(tǒng)向另一塊DPRAM中寫(xiě)接下來(lái)要顯示的數(shù)據(jù),數(shù)據(jù)讀取完畢時(shí),兩塊DPRAM就進(jìn)行交換。這部分共用4塊DPRAM來(lái)實(shí)現(xiàn),2塊傳遞亮度信號(hào),2塊傳遞色差信號(hào)。下面分析在視頻控制器顯示輸出子模塊中運(yùn)用到的格式轉(zhuǎn)換算法、圖像縮放處理算法以及它們的硬件實(shí)現(xiàn)。顯示數(shù)據(jù)格式轉(zhuǎn)換分析根據(jù)Sil 164 DVI信號(hào)編碼芯片資料,同時(shí)參考H.264視頻編碼標(biāo)準(zhǔn)中給出的YUV → RGB轉(zhuǎn)換格式,故在設(shè)計(jì)中采用的固定轉(zhuǎn)換算法如下式所示:上式經(jīng)過(guò)定點(diǎn)化處理,使用移位和相加的方法實(shí)現(xiàn)了轉(zhuǎn)換,如下式所示:在硬件設(shè)計(jì)中的YUV、RGB信號(hào)都是用8位無(wú)符號(hào)數(shù)表示,中間變量采用12位保證精度。最后要在0~255的范圍內(nèi)對(duì)計(jì)算出的RGB結(jié)果進(jìn)行剪裁處理,式中的冪指數(shù)和除法運(yùn)算都通過(guò)移位來(lái)實(shí)現(xiàn)。