隨著半導(dǎo)體技術(shù)以及計算機(jī)軟硬件技術(shù)的飛速發(fā)展,對于圖像的顯示的控制技術(shù)也呈現(xiàn)出越來越多的方式。本文介紹了一種基于NIOS II軟核處理器實(shí)現(xiàn)對LCD-LQ057Q3DC02控制的新方法。在設(shè)計中利用FPGA的Altera的SOPC Builder定制NIOS II軟核處理器及其與顯示功能相關(guān)的“軟” 硬件模塊來協(xié)同實(shí)現(xiàn)顯示控制的軟硬件設(shè)計。利用SOPC技術(shù),將NIOS II CPU和LCD控制器放在同一片F(xiàn)PGA中,解決了通常情況下必須使用LCD 控制專用芯片才能解決LCD顯示的問題。
1 LCD選型及主要特性
本文所采用的LCD是SHARP公司的5.7英寸的LCD-LQ057Q3DC02。它能顯示320×240×3點(diǎn)像素,輸入信號有:18位色度信號(R,G,B各6位)的數(shù)據(jù)信號,4個時鐘信號(CLK,Hsync,Vsync,Enable)以及實(shí)現(xiàn)水平顯示模式,垂直顯示模式的R/L、U/D和VGA/QVGA模式選擇信號線。
事實(shí)上,LCD-LQ057Q3DC02是一個逐行掃描設(shè)備,它總是從屏幕的左上方開始掃描,先水平掃描完一行(320像素點(diǎn))到最右邊,然后再回到最左邊,換下一行,繼續(xù)掃描。直到掃描到屏幕的最下方(共240行),這樣就掃描完一幀圖像,然后再回到最左邊,開始下一幀的掃描。
2 Avalon流模式LCD控制器設(shè)計
文中實(shí)現(xiàn)的LCD 實(shí)時圖像顯示控制方式采用的是DMA數(shù)據(jù)傳輸方式。設(shè)計時,利用DMA控制器在流模式LCD控制器和SDRAM 之間建立一條DMA傳送通道,讓硬件來完成像素信息的自動讀取,而NIOS II處理器僅通過操作SDRAM 中相應(yīng)的區(qū)塊就能實(shí)現(xiàn)LCD 圖像的更新。
2.1 Avalon流模式控制器的組成
設(shè)計Avalon流模式外設(shè)時需要遵循Avalon總線規(guī)范。在實(shí)際設(shè)計時,筆者設(shè)計的Avalon流模式LCD控制器的硬件結(jié)構(gòu)如圖1。該控制器由如下3部分構(gòu)成:LCD接口控制器、FIFO存儲器和Avalon Streaming Port接口。
2.2 LCD顯示控制流程
對LCD-LQ057Q3DC02而言,要實(shí)現(xiàn)LCD的正常顯示就必須對相應(yīng)的控制信號正確配置,特別是行同步(LCD_Hsync)、場同步(LCD_Vsync)必須與從SDRAM 存儲器中取出的圖像數(shù)據(jù)同步,否則,圖像將不能正常再現(xiàn)。實(shí)現(xiàn)LCD控制的行同步、場同步的控制時序流程如圖2。
2.3 LCD控制器文件組成及部分代碼
與LCD控制器硬件相對應(yīng)的是3個模塊文件,分別是:LCD_interface.vhd,LCD_pixel_fifo.v以及LCD_controller_stream.v。其中LCD_controller_stream.v是頂層模塊,其內(nèi)部也包含了Avalon Streaming Port接口時序部分,LCD_pixel_fifo.v可通過QuartusII中的宏模塊直接生成。當(dāng)生成了上述3個文件后,可選擇SOPC Builder中的System->Add Interface to User Logic命令打開Interface to User Logic對話框,選擇總線類型為Avalon Memory Slave,因?yàn)楣ぷ饔诹髂J降腖CD控制器可看成一個存儲器(FIFO類型),可通過添加DMA控制器來實(shí)現(xiàn)存儲器(FIFO)到存儲器(SDRAM)的DMA設(shè)置。下面給出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;--行計數(shù)器模塊
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;--場計數(shù)器模塊
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;--產(chǎn)生水平同步脈沖
process(vcnt)begin
if((vcnt>=240+6+6)and(vcnt<240+6+6+10)) then
VS<=0;
else
vs<=1;
end if;
end process;--產(chǎn)生場同步脈沖
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;--產(chǎn)生顯示使能控制信號
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控制流程及實(shí)驗(yàn)結(jié)論
3.1 DMA傳輸方式下的程序流程
利用該方案實(shí)現(xiàn)LCD的顯示已在某面陣CCD采集系統(tǒng)中得到驗(yàn)證。在實(shí)際的系統(tǒng)中,該部分主要實(shí)現(xiàn)所采集的面陣CCD圖像傳感器圖像數(shù)據(jù)的動態(tài)顯示。在實(shí)際的采集控制系統(tǒng)中選用了2個DMA,一個用于圖像數(shù)據(jù)的采集,一個用于采集后圖像的再現(xiàn)。在文中僅介紹了顯示DMA傳輸控制方式下的相應(yīng)模塊。實(shí)際系統(tǒng)中,圖像數(shù)據(jù)從面陣CCD圖像傳感器以DMA控制方式將圖像數(shù)據(jù)采集到SDRAM,所采集后的圖像數(shù)據(jù)從SDRAM到LCD顯示。實(shí)際系統(tǒng)中的DMA控制流程如圖3。
3.2實(shí)驗(yàn)結(jié)論
根據(jù)圖3所采集到的面陣CCD的圖像數(shù)據(jù)保存在SDRAM中,按一定比例抽取的圖像數(shù)據(jù)在SDRAM中合成18位的RGB圖像信號,而后在NIOS II處理器以及顯示DMA的控制下,將一幀完整的圖像顯示在LCD上,實(shí)際控制的顯示結(jié)果如圖4。
4 結(jié)束語
利用NIOS II作為FPGA嵌入式處理器控制LCD的解決方案,能較容易地實(shí)現(xiàn)圖像數(shù)據(jù)的DMA傳輸與控制,系統(tǒng)中可根據(jù)實(shí)際需求有選擇的定制相應(yīng)模塊,使系統(tǒng)具有較強(qiáng)的靈活性。同時由于采用“軟”硬件實(shí)現(xiàn)LCD的控制,調(diào)試過程中通過不斷更改“軟件”就可達(dá)到改進(jìn)硬件功能的目的。