《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 業(yè)界動(dòng)態(tài) > 一種提高STN型單色點(diǎn)陣液晶顯示器灰度級(jí)數(shù)的算法

一種提高STN型單色點(diǎn)陣液晶顯示器灰度級(jí)數(shù)的算法

2008-07-28
作者:曹志香

  摘 要: 根據(jù)圖像的分解、傳送、合成的原理以及STN型單色點(diǎn)陣液晶顯示器件的灰度顯示機(jī)理,提出了一種既能減小芯片面積、降低功耗又能提高灰度級(jí)數(shù)的多公式算法;利用Verilog HDL語(yǔ)言工具完成了灰度控制模塊" title="控制模塊">控制模塊的設(shè)計(jì);利用SYNOPSYS公司的EDA工具對(duì)該灰度控制模塊進(jìn)行了仿真、綜合,并在FPGA上進(jìn)行了驗(yàn)證。
  關(guān)鍵詞: 灰度 公式算法 模塊設(shè)計(jì) FPGA


  由于人眼能區(qū)分光信號(hào)的強(qiáng)弱明暗,所以要獲得優(yōu)良的顯示效果,必須實(shí)現(xiàn)灰度顯示。特別是在圖像方面,灰度級(jí)數(shù)越多,圖像層次越分明,圖像越柔和。液晶顯示器作為一種顯示器件,總是希望它能顯示生動(dòng)逼真且穩(wěn)定無(wú)閃爍的圖像,所以灰度的表達(dá)對(duì)于液晶顯示器來(lái)說(shuō)是極其重要的。嵌入式系統(tǒng)要求整個(gè)芯片面積和功耗越小越好,并能實(shí)現(xiàn)集成化。因此,在支持液晶顯示板的嵌入式LCD控制器中,如何實(shí)現(xiàn)灰度控制并有效地降低整個(gè)芯片面積和功耗、降低信號(hào)損失、提高畫質(zhì)是IC設(shè)計(jì)者的一個(gè)研究熱點(diǎn)。
  本文首先根據(jù)STN型單色點(diǎn)陣液晶顯示器件的灰度顯示機(jī)理并利用相鄰像素的通、斷進(jìn)行控制的規(guī)則,提出一種基于面積-幀調(diào)制的公式算法,從而利用多個(gè)公式達(dá)到減小芯片面積、降低功耗、降低成本、提高灰度級(jí)別、消除圖像閃爍的目的;然后利用Verilog HDL語(yǔ)言工具編寫RTL級(jí)代碼,完成灰度控制模塊的設(shè)計(jì);最后對(duì)該模塊進(jìn)行仿真、綜合,并在FPGA上進(jìn)行驗(yàn)證。
1 灰度公式算法的提出
  我們知道,從圖像到顯示屏的顯示過(guò)程一般分為分解、傳送與合成三個(gè)過(guò)程[1]。也就是首先把整個(gè)畫面分解成許多黑白程度(亮度)不同的小點(diǎn),即“像素”,它們具有單值的光特性(亮度)和幾何位置(x,y);然后利用人眼視覺(jué)特性,采用掃描方法,按時(shí)間順序逐一傳送空間分布的每一像素的亮度;最后再將各個(gè)像素合成為整個(gè)畫面。只要確保發(fā)送端坐標(biāo)與接收端坐標(biāo)(x,y)的一一對(duì)應(yīng)關(guān)系,就可以使被傳送的圖像不失真??梢?jiàn),這里所說(shuō)的像素亮度實(shí)際上是(x,y,t)的函數(shù),t代表傳送時(shí)間。
  STN型單色點(diǎn)陣液晶顯示器件采用的是一種無(wú)源矩陣型結(jié)構(gòu)[2],其數(shù)據(jù)位列選擇信號(hào)是處于鎖定狀態(tài)的二值(黑、白)信號(hào),即所寫入的灰度圖像顯示數(shù)據(jù)是用“1”(選通為黑)和“0”(非選通為白)表示的脈沖信號(hào)。一個(gè)像素點(diǎn)的亮度是由若干幀選通該點(diǎn)的次數(shù)決定的,選通次數(shù)越多,該像素點(diǎn)越亮,否則就越暗。因此,只要在若干幀內(nèi)該像素點(diǎn)被選通的次數(shù)一定,不管選通和非選通的次序(即“1”和“0”的輸出順序)如何,它們的亮度是一致的。由于點(diǎn)陣式液晶顯示屏上相鄰像素之間相互有影響,而圖像穩(wěn)定與否又與各像素點(diǎn)之間能否有效配合密不可分,這就要求盡可能地使得空間上相鄰像素的激發(fā)隨時(shí)間擴(kuò)散,而同一時(shí)刻激發(fā)的像素在空間上又能擴(kuò)散。為了實(shí)現(xiàn)整幅畫面的灰度顯示效果,若從整幅畫面考慮,勢(shì)必增加控制難度,因?yàn)橐环嬁赡苡蓭浊А兹f(wàn)乃至幾百萬(wàn)個(gè)像素組成。如果將顯示區(qū)域按事先預(yù)定的大小劃分成塊,對(duì)每個(gè)方陣采用相同的控制規(guī)則,那么對(duì)整幅畫面的控制將轉(zhuǎn)化為對(duì)一個(gè)方陣的控制,這樣可以大大降低對(duì)各像素點(diǎn)的控制難度。本文以16級(jí)灰度為例,將顯示區(qū)域劃分成15×15的方陣,以15幀為一循環(huán)周期,將16種亮度在單位時(shí)間內(nèi)的脈沖輸出次序用0、1、2、...的順序標(biāo)注,如表1所示。


  16級(jí)灰度的原始圖像數(shù)據(jù)" title="圖像數(shù)據(jù)">圖像數(shù)據(jù)信號(hào)被劃分為四組:
  數(shù)據(jù)信號(hào)Ⅰ(0000 1111),
  數(shù)據(jù)信號(hào)Ⅱ(0101 0110 0111 1000 1001 1010),
  數(shù)據(jù)信號(hào)Ⅲ(0011 0100 1011 1100),
  數(shù)據(jù)信號(hào)Ⅳ(0001 0010 1101 1110)。
  對(duì)于數(shù)據(jù)信號(hào)Ⅰ,所有15幀中的相應(yīng)點(diǎn)都置成“0”或“1”。
  對(duì)于數(shù)據(jù)信號(hào)Ⅱ,脈沖序列值的計(jì)算公式如下:
  k=mod[(c+r+f)/15](1)
  對(duì)于數(shù)據(jù)信號(hào)Ⅲ,脈沖序列值的計(jì)算公式如下:
  k=mod[(2c+r+f)/15](2)
  對(duì)于數(shù)據(jù)信號(hào)Ⅳ,脈沖序列值的計(jì)算公式如下:
  k=mod[(4c+r+2f)/15](3)
  式中,c、r表示方陣中像素的幾何位置(c=0,1,2,...,14;r=0,1,2,...,14),f表示單位時(shí)間內(nèi)所處的幀數(shù)(f=0,1,2,...,14),mod表示取余運(yùn)算,k表示脈沖序列值(k=0,1,2,...,14)。根據(jù)公式算出的脈沖序列值和代表亮度的圖像數(shù)據(jù),可從查找表" title="查找表">查找表(表1)上確定任何一個(gè)像素在任何時(shí)刻的選通情況。在這些公式中,(c,r)反映的是面積灰度調(diào)制,同一幀中不同的像素有不同的k值;而f反映的是幀灰度調(diào)制,某一個(gè)像素的f值變化時(shí),其k值也在變化,且在一個(gè)單位時(shí)間內(nèi)其k值不重復(fù)。因此,這種公式算法使得各像素在時(shí)間上有累加的效果,同時(shí)還可利用分散激活產(chǎn)生半色調(diào)像素點(diǎn)來(lái)增加像素明暗變化率,從而使原始圖像在進(jìn)行灰度調(diào)制時(shí)能夠得到穩(wěn)定的顯示。
2 灰度控制模塊設(shè)計(jì)
  灰度控制模塊主要控制像素灰度數(shù)據(jù)的輸出,一方面要保證LCD顯示器件上每個(gè)像素的幾何位置要與原始畫面上的每個(gè)像素的幾何位置一一對(duì)應(yīng),另一方面要保證在一定幀數(shù)之內(nèi)能夠輸出表示原始像素?cái)?shù)據(jù)所要表示的灰度效果。
  公式(1)、(2)、(3)中有三個(gè)參數(shù):c、r、f,在灰度控制模塊中可以采用三個(gè)計(jì)數(shù)器(列計(jì)數(shù)器、行計(jì)數(shù)器和幀計(jì)數(shù)器)來(lái)實(shí)現(xiàn)。前兩個(gè)計(jì)數(shù)器完成顯示區(qū)域的劃分工作,同時(shí)產(chǎn)生c、r值。而幀計(jì)數(shù)器用于產(chǎn)生f值,然后根據(jù)這三個(gè)計(jì)數(shù)器的值計(jì)算出各像素點(diǎn)在任何時(shí)刻的脈沖序列值k。根據(jù)此分析,可以畫出如圖1所示的灰度控制模塊的結(jié)構(gòu)圖。
  本灰度控制電路實(shí)現(xiàn)兩種灰度顯示模式:2bpp和4bpp,由BPIX的值定義。在硬件中,主要實(shí)現(xiàn)4bpp模式即16級(jí)灰度。對(duì)于2bpp模式,可通過(guò)16級(jí)灰度映射實(shí)現(xiàn)。整個(gè)操作過(guò)程如下:當(dāng)異步復(fù)位信號(hào)(rst_lcd_n_a)為1時(shí),內(nèi)核通過(guò)總線對(duì)LCD控制器中的寄存器進(jìn)行配置操作,直到配置最后一個(gè)使能信號(hào)(lcd_en)為止;當(dāng)使能信號(hào)有效時(shí),灰度控制電路開(kāi)始正常工作;當(dāng)總線數(shù)據(jù)緩沖器" title="數(shù)據(jù)緩沖器">數(shù)據(jù)緩沖器為非空(ldata_fifo_empty)且顯示數(shù)據(jù)緩沖器為非滿(rgb_fifo_full)時(shí),灰度控制電路向總線數(shù)據(jù)緩沖器發(fā)出讀請(qǐng)求信號(hào)(lcd_fifo_rreq),并在控制器工作時(shí)鐘(clk_lcd)上升沿到來(lái)時(shí)讀取一個(gè)32bit數(shù)據(jù),將其鎖存在32bit的鎖存器" title="鎖存器">鎖存器中,并且在隨后的數(shù)個(gè)工作時(shí)鐘內(nèi)將數(shù)據(jù)送出;鎖存器每個(gè)工作時(shí)鐘送出一個(gè)像素的數(shù)據(jù)(由BPIX的值來(lái)定義),當(dāng)BPIX定義為2bpp時(shí),則鎖存器每次送出2bit數(shù)據(jù),n即為2,送出32bit的數(shù)據(jù)需要16個(gè)工作時(shí)鐘;當(dāng)BPIX定義為4bpp時(shí),鎖存器每次送出4bit數(shù)據(jù),n即為4,送出32bit的數(shù)據(jù)需要8個(gè)工作時(shí)鐘;鎖存器送出所有32bit的數(shù)據(jù)后,如果總線數(shù)據(jù)緩沖器仍為非空且顯示數(shù)據(jù)緩沖器仍為非滿時(shí),鎖存器繼續(xù)向總線數(shù)據(jù)緩沖器讀取數(shù)據(jù)(lcd_fifo_data[31:0]);鎖存器送出的數(shù)據(jù)一方面送給列計(jì)數(shù)器再送給行、幀計(jì)數(shù)器進(jìn)行計(jì)數(shù),另一方面送給灰度級(jí)映射單元?;叶燃?jí)映射單元根據(jù)BPIX值判斷所送來(lái)的數(shù)據(jù)是何種灰度模式。如果是4bpp模式,則不需要進(jìn)行數(shù)據(jù)映射,直接將數(shù)據(jù)送到灰度算法模塊;如果是2bpp模式,則進(jìn)行4級(jí)灰度數(shù)據(jù)向16灰度級(jí)映射,產(chǎn)生4bit數(shù)據(jù)并送給灰度算法模塊?;叶人惴K根據(jù)列、行、幀計(jì)數(shù)值和像素?cái)?shù)據(jù)算出相應(yīng)的灰度數(shù)據(jù)。該灰度數(shù)據(jù)只有一位,需經(jīng)一個(gè)移位寄存器轉(zhuǎn)換成16位送給顯示數(shù)據(jù)緩沖器,并同時(shí)向顯示數(shù)據(jù)緩沖器發(fā)出寫請(qǐng)求信號(hào)(rgb_fifo_wreq)。上述所有的操作都是在LCD控制器工作時(shí)鐘clk_lcd下進(jìn)行的。


3 顯示區(qū)域方陣的劃分
  在設(shè)計(jì)列計(jì)數(shù)器、行計(jì)數(shù)器和幀計(jì)數(shù)器時(shí),必須保證同步性,否則就會(huì)發(fā)生顯示的錯(cuò)誤。在這里,采用的方法是通過(guò)顯示的數(shù)據(jù)量進(jìn)行行計(jì)數(shù)器操作,再進(jìn)行列計(jì)數(shù)器、幀計(jì)數(shù)器操作。其狀態(tài)流程如圖2所示。具體操作過(guò)程如下: 當(dāng)LCD控制器在非使能狀態(tài)時(shí),所有的行、列、幀計(jì)數(shù)器都清0。LCD控制器使能后,當(dāng)灰度控制模塊從顯示存儲(chǔ)器讀取圖像數(shù)據(jù)時(shí),列計(jì)數(shù)器x[9:0]和c[3:0]同時(shí)開(kāi)始計(jì)數(shù),其中c[3:0]進(jìn)行模15計(jì)數(shù)。當(dāng)計(jì)數(shù)器x[9:0]的值等于(xmax-1)時(shí),x[9:0]和c[3:0]都清0并重新計(jì)數(shù),同時(shí)行計(jì)數(shù)器y[8:0]和r[3:0]作加1操作,其中r[3:0]進(jìn)行模15計(jì)數(shù)。當(dāng)x[9:0]的值等于(xmax-1)時(shí),計(jì)數(shù)器x[9:0] 和r[3:0]清0。當(dāng)計(jì)數(shù)器y[8:0]的值為(ymax-1),且x[9:0]為(xmax-1)時(shí),所有的行、列計(jì)數(shù)器清0,即完成一幀圖像數(shù)據(jù)的計(jì)數(shù)操作,此時(shí)幀計(jì)數(shù)器f[3:0]加1。重復(fù)上述步驟即可進(jìn)行下一幀的計(jì)數(shù)操作。由計(jì)數(shù)器x[9:0]、y[8:0]定義像素在顯示區(qū)域方陣中的位置(x[9:0],y[8:0]);由計(jì)數(shù)器c[3:0]、r[3:0]定義像素在顯示區(qū)域中的幾何位置(c[3:0],r[3:0])。由此可以保證灰度控制模塊在進(jìn)行數(shù)據(jù)處理時(shí),原始像素的幾何位置與LCD顯示器件上每個(gè)像素的幾何位置一一對(duì)應(yīng),同時(shí)完成了顯示區(qū)域方陣的劃分。


4 灰度算法模塊的說(shuō)明
  灰度算法模塊主要是通過(guò)公式按預(yù)定的脈沖序列分布方式調(diào)整各幀0和1的密度,在panel上產(chǎn)生中間灰度級(jí)顏色。根據(jù)上述介紹,該灰度算法是通過(guò)三個(gè)公式實(shí)現(xiàn)的。為了減少運(yùn)算量,降低芯片面積,公式(1)、(2)、(3)可以進(jìn)一步轉(zhuǎn)化為公式(4)、(5)、(6):
  k=mod[(c+r+f)/15]??? (4)
  p=mod[(c+k)/15]?????? (5)
  w=mod[(p+p-r)/15]??? (6)
  根據(jù)不同的圖像數(shù)據(jù)信號(hào)選擇相應(yīng)的運(yùn)算公式,然后再根據(jù)參數(shù)c、r、f計(jì)算出各像素點(diǎn)在任何時(shí)刻所處的脈沖序列號(hào),最后由該脈沖序列號(hào)和原始圖像數(shù)據(jù)從預(yù)定的脈沖序列查找表中找出相應(yīng)的脈沖(1或0)。根據(jù)上述分析,可以畫出圖3所示的灰度算法模塊的結(jié)構(gòu)圖。


  該模塊共由三個(gè)運(yùn)算電路、一個(gè)數(shù)據(jù)選擇器和一個(gè)脈沖查找表構(gòu)成。運(yùn)算電路1、運(yùn)算電路2和運(yùn)算電路3分別執(zhí)行公式(4)、(5)、(6)的操作?;叶人惴K的整個(gè)操作過(guò)程是:首先判斷圖像數(shù)據(jù)pixeldata的值,如果該值是第一組即0000或1111,則三個(gè)運(yùn)算電路都不工作,直接輸出灰度數(shù)據(jù)frcdata為0或1;如果pixeldata是第二組的值,則執(zhí)行運(yùn)算電路1,運(yùn)算電路2、3不工作,同時(shí)數(shù)據(jù)選擇器選擇k的值并送入脈沖查找表,脈沖查找表此時(shí)根據(jù)k和pixeldata的值查出灰度數(shù)據(jù)frcdata是0還是1;如果pixeldata是第三組的值,則執(zhí)行運(yùn)算電路1、2,運(yùn)算電路3不工作,同時(shí)數(shù)據(jù)選擇器選擇p的值并送入脈沖查找表,脈沖查找表此時(shí)根據(jù)p和pixeldata的值查出灰度數(shù)據(jù)frcdata是0還是1;如果pixeldata是第四組的值,則三個(gè)運(yùn)算電路都工作,同時(shí)數(shù)據(jù)選擇器選擇w的值并送入脈沖查找表,脈沖查找表此時(shí)根據(jù)w和pixeldata的值查出灰度數(shù)據(jù)frcdata是0還是1。這里的脈沖查找表是表1所示的15×15的查找表。這種公式算法結(jié)構(gòu)將空間灰度調(diào)制法與幀灰度調(diào)制法結(jié)合在一起,并很好地利用了相鄰像素的相互影響,從而大大提高了灰度調(diào)制能力。
5 FPGA驗(yàn)證
  本設(shè)計(jì)采用Verilog HDL語(yǔ)言工具編寫RTL級(jí)代碼,并利用SYNOPSYS公司的EDA工具對(duì)該模塊進(jìn)行功能仿真和后仿真。最后,在FPGA(Altera公司的EP20K1000E672EFC)上實(shí)現(xiàn)。由于沒(méi)有16級(jí)灰度圖像數(shù)據(jù),本次設(shè)計(jì)是將4級(jí)灰度數(shù)據(jù)映射到16級(jí)灰度的。其測(cè)試條件如下:
  系統(tǒng)工作頻率:50MHz;
  屏幕: 240×320;
  刷新頻率:70Hz
  FPGA驗(yàn)證結(jié)果如圖4所示。


  從圖中可以看出,圖像線條清晰,亮度層次分明,無(wú)閃爍、鬼影等干擾視覺(jué)的現(xiàn)象。這說(shuō)明本文采用的基于面積-幀灰度調(diào)制的公式算法能夠得到穩(wěn)定的圖像顯示,且灰度控制模塊功能正確。
  在進(jìn)行FPGA驗(yàn)證的同時(shí),利用SYNOPSYS公司的綜合工具對(duì)灰度控制模塊的面積和功耗進(jìn)行了評(píng)估,整個(gè)模塊綜合之后的門數(shù)為2042門,最大功耗工作模式下的功耗為0.941mW。同樣是實(shí)現(xiàn)16級(jí)灰度,參考文獻(xiàn)[3]中灰度控制電路綜合之后的門數(shù)為7857門,最大功耗工作模式下的功耗為1.028mW,比本文中的灰度控制電路多用5815門,功耗增加了0.087mW;參考文獻(xiàn)[4]中灰度控制電路綜合之后的門數(shù)為1635門,最大功耗工作模式下的功耗為0.757mW,比本文中灰度控制電路的面積小、功耗低,但在進(jìn)行16級(jí)灰度顯示時(shí)會(huì)出現(xiàn)閃爍現(xiàn)象。因此,采用本文中的公式算法可以有效減小芯片面積和降低功耗,且解決了參考文獻(xiàn)[4]中灰度級(jí)別低的問(wèn)題。
參考文獻(xiàn)
1 李維 ,郭 強(qiáng). 液晶顯示應(yīng)用技術(shù)[M]. 北京:電子工業(yè)出版社, 2000
2 應(yīng)根裕,胡文波,邱 勇.平板顯示技術(shù)[M].北京:人民郵電出版社,2002
3 丁黃勝.嵌入式微處理器中LCD控制器的設(shè)計(jì)與實(shí)現(xiàn)[碩士學(xué)位論文].南京:東南大學(xué),2003
4 張景嵩. 單色點(diǎn)陣液晶顯示屏上的多級(jí)灰度顯示方法及顯示裝置.專利:96103075.1996-03-22

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。