可编程逻辑器件课程设计_第1页
可编程逻辑器件课程设计_第2页
可编程逻辑器件课程设计_第3页
可编程逻辑器件课程设计_第4页
可编程逻辑器件课程设计_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、北京工商大学课程设计 可编程逻辑器件与应用编号: 1104020414 课程设计(可编程逻辑器件与应用) 题目: 128*32LCD液晶显示器汉字显示 院 (系) 计算机与信息工程学院 专 业 信息工程 班 级 信息112班 学生姓名 马博渊 2014年6月15摘要本可编程逻辑器件与应用设计基于EL-EDA-VI实验电路箱、E-Play-SOPC开发板,主要利用Altera公司的Cyclone系列的FPGA芯片与VerilogHDL语言,针对于12832LCD液晶显示屏,进行开发。通过输入时钟与预置显示字符,让字符串依次显示在液晶显示屏上,并且在显示完整后,保持不变。通过仔细研究讨论了多种方案

2、后,决定采用一个较为可行的方案完成设计,即为利用FPGA发出控制信号与所需显示的数据,通过控制电路,对LCD驱动时序并且显示数据。本次设计,基于QUARTUS II 软件进行功能仿真和测试,通过编译后,利用JTAG接口将程序烧录入FPGA中,在实验箱上连接好电路,观察实验结果。本设计,实验效果良好,具有稳定、渐变效果的输出,字符输出准确,实验程序清楚明了。关键词:VerilogHDL,12832液晶显示屏,FPGA,依次显示,功能仿真目录1 绪论 LCD液晶显示器汉字滚动显示12 设计方案分析12.1 设计要求12.2 设计思路12.3 设计原理简述12.3.1 12832液晶显示器12.3.

3、2 FPGA控制模块12.3.3 整体设计原理23 LCD液晶显示汉字的设计实施23.1 硬件电路23.1.1 FPGA23.1.2 液晶显示屏 1283233.2 程序设计44 系统测试分析114.1 仿真测试分析114.1.1 功能仿真分析114.1.2 时序仿真分析124.3 电路下载测试分析125 结论13参考文献131 绪论 LCD液晶显示器汉字显示本次设计的意图在于利用Verilog语言实现汉字在12832LCD液晶显示屏显示字符和汉字,实现功能仿真,并在实验设备上调试通过。设计的意义在于增强关于Verilog语言的掌握熟练程度,熟悉状态机,能够综合利用所学知识,自行设计硬件语言的

4、灵活使用与硬件设计能力。并且,在课程之外拓展关于液晶显示屏等常用硬件的相关知识,将理论与实际操作实现结合。本报告涉及设计方案的阐述和说明,程序与电路的设计与测试,软件仿真测试与硬件操作测试与实验结果说明。2 设计方案分析2.1 设计要求 用Verilog语言实现汉字在12864LCD的显示,实现功能仿真,并在实验设备上调试通过。静态显示(基本功能):显示“北京工商大学”;2.2 设计思路通过FPGA发出控制信号与需要显示的数据,控制LCD液晶显示屏进行显示。显示字符通过查找相关字库(GB)(具体至百度下载:汉字十六进制转换工具),找到所要查找的汉字对应的十六进制数表示方式,利用程序预置对应输出

5、的汉字和字符,使用外部时钟(频率:10HZ),控制显示器在按下复位键(reset键)时,开始依次逐渐显示对应的转码后的正常可读的字符。利用外部晶振,输入时钟信号,控制显示器的显示过程与效果。2.3 设计原理简述2.3.1 12832液晶显示器 C12832-19B中文液晶显示模块的液晶屏幕为128*32,可显示两行字符,每行可显示八个汉字。(如图2.1)汉字和相关字符可查阅12832的字库,获得对应的十六进制数。 图2.1 C12832-19B中文液晶2.3.2 FPGA控制模块 实验板E-PLAY-SOPC上以FPGA芯片为核心,通过JTAG接口实现与PC的连接,便于下载和在线调试程序。通过

6、VGA电路模块与实验箱EL-EDA-VI相连接与控制。在FPGA中写入编写好的相关程序,实现硬件的控制。这里,使用Verilog语言,编写显示字符的程序,通过FPGA,使用实验箱上的10Hz频率作为外部时钟,将实验效果显示在液晶显示屏上。2.3.3 整体设计原理控制信号FPGA (E-PLAY-SOPC) EL-EDA-VI(按键、I/O信号输出口、时钟频率信号控制模块)LCD显示内容控制信号显示内容图2.2 整体设计图3 LCD液晶显示汉字的设计实施3.1 硬件电路3.1.1 FPGA图3.1 SOPC板上FPGA管脚示意图注:VGA模块用于与实验箱底板相关连接与控制,在程序中设置四位VGA

7、为0001,目标是使用实验箱的开关、信号输出口与时钟频率信号模块,以便于与液晶显示屏进行电路连接。3.1.2 液晶显示屏 12832图3.2 12832液晶显示器引脚说明图其中:LED+、LED-:背光源正负极VDD、VSS:LCD电源及地DB0DB7:8位数据线XRES:复位信号(低电平有效)PSB:控制界面选择选择,0:串行;1:并行4位/8位RS(CS):并行时为寄存器选择,0:指令寄存器;1:数据寄存器 串行时为片选控制,0:禁止;1:允许R/W(SID):并行时为读写控制,0:写;1:读 串行时为输入串行数据E(SCLK):并行时为读写数据起始 串行时为串行时钟的输入3.1.3EL-

8、EDA-VI实验电路箱管脚及C12832-19B配置:VGA3-管脚:163 VGA2-管脚:164VGA1-管脚:161 VGA1-管脚:162rst_n-管脚:105,对应实验箱SW1(与LCD相连)RS-管脚:165,对应实验箱IO5,(与LCD相连)RW-管脚:166,对应实验箱IO6,因为一直是写状态,由程序置0;(与LCD相连)E-管脚:167,对应实验箱IO7,(与LCD相连)PSB-高电平并行传输,所以一直置高(接3.3V)XRES-低电平复位,所以一直置高(接3.3V)Clock-管脚:28,对应实验箱IO3,因为对应10赫兹,将开关调至1011附加说明:EDA-VI底板上I

9、O_CLK为4位拨码开关SW20SW17来控制输出40M分频后的可调时钟。SW20 SW19SW18SW17IO_CLK11111Hz01115Hz101110Hz001125Hz110150Hz0101500Hz10011KHz00012.5KHz111010KHz011020KHz101050KHz0010200KHz1100500KHz01002MHz10005MHz000020MHz 图3.3 EDA-VI底板上的可调时钟3.2 程序设计module DesignScreen(clock,rst_n,rs,rw,en,data,VGA);input clock; /系统时钟输入 inp

10、ut rst_n; / 系统复位输入,低电平有效output rw; /LCD 的读,写操作选择输出信号output en; /LCD 使能信号output3:0 VGA; /连接EL-EDA-VI实验电路箱、E-Play-SOPC开发板output reg 7:0data; /LCD 的数据总线(不进行读操作,故为输出)output reg rs; /1:数据模式;0:指令模式wire clock_LCD; /LCD 时钟信号reg 23:0cnt; /LCD 时钟计数器assign VGA=4'b0001;reg flag; /标志位,LCD 所有数reg 5:0char_cnt;

11、 /字数计数器reg 7:0data_disp; /中转站assign clock_LCD=clock;/* 状态机参数*reg8:0 state; /State Machine code parameter IDLE= 0; /初始状态,下一个状态为 CLEAR parameter SETFUNCTION= 1; /功能设置:8位数据接口 parameter SETFUNCTION2= 2; parameter SWITCHMODE=3; /显示开关控制:开显示,光标和闪烁关闭 parameter CLEAR=4; /清屏 parameter SETMODE=5; /输入方式设置:数据读写操

12、作后,地址自动加1/画面不动 parameter SETDDRAM=6; /设置DDRAM的地址parameter WRITERAM=7; /数据写入DDRAM相应地址parameter STOP=8; /LCD 操作完毕,释放其控制assign rw = 1'b0; / 始终对 LCD 写数据assign en=(flag=1)?clock_LCD:1'b0; /信号出现高电平以及下降沿的时刻与LCD 时钟相同/* 对RS进行逻辑判断*always (posedge clock_LCD or negedge rst_n) /只有在写数据操作时,RS 信号才为高电平,其余为低电

13、平 begin if(!rst_n) /如果复位 rs <= 1'b0; /开启指令模式 else if(state = WRITERAM) /否则如果数据处于写入DDRAM 状态 rs <= 1'b1; /开启数据模式 else rs <= 1'b0;/其他情况均为指令模式end /*状态机逻辑*,此处可加按键功能(多套一层)always (posedge clock_LCD or negedge rst_n) begin if(!rst_n) begin state <= IDLE; /准备进入 IDLE data <= 8'b

14、zzzzzzzz; /输入高阻 char_cnt <= 5'b0; flag <= 1'b1; /标志位为1 end else begin case(state) IDLE: begin state <= SETFUNCTION; /下个状态为功能设置 data <= 8'bzzzzzzzz; /输入高阻 end /* 基本指令集动作* SETFUNCTION: begin state <= SETFUNCTION2; data <= 8'h30; end SETFUNCTION2: begin state <= SWI

15、TCHMODE; /下个状态为开关模式,类推 data <= 8'h30; end /*显示开关:开显示,光标和闪烁关闭 * SWITCHMODE: begin state <= CLEAR; data <= 8'h0c; end /*清屏 * CLEAR: begin state <= SETMODE; data <= 8'h01; end /*输入方式设置:数据读写操作后,地址自动加1/画面不动* SETMODE: begin state <= SETDDRAM; data <= 8'h06; end / DRAM

16、的地址:第一行起始为0x80/第二行为0x90 SETDDRAM: begin state <= WRITERAM; if(char_cnt = 0) /没开始计数,即将写第一屏 data<=8'h80; /指针在第一行开头 if(char_cnt = 16) data<=8'h90; end /*到指定的DDRAM的地址写数据* WRITERAM: begin if(char_cnt>=0 && char_cnt <= 15) /从第一排开始写,一排 16 个字 begin char_cnt<=char_cnt + 1

17、9;b1; data<=data_disp; if( char_cnt=15 ) state <= SETDDRAM; else state<= WRITERAM; end else if( char_cnt >= 16) begin char_cnt<=char_cnt + 1'b1; data<=data_disp; if(char_cnt=32) begin state <= STOP; /写满屏后,准备停止 char_cnt <= 6'd0; /字数计数器清0 flag <= 1'b0; /标志位置0 end

18、 else begin state <= WRITERAM; end end end STOP: state <= STOP; /死循环,即完成了显示锁住,等待复位 default: state <= IDLE; /其他不可预测情况 endcase endend /*数据处理,查国标,调用CGROM字库*always (char_cnt) /换几个字符begin case (char_cnt) / 第一排 * 北京工商大学计算 */北:B1B1,京:BEA9:工:B9A4, 商:C9CC,大:B4F3,学:D1A7/计:BCC6,算:CBE3,机:BBFA, 与:D3E8,

19、信: D0C5, 息:CFA2,工:B9A4 程:B3CC,学:D1A7,院:D4BA/l:A3EB o:A3EE, v:A3F6,e:A3E56'd0: data_disp = 8'hB1; 6'd1: data_disp = 8'hB1; 6'd2: data_disp = 8'hBE; 6'd3: data_disp = 8'hA9; 6'd4: data_disp = 8'hB9; 6'd5: data_disp = 8'hA4; 6'd6: data_disp = 8'hC

20、9; 6'd7: data_disp = 8'hCC; 6'd8: data_disp = 8'hB4; 6'd9: data_disp = 8'hF3; 6'd10: data_disp = 8'hD1; 6'd11: data_disp = 8'hA7; 6'd12: data_disp = 8'hBC; 6'd13: data_disp = 8'hC6;6'd14: data_disp = 8'hCB; 6'd15: data_disp = 8'

21、hE3; /第二排* 机与信息工程学院 *6'd16: data_disp = 8'hBB; 6'd17: data_disp = 8'hFA; 6'd18: data_disp = 8'hD3; 6'd19: data_disp = 8'hE8; 6'd20: data_disp = 8'hD0; 6'd21: data_disp = 8'hC5; 6'd22: data_disp = 8'hCF; 6'd23: data_disp = 8'hA2; 6'd

22、24: data_disp = 8'hB9; 6'd25: data_disp = 8'hA4; 6'd26: data_disp = 8'hB3; 6'd27: data_disp = 8'hCC; 6'd28: data_disp = 8'hD1; 6'd29: data_disp = 8'hA7; 6'd30: data_disp = 8'hD4;6'd31: data_disp = 8'hBA;default : data_disp = 8'h00; /调用空

23、白ASCII 码endcase end endmodule4 系统测试分析4.1 仿真测试分析4.1.1 功能仿真分析图4.1 功能仿真波形图分析:data输出位是为了在液晶显示器上显示相关数据。所以在开始的一段时间之内,data显示为高阻态,此时是为了输入数据。之后,data开始有相关的数据可以显示输出。根据功能仿真波形图可以看出,每个字符以二进制的形式在输出,以汉字的形式在显示屏上显示。4.1.2 时序仿真分析图4.2 时序仿真波形图分析:由于时序仿真之中包含延时的情况,更加符合实际的情况,所以该波形图中可以看出,大约data的每一位都在高阻态保持一段时间之后开始变化,有信号通过。但是,每一位的高阻态结束时间不一定相等。此外,字符的显示,有一定的延时,延时较小,所以字体显示比较连贯,而且是每个字依次显示。4.1.3 状态机图4.3 状态机示意图4.3 电路下载测试分析电路下载后,按照管脚图,对应接线,结果如下:图4.4 实验结果示意图一图4.5 实验结果示意图二分析:上图是在原程

温馨提示

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

评论

0/150

提交评论