歡迎您光臨本站 登入註冊首頁

概述

   隨著半導體技術以及計算機軟硬體技術的飛速發展,對於圖像的顯示的控制技術也呈現出越來越多的方式。本文介紹了一種基於NIOSII軟核處理器實現對LCD-LQ057Q3D……

    隨著半導體技術以及計算機軟硬體技術的飛速發展,對於圖像的顯示的控制技術也呈現出越來越多的方式。本文介紹了一種基於NIOS II軟核處理器實現對LCD-LQ057Q3DC02控制的新方法。在設計中利用FPGA的Altera的SOPC Builder定製NIOS II軟核處理器及其與顯示功能相關的“軟” 硬體模塊來協同實現顯示控制的軟硬體設計。利用SOPC技術,將NIOS II CPU和LCD控制器放在同一片FPGA中,解決了通常情況下必須使用LCD 控制專用晶元才能解決LCD顯示的問題。

1 LCD選型及主要特性
    本文所採用的LCD是SHARP公司的5.7英寸的LCD-LQ057Q3DC02。它能顯示320×240×3點像素,輸入信號有:18位色度信號(R,G,B各6位)的數據信號,4個時鐘信號(CLK,Hsync,Vsync,Enable)以及實現水平顯示模式,垂直顯示模式的R/L、U/D和VGA/QVGA模式選擇信號線。
    事實上,LCD-LQ057Q3DC02是一個逐行掃描設備,它總是從屏幕的左上方開始掃描,先水平掃描完一行(320像素點)到最右邊,然後再回到最左邊,換下一行,繼續掃描。直到掃描到屏幕的最下方(共240行),這樣就掃描完一幀圖像,然後再回到最左邊,開始下一幀的掃描。

2 Avalon流模式LCD控制器設計
    文中實現的LCD 實時圖像顯示控制方式採用的是DMA數據傳輸方式。設計時,利用DMA控制器在流模式LCD控制器和SDRAM 之間建立一條DMA傳送通道,讓硬體來完成像素信息的自動讀取,而NIOS II處理器僅通過操作SDRAM 中相應的區塊就能實現LCD 圖像的更新。

2.1 Avalon流模式控制器的組成
    設計Avalon流模式外設時需要遵循Avalon匯流排規範。在實際設計時,筆者設計的Avalon流模式LCD控制器的硬體結構如圖1。該控制器由如下3部分構成:LCD介面控制器、FIFO存儲器和Avalon Streaming Port介面。

2.2 LCD顯示控制流程
    對LCD-LQ057Q3DC02而言,要實現LCD的正常顯示就必須對相應的控制信號正確配置,特別是行同步(LCD_Hsync)、場同步(LCD_Vsync)必須與從SDRAM 存儲器中取出的圖像數據同步,否則,圖像將不能正常再現。實現LCD控制的行同步、場同步的控制時序流程如圖2。
 
2.3 LCD控制器文件組成及部分代碼
    與LCD控制器硬體相對應的是3個模塊文件,分別是:LCD_interface.vhd,LCD_pixel_fifo.v以及LCD_controller_stream.v。其中LCD_controller_stream.v是頂層模塊,其內部也包含了Avalon Streaming Port介面時序部分,LCD_pixel_fifo.v可通過QuartusII中的宏模塊直接生成。當生成了上述3個文件后,可選擇SOPC Builder中的System->Add Interface to User Logic命令打開Interface to User Logic對話框,選擇匯流排類型為Avalon Memory Slave,因為工作於流模式的LCD控制器可看成一個存儲器(FIFO類型),可通過添加DMA控制器來實現存儲器(FIFO)到存儲器(SDRAM)的DMA設置。下面給出LCD介面部分程序。

ENTITY LCD_interface IS
PORT(
reset :IN std_logic;
lcd_clk :IN std_logic;
Wrdata :IN std_logic_vector(17 downto 0);
hsync :OUT std_logic;
vsync :OUT std_logic;
enable :OUT std_logic;
lcd_R/L :OUT std_logic;
lcd_U/D :OUT std_logic;
sel_VGA_QVGA :OUT std_logic;
RGB :OUT std_logic_vector(17 downto 0);
end_of_picture :OUT std_logic);
END LCD_interface;

ARCHITECTURE trans OF LCD_interface IS
process(lcd_clk) begin
if(rising_edge(lcd_clk)) then
if(hcnt<400) then
  hcnt<=hcnt+1;
else
  hcnt<=(others=>'0');
end if;
end if;
end process;--行計數器模塊

process(lcd_clk) begin
if(rising_edge(lcd_clk)) then
if(hcnt=320) then
if(vcnt<262) then
vcnt<= vcnt+1;
else
vcnt<=(others=>'0');
end if;
end if;
end if;
end process;--場計數器模塊

process(lcd_clk) begin
if(rising_edge(lcd_clk)) then
if((hcnt>= 320+20+20 ) and (hcnt<320+20+20+40)) then
hs<='0';
else
hs<='1';
end if;
end if;
end process;--產生水平同步脈衝

process(vcnt)begin
if((vcnt>=240+6+6)and(vcnt<240+6+6+10)) then
VS<='0';
else
vs<='1';
end if;
end process;--產生場同步脈衝

process(lcd_clk) begin
if(rising_edge(lcd_clk)) then
if(hcnt<320 and vcnt<240)and(hcnt>20 and vcnt>6) then
en<='1';
else
en<='0';
end if;
end if;
end process;--產生顯示使能控制信號

process(led_clk)begin
if(rising_edge(lcd_clk))then
if(hcnt<320 and vcnt<240)then
RGB<=Wdata;
else
RGB<=(others=>'0');
end if;
end if;
end process;--像素輸出及消隱

process(lcd_clk)begin
if(rising_edge(lcd_clk))then
if((vcnt=320+1)and(hcnt=0))then
end_of_picture<='1';
else
end_of_picture<='0';
end if;
end if;
end process;--一幀傳輸完畢
END ARCHITECTURE trans;

3 DMA控制流程及實驗結論
3.1 DMA傳輸方式下的程序流程
    利用該方案實現LCD的顯示已在某面陣CCD採集系統中得到驗證。在實際的系統中,該部分主要實現所採集的面陣CCD圖像感測器圖像數據的動態顯示。在實際的採集控制系統中選用了2個DMA,一個用於圖像數據的採集,一個用於採集後圖像的再現。在文中僅介紹了顯示DMA傳輸控制方式下的相應模塊。實際系統中,圖像數據從面陣CCD圖像感測器以DMA控制方式將圖像數據採集到SDRAM,所採集后的圖像數據從SDRAM到LCD顯示。實際系統中的DMA控制流程如圖3。
 
3.2實驗結論
    根據圖3所採集到的面陣CCD的圖像數據保存在SDRAM中,按一定比例抽取的圖像數據在SDRAM中合成18位的RGB圖像信號,而後在NIOS II處理器以及顯示DMA的控制下,將一幀完整的圖像顯示在LCD上,實際控制的顯示結果如圖4。

4 結束語
    利用NIOS II作為FPGA嵌入式處理器控制LCD的解決方案,能較容易地實現圖像數據的DMA傳輸與控制,系統中可根據實際需求有選擇的定製相應模塊,使系統具有較強的靈活性。同時由於採用“軟”硬體實現LCD的控制,調試過程中通過不斷更改“軟體”就可達到改進硬體功能的目的。


[admin via 研發互助社區 ] 基於NIOS II嵌入式處理器實現LCD的控制已經有2534次圍觀

http://cocdig.com/docs/show-post-43117.html