TFT液晶显示屏控制器的设计.doc

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

一.设计原理: 1、系统工作原理: 图1 如图1所示,Nios II处理器在SDRAM中开辟framebuffer,可以是单缓冲也可以是双缓冲,以单缓冲为例。Nios II处理器将一帧图象数据(640×480×2Bytes,RGB565,16bit)存入framebuffer,然后将framebuffer的首地址写入到LCD控制器,并启动LCD控制器,该控制器自动从传来的首地址处开始读取图象数据,并按照TFT的格式输出。 图中各模块由Avalon Bus连接在一起。Avalon Bus是一种简单的总线结构,在SOPC中,Nios II软核处理器和各种外设都通过Avalon Bus连接在一起。由图1可以看出,作为Slaver的SDRAM Controller分别要受到Processor 和LCD Controller的控制,为了解决总线冲突,Avalon Bus自动在有冲突的接口上加入了Arbitrator这样一个仲裁模块,用于合理分配总线时间,用户通过改变每个模块的权值来改变对其分配总线时间的多少。在这个系统中,SDRAM Controller处的冲突是影响整个系统性能的关键。以SDRAM时钟频率为100MHz计算,16bit位宽的SDRAM其数据总带宽为200MByte/s,640*480*2Bytes*60Hz的TFT LCD要占用36MByte/s左右的带宽,这对于还要处理其他任务的处理器来说是很大的影响。解决的办法是另外增加一块SDRAM,专门用作Frame buffer,这样就可以有效减少对系统总线带宽的占用。 2、LCD Controller工作原理 图2 如图2所示,LCD Controller主要由Avalon 总线接口、寄存器组、控制模块、DMA、FIFO以及时序生成模块组成。每个寄存器独立编址,处理器可以通过总线读写存储器的方式来访问。处理器通过Avalon总线接读写寄存器,从而完成对LCD控制器工作状态的设定与控制。 控制器启动后,DMA Master通过avalon总线读取SDRAM中的数据,然后存入FIFO中,时序生成模块按照TFT时序要求从FIFO中读取数据,然后送出去显示。整个数据读取过程不需要处理器干涉,实际上是一个DMA过程。 考虑到DMA读取的速度与TFT时序发生器输出的速度不一致(前者大于后者),所以在DMA与TFT时序发生器之间加入了FIFO用来缓冲数据。DMA有控制模块控制其工作。控制模块不断检测FIFO状态,当FIFO快满时,暂停DMA,当FIFO快空时,重新启动DMA,如此循环,可保证FIFO不溢出,保证显示画面连续稳定。 二、设计目标: 设计一个LCD控制器,该控制器基于Altera的SOPC系统,通过SOPC中的Avalon总线接口与Nios II处理器和SDRAM控制器通信,使之能显示640*480分辨率,显示颜色深度达到16bit,输出接口兼容TFT LCD。 三、设计细节 1、Avalon Bus Slaver从总线接口 Avalon从总线接口负责处理器与LCD控制器的接口控制,LCD控制器在整个系统中作为从设备,通过该接口,接受CPU的控制。根据设计需要,该接口所需要的各信号为: input: chipselect 片选,高电平有效 Write_n 写信号,低电平有效 Read_n 读信号,低电平有效 Reset_n 复位,低电平有效 clk 系统时钟 address[1:0] 地址信号 writedata[31:0] 写数据 output: readdata[31:0] 读数据 irq_n 中断请求,低电平有效 这些信号均要求满足Avalon总线的时序要求:(采用基本时序) 读时序: 图3 如图3所示,读时序在一个系统时钟周期内完成。在第一个clk上升沿,系统将address、byteenable、read信号输出到从设备接口,系统内部对address进行地址译码,生成chipselect信号也传输到从设备接口,一旦chipselect被置高,从设备立即将readdata信号输出到从设备接口,系统在第二个时钟上升沿读取该数据,从而完成一次读操作。 为满足此时序,可利用第一个clk的下降沿来检测address、read、chipselect信号是否有效,如果有效,立即输出数据。 代码如下: always @(posedge slave_clk or negedge reset_n) begin if(reset_n == 0) begin slave_readdata = 0; end else if(slave_chipselect ~slave_read_n) begin case(sl

文档评论(0)

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

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

1亿VIP精品文档

相关文档