一种基于SOPC技术的内存映射型LCD控制器设计
0 引 言
LCD以其低工作电压、低功耗、显示效果好、易集成和轻巧便携等特点率先进入平板显示市场并不断拓宽其应用领域。随着数字化作战模式的发展,LCD必将越来越多地被应用于各种机载、舰载、装甲车辆等军用装备。而常用的双口RAM、乒乓操作等类型显示控制器在成本、速度或灵活性方面存在一些不足。本文提出并没计了一种基于SOPC技术的内存映射型LCD控制器,设计了系统实验平台,最后对该控制器的稳定性、实用性进行了验证。实验结果表明,该控制器具有成本低、实用性强、灵活性强等优点,并可推广到LED、CRT等类型屏幕的驱动控制。
1 内存映射型LCD控制器的结构及优点
传统的LCD控制器可分为双口RAM型、“乒乓”切换控制型、消隐写操作型等类型,这些控制器虽思路、设计简单,能较好地解决读写冲突,但都只能应用于某些特定环境下的设计开发,系统的可扩展性、灵活性较差。而内存映射型控制器系统性能稳定、扩展性强、成本低、读写速度快,是目前控制器设计的较好解决方案。
1.1 内存映射型LCD控制器的结构
内存映射型控制器不用独立的存储器做显存,而是在内存中动态地开辟一块空间作为显存,故称之为内存映射型控制器,其结构如图1所示。
内存映射型控制器工作时,显存里的数据不是通过简单接口,而是通过总线传到时序发生器。由于对显存的读写通过总线进行自动协调,从而有效地避免了读写冲突的发生。通常,总线通过一个数据缓存区与时序发生器连接。
1.2 内存映射型LCD控制器的优点
内存映射型控制器用一小块双口存储器做缓存,保证了显示数据传输的流畅性;显存定义在 SDRAM/SRAM内存中,取代了独立显存从而降低了系统成本;使用中只需修改时序发生器,就可以驱动各种参数的显示器;同时,通过总线协调显存的读写操作,有效的避免了显存读写冲突问题。表1从4个方面对内存映射型控制器与其他3种常见控制器类型进行了比较。
2 基于SOPC技术的内存映射型LCD控制器设计
2.1 内存映射型LCD控制器的总体结构
该控制器由寄存器模块、DMA模块、数据缓存模块、时序发生器4部分组成,采用VHDL语言编写。如图2所示。控制器内部定义了2个总线外设,其中,寄存器模块为总线从端口设备,DMA模块为总线主端口设备。
2.2 寄存器模块(register_bank)
该模块为Avalon总线从端口设备,可以通过NiosⅡ Processor设置和读取显存起始地址、显示大小、显示颜色位数及相关控制参数。
寄存器模块中共定义了4个寄存器;显存起始地址寄存器、显示参数寄存器、控制寄存器和状态寄存器。各寄存器的读写控制、定义及功能描述如表2所示。
其中,显示参数寄存器(size)中“色数”标志位,值为1表示8位颜色显示,值为0表示16位颜色显示。状态寄存器(status)大小为两位,可与控制寄存器中的中断位(Interrupt)配合使用,为保留位。控制器寄存器的定义如表3所示。
2.3 数据缓存模块(line_buffer)
该模块设计采用了双口RAM,由MegaWizard Plug-In Manager生成,其存储空间约为一行数据所占的空间,用于暂存显示数据。由于DMA不是直接将显存中的数据传给时序发生器,而在中间使用了双口RAM 做数据缓存,这样DMA和时序发生器的读、写时序不必严格对应,简化了结构设计。同时,用于16位彩色显示时,可通过数据缓存模块将总线32位的数据输入变为16位的数据输出给时序发生器;而在8位彩色显示时,可通过数据缓存模块将32位输入变为8位输出,实现了数据位数的转化,方便的时序发生器内部的数据操作。
2.4 DMA模块(image_dma)
该模块为Avalon总线主端口设备,它负责向Avalon总线提供有效的地址、数据和写请求信号,并在时钟上升沿发起总线传输,读取显存中的数据;同时,DMA模块产生写数据缓存的地址和数据,将显示数据正确地从显存传送到数据缓存。DMA模块为三状态的状态机,包括空闲状态、传输状态、等待状态,各状态机逻辑关系如图3所示。
2.5 时序发生器(LCD_driver)
时序发生器模块主要有4个主要功能:
(1)产生驱动LCD的行扫描信号(hsync)、列扫描信号(vsync)、数据使能信号(blank_n);
(2)产生读双口R_AM缓存的地址信号;
(3)产生行、场消隐信号,控制DMA模块启动、停止数据传输;
(4)将显示数据RGB按正确的时序、指定模式输出。
常用的16位彩色显示可分为555、565(即RGB信号分量所占位数)两种显示模式,控制器通过判断控制寄存器中的模式设置位将RGB信号以不同的格式输出。
2.6 实验平台的设计及内存映射型LCD控制器的验证
为验证该控制器,本文设计了以CycloneⅡ系列EP
- 单片DSP处理器功能系统的SOPC技术设计(01-12)
- 基于DSP和SOPC数字信号发生器的设计(01-05)
- 基于Linux的SoPC应用系统设计(04-23)
- 基于DSP的实时数据处理系统浅析(02-28)
- 基于LXI总线的1553B通讯模块设计与开发(11-24)
- 双MicroBlaze软核处理器的SOPC系统设计(01-27)