集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 5098|回复: 9

基于FPGA的液晶显示控制器设计

[复制链接]
weibode01 发表于 2010-11-16 13:36:22 | 显示全部楼层 |阅读模式
基于FPGA的液晶显示控制器设计   

液晶显示器由于具有低压、微功耗、显示信息量大、体积小等特点,在移动通信终端、便携计算机、GPS卫星定位系统等领域有广泛用途,成为使用量最大的显示器件。液晶显示控制器作为液晶驱动电路的核心部件通常由集成电路组成,通过为液晶显示系统提供时序信号和显示数据来实现液晶显示。本设计是一种基于FPGA(现场可编程门阵列)的液晶显示控制器。与集成电路控制器相比,FPGA更加灵活,可以针对小同的液晶显示模块更改时序信号和显示数据。FPGA的集成度、复杂度和面积优势使得其日益成为一种颇具吸引力的高性价比ASIC替代方案。本文选用Xilinx公司的SpananIII系列XC3S200器件,利用硬件描述语言Verilog设计了液晶显示拧制器,实现了替代专用集成电路驱动控制LCD的作用。


1 功能分析与设计要求
    液晶显示模块(LCM)采用深圳拓扑微LM2028、STN图形点阵液晶显示模块,5.7in,320×240点阵,逻辑电压输入为3.0~5.0V,4位控制接口,具有行列驱动电路,白光LED背光源。表l为该液晶显示模块的引脚功能描述。



    液晶显示器的扫描方式是逐行扫描,当一行被选通以后,这一行中的各列信号同时加到列上,并维持一个扫描行的时间。这一行维持时间结束后,即选通下一行,同时各列电极也施加下一行的显示电压。
    列驱动器逻辑电路由移位寄存器和锁存器构成,在一个显示数据位移脉冲信号CP作用下,将一组显示数据(4位)位移到寄存器中并保持。当下一个CP到来后。移位寄存器中第1位显示数据被移至第2位,这样在80个CP脉冲作用下,一行显示数据被存入寄存器后,寄存器并口对接锁存器,在锁存脉冲LP的作用下,该行数据被锁存到锁存器内输出给列电极。锁存脉冲LP的间隔为一个行周期,而行移位脉冲间隔也为一个行周期,因此二者是一致的。
    帧扫描信号FLM即为行选通信号,脉宽为一行时间,在行移位脉冲LP作用下,存入移位寄存器后逐行位移,在一帧的最后一行输出高电平,代表下一帧的开始。M为液晶显示交流驱动波形信号,即一帧改变一次波形的极性,防止液晶单方向扭曲变形。更为详细的时序关系如图1所示。



2 设计与实现
2.1 液晶控制器总体设计
    本设计的液晶显示器刷新频率为70 Hz,每一帧周期为14.28ms,每一行周期为60μs,时钟信号CP的频率为2 MHz,将一行数据输入列移位寄存器的时间为40μs,因此每一行设计了20μs的空白时间。
    液晶控制器系统原理如图2所示。时钟模块采用Xilinx公司的Coregen IP工具定制,数字时钟管理器DCM模块将FPGA 50 MHz时钟信号CLK_IN 25分频为2 MHz控制器时钟信号CLK。DCM采用了数字延迟锁相环技术来消除时钟相位的位移,提供比自行分频更稳定的时钟信号,以满足控制系统要求。CONTROLLER模块为LCM提供满足图l所示时序要求的控制信号CP、LP、FLM、M、DISPOFF,并且同步产生SRAM的读地址ADDRA[14:0]。



    SRAM为内存模块。为了提高输入LCD的数据流速度.设计了32K×4位的舣端口内存,可同时实现读/写,并实现数据格式的转化,由上位机MCU输入的8位数据转为输入LCM列驱动器的4位数据;B端口由MCU_INTERFACE与上位机MCU连接,由MCU微控制器将显示数据写入内存SRAM。其中,ADDRB[13:0]控制16K×8位的写地址,DINB[7:O]为写入数据,WEB为写有效控制,CLKB为写时钟;A端口由CONTROLLER模块控制读地址ADDRA[14:0],读时钟CLKA由系统时钟信号CLK控制,DOUTA[3:0]将数据写入LCM列驱动器。
2.2 控制模块设计
    应用状态机的方法,用Verilog硬件描述语言设计控制模块CONTROLLER。CLK为2 MHz输入时钟信号。LP和内部控制信号DEN由状态机1控制产生,FLM由状态机2控制产生,M由状态机3控制产生,CP信号和ADDRA[14:0]根据CLK和DEN信号控制得到。状态机1有3个状态:状态1,LP为O,DEN为1,持续80个CLK脉冲后转向状态2;状态2,LP为l,DEN为0,持续1个CLK脉冲后转向状态3;状态3,LP为O,DEN为O,持续39个CLK脉冲后转向状态1。状态机2有2个状态:状态1,FLM为l,持续1个LP周期时间,即120个CLK脉冲;状态2,FLM为O,持续剩下的239个LP周期,即28 680个CLK脉冲。状态机3有2个状态,状态l,M为1。持续1个FLM周期时间,即28800个CLK脉冲;状态2,M为0,也持续1个FLM周期时间。CP信号和ADDRA由于含有空白信号,所以由内部控制信号DEN和时钟信号CLK得到。以下为设计的源代码初始化部分:






3 仿真、下载测试分析
    在ISE6.3环境下完成控制器设计后,在MODELSIM6.1b环境下完成仿真测试,波形如图3所示。



    仿真波形结果符合设计要求。完成仿真后,经过综合实现,生成编程文件并且通过下载软件实现对Xilinx公司FPGA器件XC3S200编程,并用泰克逻辑分析仪TLA721分析测试,所得结果如图4所示。



    图4中各控制信号之间的时序关系完全符合设计要求。测得一个CP脉冲周期为500ns,在每行结束处有40个CP脉冲周期约20μs的空白信号;LP周期为60μs,高电平持续时间为500 ns,即一个CP周期;FLM周期为14.28 ms,约为70 Hz,高电平持续时间为60μs,即1个LP周期。测试结果表明,本设计液晶控制器完全符合LCM对控制信号的要求。


结语
    利用硬件描述语言Verilog设计LCM控制器的方法,具有减小电路板尺寸、易于集成到片上系统、缩小系统体积、方便修改、适应不同液晶显示器等特点,具有很好的可重用性;同时也是后续开发其他种类液晶显示控制器的基础。
    本液晶显示控制器与MCU组成显示系统后,MCU将显示数据写入SRAM中,控制器将显示数据读出并与控制信号同步送入LCM中,很好地实现了图形显示。表明该液晶显示控制器成功地替代了传统的ASIC液晶控制器,具有良好的应用前景.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
yangjian365 发表于 2011-3-6 19:44:53 | 显示全部楼层
不错不错。。。。
whwlysl 发表于 2011-5-13 17:46:28 | 显示全部楼层
本帖最后由 whwlysl 于 2011-5-13 17:48 编辑

求版主有整套程序吗???
我正在做这个毕设。。望版主赏一份全套程序
我们要求显示中英文字符 图像
wolfson 发表于 2011-5-15 09:21:28 | 显示全部楼层
期待楼主共享整套程序
zhuifeng1002 发表于 2011-6-13 23:34:13 | 显示全部楼层
谢谢楼主提供
zhixin888 发表于 2011-6-19 15:44:13 | 显示全部楼层
◆◆◆单片机培训视.频教程-ARM 2440-stm32视.频-dsp-CPLD-FPGA-PADS开发视.频-嵌入式系统开发◆◆

单片机视.频教程介绍
  这是一部学单片机革命性的视.频教程,每讲3小时左右,讲座从最基本的预备知识开始讲起,非
常详细的讲解KEIL编译器的使用,包括软件仿真,测定时间,单步
运行,全速运行,设置断点,调试,硬件仿真调试,变量观察等,
整个过程全部用单片机的C语言讲解,从C语言的第一个主函数
MAIN讲起,一步步一条条讲解每一个语法,每条指令的意思,即
使对单片机一巧不能,对C语言一无所知,通过本课程的内
容也可以让你轻松掌握51单片机的C语言编程设计,全新的讲课风
格跳过复杂的单片机内部结构知识,首先从单片机的应用讲起一步
步深入到内部结构,让学生彻底掌握其实际应用方法,把51单片机
的所有应用每个部分都讲解的非常仔细,教师在教室前面用电脑一
条一条写程序,旁边单片机实验板一个实验一个的演示,
给学员解释每条指令的意思及原理,通过十天的时间让学生完全掌
握单片机的C语言编程。全程的屏幕,声音,用屏幕录像,实验板
现象用摄像头拍摄,这部教程算是国内首个如此创新的以教师亲自
实践为主,学员现场写程序,直接下载到实验板看现象,讲单片机
的视.频教程,只要你认真看,认真听,保证很快让你学会单片机
------------------------------------------------------
目录如下:
一 ,预备知识
点亮一个发光管         单片机能做什么,基本电子知识,C51知识简介,点亮
一个发光管,如何申请免费芯片样品。
二,流水灯设计蜂鸣器发声         
简单延时程序、子程序调用、带参数子程序设计、流
水灯同时蜂鸣器响、如何驱动蜂鸣器,及如何驱动继
电器,集电极开路的概念及应用
三,数码管显示的原理、
数码管的静态显示共阳、共阴数码管显示原理、定时器工作方式介绍、
重点讲述工作方式2、中断概念及中断函数写法、定
时器中断应用
四,数码管的动态显示原理及应用实现          
动态扫描概念、定时器、中断加深
五,独立键盘、矩阵键盘的检测原理及实现       
键盘检测、消抖、键盘编码、
带返回值函数写法及应用
六,AD、DA的工作原理及实现       
模拟电压与数字电压的关系、
为什么要使用AD及DA、ADC0804的操作方法、DAC0832的操作方法
七,串口通讯原理及操作流程       
串口通讯工作方式、重点讲述最常用的10位数据通讯、
波特率概念及如何根据波特率计算定时器初值
八,IIC总线AT24C02芯片工作原理,IIC总线工作原理、
目前非常通用的一种通信机制
九,1602液晶显示原理及实现       
最简单液晶工作原理、如何开始对一个没有任何概念的芯片开始单片机的操作
十,电路图绘制全过程       
最顶级电路板设计软件Altium Designer使用、
元件库、封装库设计、绘制原理图、错误检查、
生成PCB、手动、自动布线、送去加工
----------------------------------------------
◆◆AVR单片机视.频内容◆◆:

第一讲:开发板和软件的操作使用
1、介绍配件。
2、安装软件(ICC AVR 和AVR STUDIO)及其使用,括新建工程、程序下载,仿真调试;整板测试;板上资源。
3、着重介绍一下USB接口的仿真器。
第二讲:AVR单片机的概述和C语言的基础知识
1、AVR单片机的概述包括它的优点、片上资源。
2、C语言的基础包括电平特性、2进制与16进制的表示及转换、二进制数的逻辑运算,数据类型,运算符。
3、着重讲一下特有的BIT()操作,C中的各种语句。
4、介绍一下AVR单片机IO口的配置。
第三讲:点亮发光二极管、驱动蜂鸣器、继电器
1、首先讲解一下原理图上开关电路、复位电路、时钟电路;
2、讲解573工作原理,
3、首先点亮一个发光二极管,然后让一个二极管亮灭变化。
4、编写函数证明573的工作原理:锁住后不导通就不能再更新数据。
5、编写延时函数,软件仿真查看延时的精确时间
6  子函数的编写(分带形参和不带形参)。
7、编写流水灯函数。
8、蜂鸣器,继电器的工作原理并编写程序。
第四讲:数码管工作原理
1、共阴共阳数码管内部结构,显示原理。
2、用数字万用表标定数码管的段选和位选
3、编写程序使1个数码管上显示数字
4、编写程序在6个数码管上滚动显示数字
5、重点讲解动态显示,保持时间,以及扫描频率对闪烁和亮暗程度的影响。
第五讲:键盘检测原理(比较复杂)
1、键盘作用,检测原理,如何消抖,独立键盘检测程序编写。
2、矩阵键盘检测程序编写,涉及到返回值函数调用。
第六讲:1602液晶的使用
1、看手册,管脚、写指令和数据、时序图。
2、编写程序,显示光标
3、编写程序显示字,
4、编写程序,滚动显示字符
第七讲:中断、定时器的原理和应用(比较复杂)
1、中断的概念,AVR单片机的中断
2、定时/计数器1几种模式的寄存器配置
3、定时器1普通模式下实现秒表
4、CTC模式输出方波
5、快速PWM模式输出PWM信号
6、相位修正PWM模式输出PWM信号
第八讲:AD、DA简介及其应用
1、AD简介,AVR内部AD寄存器设置
2、编写程序控制AD读写电位器输出的模拟电压
3、SPI串行通信简介
4、DA简介,AD5300时序图
5、编写程序控制DA输出模拟电压使发光二极管亮度变化
第九讲:TWI(IIC)
1、TWI(IIC)协议简介
2、AVR单片机内部TWI寄存器简介,操作流程
3、具有IIC协议的数字电位器芯片AD5161的简介
4、编写程序用独立键盘控制AD5161输出不同的阻值
第十讲:异步串口UART的简介和程序的编写
1、UART简介
2、AVR单片机内部与UART相关的寄存器的配置
3、编写程序控制AVR单片机和电脑进行通信
4、讲解串行通信时数字和字符之间的区别
第十一讲:PS2键盘、DS1302的工作原理和程序的编写
1、AVR单片机外部中断的介绍
2、PS2键盘的工作原理
3、讲解程序,读取PS2键盘的按键值并在1602液晶上显示
4、DS1302的工作原理
5、讲解程序,控制1302工作并在1602液晶上显示时间
--------------------------------------------------
◆◆MSP430单片机视.频◆◆:

第一部分 硬件结构

第一讲 概述
第二讲 复位、中断和IO
第三讲 异步通信接口1
第四讲 异步通信接口2
  第五讲 定时器
第六讲 FLASH
第七讲 ADC12
第二部分 软件使用
第一讲 软件使用
第三部分 基础程序
第一讲 入门和低功耗
第二讲 时钟和IO
第三讲 比较器和定时器和ADC
第四部分 模块程序
第一讲 控制电路和流水灯
第二讲 键盘
第三讲 蜂鸣器和数码管
第四讲 1602液晶和电平转换
第五讲 EEPROM和18B20和DS1302
第六讲 RS232和RS485接口
第七讲 USB接口
第八讲 ADC和DAC
==============================
◆◆PIC 单片机 视.频◆◆
前言:时间:10分。
内容:MPLAB、PICC软件的安装、USB下载驱动安装。
Lesson1:时间:1小时44分。
内容:PIC单片机简介、软件使用方法、新建工程、软件调试、流水灯程序实现。
Lesson2:时间:27分。
内容:数码管的静态显示与动态显示原理及实现。
Lesson3:时间:53分。
内容:PIC单片机独立键盘检测原理及实现。
Lesson4:时间:45分。
内容:PIC单片机矩阵键盘检测原理及实现。
Lesson5:时间:46分。
内容:PIC单片机控制继电器原理及实现。
Lesson6:时间:2小时20分。
内容:PIC单片机控制DS18B20数字温度传感器原理及实现。
Lesson7:时间:53分。
内容:PIC单片机定时器0的使用方法。
Lesson8:时间:34分。
内容:PIC单片机定时器1的使用方法。
Lesson9:时间:32分。
内容:PIC单片机定时器2的使用方法。
Lesson10:时间:1小时01分。
内容:PIC单片机内部模数转换器AD的使用方法。
Lesson11:时间:1小时50分。
内容:PIC单片机内部SPI通信接口的使用方法。
Lesson12:时间:2小时12分。
内容:PIC单片机内部IIC通信接口的使用方法。
Lesson13:时间:53分。
内容:PIC单片机串行口使用。
===============================
【ARM培训视.频】课程主要内容

1.概念和基本工具:
嵌入式系统基本概念、嵌入式操作系统介绍
嵌入式系统开发的过程和基本结构
Linux基本操作命令的使用
常用工具使用:vi /gcc/gdb等
编写shell程序 和makefile文件结构

2.硬件结构及原理讲解:
ARM7~ARM9体系结构体系结构介绍
ARM7(9)TDMI处理器内核及指令集介绍
讲解SUMSUNG 44B0X 开发板原理图
讲解SUMSUNG 2410 开发板原理图
ARM开发工具ADS的使用

3.Linux部分:
Uclinux,mizilinux系统引导程序bootloader原理和实现过程:Uboot、vivi等
ARM系统空间划分及系统映射方法
bootloader内核下载模式实现 :tftp、Xmoden
linux操作系统原理及组成
介绍linux系统目录组织结构
linux 运行基理,系统运行过程
配置裁减编译linux内核

4.讲解Linux进程特性:
进程属性和状态转换;进程控制与调度;进程相关系统调用,构建守护进程
进程间通信: 进程通信的基本概念,管道、信号、消息队列、信号量、共享内存。
网络通讯接口,socket通信编程。
串口通讯程序和编程实践
多线程程序设计

5.Linux设备驱动:
uClinux内核模块及设备驱动程序开发
介绍linux驱动程序分类和各自操作系统上下层接口
驱动开发实例:蜂鸣器驱动、按键驱动开发、串口驱动、触摸屏驱动、网络驱动开发、USB驱动、液晶屏驱动等。
ARMlinux移植过程。
引导程序Uboot移植。
最小系统启动开发过程。
嵌入式文件系统移植:ramdisk、JFFS2、yaff

6.综合试验:
实现网络文件传输服务程序;
构建嵌入式WEB服务器;
移植mediaplay播放器
开发嵌入式视.频服务器,基于H.264协议
**************************************
另有
=====第一部分单片机相关======
1【单片机多媒体视.频教程】(汇编)非常经典
2【单片机入门与提高精品视.频教程】(汇编),非常适合初学者.
3【手把手教你学单片机 51单片机 C语言 视.频教程 从入门到精通 视.频】
4【数电/模电精品视.频教程】,非常适合初学者.
5【汇编语言精品视.频教程】,非常适合初学者.
6【单片机的C语言编程及电路设计培训视.频教程】
7【标准C语言入门与提高视.频教程】非常经典
8【AVR单片机入门与提高视.频】
9【MSP430单片机经典视.频】
10【PIC单片机经典视.频】
11【电路分析应用技术视.频】
======第二部分电路设计相关=========
【protel99se+DXP/2-0-04 视.频教程+实例】
【Protel(Altium Desinger)】电路设计视.频教程
【Cadence经典视.频教程】
【Orcad经典视.频教程】
【PowerPCB入门视.频教程】
=====第三部分嵌入式硬件部分========
1【ARM linux培训视.频】
2【手把手教你学ARM之LPC2103入门篇 视.频教程】
3【ARM STM32视.频教程 +配套工程源代码】
4【(基于2440开发板的视.频教程)嵌入式Linux视.频培训视.频】
5《学ARM和学单片机一样简单》视.频】
6【ARM嵌入式LPC22-0-0视.频教学视.频教程《嵌入式系统与结构》 】
7【ARM7嵌入式S3C44B0视.频教学《嵌入式微处理器原理及应用》】
8【ARM嵌入式视.频《嵌入式原理与应用》】
9【 台湾嵌入式培训】
10【嵌入式系统开发技术视.频】
11【Altera FPGA 视.频教程】
12【深入浅出玩转FPGA视.频】
13【EDA(CPLD FPGA)入门与提高视.频教程】
14【dsp入门与提高视.频教程】   
15【DSP多媒体教程】
16【vhdl应用技术视.频】
17【PLC精品视.频】                  
18【数控应用经典技术视.频】

=====第四部分嵌入式软件部分====
1,【Windows CE入门与提高视.频教程】       2,【Vxworks应用技术】
3,【linux编程入门与提高视.频教程】  4 【linux工程师软件开发视.频】
5,【eCos、uC/OS-II开发技术】             6,【C++编程入门与提高视.频教程】
7,【嵌入式仿真开发】
8,【JAVA开发视.频】                       9,【.net开发视.频】
→篇幅有限,更多内容请联系
Q_Q:7-5-9-7-3-7-8-3-3
Q_Q: 9_1_0_6_8_4_9_2_8
网站:www.zhixin365.net
MSN:jxb200200@hotmail.com
成信无聊人 发表于 2011-6-19 21:06:16 | 显示全部楼层
学习了,谢谢分享
亲你可拉倒吧 发表于 2011-10-26 01:52:00 | 显示全部楼层
xiwangyouyong.
lala1008 发表于 2011-10-26 22:35:49 | 显示全部楼层
FPGA学习交流  QQ群号:140529542
508482294 发表于 2021-12-11 17:46:52 | 显示全部楼层
基于FPGA的液晶显示控制器设计
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-12-25 13:37 , Processed in 0.068615 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表