电子系统综合设计报告-基于FPGA的电子系统综合设计.doc_第1页
电子系统综合设计报告-基于FPGA的电子系统综合设计.doc_第2页
电子系统综合设计报告-基于FPGA的电子系统综合设计.doc_第3页
电子系统综合设计报告-基于FPGA的电子系统综合设计.doc_第4页
电子系统综合设计报告-基于FPGA的电子系统综合设计.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

电子系统综合设计报告 基于 FPGA 的液晶显示设计 电子系统综合设计 第 I 页 摘 要 如今,科技进步给我们的生活带来了很大的变化。液晶显示设备越来越多, 各种各样的液晶显示产品走进我们生活中。从手机到电脑显示器,从掌上电脑 到平板电视。无处没有液晶显示技术的身影。 液晶显示器由于具有低压、微功耗、显示信息量大、体积小等特点,在移 动通信终端、便携计算机、GPS 卫星定位系统等领域有广泛用途,成为使用量 最大的显示器件。液晶显示控制器作为液晶驱动电路的核心部件通常由集成电 路组成,通过为液晶显示系统提供时序信号和显示数据来实现液晶显示。 本设计是一种基于 FPGA(现场可编程门阵列)的液晶显示控制器。与集成电 路控制器相比,FPGA 更加灵活,可以针对小同的液晶显示模块更改时序信号和 显示数据。FPGA 的集成度、复杂度和面积优势使得其日益成为一种颇具吸引力 的高性价比 ASIC 替代方案。本文选用 MAX7000S 系列的 EPM7128SLC84-15 器件, 利用硬件描述语言 VHDL 设计了液晶显示控制器,实现了替代专用集成电路驱动 控制 LCD 的作用。 首先,本文介绍了液晶控制器设计方案。 其次,讲述了根据本设计所要实现的基本功能,液晶显示器接口底层电路 设计。采用 EPM7128SLC84-15 器件为系统控制核心。 再次,本文详细阐述液晶控制器接口的顶层文件设计。 最后,液晶控制器接口设计的测试与运行 关键词:EDA(电子设计自动化) ,VHDL(硬件描述语言) ,液晶控制器接口设 计,LCD(液晶显示器) 。 电子系统综合设计 第 II 页 目 录 第 1 章 课程设计内容和要求.2 1.1 设计目的 .2 1.2 设计内容 .2 1.3 设计要求 .2 第 2 章 液晶控制器设计方案.3 2.1 设计思路 .3 2.2 工作原理及框图 .3 第 3 章 液晶显示器接口底层电路设计.6 3.1 设计规划.6 3.2 设计说明.6 3.3 底层电路程序.6 第 4 章 液晶控制器接口的顶层文件设计.11 4.1 设计说明.11 4.2 顶层文件程序.11 第 5 章 液晶控制器接口设计的测试与运行.13 5.1 液晶控制器设计仿真结果 .13 5.2 实验箱验证情况.13 结 论.14 参考文献.15 电子系统综合设计 第 1 页 第第 1 1 章章 课程设计内容和要求课程设计内容和要求 1.1 设计目的设计目的 设计并实现一个 12832 的汉字图形液晶显示器的控制器,要求: (1)能够显示几个液晶模块字库中的汉字和 ASIC 字符。 (2)能够显示一个简单的图形。 1.2 设计内容设计内容 (1)学习掌握液晶显示模块的工作原理及应用。 (2)熟练掌握 VHDL 编程语言,编写液晶显示模块的控制逻辑。 1.3 设计要求设计要求 (1)仿真所编写的程序,模拟验证所编写的模块功能。 (2)下载程序到芯片中,硬件验证所设置的功能,能够实现汉字的显示。 (3)整理设计内容,编写设计说明书。 电子系统综合设计 第 2 页 第第 2 2 章章 液晶控制器设计方案液晶控制器设计方案 2.1 设计思路设计思路 根据指导教师布置的课题,通过参考书籍、查阅手册、图表和文献资料, 网络等获取相关的知识后,了解到: 液晶显示模块硬件接口协议为请求/应答(REQ/BUSY)握手方式。应答 BUSY 高电平(BUSY =1)表示 OCMJ 忙于内部处理,不能接收用户命令;BUSY 低电平(BUSY =0)表示 OCMJ 空闲,等待接收用户命令。发送命令到 OCMJ 可 在 BUSY =0 后的任意时刻开始,先把用户命令的当前字节放到数据线上,接着 发高电平 REQ 信号(REQ =1)通知 OCMJ 请求处理当前数据线上的命令或数据。 OCMJ 模块在收到外部的 REQ 高电平信号后立即读取数据线上的命令或数据,同 时将应答线 BUSY 变为高电平,表明模块已收到数据并正在忙于对此数据的内部 处理,此时,用户对模块的写操作已经完成,用户可以撤消数据线上的信号并 可作模块显示以外的其他工作,也可不断地查询应答线 BUSY 是否为低(BUSY =0?) ,如果 BUSY =0,表明模块对用户的写操作已经执行完毕。可以再送下一 个数据。 2.2 工作原理及框图工作原理及框图 2.2.1 液晶 LCD 显示器的工作原理: 液晶显示器是一种采用了液晶控制透光技术来实现色彩的显示器。从液晶 显示器的结构来看,采用的 LCD 显示屏都是由不同部分组成的分层结构。LCD 由两块玻璃板构成,厚约 1mm,其间由包含有液晶材料的 5um 均匀间隔隔开。 因为液晶材料本身并不发光,所以在显示屏两边都设有作为光源的灯管,而在 液晶显示屏背面有一块背光板(或称匀光板)和反光膜,背光板是由荧光物质 组成的可以发射光线,其作用主要是提供均匀的背景光源。背光板发出的光线 在穿过第一层偏振过滤层之后进入包含成千上万液晶液滴的液晶层。液晶层中 的液滴都被包含在细小的单元格结构中,一个或多个单元格构成屏幕上的一个 电子系统综合设计 第 3 页 像素。在玻璃板与液晶材料之间是透明的电极,电极分为行和列,在行与列的 交叉点上,通过改变电压而改变液晶的旋光状态,液晶材料的作用类似于一个 个小的光阀。液晶材料周边是控制电路部分。当 LCD 中的电极产生电场时,液 晶分子就会产生扭曲,从而将穿越其中的光线进行有规则的折射,然后经过第 二层过滤层在屏幕上显示出来。 2.2.2 设计原理图如下: 图 2-1 液晶控制器接口设计原理图 显示国标汉字: 命令格式: F0 XX YY QQ WW。该命令为 5 字节命令(最大执行时间为 1.2 毫秒,Ts2=1.2mS) ,其中: XX:为以汉字为单位的屏幕行坐标值,取值范围 00 到 07、02 到 09、00 到 09; YY:为以汉字为单位的屏幕列坐标值,取值范围 00 到 01、00 到 03、00 到 04; QQ WW:坐标位置上要显示的 GB 2312 汉字区位码。 2.2.3 设计框图: 电子系统综合设计 第 4 页 下载编程 时序仿真 在线测试 设计处理 设计输入功能仿真 图 2-2 液晶控制器设计框图 2.3 各模块功能描述 液晶显示模块共有四个单元电路组成,分别是:时序发生器、地地址发生 器、存储器、控制器。引脚功能图和内部结构框图分别如图 3-3 和图 3-4 所示。 图 2-3 液晶控制器引脚功能图 图 2-4 液晶控制器内部结构框图 其中,时钟发生器共有三组时钟输出,分别送给:地址发生器,使其产生 存储器读地址;存储器,作为输出数据的同步时钟;控制器,作为控制器的工 作时钟及输出信号同步时钟。 地址发生器在时钟信号与 BUSY 信号的共同作用下,产生存储器所需的地址 电子系统综合设计 第 5 页 信息。当 BUSY 信号有效时(BUSY=1 ) ,停止输出地址信号;当液晶模块处于 空闲状态(BUSY=0 )时,输出地址信号。 控制器用来产生液晶模块所需的 STOBE 和存储器输出使能信号。当 BUSY 信 号有效时(BUSY=1 ) ,关闭存储器的输出;当液晶模块处于空闲状态 (BUSY=0 )时,分别送出 STOBE=1和存储器输出使能信号,等待 BUSY 变为1 。当 BUSY=1时,使 STOBE=0 ,数据传送结束。存储器主要用来 存储液晶模块的命令,在同步时钟的作用下,数据同步输出。该存储器可为 ROM 型,也可以为 RAM 型。当为 ROM 型是,其显示模式及显示数据不可变,即 只能显示固定的信息;为 RAM 型时,其显示模块及数据可根据需要任意配置, 即可显示出更为灵活及复杂的信息,如实时的波形显示器等。 电子系统综合设计 第 6 页 第第 3 3 章章 液晶显示器接口底层电路设计液晶显示器接口底层电路设计 3.1 设设计计规规划划 该液晶控制器可显示模块字库中的汉字和 ASSIC 字符,又具有清零功能。 因此。此程序共有两大大模块,汉字显示模块,清零模块。 1.汉字显示模块是根据查表对照的方法显示出设计者想要表达的文字。液 晶屏上显示的汉字是 16*16 的像素。 2.ASIC 字符显示相对汉字来说比较简单。只需要 16*8 个像素。 3.清零功能是强制清除一切记录的功能。 3.2 设设计计说说明明 液晶屏幕上是如何显示一些汉字或者是图画,这是我们应该思考的一个问 题。在数字电路中,所有数据都是由 0、1 保存的,同样 LCD 也是利用这种方法。 在点阵 LCD 上显示的只有两种颜色,因此可用 0 和 1 来表示这两种颜色,假设 空格是 16*16 个 0 组成的,在现实 16*16 的字体时,将其中某些点置为 1 便可 在视觉上形成汉字,这些二进制数成为代码。与汉字不同的是一个字符只需要 16*8 的像素便可。 3.3底层电路程序底层电路程序 3.3.1 清零模块 清零模块的功能:实现将地址清零的功能。 当 clr 为0时,将初始地址置为00000000。 当 clr 为1时,出现上升沿时,如果 addr1 为00111100,则将 addr 置为00000001;不出现上升沿时,则将 addr 加 1,以实现地址的循环。如此 实现清零模块的功能。 清零模块的代码(VHDL)如下: LIBRARY ieee; 电子系统综合设计 第 7 页 USE ieee.std_logic_1164.ALL; USE ieee.std_logic_unsigned.ALL; USE ieee.std_logic_arith.all; USE work.rom.all; ENTITY lcd1 is PORT(clr,clk,BUSY: IN std_logic; STOBE : OUT std_logic; dout: OUT std_logic_vector(7 DOWNTO 0); -实体端口的设计 END lcd1; ARCHITECTURE doit OF lcd1 IS signal counter,addr1: std_logic_vector(7 downto 0); -结构体的信号设计 signal addr : std_logic_vector(7 DOWNTO 0); BEGIN P1: process(clr,busy) begin if(clr=0) then addr1=00000000; -给地址清零 elsif(busyevent and busy=1) then if(addr1=00111100) then addr1=00000001; -如果出现 busy 出现上升沿实现 地址的赋值 else addr1=addr1+1; -实现地址的循环 end if; end if; end process P1; P2: process(clr,busy) begin if(clr=0) then addr=00000000; -地址清零 elsif(busyevent and busy=0) then addr=addr1; -当 busy 出现下降沿时地址的赋 值 end if; end process P2; 电子系统综合设计 第 8 页 由以上程序可发现: 如果 clr 为1 ,初始地址被赋值为000000001,如果 busy 为 1,则准 备下一条地址。如果 busy 为 0,则把地址数据传送给存储器,来进行数据的存 储。 如果 clr 为0时,地址置00000000清零,则实现了清零的功能。 3.3.2 汉字显示模块 汉字显示模块的原理是:将汉字内码 gb2312 码存入只读存储器 rom 中,用 下面程序对汉字内码进行调用,则可以将所对应的汉字显示出来。 例如汉字“东”的汉字内码为 2211,用显示模块二进制将 2211 表示出来, 则可以将汉字“东”显示出来。如此,则可以显示出所需要的汉字。此液晶显 示器每行显示六个字,一共两行。 另外,由于只读存储器的大小为 256*8,所以,当所需要的汉字的内码设 置完后,应当用00000000对 rom 进行填充,使其达到 256*8 的大小,以实现 循环,避免产生乱码。 汉字显示模块的代码(VHDL)如下: LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.std_logic_unsigned.ALL; USE ieee.std_logic_arith.all; USE work.rom.all; -调用存储器中的内容 ENTITY lcd1 is PORT(clr,clk,BUSY: IN std_logic; STOBE : OUT std_logic; dout: OUT std_logic_vector(7 DOWNTO 0); -实体端口的设计 END lcd1; ARCHITECTURE doit OF lcd1 IS -结构体信号的设计 signal counter,addr1: std_logic_vector(7 downto 0); signal addr : std_logic_vector(7 DOWNTO 0); 电子系统综合设计 第 9 页 BEGIN P1: process(clr,busy) begin if(clr=0) then -清零功能的实现 addr1=00000000; elsif(busyevent and busy=1) then -busy 出现上升沿地址的赋值 if(addr1=00111100) then addr1=00000001; else addr1=addr1+1; end if; end if; end process P1; P2: process(clr,busy) begin if(clr=0) then addr=00000000; -清零功能的实现 elsif(busyevent and busy=0) then -busy 出现下降沿地址的赋值 addr=addr1; end if; end process P2; P3: process(busy, clk) begin if(busy=1) then counter=00000000; -清零 elsif(clkevent and clk=1) then -clock 出现上升沿时进行加 法计数 电子系统综合设计 第 10 页 counter=counter+1; end if; end process P3; dout=rom (CONV_INTEGER (addr); stobe=00000011 else 0; END doit; LIBRARY ieee; USE ieee.std_logic_1164.ALL; PACKAGE rom IS CONSTANT rom_width: NATURAL :=8; -natural 表示大于零的整数 CONSTANT rom_length: NATURAL :=256; SUBTYPE rom_word IS STD_LOGIC_VECTOR(rom_width-1 DOWNTO 0); TYPE rom_table IS ARRAY ( 0 To rom_length-1) of rom_word; CONSTANT rom : rom_table :=rom_table ( 11110000,00000001,00000000,00010110,00001011,-2211“黄”用来显示汉字 的内码 11110000,00000010,00000000,00010001,00010001,-1717“河” 11110000,00000011,00000000,00101010,00001111,-4215“科” 11110000,00000100,00000000,00110011,00101101,-5145“技” 11110000,00000101,00000000,00010100,01010011,-2083“大” 11110000,00000110,00000000,00110001,00000111,-4907“学” -所需要显示的汉字内码输入完整后,为了避免出现乱码,必须用00000000将 256*8 的 只读存储器 rom 将存储器填满,以实现地址的循环,且不出现乱码。 00000000,00000000,00000000,00000000, -如此填充,为保证 rom 总共的大小为 256*8 END rom; 为节省空间,大小为 256*8 的内码只显示主要内容,用00000000填充的 电子系统综合设计 第 11 页 其它部分,不再作一一显示,用省略号表示。只需保证该只读存储器 rom 的真 正大小为 256*8 即可。 另外,根据汉字 gb2312 码更改只读存储器 rom 中的内容可以相应地更改显 示汉字的字数和内容;利用点阵列,则可以显示字符;用英文码,则可以显示 英文 其它显示命令格式如下(不做一一列举): (1)显示 8X8 ASCII 字符 命令格式:F1 XX YY AS 该命令为 4 字节命令(最大执行时间为 0.8 毫秒,Ts2=0.8mS) ,其中 XX:为以 ASCII 码为单位的屏幕行坐标值,取值范围 00 到 0F、04 到 13、00 到 13 YY:为以 ASCII 码为单位的屏幕列坐标值,取值范围 00 到 1F、00 到 3F、00 到 4F AS:坐标位置上要显示的 ASCII 字符码 (2)显示位点阵 命令格式: F2 XX YY 该命令为 3 字节命令(最大执行时间为 0.1 毫秒,Ts2=0.1mS) ,其中 XX:为以 1*1 点阵为单位的屏幕行坐标值,取值范围 00 到 7F、20 到 9F、00 到 9F YY:为以 1*1 点阵为单位的屏幕列坐标值,取值范围 00 到 40、00 到 40、00 到 40。 电子系统综合设计 第 12 页 第第 4 4 章章 液晶控制器接口的顶层文件设计液晶控制器接口的顶层文件设计 4.1 设设计计说说明明 所谓建立顶层文件就是将已经设计好的各个功能组件组合调用,连成一个 整体,使整个系统按照设计要求在实际中工作起来。 而此程序中的顶层文件即是将清零模块和汉字内码显示模块结合起来,使 其实现清零和显示汉字的两大功能。 具体操作:将汉字显示的内码存入到大小为 256*8 的只读存储器 rom 中, 然后再在清零模块的程序中对该只读存储器 rom 进行调用。在一个工程中用两 个.vhd 文件分别存入顶层文件程序和只读存储器 rom 的程序即可。如此,便将 清零模块和汉字显示模块连成了一个整体。在液晶显示器中便可实现清零和显 示汉字的两个功能。 4.2 顶顶层层文文件件程程序序 代码如下: LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.std_logic_unsigned.ALL; USE ieee.std_logic_arith.all; USE work.rom.all; ENTITY lcd1 is -实体端口的设计 PORT(clr,clk,BUSY: IN std_logic; STOBE : OUT std_logic; dout: OUT std_logic_vector(7 DOWNTO 0); END lcd1; ARCHITECTURE doit OF lcd1 IS -结构体信号的设计 signal counter,addr1: std_logic_vector(7 downto 0); signal addr : std_logic_vector(7 DOWNTO 0); BEGIN P1: process(clr,busy) 电子系统综合设计 第 13 页 begin if(clr=0) then -清零功能的实现 addr1=00000000; elsif(busyevent and busy=1) then -busy 出现上升沿地址的赋值 if(addr1=00111100) then addr1=00000001; else addr1=addr1+1; end if; end if; end process P1; P2: process(clr,busy) begin if(clr=0) then -强制清零功能的实现 addr=00000000; elsif(busyevent and busy=0) then -busy 出现下降沿地址的赋 值 addr=addr1; end if; end process P2; P3: process(busy, clk) begin if(busy=1) then -清零功能的实现 counter=00000000; elsif(clkevent and clk=1) then -clock 出现上升沿时开始计 数 counter=counter+1; end if; end process P3; dout=rom (CONV_INTEGER (addr); stobe=00000011 else 0; END doit; 最后创建一个工程,在里面新建两个.vhd 文件,一个用于存储顶层文件程 电子系统综合设计 第 14 页 序,一个用于输入只读存储器 rom 中的内容。在顶层文件程序中调用只读存储 器 rom 中的内容,便可实现液晶显示的清零功能和显示汉字的功能。 第第 5 5 章章 液晶控制器接口设计的测试与运行液晶控制器接口设计的测试与运行 5.1 液液晶晶控控制制器器设设计计仿仿真真结结果果 下图 5-1 是将上述程序在 Quartus 中进行仿真后实现的波形图: 图 5-1:液晶控制器设计仿真结果 5.2 实实验验箱箱验验证证情情况况 实验连线:将 CLK 接时钟模块输出,使其频率为 1.25MHZ2.5MHZ,BUSY 接液晶模块的 BUSY 输入端,REQ 接液晶模块的 REQ 输出端,dout7.0分别接 液晶模块的 DB7.0输入端。 在 MAX70

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论