基于avalon总线的tftlcd控制器的设计

基于avalon总线的tftlcd控制器的设计

ID:27839344

大小:253.50 KB

页数:16页

时间:2018-12-06

基于avalon总线的tftlcd控制器的设计_第1页
基于avalon总线的tftlcd控制器的设计_第2页
基于avalon总线的tftlcd控制器的设计_第3页
基于avalon总线的tftlcd控制器的设计_第4页
基于avalon总线的tftlcd控制器的设计_第5页
资源描述:

《基于avalon总线的tftlcd控制器的设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、.基于Avalon总线的TFTLCD控制器的设计一、设计目标:设计一个LCD控制器,该控制器基于Altera的SOPC系统,通过SOPC中的Avalon总线接口与NiosII处理器和SDRAM控制器通信,使之能显示640*480分辨率,显示颜色深度达到16bit,输出接口兼容TFTLCD。二.设计原理:1、系统工作原理:主题图片.jpg图1如图1所示,NiosII处理器在SDRAM中开辟framebuffer,可以是单缓冲也可以是双缓冲,以单缓冲为例。NiosII处理器将一帧图象数据(640×480×2Bytes,RGB565,16bit)存入framebuffer,然后将frame

2、buffer的首地址写入到LCD控制器,并启动LCD-..控制器,该控制器自动从传来的首地址处开始读取图象数据,并按照TFT的格式输出。图中各模块由AvalonBus连接在一起。AvalonBus是一种简单的总线结构,在SOPC中,NiosII软核处理器和各种外设都通过AvalonBus连接在一起。由图1可以看出,作为Slaver的SDRAMController分别要受到Processor和LCDController的控制,为了解决总线冲突,AvalonBus自动在有冲突的接口上加入了Arbitrator这样一个仲裁模块,用于合理分配总线时间,用户通过改变每个模块的权值来改变对其分配

3、总线时间的多少。在这个系统中,SDRAMController处的冲突是影响整个系统性能的关键。以SDRAM时钟频率为100MHz计算,16bit位宽的SDRAM其数据总带宽为200MByte/s,640*480*2Bytes*60Hz的TFTLCD要占用36MByte/s左右的带宽,这对于还要处理其他任务的处理器来说是很大的影响。解决的办法是另外增加一块SDRAM,专门用作Framebuffer,这样就可以有效减少对系统总线带宽的占用。2、LCDController工作原理主题图片.jpg图2如图2所示,LCDController主要由Avalon总线接口、寄存器组、控制模块、DMA

4、、FIFO以及时序生成模块组成。每个寄存器独立编址,处理器可以通过总线读写存储器的方式来访问。处理器通过Avalon总线接读写寄存器,从而完成对LCD控制器工作状态的设定与控制。控制器启动后,DMAMaster通过avalon总线读取SDRAM中的数据,然后存入FIFO-..中,时序生成模块按照TFT时序要求从FIFO中读取数据,然后送出去显示。整个数据读取过程不需要处理器干涉,实际上是一个DMA过程。考虑到DMA读取的速度与TFT时序发生器输出的速度不一致(前者大于后者),所以在DMA与TFT时序发生器之间加入了FIFO用来缓冲数据。DMA有控制模块控制其工作。控制模块不断检测FI

5、FO状态,当FIFO快满时,暂停DMA,当FIFO快空时,重新启动DMA,如此循环,可保证FIFO不溢出,保证显示画面连续稳定。三、设计细节1、AvalonBusSlaver从总线接口Avalon从总线接口负责处理器与LCD控制器的接口控制,LCD控制器在整个系统中作为从设备,通过该接口,接受CPU的控制。根据设计需要,该接口所需要的各信号为:input:chipselect片选,高电平有效Write_n写信号,低电平有效Read_n读信号,低电平有效Reset_n复位,低电平有效clk系统时钟address[1:0]地址信号writedata[31:0]写数据output:read

6、data[31:0]读数据irq_n中断请求,低电平有效这些信号均要求满足Avalon总线的时序要求:(采用基本时序)读时序:-..主题图片.jpg图3如图3所示,读时序在一个系统时钟周期内完成。在第一个clk上升沿,系统将address、byteenable、read信号输出到从设备接口,系统内部对address进行地址译码,生成chipselect信号也传输到从设备接口,一旦chipselect被置高,从设备立即将readdata信号输出到从设备接口,系统在第二个时钟上升沿读取该数据,从而完成一次读操作。为满足此时序,可利用第一个clk的下降沿来检测address、read、ch

7、ipselect信号是否有效,如果有效,立即输出数据。代码如下:always@(posedgeslave_clkornegedgereset_n)beginif(reset_n==0)beginslave_readdata<=0;endelseif(slave_chipselect&&~slave_read_n)begin-..case(slave_address)2'b00:slave_readdata<=controlReg;2'b01:slave_r

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。