<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 光電顯示 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的LCD%26amp;VGA控制器設(shè)計(jì)

          基于FPGA的LCD%26amp;VGA控制器設(shè)計(jì)

          作者: 時(shí)間:2012-02-06 來(lái)源:網(wǎng)絡(luò) 收藏

          飛機(jī)座艙圖形顯示系統(tǒng)已發(fā)展到第六代,即采用有源矩陣彩色液晶顯示器AM(Active Matrix Liquid Crystal Display)。當(dāng)前高分辨率的軍用AM顯示模塊還只能依靠進(jìn)口,且控制電路板須安裝在該顯示模塊提供的機(jī)箱內(nèi)。這種安裝方式對(duì)AM控制電路板的尺寸要求高,要求盡可能減少所電路板的尺寸。在筆者的新一代飛機(jī)座艙圖形顯示系統(tǒng)中使用了大規(guī)?,F(xiàn)場(chǎng)可編程門(mén)陣列(Field Programmable Gata Array),這種方式可以將以前需要多塊集成芯片的電路設(shè)計(jì)到一塊大模塊可編程邏輯器件中,大大減少了電路板的尺寸,增強(qiáng)了系統(tǒng)的可靠性和設(shè)計(jì)的靈活性。本文詳細(xì)介紹了已在實(shí)際項(xiàng)目中應(yīng)用的的圖形式AMLCD設(shè)計(jì),這種設(shè)計(jì)方法稍作修改即可應(yīng)用于常見(jiàn)視頻接口電路的設(shè)計(jì)。

          本文引用地址:http://www.ex-cimer.com/article/168585.htm

          1 圖形顯示系統(tǒng)簡(jiǎn)介

          飛機(jī)座艙圖形顯示系統(tǒng)框圖

          圖1是飛機(jī)座艙圖形顯示系統(tǒng)結(jié)構(gòu)框圖。圖中處理器采用AD公司的ADSP21061芯片,AMLCD采用Korry公司的KDM710全彩色液晶顯示模塊,該模塊為5%26;#215;5英寸、600%26;#215;600分辨率彩色液

          晶顯示模塊,24數(shù)字RGB輸入。兩個(gè)幀存A和B采用IDT公司的71V424高速異步靜態(tài)RAM,系統(tǒng)采用兩個(gè)幀存輪流操作的方法:當(dāng)DSP向其中一個(gè)幀存寫(xiě)象素時(shí),由構(gòu)成的幀存將另一個(gè)幀存中的象素順序讀出送給AMLCD,反之亦然。圖形顯示系統(tǒng)通過(guò)IDT公司的71V04雙口RAM接收主機(jī)的顯示信息。圖1中的幀存和視頻控制器由Xilinx公司的SpartanII芯片XS2S50實(shí)現(xiàn)。

          2 KMD710顯示模塊

          如圖1所示,美國(guó)Korry公司提供的KDM710全彩色液晶顯示模塊接口信號(hào)主要如下幾組:3個(gè)8位RGB數(shù)字信號(hào)、行同步信號(hào)HSYNC、場(chǎng)同步信號(hào)VSYNC、數(shù)據(jù)使能信號(hào)DATA_EN和點(diǎn)時(shí)鐘輸入DCLK。根據(jù)AMLCD數(shù)據(jù)手冊(cè)所需求的時(shí)序,確定掃描時(shí)序和相應(yīng)的時(shí)序參數(shù)如圖2所示。一般,圖形終端顯示器掃描制式與廣播電視的標(biāo)準(zhǔn)有點(diǎn)不同,須根據(jù)顯示模塊所提供的時(shí)間要求來(lái)確定掃描時(shí)序,其中的行場(chǎng)同步的前后肩,可以根據(jù)需要進(jìn)行微調(diào),一般為了防止每行的第一個(gè)象素丟失,要求行同步后肩C與行同步脈沖寬B盡量相等。圖2中的點(diǎn)時(shí)鐘為20MHz,行周期為650個(gè)時(shí)鐘周期,場(chǎng)周期為615個(gè)行周期(場(chǎng)頻為50Hz)。

          KMD710接口信號(hào)時(shí)序

          3 LCD%26;amp;控制器設(shè)計(jì)

          設(shè)計(jì)行場(chǎng)掃描時(shí)序,一般有兩種方式:查找表方式和編程邏輯方式。查找表方式主要由存儲(chǔ)芯片構(gòu)成,如SRAM、EPROM、PORM等。使用時(shí),先根據(jù)所要產(chǎn)生的時(shí)序在存儲(chǔ)單元寫(xiě)入相應(yīng)的數(shù)值,查表時(shí)再?gòu)谋韮?nèi)讀出時(shí)應(yīng)存儲(chǔ)單元的數(shù)值,以形成掃描時(shí)序。掃描時(shí)序查找表分為行掃描時(shí)序查找表和場(chǎng)掃描時(shí)序查找表。場(chǎng)掃描時(shí)序查找表的輸入時(shí)鐘由行同步脈沖提供。用查找表形成時(shí)序的方法存在體積大、計(jì)算煩瑣的缺點(diǎn)。隨著大規(guī)模邏輯芯片的出現(xiàn),利用編程邏輯方法產(chǎn)生行場(chǎng)掃描時(shí)序是一個(gè)發(fā)展方向。這種方法具有電路簡(jiǎn)單、功能強(qiáng)、修改方便、可靠性高等優(yōu)點(diǎn)。圖3為L(zhǎng)CD控制器的框圖。

          在本設(shè)計(jì)中,點(diǎn)時(shí)鐘DCLK由處理器DSP的系統(tǒng)時(shí)鐘40MHz經(jīng)數(shù)字鎖相環(huán)二分頻得到。點(diǎn)時(shí)鐘驅(qū)動(dòng)行時(shí)序生成器,產(chǎn)生圖2所示的行同步信號(hào)HS和行消隱信號(hào)HB。為避免毛刺,控制器設(shè)計(jì)采用同步設(shè)計(jì)方法,如圖3所示,行同步信號(hào)HS通過(guò)一個(gè)微分電路,產(chǎn)生一個(gè)點(diǎn)時(shí)鐘周期寬的場(chǎng)時(shí)序生成器使能信號(hào)。在使能信號(hào)有效時(shí),場(chǎng)時(shí)序生成器開(kāi)始計(jì)數(shù),并產(chǎn)生場(chǎng)同步信號(hào)VS和場(chǎng)消隱信號(hào)VB。行消隱信號(hào)HB和場(chǎng)消隱信號(hào)VB相與后即為數(shù)據(jù)使能信號(hào)DATA_EN。該數(shù)據(jù)使能信號(hào)作為產(chǎn)生幀存地址計(jì)數(shù)器的計(jì)數(shù)使能,以保證DATA_EN信號(hào)為高時(shí),將象素送給AMLCD顯示。在DCLK的上升沿,幀存地址計(jì)數(shù)器加一,幀存SRAM經(jīng)過(guò)一段延時(shí)后,象素?cái)?shù)據(jù)出現(xiàn)在總線上。在DCLK的下降沿AMLCD將數(shù)據(jù)讀入。該LCD控制器的設(shè)計(jì)方法很容易用于視頻接口。在VGA接口電路的設(shè)計(jì)中,不需點(diǎn)時(shí)鐘電路,只須將行同步信號(hào)與場(chǎng)同步信號(hào)輸出,將數(shù)據(jù)使能信號(hào)作為復(fù)合消隱信號(hào)輸入即可。產(chǎn)生行場(chǎng)掃描時(shí)序的VHDL描述如下:

          entity seq_gen is port(clk_seq : in std_logic; rst_seq : in std_logic; LCD_hs_out : out std_logic; lcd_dataen : out std_logic; lcd_vs_out : out std_logic; pix_clk : out std_logic ); end seq_gen; architecture rtl_seq_gen of seq_gen is signa

          l lcd_hb : std_logic; signal lcd_hs : std_logic; signal lcd_vb : std_logic; signal lcd_vs : std_logic; signal clken_vcount : std_logic; begin hcount: block signal hcountreg :std_logic_vector(9 downto 0); signal hz_temp : std_logic; signal lcd_hz : std_logic; begin process (clk_seq,lcd_hz) begin if (lcd_hz = 1) then hcountreg = (others =>0); elsif clk_seqevent and clk_seq = 1 then hcountreg = hcountreg +1; end if; end procESS; lcd_hb = 0 when hcountreg >=600 and hcount

          reg 650 else 1; lcd_hs =0 when hcountreg >=610 and hcountreg 630 else 1; hz_temp = 1 when hcountreg = 650 else 0; lcd_hz =hz_temp or rst_seq; end block hcount; diff : block signal inputrega : std_logic; signal inputregb : std_logic; begin process(clk_seq) begin if clk_seqevent and clk_seq=1 then inputregb = inputrega; inputrega = not lcd_hs; end if; end process; clken_vcount = not inputregb and inputrega; end block diff; vcount : block signal vcountreg : std_logic_vector(9 downto 0); signal vz_temp : std_logic; signal lcd_vz : std_logic; begin process (clk_seq,lcd_vz) begin if(lcd_vz=1)then vcountreg = (others => 0); elsif clk_seqevent and clk_seq = 1 then if clken_vcount = 1 then vcountreg = vcountreg +1; end if; end if; end process; lcd_vb = 0 when vcountreg >=600 and vcountreg 615 else 1; lcd_vs =0 when vcountreg >=607 and vcounreg 610 else 1; vz_temp = 1 when vcountreg = 615 else 0; lcd_vz = vz_temp or rst_seq; end block vcount; pix_clk =clk_seq; lcd_dataen =lcd_hb and lcd_vb; lcd_hs_out =lcd_hs; lcd_vs_out =lcd_vs; end rtl_seq_gen; 這種用VHDL產(chǎn)生掃描時(shí)序的方法簡(jiǎn)單、易讀,并且易于修改。在代碼中只須修改一些時(shí)序參數(shù)就能產(chǎn)生任意時(shí)序的波形,具有很好的可重用性。

          AMLCD控制器框圖

          采用FPGA技術(shù)設(shè)計(jì)的AMLCD控制器,大大減少了電路板的尺寸,同時(shí)增加了系統(tǒng)可靠性和設(shè)計(jì)靈活性。這種用VHDL語(yǔ)言實(shí)現(xiàn)現(xiàn)行場(chǎng)掃描時(shí)序生成器的方法,具有簡(jiǎn)便。易讀和可重用性強(qiáng)的特點(diǎn)。該AMLCD控制器已用Xilinx公司的SpartanII系列器件XC2S50實(shí)現(xiàn),并在飛機(jī)座艙圖形顯示系統(tǒng)中實(shí)現(xiàn)應(yīng)用。

          LCD顯示屏相關(guān)文章:lcd顯示屏原理


          lcd相關(guān)文章:lcd原理


          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();