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的控制,调试过程中通过不断更改“软件”就可达到改进硬件功能的目的。
上一页 [1] [2]