1引言 通過彩色液晶顯示器(LCD)取景是數碼相機優于傳統相機的重要特性之一,它解決了使用取景框取景帶來的各種不便,而且可以在拍攝現場用液晶顯示器回放剛拍的相片來查看拍攝效果[1],從而決定是否留下這張照片,這樣能使攝影者更好地控制照片的質量。所以用液晶顯示器進行取景和回放是數碼相機兩大必不可少的功能。同時液晶顯示器還用來顯示菜單,提供良好的人機交互界面。目前市場上出售的數碼相機使用的液晶顯示器都是彩色TFT液晶顯示器,這種液晶顯示器解決了一般液晶顯示器中相鄰像素串擾的現象[2],所以可用來顯示真正的活動圖像。 數碼相機專用集成電路芯片中的液晶顯示控制電路主要實現的功能是向液晶顯示模塊(LCM)和數模轉換器提供所有必需的控制時序信號,同時接受來自系統的YCbCr格式的圖像數據,然后進行色空間 變換將圖像轉化成RGB格式,接著按照一定的順序以每個像素一種顏色的方式向片外DAC輸出圖像數據。 2系統結構與設計要求 圖1給出了我們設計的數碼相機系統芯片中有關LCD顯示部分的示意圖。根據設計數碼相機專用集成電路芯片的系統要求,液晶顯示控制電路可用來控制多種規格的液晶顯示模塊,從6萬多像素到20多萬像素。此電路有兩種工作模式:取景模式和回放模式,分別顯示動態和靜態圖像。同時電路要具有多種掃描方式 ——上下左右的組合共有四種。因此此電路必須具備高度的靈活性,可由系統對其工作狀態進行編程控制。 3電路設計 根據設計要求,我們先確定電路的總體框架,然后設計各個模塊并用Verilog HDL語言描述實現,最后進行RTL級的仿真。圖2是整個電路的功能框圖。 整個液晶顯示控制電路由四個模塊組成,分別是寄存器文件、有限狀態機、數據處理器和脈沖發生器。該電路的信號線主要和三個電路相關,一是和MCU接口電路相關,包括MCU_AB(地址總線)、MCU_DB(數據總線)、MCU_nWR(寫使能)、MCU_nRD(讀使能)和MCU_nCS(MCU操作選中信號);二是和液晶顯示模塊及數模轉換器相關,包括從脈沖發生器輸出的控制整個圖像顯示的時序信號和紅、綠、藍三原色數據以及PSAVE、BLANK和D_CLK三個控制DAC轉換的信號;三是和數碼相機專用集成電路芯片中的其他子模塊相連,包括DMA_Req1、DMA_Req2、DMA_Ack1、DMA_Ack2四個DMA操作的交互信號和16位的YCbCr數據信號。SYSRST和SYSCLK分別是系統復位和時鐘信號。以下分別對各個模塊的設計進行分析。 3.1 寄存器文件模塊 寄存器文件模塊主要由兩部分組成:MCU接口和寄存器陣列。通過MCU接口系統可以對寄存器陣列進行讀寫操作,從而使液晶顯示控制電路具有靈活多變的特點,可以控制多種規格的液晶顯示模塊,在多種模式下工作,可以輸出多種掃描方式的控制信號,可以將圖像顯示在顯示器的任一區域,同時還具有軟件復位功能。整個寄存器陣列由 30個8位寄存器組成,分為三大類:模式寄存器、狀態寄存器和波形參數寄存器。模式寄存器的低7 位有效,如圖3所示。 第0位為狀態/復位位,它輸出給MCU,并接液晶顯示控制電路中其他模塊的觸發器的復位端。在系統復位和顯示結束時該位為1,表示空閑并使接口處于復位狀態。若系統把該位置為0,則電路的復位狀態被解除并處于工作狀態。第1、2 位用來決定顯示時的掃描方式,其中V_DIR表示幀掃描方式,此位置1表示從上到下掃描,置0表示從下到上掃描;H_DIR表示行掃描方式,置1和置0分別表示從左到右和從右到左掃描,兩位組合共有四種掃描方式。RSA、RSB和RSC三位用來表示使用哪種規格的液晶顯示模塊,它們的組合及對應的顯示器分辨率如表1所示。MODE位用來表示工作模式,1表示工作在取景模式下,0表示工作在回放模式下。 狀態寄存器包括行數寄存器、列數寄存器、起始行寄存器、終止行寄存器、起始列寄存器、終止列寄存器以及奇偶數行的顏色順序寄存器。行數寄存器和列數寄存器設置顯示一幀圖像所需的垂直時鐘脈沖數和掃描一行圖像所需的水平時鐘脈沖數,對于不同規格和品牌的液晶顯示器這兩個寄存器參數是不同的。起始行寄存器、終止行寄存器、起始列寄存器和終止列寄存器設置顯示圖像的范圍,如圖4所示,這樣實現了可以將圖像顯示在顯示器任意區域的設計要求。由于TFT彩色液晶顯示器每個像素只顯示三原色中的一種顏色,它是和相鄰像素一起顯示彩色效果的,所以奇偶數行的顏色順序是不同的。為了保證在某一像素點上給出正確的原色數據信號,在一定的掃描方式下,起始行寄存器和起始列寄存器必須與奇偶數行的顏色順序寄存器相一致。例如,使用280×220型號的液晶顯示器,在V_DIR=0(從上到下掃描)和H_DIR=1 (從左到右掃描)時奇數行的顏色順序是RGB,偶數行顏色順序為GBR,所以在設置起始行寄存器和起始列寄存器時一定要保證這樣的顏色順序,才能正確顯示。 脈沖參數寄存器設置了各驅動脈沖波形的時間參數,若干個寄存器對應于一相驅動脈沖。當有限狀態機模塊中的行計數器和列計數器的狀態與某些脈沖參數寄存器的設置相同時,相應的輸出脈沖發生翻轉。對于不同規格和品牌的液晶顯示器這些參數是不同的,即使對于同一產品,在不同掃描模式下它們也是不同的。 3.2 有限狀態機模塊 有限狀態機由兩個16位的行列計數器組成,狀態變量為模式寄存器的狀態/復位位。在工作模式下,兩個計數器循環計數。當行計數器狀態與起始行寄存器相同時,行有效信號變高,表示該幀圖像的顯示開始,此時數據處理器模塊開始工作。在系統復位或行計數器狀態與終止行寄存器相同時,行計數器被復位。在行有效信號變高后,當列計數器狀態與起始列寄存器相同時,像素有效信號變高,表示該行的有效顯示開始,此時數據處理器開始輸出每個像素的顏色數據。在系統復位或列計數器狀態與終止列寄存器相同時,列計數器被復位。 3.3 數據處理器模塊 數據處理器模塊如圖5所示。它由三部分組成:DMA接口及其數據緩沖器、色空間反變換電路和溢出處理電路。根據系統設計要求,由電荷耦合器件(CCD)圖像傳感器采樣得到的原始圖像經過像素處理器模塊的內插和色空間變換后,成為了YCbCr格式的圖像,根據JPEG標準,從RGB到 YCbCr的色空間變換遵循公式[3] Y=0299R+0587G+0.114B Cb=_0.169R-0.331G+0.5B (1) Cr=0.5R-0.4186F-0.0814B 同時為了存儲方便,將變換得到的Y信號減去了128,這樣三種信號的值均在-128到+127之間,從而都可以用8位的帶符號數表示。在存儲YCbCr 信號時像素處理器模塊將相鄰像素的色度信號取均值然后進行復用,這樣節省了存儲空間。所以在圖像存儲器中相鄰兩個像素的亮度信號組合成一個16位的數據存放在一個存儲單元里,而復用的色度信號則存放在下一個地址的單元里[3] 。當要用液晶顯示器進行圖像顯示時,先通過連續兩次DMA的讀操作獲得兩個像素的亮度信號和色度信號,分別放入16位的數據緩沖器1和2,然后在讀取新的兩個相鄰像素的YCbCr信號并把它們放入數據緩沖器3和4的同時開始處理緩沖器1和2中的數據,于是通過兩對數據緩沖器的作用實現了一個簡單的流水線操作。在色空間反變換中要實現將YCbCr信號轉換成液晶顯示所需要的RGB信號,根據公式(1)并進行簡化我們可以得到相應的反變換的公式(2)。 (2) 根據反變換系數的范圍,我們將所有的系數值乘上64,然后將乘積的整數部分用一個8位的帶符號數表示。在色空間反變換中我們設計了一個9× 8的Booth乘法器,用來實現色度信號和變換系數的帶符號乘法運算。為了保證反變換的正確,在運算過程中要進行符號擴展,所以變換所得的RGB信號是12位的帶符號數,而最終輸出到數模轉換器的數據是8位無符號數,因此還要進行溢出處理,將所有的計算結果都限定在0~255范圍內。同時由于液晶顯示器的公共電極的電位是交流電位,即相鄰兩行的公共電極的電位是反相的,所以相鄰兩行的圖像數據應該分別以原碼和反碼輸出。 3.4 脈沖發生器模塊 脈沖發生器根據有限狀態機中行列計數器的狀態和波形參數寄存器內的參數,產生各驅動波形,這些驅動波形用于驅動液晶顯示模塊本身及其外接的模擬前端電路。 4 Verilog語言實現和FPGA硬件驗證 在確定了整體以及各功能模塊的結構設計之后,就可以用Verilog HDL語言對設計進行RTL建模,然后用Synopsys 公司的VCS對設計進行仿真并調試。通過RTL級的仿真后,我們對此電路進行了FPGA的硬件驗證,使用的芯片是Xilinx公司的VirtexE1000-BG560,系統時鐘為54MHz。無論是單獨測試還是作為整個數碼相機專用芯片的一部分,液晶顯示控制電路都能成功實現兩種工作模式下的設計要求,性能良好。 5結束語 通過FPGA驗證后,液晶顯示控制電路用TSMC 0.25mm SAGETM工藝實現,后端流程如圖6所示,其中的Design Compiler,Prime Time和Formality是Synopsys公司的產品;Silicon Ensembler和Virtuso是Cadence公司的產品。圖像采樣接口的電路規模為15000門左右,芯片面積為0.49mm×0.8mm。 |