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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于FPGA的LCDVGA控制器設(shè)計

          基于FPGA的LCDVGA控制器設(shè)計

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

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

          圖1是飛機座艙圖形顯示系統(tǒng)結(jié)構(gòu)框圖。圖中處理器采用AD公司的ADSP21061芯片,AMLCD采用Korry公司的KDM710全彩色液晶顯示模塊,該模塊為5×5英寸、600×600分辨率彩色液晶顯示模塊,24位數(shù)字RGB輸入。兩個幀存A和B采用IDT公司的71V424高速異步靜態(tài)RAM,系統(tǒng)采用兩個幀存輪流操作的方法:當(dāng)DSP向其中一個幀存寫象素時,由FPGA構(gòu)成的幀存控制器將另一個幀存中的象素順序讀出送給AMLCD,反之亦然。圖形顯示系統(tǒng)通過IDT公司的71V04雙口RAM接收主機的顯示信息。圖1中的幀存控制器和視頻控制器由Xilinx公司的SpartanII芯片XS2S50實現(xiàn)。



          2 KMD710顯示模塊

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



          3 LCDVGA控制器設(shè)計

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



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

          signal 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_seq'event and clk_seq = '1' then

          hcountreg = hcountreg +1;

          end if;

          end process;

          lcd_hb = '0' when hcountreg >=600 and hcountreg 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_seq'event 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_seq'event 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ù)就能產(chǎn)生任意時序的波形,具有很好的可重用性。用FPGA Express 3.5半VHDL代碼綜合后,通過Foundation 3.1i進行布局和布線,用Foundation提供的門級仿真工具產(chǎn)生的行掃描時序仿真圖如圖4所示。

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


          關(guān)鍵詞: 儀表裝置LCDVHDLFPGAVGA

          評論


          技術(shù)專區(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); })();