基于FPGA的LCD12864液晶汉字显示设计 及VHDL语言的应用

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

• • • • • • • • • • •
• • • •
b) VHDL代码 (顶层设计) LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY lcd12864 IS PORT ( CLOCK : IN std_logic; --全局时钟 Q_KEY : IN std_logic; --异步复位 -- LCD12864的接口 LCD12864_DATA : OUT std_logic_vector(7 DOWNTO 0); --数据总线 LCD12864_E : OUT std_logic; LCD12864_RS : OUT std_logic; --数据/指令 LCD12864_RW : OUT std_logic); --读/写 END lcd12864;
• 1.3.1状态机简介 • 本设计通过编写状态机的VHDL语言来完成控制部分。状态机在某种
程度上可以称是一种时序电路,如前面的触发器、计数器等,都可以 看成是功能固定的状态机。在状态机中常使用以状态图及状态表描述 的方式,然后根据这个状态图去设计符合要求的电路。状态机简写为 FSM(Finite State Machine),主要分为2大类:第一类,若输出只和状 态有关而与输入无关,则称为Moore状态机:第二类,输出不仅和状 态有关而且和输入有关系,则称为Melay状态机。要特别注意的是, 因为Melay状态机和输入有关,输出会受到输入的干扰,所以可能会 产生毛刺(Gitch)现象,使用时应当注意。事实上现在市面上有很多 EDA工具可以很方便的将采用状态图的描述转换成可以综合的VHDL程 序代码。
2、系统设计
• (1)设计任务和要求 • (2)总体设计方案 • (3)软件设计
(1)设计任务和要求
• 本设计的主要任务是基于FPGA的LCD控制
器的设计研究,并兼顾程序的易用性以方 便以后模块的移植。该设计到得FPGA的应 用,LCD驱动的研究,字符的显示模式的研 究等知识。并利用QUARTUS II 9.1实现相 关模块的设计,在FPGA上实现对LCD的控 制,显示任意中文。
并在EDA实验平台上实现。使用的软件是 QUARTUS II 9.1,可以用Verilog语言,也 可以用VHDL语言,这里采用的是VHDL语言。 • 并使用Altera公司的cycloneII系列的 EP2C8Q208C8来作为核心的控制器。具体 设计流程图如下:
图8 用EDA的设计方法设计的流程图

的玻璃当中放置液态的晶体,两片玻璃中间有许多垂直和水平的细小电线, 透过通电与否来控制杆状水晶分子改变方向,将光线折射出来产生画面。比 CRT要好的多,但是价钱较其它显示器贵。 FPGA是英文Field-Programmable Gate Array的缩写,即现场可编程门阵列, 它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作 为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制 电路的不足,又克服了原有可编程器件门电路数有限的缺点。 本课题主要任务是设计基于FPGA的LCD控制器,兼顾好程序的易用性,以方 便之后模块的移植和应用。最后在FPGA上的任意位置显示任意的16*16D的 中文字符以及16*8的英文字符,另外要能根据输入数据的变化同步变化LCD 上显示的内容。同时要能将储存模块中的图片数据正常地显示在LCD上。该 课题的研究将有助于采用FPGA的系列产品的开发,特别是需要用到LCD得采 用FPGA的产品的开发。同时可以大大缩短FPGA的开发时间。另外,由于模块 的易用性,也将使得更多的采用FPGA的产品之上出现LCD,增加人机之间的 交互性,为行业和我们的生活带来新的变化。
• 这个部分主要实现的功能是实例化
LCD12864显示驱动模块并且把要输入的数 据传给底层,由于所使用的GJ12864C-1带 有字库,这就需要调用字库,字库的调用 其实很简单,首先是要在字库中找到所要 现实的汉字,然后转换成VHDL语言能识别 的ASCII码,再写入程序中即可,更改程序 可以显示任意汉字、英文和标点符号等。 例如,“广”字在字库中的代码为B9E3, 转换成ASCII码就是 “1011100111100011”。
Fra Baidu bibliotek
• 2) 主控时序进程 • 是指负责状态机运转和在时钟驱动正负现状态机转换的进程。状态机
• • • • •
随外部时钟信号以同步方式工作,当时钟的有效跳变到来时,时序进 程将代表次态的信号next_state中的内容送入现态信号current_state 中,而next_state中的内容完全由其他进程根据实际情况而定,此进 程中往往也包括一些清零或置位的控制信号。 3) 主控组合进程 根据外部输入的控制信号(包括来自外部的和状态机内容的非主控进 程的信号)或(和)当前状态值确定下一状态next_state的取值内容, 以及对外或对内部其他进程输出控制信号的内容。 4) 辅助进程 用于配合状态机工作的组合、时序进程或配合状态机工作的其他时序 进程。 在一般状态机的设计过程中,为了能获得可综合的,高效的VHDL状 态机描述,建议使用枚举类数据类型来定义状态机的状态,并使用多 进程方式来描述状态机的内部逻辑。例如可使用两个进程来描述,— 个进程描述时序逻辑,包括状态寄存器的工作和寄存器状态的输出, 另一个进程描述组合逻辑,包括进程间状态值的传递逻辑以及状态转 换值的输出。必要时还可以引入第三个进程完成其它的逻辑功能。
• 3)方案比较 • 两种方法都能实现汉字的显示,尽管设计思路不
同,但最终效果是一样的。考虑到单片机的设计 方法更适合用在点阵LED的显示设计方面,EDA的 设计方法明显更适合用于LCD的汉字显示,并且 考虑到学校实验室的资源,实验室里有完善的 EDA实验箱,并且有设计所需要的控制芯片和显 示器件,而如果用单片机的设计方法实现的话, 资源明显不够。两相比较之下,EDA的设计方法 明显有优势,所以选用方法二。
(3)软件设计
a) QUARTUS II概述 • Quartus II 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、 VerilogHDL以及AHDL(Altera Hardware Description Language)等 多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计 输入到硬件配置的完整PLD设计流程。 • Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完 成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度 快,界面统一,功能集中,易学易用等特点。 • Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块 库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了 设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的 各个阶段使用熟悉的第三方EDA工具。 • 此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合, 可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统 (SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计 于一体,是一种综合性的开发平台。
• a)能通过VHDL程序,在QUARTUS II 9.1
软件的编译仿真下,并在EDA实验箱上进行 下载显示,验证程序的正确性。 • b)要求显示的字符为“广西师范学院”、 “物理与电子工程院”、“07电本陈岸”、 “指导老师:刘桂英”
(2)总体设计方案
• 1)方案一:用单片机实现,可以用
AT89S52单片机实现128*64液晶屏显示。 程序方面可以用C语言成语,亦可以用汇编 程序。整个设计首先是在protues软件中进 行硬件的搭建及仿真的,然后才下载到目 标芯片上,进行调试。其连接方式如下:
• 1.2 EDA概述 • 本设计采用EDA的自顶向下的设计方法。EDA(Electronic Design
Automation,即电子设计自动化)技术是微电子和计算机技术飞速发 展的产物,它融多学科于一体,是一门综合性的学科。它以计算机硬 件和系统软件为基本的工作平台,继承和借鉴前人在电路和系统、数 据库、图形学、图论和拓扑逻辑、计算数学、优化理论等多学科的最 新科技成果而研制成的商品化EDA通用支撑软件和应用软件包,其目 的在于帮助电子设计工程师在计算机上完成电路的功能设计、逻辑设 计、性能分析、时序测试直至PCB(印刷电路板)的自动设计等。与早 期的电子CAD软件相比,EDA软件的自动化程度更高,功能更完善, 运行速度更快,而且操作界面友好,有良好的数据开放性和互换性, 即不同厂商的EDA软件可相互兼容。因此,EDA技术一经出现,就很 快在世界各大公司、企业和科研单位得到了广泛的应用,并已成为衡 量一个国家电子技术发展水平的重要标志。

• • • • • • • • • • • • • • • • •
C)底层设计
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY lcd12864_drive IS PORT ( clk : IN std_logic; -全局时钟 rst_n : IN std_logic; --异步复位 row1_val : IN std_logic_vector(127 DOWNTO 0); row2_val : IN std_logic_vector(127 DOWNTO 0); row3_val : IN std_logic_vector(127 DOWNTO 0); row4_val : IN std_logic_vector(127 DOWNTO 0); lcd_data : OUT std_logic_vector(7 DOWNTO 0); lcd_e : OUT std_logic; lcd_rs : OUT std_logic; --数据/指令 lcd_rw : OUT std_logic); --读/写 END lcd12864_drive;
--数据的第一行 --数据的第二行 -- 数据的第三行 -- 数据的第四行 --数据总线
• 这个部分的主要功能是实现具体功能,并
进行时钟分频,写入数据。这个部分状态 机描述部分的功能是实现状态转变,不停 的改变状态,把次态赋给当前状态。达到 不断写入数据的目的。
图1 单片机与液晶屏的连接
• 其工作的具体流程图如下:开始结束延时
使LCD复位脉冲函数设置显示方式设置地址 指针取消连续写方式输送数据到显示器设 置成连续写方式设置起始地址写数据输送 命令到显示器设置显示屏列数写完否?可 否连续写NNYY
图7 用单片机设计的具体流程图
• 2)方案二:采用EDA的自顶向下的思想,
本科毕业论文(设计)
基于FPGA的LCD12864汉字显示设计
1、引言 2、系统设计 (包括设计任务和要求) 3、结束语 4、参考文献 5、致谢
1 引言
• 1.1 本设计的研究背景和研究目的 • LCD液晶显示器是 Liquid Crystal Display 的简称,LCD 的构造是在两片平行 •
• 1.3.2一般状态机的VHDL设计 • 用VHDL设计有限状态机方法有多种,但最一般和 • •
最常用的状态机设计通常包括说明部分,主控时 序部分,主控组合部分和辅助进程部分。 1) 说明部分 说明部分中使用TYPE语句定义新的数据类型,此 数据类型为枚举型,其元素通常都用状态机的状 态名来定义。状态变量定义为信号,便于信息传 递,并将状态变量的数据类型定义为含有既定状 态元素的新定义的数据类型。说明部分一般放在 结构体的ARCHITECTURE和BEGIN之间。
相关文档
最新文档