基于嵌入式Linux的TFT LCD IP及驱动的设计
[09-13 16:48:34] 来源:http://www.88dzw.com 信息显示与光电技术 阅读:8329次
文章摘要:系统总体设计方案本系统的总体设计框图如图1所示。图1 系统框图Nios II处理器在SDRAM中开辟帧缓冲(Frame buffer),可以是单缓冲也可以是双缓冲。以单缓冲为例。处理器将一帧图像数据(640×480×2Bytes,RGB565,16bit)存入帧缓冲,然后将帧缓冲的首地址写入到LCD控制器,并启动LCD控制器。该控制器自动从传来的首地址处开始读取数据,并按照TFT的格式输出。图中各模块由Avalon Bus连接在一起。Avalon Bus是一种简单的总线结构,Nios II处理器和各种外设都是通过Avalon Bus连接在一起。由图1可以看出,作为Slaver的SDRAM Co
基于嵌入式Linux的TFT LCD IP及驱动的设计,标签:显示及光电,光电显示技术,http://www.88dzw.com系统总体设计方案
本系统的总体设计框图如图1所示。
图1 系统框图
Nios II处理器在SDRAM中开辟帧缓冲(Frame buffer),可以是单缓冲也可以是双缓冲。以单缓冲为例。处理器将一帧图像数据(640×480×2Bytes,RGB565,16bit)存入帧缓冲,然后将帧缓冲的首地址写入到LCD控制器,并启动LCD控制器。该控制器自动从传来的首地址处开始读取数据,并按照TFT的格式输出。图中各模块由Avalon Bus连接在一起。Avalon Bus是一种简单的总线结构,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左右的带宽,这对于还要处理其他任务的处理器来说是很大的影响。
LCD控制器的FPGA实现
Avalon Bus Slaver从总线接口模块实现
Avalon从总线接口负责处理器与LCD控制器的接口控制,LCD控制器在整个系统中作为从设备,NIOS II通过该接口对控制寄存器进行设置,控制LCD。
LCD从模块有四个32bit的可读写寄存器,用于控制LCD控制器的工作和指示其工作状态。
Avalon Bus DMA Master主设备接口模块实现
Avalon Bus DMA Master负责按照控制模块的指令,读取SDRAM中的数据,并写入到FIFO中,其核心部分是DMA地址累加器。当条件满足时,地址累加器开始在100MHz的时钟下以4为单位开始累加用于生成读取SDRAM的地址。读完一帧的数据后,自动复位到首地址,继续累加。
主设备接口采用带延迟的主设备读传输模式,在这种传输模式下,即使没有接收到上一次的有效数据,主设备也可以发起下一次读命令。当waitrequest信号无效(低电平)时,主设备可以连续的发起读命令,当waitrequest信号有效(高电平)时,主设备开始等待,直到其变为低电平。当readdatavalid信号有效(高电平)时,表示读数据有效,此时主设备可以锁存数据口上的有效数据。这里没有使用flush信号,flush信号会清除前面一切未完成的读命令。Avalon总线保证数据的输出顺序与主设备要求的顺序一致(即与主设备地址输出顺序一致)。readdatavalid信号可以作为FIFO的wrreq信号,这样可以直接将读出来的数据写入到FIFO中。当前地址等于尾地址时,则复位累加器,使之重新开始从首地址累加。地址累加器代码模块如图3。
图2 LCD BSF图
图3 设备接口模块BSF图
FIFO模块实现
FIFO的作用是对DMA输出的图像数据进行缓存,以匹配时序控制模块的输出速度。FIFO大小暂定为4096×16bit,在实际设计时,再根据系统需要以及资源状况做出适当调整。原则是,在系统资源允许的情况下,将FIFO大小尽量设置大点。
FIFO由DMA控制器写入数据,写入时钟为100MHz;由LCD控制器的时序发生模块读出数据,读出时钟为PCLK,即LCD的像素点扫描频率,通常取25MHz。在独立的写时钟和读时钟作用下,FIFO可以提供rdusedw[11:0]信号,用于指示FIFO中已经使用掉的容量。系统可以设置一个上限和一个下限,当FIFO中的数据量高于上限或低于下限时,控制器暂停DMA传输或启动DMA传输,用以保证系统性能。
《基于嵌入式Linux的TFT LCD IP及驱动的设计》相关文章
- › 基于嵌入式Linux的TFT LCD IP及驱动的设计
- › 基于嵌入式网络的无线传感器网络平台软硬件实现
- › 基于嵌入式系统的GPRS系统的设计
- › 基于嵌入式系统的USB(HID)设备
- › 基于嵌入式操作系统的磁场测量系统的设计
- › 基于嵌入式环境中Nucleus到Linux的程序移植方案
- 在百度中搜索相关文章:基于嵌入式Linux的TFT LCD IP及驱动的设计
- 在谷歌中搜索相关文章:基于嵌入式Linux的TFT LCD IP及驱动的设计
- 在soso中搜索相关文章:基于嵌入式Linux的TFT LCD IP及驱动的设计
- 在搜狗中搜索相关文章:基于嵌入式Linux的TFT LCD IP及驱动的设计