5 FPGA程序設計
5.1 模塊劃分
整個FPGA程序的模塊框圖如圖3所示。主要包括:D/Ata Capture模塊,負責將輸入的數據按一定的格式順序存放到SRAM中;Switch模塊,負責控制RAM的切換;D/AtaOutput模塊,負責從SRAM中讀取數據按照一定的格式發送出去;Output timing Generator模塊,負責生成輸出的控制時序,并且控制D/Ata Output模塊的輸出和Switch模塊的切換,而該模塊的工作是受到D/Ata Cap-ture模塊控制的。
5.2 存儲安排
為了獲得較大的數據位寬,并且考慮到FPGA管腳數量,用于緩存圖像的SRAM選用的是3片1 M×8 b容量的,作位擴展,這樣可以存放下完整的1幀數據。具體說就是每個地址存儲的大小是3個字節,可以用來存放3個像素的數據(同種顏色)。地址0x0放置3個像素的紅,而地址0x1存放3個像素綠,地址0x2存放3個像素藍,而這3個地址的3個像素在屏幕上是第一行的第1,2,3個像素,接下來地址0x3又存放了3個紅色像素,如此循環,直到地址0xBFFFF存放最后3個像素的藍色數據。如圖4所示。
5.3 算法流程
(1)D/Ata Capture模塊的數據轉存算法
D/AtaCapture模塊負責將輸入的數據按一定的格式順序存放到SRAM中。每個時鐘從AD9887A板過來的數據是24位的RGB數據,8位紅,8位綠,8位藍,而實際輸出的時候是按照1幀紅1幀綠1幀藍的順序輸出的。因此如果能將讀入的24位RGB數據按照一定的格式存放,就可以方便的讀取數據,格式如圖5所示。
具體的轉換是通過一個狀態機實現,其中有6個24 b的寄存器r1~r6用來緩沖6個像素的RGB值。用6個狀態完成類似矩陣轉換的任務,每個狀態會輸出1個24 b的轉換好的數據,并生成地址,即每個狀態都會將1個24 b的數據存入到SRAM中,而這24 b就是3個像素的同一種顏色的值。
(2)D/Ata Output模塊數據輸出算法
D/Ata Output模塊是數據輸出模塊。每個時鐘周期從SRAM中讀取到的是3個像素的數據,而每個時鐘發送到每個AD8381的是一個像素數據,因此是不同步的,需要使用雙時鐘FIFO作流量控制才能使數據正確傳輸,具體的讀取操作:如圖5所示。像素0~3放入FIFO1,像素4~7放入FIFO2,這樣依次下去,每個FIFO放人4個像素。每個時鐘放2個像素。該處理任務由Convert Log-ic子模塊完成。還要注意的是由于每種顏色的數據不是連續存放的,因此下一個地址的值是加3而不是加1。
6 實驗結果
經過對比實驗證實,在子場場頻比較低的時候,單片彩色LCoS顯示系統的閃爍程度會比較高。由于條件所限,研究中選用的LCoS芯片所支持的最高場頻為120 Hz,該芯片是為三片式LCoS系統設計的,因此用在單片彩色系統中具有一定的局限性。實驗中FPGA程序可以實現90 Hz,120 Hz和180 Hz三種子場頻率。在相同的背光源條件下,90 Hz場頻時的色彩相對于其他兩種要好些;180 Hz時系統也完全能夠正常運作,只是色彩稍差,這與LCoS芯片本身有關,不過其閃爍程度已經可以忽略;120 Hz子場時的閃爍還是比較明顯的,色彩和90 Hz子場時基本差不多。
因此,要實現單片彩色LCoS顯示系統的無閃爍,必須使用較高的子場頻(不低于180 Hz),有關資料顯示,目前已經出現了為單片彩色LCoS系統設計的LCoS芯片,其支持的場頻可達360 Hz,如果選用這樣的芯片,就可以實現無閃爍顯示。
就本系統來說,已經獲得了不錯的顯示效果,色彩、對比度都達到了比較好的狀態,而且閃爍程度也非常低。如果要獲得更好的顯示效果,就要選擇支持更高場頻的LCoS芯片。另外,由于該LCoS的響應時間比較長,在屏幕的上沿和下沿還有微弱的色彩混疊現象,這也可以通過選用支持高場頻的LCoS芯片來解決。
7 結 語
盡管本系統已經取得了不錯的顯示效果,但是還不是很完美,還必須采用新型的LCoS芯片。而對于這種最高支持360 Hz場頻的LCoS芯片,對硬件速度和D/A的速度都提出了較高的要求:如果源圖像的場頻為60Hz,而每個子場的頻率為360 Hz,則應該有2幀圖像相同,同時每個子場的時間縮短為原來的一半(與180 Hz子場頻率比),需要數據發送數率和D/A速度至少要快一倍。但是這樣的好處就是使本系統所存在的閃爍和色彩交疊顯現的到徹底解決,使單片彩色LCoS系統的顯示質量趨于完美。
本文主要介紹視頻顯示系統的硬件結構,以LCOS顯示芯片的驅動時序要求為設計標準,提出一種基于FPGA的解決方案,使得系統具有靈活性和可修改性,方便以后的升級以及維護。并對FPGA程序的算法做了詳細的介紹。最后對系統存在的問題做了討論,并提出一些解決方法,以及對未來系統的展望。