基于NIOSII嵌入式处理器实现LCD的控制.doc

基于NIOSII嵌入式处理器实现LCD的控制.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于NIOSII嵌入式处理器实现LCD的控制

随着半导体技术以及计算机软硬件技术的飞速发展,对于图像的显示的控制技术也呈现出越来越多的方式。本文介绍了一种基于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(hcnt400) then ? hcnt=hcnt+1; else ? hcnt=(others=0); end if; end if; end process;--行计数器模块 process(lcd_cl

文档评论(0)

haihang2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档