




已阅读5页,还剩48页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于FPGA实现数据LCD显示设计毕业论文目 录1 引言11.1 本课题的背景和意义11.2 本课题研究的主要内容、重点以及难点11.2.1 主要研究内容与重点11.2.2 主要难点11.3 该系统的需求分析11.3.1 预期达到目标21.3.2 预期理论达到目标21.3.3 预期技术达到目标22 系统概要设计32.1 核心控制方案的选择32.2 显示部分方案的选择32.3 总体方案框图43 系统硬件详细设计73.1 电源模块的设计73.2 显示电路模块的设计83.3 DS1302时钟模块的设计123.4 DS18B20温度模块的设计143.5 蜂鸣器模块的设计153.6 按键控制模块的设计164 系统软件详细设计184.1 本课题系统设计的要求184.2 系统设计总体框图184.3 LCD工作方式185 系统各模块的设计216 系统开发所需资源以及所有语言的简述236.1 FPGA的发展历程236.1.1 FPGA的实现原理246.1.2 查找表的工作原理246.1.3 基于FPGA逻辑实现的原理246.1.4 FPGA的设计方法256.1.5 FPGA的设计流程256.2 液晶显示器的选用276.2.1 TN-LCD以及STN-LCD原理276.2.2 STN-LCD技术驱动方法276.3 时钟芯片DS1302简介286.4 温度传感器DS18B20简介286.5 硬件描述语言(Verilog HDL)简介296.6 Quartus II软件综述30系统制作及调试过程中的问题32总 结33谢 辞34参考文献:35附录36ii引言1.1 本课题的背景和意义钟表给人们生产生活带来了极大的方便。万年历是一种基于FPGA实现的作品,和机械式时钟相比具有更高的准确性以及直观性,不仅无机械装臵,还有更长的使用寿命,所以得到了广泛的使用。万年历从原理上讲是一种典型的数字电路,包括了组合逻辑电路和时序电路1。此次设计和制做电子万年历是为了了解一些相关数字钟的原理,从而学会动手制作万年历。并且通过万年历的制作进一步了解在制作中用到的中小规模集成电路的作用、原理及使用方法,且通过它可以进一步学习与掌握各种组合逻辑电路与时序电路的原理和使用方法。本课题主要的任务是设计基于FPGA实现数据的LCD显示,顾及好程序的易用性,以致方便后面模块的移植和应用。最后能在LCD上的任意位置可以显示任意的16*16D的中文字符以及16*8的英文字符等等,另外还要能依据输入数据的变化而变化LCD上显示相应的内容。还要能将储存在模块中的图片数据可以正常地显示在LCD上。该课题的研究在一定的程度上有助于FPGA的系列产品的开发和改善,特别是在使用到LCD得采用FPGA的产品的开发上。同时也可以大大得缩短了FPGA的开发时间。另外,看在模块的易用性,也将会使得更多采用FPGA的产品开发上出现LCD,增加了人机之间的交互性,为这一行业和我们以后得生活带来新的进展。1.2 本课题研究的主要内容、重点以及难点1.2.1主要研究内容与重点本课题的主要内容是基于FPGA实现数据LCD显示的研究,并顾及程序的易用性以方便以后模块的移植与应用。该课题设计关联到FPGA的应用与选择、LCD驱动选择、字符显示模式的研究等知识。并利用QUARTUS II软件实现相关各个模块的设计,在FPGA上实现对LCD的显示控制,显示任意字符、温度以及时钟。1.2.2主要难点(1)12864-12的液晶模块指令集比较复杂,使用FPGA来设计需要定义的变量以及状态将会比较多;(2).在中英文字符的显示部分程序中要考虑程序的易用性,方便以后移植后的应用;1.3 该系统的需求分析从用户的角度上来看,能够方便直接的显示所需要显示的信息,有中文字符、英文字符、实时时间、实时温度等等,而且稳定、清晰无串扰,LCD显示屏各亮度均匀、充足。从功能的角度上来看,能够使用程序来控制所需要显示的信息,中文字符、英文字符、实时时间、实时温度等等,往后还可以根据需求进行添加所需要的功能,如闹钟功能、报警功能等等。从管理的角度上来看,能够方便的控制所需要改变的信息。比如本次设计所显示的时间,可通过按键来管理调节。1.3.1 预期达到目标本课题研究的目标主要有以下这些功能:采用FPGA来控制LCD在任意位置显示出任意中文和英文字符,然后在这两个基本的功能之上再添加一些创新性的功能,人类每天都在进步着,然而进步的过程中脱离不了时间和温度。可想而知,这两样东西在日常生活中是必不可少的。所以我在显示中英文字符的基础上添加了万年历及所在环境的温度。这给人们的日常生活带来了很多方便。1.3.2 预期理论达到目标(1)学会FPGA对LCD的控制原理,为课题研究做好充分准备;(2)掌握FPGA对LCD的显示控制,让所有开发者都能够较为容易地通过这些显示控制模块,在液晶显示屏上显示预期的内容;1.3.3 预期技术达到目标(1)使中文字符在LCD上能够正常显示;(2)使英文字符在LCD上能够正常显示;(3)输入变动的数据能够在LCD上的同步刷新显示;(4)使万年历在LCD上能够正常显示;(5)使当时环境的温度系数在LCD上能够正常显示;2 系统概要设计2.1 核心控制方案的选择方案一:使用单片机作为核心控制芯片用单片机实现,可以用AT89S52单片机实现128*64液晶显示屏显示。程序方面可以用C语言来完成,也可用汇编语言来完成。方案二:使用FPGA作为核心控制芯片采用EDA的自顶向下的思想,使用的软件是QUARTUS II9.1,可以使用Verilog语言,可以用VHDL语言。以EP2C8T1448作为核心的控制芯片。方案三:使用DSP作为核心控制芯片系统采用TMS320F2812DSP芯片来实现系统的控制。TMS320F2812DSP有多达56个通用数字量输入输出端口(GPIO),其中绝大部分是通用I/O和专用功能复用引脚。通常情况下,TMS320F2812的大多数I/O引脚都用作专用功能引脚。数字量I/O端口模块采用了一种灵活的配置方法控制复用引脚的功能,GPIOMux寄存器用来选择F281x和C281x引脚的操作模式,可以通过该寄存器独立设置每个引脚的功能(数字量I/O或外设专用I/O)。如果选择数字量I/O模式,可以通过GPxDIR寄存器配置数字量I/O的方向,并通过寄存器GPxQUAL进一步消除数字量I/O引脚的噪声信号。此外,处理器提供GPxSET和GPxCLEAR寄存器对数字量进行置位或清零,还可以GPxDAT寄存器独立读/写I/O信号。方案四:使用CPLD作为核心控制芯片采用的是CPLD+SRAM的方案来实现通用液晶驱动电路的设计。由于CPLD操作灵活、开发迅速、适用范围广、投资风险低、可多次编程擦写并可在系统编程,同时可针对特定型号的液晶模块进行编程,故可实现特定效果和参数的底层驱动3。这四种方法都能实现汉字的显示,尽管设计的思路不同,但最终的效果是一样的。考虑到单片机的设计方法更适合用点阵LED的显示设计方面,而FPGA的设计方法明显更适合用于LCD的汉字显示。应用到实际当中去,本系统要求能够同时处理三路的信号(RBC,WBC,PLT),而且从前面的每路A/D转换电路出来的脉冲信号周期大概为40s。所以,如果想要实时地、不失真地对所需信号进行采集和处理,必须使用处理速度较高的信号处理芯片。然而普通单片机的处理速度已经不在满足系统的需求,因此必须采用以DSP、FPGA或者CPLD为核心的处理器。但是,由于我们对DSP不是很熟悉,如果采用DSP有可能会加大编程或者调试难度,延长了研发的周期,所以我们也不采用该芯片;其他方面,如系统中对脉冲统计的部分需用到RAM,CPLD并没有自带的RAM模块,对外部的RAM操作处理起来比较麻烦,而FPGA采用VERILOG HDL语言和图形输入,DSP-Builder等混合编程的方式,又具有自带的RAM模块,操作也比较灵活。故,本系统自然采用FPGA中CycloneII芯片EP2C5T144C8来实现。2.2 显示部分方案的选择方案一:使用数码管显示使用多位数码管显示,显示不灵活。方案二:使用LCD1602液晶显示微功耗、体积小、显示内容丰富、超薄轻巧,常用在袖珍式仪表和低功耗应用系统中。虽然功能跟LCD12864的功能基本上一样,但是不能显示本课题所需要显示的中文字符。方案三:使用LCD12864-12液晶显示液晶显示模块具有体积小、功耗低、显示内容丰富、超薄轻巧等优点。本方案采用LCD12864-12,液晶显示模块是12864点阵的汉字图形型液晶显示模块,可显示汉字及图形,内置8192个中文汉字(16X16点阵)、128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM)。可与CPU直接接口,提供两种界面来连接微处理机:8-位并行及串行两种连接方式。具有多种功能:光标显示、画面移位、睡眠模式等。采用单+5V供电,外围电路简单,价格便宜,具有很高的性价比。而数码管虽然便宜,但显示单调。占用过多的I/O。2.3 总体方案框图复位电路模块电源部分FPGA系统DS1302时钟芯片LCD显示DS18B20数字温度传感器下载模块按键控制模块图2-3 系统总框图系统的总体框图如图3-2所示,以FPGA以系统的核心,分以上几个模块:电源模块、时钟模块、温度模块、下载模块、按键模块、复位电路模块以及显示模块。本次毕业设计采用Altium Designer 10设计PCB版图,设计出的硬件部分没有那么的难,其中主要的元器件有以下这几种:EP2C8T144C8、12864-12液晶模块、DS1302时钟芯片模块以及DS18B20温度传感器。 电源模块的作用是为该系统提供可用电源。时钟模块的作用是为该系统提供时钟信号,使系统能够准确的显示实时时间。温度模块的作用是为该系统采集周围环境的温度信号,使系统能够准确的显示周围环境的实时温度。下载模块是将程序现在至系统中去,是系统能够按照程序的命令来运行。按键控制模块的作用是可以预留,也可以用来控制显示的时间信号的调节。LCD显示模块的作用是显示系统所需要显示的内容。系统流程图:开始端口定义传递显示的数据驱动12864的底层文件设置初始状态状态机,进程2状态机,进程3判断当前的状态,给出其要转化的下个状态写指令,复位任意数据状态机,进程1状态机的初始化是否复位是否复位判断当前状态根据当前状态决定是写指令还是写数据分频后时钟赋值液晶使能端读写端赋为0 ,即一直写数据写完数据结束底层文件状态设置,40个状态时钟分频图2-3.1 系统流程图具体的步骤如下:(1)开始(2)定义端口(3)传递显示的数据(4)驱动12864的底层文件(5)底层文件的运行(6)状态设置(7)时钟分频(8)状态机,进程1状态机的初始化(9)设置初始状态(10)判断是否复位,如果复位了,继续往下执行,如果不是,返回第9步,初始状态的设置。(11)状态机,进程2(12)判断当前的状态(13)状态机,进程3 (14)判断是否复位,如果复位了,写指令,复位任意数据,如果没有复位,就往下执行(15)判断当前状态(16)根据当前状态决定是写指令还是写数据(17)分频后时钟赋值给液晶使能端(18)读写端赋为0 ,即一直写数据(19)写完数据(20)结束3 系统硬件详细设计3.1 电源模块的设计 图3-1 电源模块图如上图3-1所示,该模块的输入电压为5V,经过二极管的单项导通性来保护电源。再经过两个LM1117抵押差线性调压器之后分别调成3.3V和1.2V。因为该系统所需的电源不仅仅是5V,还有3V和1.2V。故,该电源模块很集全,集成度很高。LM1117是一个低压差电压调节器系列。其压差在1.2V输出负载电流为800mA时为1.2V。它与国家半导体的工业标准器件LM317有相同的管脚排列。LM1117有可调电压的版本通过2个外部电阻可实现1.25V到13.8V输出电压范围。另外还有5个固定电压输出1.8V、2.5V、2.85V、3.3V和5V的型号。LM1117提供电流限制和热保护。电路包含1个齐纳调节的带隙参考电压以确保输出电压的精度在1%以内。LM1117系列具有LLP、TO-263、SOT-223、TO-220和TO-252 D-PAK封装。输出端需要一个至少10uF的钽电容来改善瞬态响应和稳定性。滤波和稳压电路部分:图3-1.1 滤波稳压电路图由上图3-1.1所示,3.3V的滤波稳压电路是通过16个电容来进行滤波和稳压过程,而1.2V的滤波稳压电路时通过8个电容来进行滤波和稳压过程的。该电路的作用是把交流电压变成稳定的大小合适的直流电压。电源滤波电容的大小,平时做设计,前级用4.7u,用于滤低频,二级用0.1u,用于滤高频,4.7uF的电容作用是减小输出脉冲和低频干扰。0.1uF的电容作用是减小由于负载电流瞬时变化引起的高频干扰。一般前面那个越大越好,两个电容值相差大概100倍左右。电源滤波,开关电源,要看你的ESR(电源的等效串联电阻)有多大,而高频电容的选择最好在其自谐振频率上。大电容是防止浪涌,机理就好比大水库防洪能力更强一样;小电容滤高频干扰,任何器件都可以等效成一个电阻、电感、电容的串并联电路,也就有了自谐振,只有在这个自谐振频率上,等效电阻最小,所以滤波最好。3.2 显示电路模块的设计图3-2 显示电路模块图显示电路如上图3-2所示,该模块的主要芯片是12864-12LCD显示器,通过电位器可以调节液晶显示器的亮度问题。该电路的作用能够稳定、清晰无干扰、亮度均匀、充足。液晶显示器LCD12864模块管脚和FPGA的相关连接如下:时钟CLK 17LCD12864数据位第8位LCD_D7 30LCD12864数据位第7位LCD_D6 31LCD12864数据位第6位LCD_D5 32LCD12864数据位第5位LCD_D4 52LCD12864数据位第4位LCD_D3 40LCD12864数据位第3位LCD_D2 41LCD12864数据位第2位LCD_D1 42LCD12864数据位第1位LCD_D0 43LCD12864使能端LCD_E 44LCD12864指令数据选择端LCD_RS 47LCD12864读写端LCD_RW 45 系统复位端RST_N 65图3-2.1 液晶显示器LCD12864模块管脚和FPGA的连接图本次设计我选用了带有ST7920驱动的LCD12864-12模块来实现设计以及调试。该模块自带有字库。制作的过程中,在12864-12汉字图形点阵液晶显示模块当中,可显示有汉字和图形,内置了8192个中文汉字(16X16点阵)、128个相应的字符(8X16点阵)以及64X256点阵显示RAM(GDRAM)。采用单+5V供电,外围电路简单。(1)主要的技术参数和显示特性如下所示:电源:VDD 3.3V到+5.5V之间(内置有升压电路,不需负压)显示的内容:128 X 64=8192行显示的颜色:黄和绿显示的角度:6:00种直视LCD的类型:超扭曲向烈型与FPGA的接口:8位或者4位并行/3位串行配置有LED背光(2)外形的尺寸如下:外观的尺寸:937012.5mm 视域的尺寸:7240mm表3-2.1 外形的尺寸ITEMNOMINAL DIMENUNIT模块体积93x70x12.5mm视域72.0x40.0mm行列点阵数128x64dots点距离0.52x0.52mm点大小0.48x0.48mm(3)模块各个引脚的说明如下表:表3-2.2 模块的引脚逻辑工作的电压(VDD):3.3V到5.5V之间接地(GND):0V工作环境的温度(Ta):0到+50(常温)之间/ -20到70(宽温)之间(4)、接口时序如下:模块存在并行连接和串行连接两种连接方法(时序图如下所示):1) 8位并行连接的时序图:图3-2.2 MPU写资料到模块中去图3-2.3 MPU从模块中读取出资料12864串口的连接方式如下图3-2.4所示:图3-2.4 12864串口的连接方式串行数据传送过程共分为三个字节来完成:首先第一字节是:串口控制格式为 11111ABC A是数据传送方向的控制:H是表示数据从LCD到MCU,而L是表示数据从MCU到LCD。 B是数据类型的选择: H是表示数据室显示的数据,而L是表示数据室控制的指令 C为固定值,为0其次第二字节是:(并行)8位数据中的高4位格式为DDDD0000最后第三字节是:(并行)8位数据中的低4位格式为DDDD0000串行接口的时序参数有:(测试环境条件: T=25 VDD=4.5V)注意:首先当模块在接受指令之前,这时微处理器首先得确认自己内部是否处于非忙碌状态,即读BF的标志时BF必须为0,才可以接受新一条指令;如果在送出指令之前并没有检查BF的标志,那么就会在前一个指令与这个指令的中间必须延迟存在一段比较长时间,就是等待前一个指令确定执行完成,每个指令的执行时间可以参考指令表中的个别指令说明。其次“RE”是基本指令集和扩充指令集的选择控制元,每当你变更“RE”位元之后,后面的指令集将会维持在最后的状态中,除非你再次变更了“RE”位元,不然使用同意指令集时,不需要每次都重新设置“RE”位元。3.3 DS1302时钟模块的设计图3-3 DS1302时钟电路图该时钟模块以DS1302为核心,使用的晶振的大小是32.768KHZ。其中晶振的作用是给系统正常工作提供了稳定的时钟信号。该模块与其他模块不同的地方是它的电源是独立的,不受其他电源的影响,蓄电池为DS1302提供电源,保持实时时钟,即使总电源断开了,DS1302仍然保持工作,所以该时钟的精确度很高,10年左右的误差仅为几秒的时间,很受欢迎。DS1302模块管脚和FPGA的相关连接如下:时钟芯片DS1302时钟端SPI_clk 59时钟DS1302片选端SPI_cs 63时钟DS1302数据端SPI_data 60图3-3.1 DS1302的外部引脚分配各引脚的功能为如下:(1)Vcc1:主电源接口;(2)Vcc2:备份电源接口。如果Vcc2Vcc1+0.2V时候,就开始由Vcc2向DS1302提供电源,当Vcc2 Vcc1的时候,由Vcc1向DS1302提供电源;(3)SCLK:串行时钟的输入接口;(4)I/O:三线接口时双向数据线接口;(5)CE:输入信号接口,在读和写数据的期间,必须为高电平。该引脚拥有两个功能:第一个功能是,CE开始控制字访问移位寄存器的控制逻辑功能;第二个是,CE提供了结束单字节或者多字节数据传输方法的功能。(6)用来定义DS1302是运行12小时模式还是24小时模式小时的是寄存器(85h、84h)的位7。当其为高电平时,选择了12小时模式,相反为24小时模式。在12小时模式中,当位5为1时,表示PM相反为AM。在24小时模式中,位5却是第二个10小时位。(7)时钟暂停标志(CH)是秒寄存器(81h、80h)的位7。当该位7的值为1时,时钟振荡器出现停止,DS1302就开始处于低功耗状态;当该位7的值为0时,时钟就开始运行。(8)写保护位(WP)是控制寄存器(8Fh、8Eh)的位7,而且其它7位都置0。进行对时钟和RAM的写操作之前,WP位必须置0。如果位为1的话,其中写保护位会防止对任一寄存器的写操作行为。表3-3 静态RAM地址读寄存器写寄存器BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0范围81h80hCH10秒秒00-5983h82h10秒分00-5985h84h12/24010时时1-12/0-23AM/PM87h86h0010日日1-3189h88h00010月月1-128Bh8Ah00000周日1-78Dh8Ch10年00-998Fh8EhWP0000000控制字的最高有效位(位7)判断该位的逻辑值,如果该位为0,则不能把数据写入到DS1302中。如果为1,则可以把数据写入到DS1302中去。DS1302的位6:判断该位的逻辑值,如果该位为0,则表示的是其存取的是日历时钟数据,如果该位为1则表示存取RAM数据;DS1302的位5到位1(A4A0):代表了指示操作单元的地址;DS1302的最低有效位(位0):判断该位的逻辑值,如为0,表示要进行写操作,如果为1表示进行读操作。因为控制字都是从最低位开始输出的。当在控制字指令输入后的下一个SCLK时钟的出现上升沿时,数据就被写到DS1302中去,从最低位(0位)开始进行数据输入。如果,在紧跟8位的控制字指令后的下一个SCLK脉冲出现下降沿时,就进行读出DS1302的数据,而且读出的数据也是从最低位到最高位顺序读出。3.4 DS18B20温度模块设计图3-4 DS18B20温度传感器模块图该温度模块以芯片DS18B20为核心。DS18B20模块管脚和FPGA的相关连接如下:温度芯片DS18B20数据端one_wire 48表3-4 DS18B20温度与数字对应表温度 数据输出(二进制) 数据输出(十六进制)+125 0000 0111 1101 0000 07D0h +85 0000 0101 0101 0000 0550h +25.0625 0000 0001 1001 0001 0191h +10.125 0000 0000 1010 0010 00A2h +0.5 0000 0000 0000 1000 0008h 0 0000 0000 0000 0000 0000h -0.5 1111 1111 1111 1000 FFF8h -10.125 1111 1111 0101 1110 FF5Eh -25.0625 1111 1110 0110 1111 FE6Eh -55 1111 1100 1001 0000 FC90h测温分辨率比较高,达到912位,精度精确到0.5。它可以将温度直接转化成串行数字信号,所以特别适合与FPGA、单片机等结合一起来使用,然后直接读取温度数据。DS18B20的数字和温度相对应的数据表如表4.3.3e所示。可以很简单明确的读取温度系数。(1)DS18B20的相关引脚介绍:分为黄色、黑色、红色l 黄色的为数字信号的输入/输入端l 黑色的为电源地l 红色的为外接供电电源的输入端(2)DS18B20主要一些特性:l 独一的单线接口仅仅只需要一个端口的引脚来进行通讯l 每个器件都各自有唯一的64位序列号存储在其内部存储器当中l 可以应用于简单的多点分布式测温。l 还可以通过数据线来提供电源,而且供电的范围在3.0V到5.5V之间。l 其能够测量的温度范围在-55度到125度之间(67257),当温度在-10度到85度之间的时候,精确度为0.5度。l 使用者可以选择温度计分辨率在912位之间。l 将温度转换为12位数字所用到的时间最多为750msl 用户还可以设置非易失性温度报警,温度报警条件为报警搜索命令识别了并标志超过程序。l 温度控制、工业系统、消费品、温度计以及任何热感测系统都有应用该温度传感器。(3)DS18B20的内部结构主要由以下四个部分来组成:1)64位光刻ROM2)温度传感器3)非挥发的温度报警触发器TH4)TL配置寄存器。3.5 蜂鸣器模块的设计图3-5 蜂鸣器模块图该模块由一个三极管和蜂鸣器来组成,通过三极管的导通情况来驱动蜂鸣器的工作于非工作状态。蜂鸣器于FPGA的相关脚连接如下:蜂鸣器和地64脚相连接。蜂鸣器主要分为以下两种类型:压电式蜂鸣器以及电磁式蜂鸣器。振荡器、电磁线圈、磁铁、振动膜片和壳等组成电磁式蜂鸣器。电源接通之后,振荡器所产生的音频信号电流经过电磁线圈,从而使电磁线圈产生了磁场,在电磁线圈与磁铁的相互作用之下,振动膜片进行周期性地振动发声。多谐振荡器、压电蜂鸣片、阻抗匹配器、共鸣箱以及外壳等组成压电式蜂鸣器。晶体管或集成电路构成多谐振荡器,当电源接通之后(在1.515V直流工作电压之间),多谐振荡器开始起振,输出了在1.5KHZ和2.5kHZ之间的音频信号,进而阻抗匹配器推动压电蜂鸣片发出声音。本次课题主要用到的是电磁式蜂鸣器:蜂鸣器发声的原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它,单片机IO引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。通过一个三极管C8550来放大驱动蜂鸣器。蜂鸣器的正极接到VCC(5V)电源上面,蜂鸣器的负极接到三极管的发射极E,三极管的基级B经过限流电阻R1后由FPGA的PIN_64引脚控制,当PIN_64输出高电平时,三极管T1截止,没有电流流过线圈,蜂鸣器不发声;当PIN_64输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。因此,我们可以通过程序控制PIN_64脚的电平来使蜂鸣器发出声音和关闭。程序中改变单片机PIN_64引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。另外,改变PIN_64输出电平的高低电平占空比,则可以控制蜂鸣器的声音大小,这些我们都可以通过编程实验来验证。3.6 按键控制模块的设计图3-6 独立键盘图以上的独立的按键是预留出来的,为以后增加功能设计预留的,比如说闹钟功能,报警功能等等。其中也可以用来控制调节LCD液晶显示器上的时间调节,与复位模块的复位键是分开的。复位电路部分: 图3-6.1 复位电路图复位电路如图3-6.1所示,其作用就是利用它把电路恢复到起始状态。在上电或复位过程中,控制CPU的复位状态:这段时间内让CPU保持复位状态,而不是一上电或刚复位完毕就工作,防止CPU发出错误的指令、执行错误操作,也可以提高电磁兼容性能。无论用户使用哪种类型的控制器,总要涉及到复位电路的设计。而复位电路设计的好坏,直接影响到整个系统工作的可靠性。许多用户在设计完系统,并在实验室调试成功后,在现场却出现了“死机”、“程序走飞”等现象,这主要是复位电路设计不可靠引起的。4 系统软件详细设计4.1 本课题系统设计的要求根据该毕设的系统设计要求,我们使用的是VERILOG HDL语言,利用Altera所提供的FPGA/CPLD开发集成环境(Quartus)来调试和开发。要求是能够方便地采用所开发的LCD控制模块来实现显示功能,在LCD屏幕上的任意位置显示任意的中文以及英文字符,同时可以根据输入的动态数据进行动态输出,另外还可以显示此时此刻的时间和当前环境的实时温度。4.2 系统设计总体框图初始化写入数据显示控制温度信号时钟信号英文字符中文字符写数据状态换行等控制起始RAM地址设置清屏功能设置显示开关的控制寄存器复位图4-2 系统设计总体框图系统设计总体框图如图4-2所示,当系统上电之后,FPGA首先会对系统进行了初始化操作,而且在初始化操作中最重要的一点是寄存器的复位、显示开关的控制、功能设置还有对显示屏幕进行清屏处理。然后再通过显示控制这一模块对LCD进行了显示控制。显示控制模块主要是负责在LCD上显示出多行字符时进行换行等操作,用户指定数据能够在屏幕的指定显示的位置时设置该位置所对应的RAM值,还有对LCD显示区域相对应的RAM进行写入的操作。其中的数据分别来自中英文字符模块,时钟模块和环境温度模块。对于此模块的设计中,主体结构是用状态机来实现的。4.3 LCD工作方式对12864的具体结构有了比较深入的了解,12864分左右两屏,像素点为128*64个像素点,行有128个像素点,列有64个像素点,行又设置为8页,在12864默认状态下中文字体都是16*16的大小,每个页包含8个像素行,所以要显示一个中文就需要2页;初始行的设定可以使得你要显示的字出现在任意你想要的位置。对液晶显示器的编程就是向DDRAM中写数据。在写DDRAM之前,需要先清除RAM,且左屏和右屏要分别进行清除。方法就是向RAM的所有单元写入0值。12864写驱动程序的时候需要写七个指令分别是:“检忙”,“写指令”,“写数据”,“写显示开关”,“写页”,“写列”,“写初始行”。NYNYYN将起始页地址存入BL页地址加1设置列地址显示RAM设置页地址LCD工作忙已显示64列页地址已设置8次结束开始系统初始化 清左屏RAM 清右屏RAM写入LCD左屏数据写入LCD右屏数据左右展开显示图4-3.1 向LCD写显示数据的流程图图4-3.2 液晶显示器的编程流程向LCD写显示数据的流程如上图4-3.1所示,首先将起始页地址存入BL中去,然后进行页地址列地址的设置。设置后开始判断LCD的工作状态,如果处于空闲状态,继续往下执行显示数据,如果LCD处于忙碌状态的话,返回列地址的设置。继而,判断LXD是否显示64列,如果已经显示了64列,页地址就进行加1,如果不是,回到列地址的设置。进而判断页地址是否设置了8次,如果显示了8次,就结束,如果不是返回页地址的设置。详细步骤如下:(1)将起始页存入BL中(2)设置页地址(3)设置列地址(4)判断LCD工作的状态,如果忙跳回上一步,如果不忙,往下执行(5)显示RAM(6)判断是否已经显示64列,如果没有显示64列,则跳回第三步。如果显示,继续往下执行(7)页地址加1(8)判断页地址是否已经设置8次,如果没有设置够8次,则跳回第二步。如果已经设置了8次,继续往下执行(9)结束液晶显示器的编程流程如上图4-3.2所示,开始进行系统初始化,接下来是清LCD左屏RAM,清完左屏然后继续清右屏。请屏之后进行数据的写入,首先对左屏写入数据,然后对右屏也写入数据,最后左右展开显示。然后回到清右屏步骤。详细步骤如下:(1)开始(2)进行系统初始化(3)清左屏RAM(4)清右屏RAM(5)写入LCD左屏数据(6)写入LCD右屏数据(7)左右展开显示5 系统的仿真图5-1 Verilog仿真波形图仿真图如上图5-2.3所示,能通过Verilog HDL程序,在QUARTUSII 9.1软件的编译仿真下,并在EDA试验箱上进行下载显示,验证程序的正确性。年月日模块仿真图5-2 年月日模块仿真图该仿真图显示的是09年5月份的,由图可以看出5月份有31天,当月份进入到下一个月的时候,日期day则变成1号,仿真结果无误。时分秒模块仿真图5-3 时分秒模块仿真图上图显示的是时分秒模块运行的仿真结果图,秒针每到60个计时数分钟才走动一次,秒针的走动需要由分频模块输出的1HZ的脉冲来带动,秒带分走,分带时走。秒计数最大到59时分钟计数加1,分也是到59时时钟计数加1。字符显示的数据选择:清除显示(对应状态机状态为CLEAR)对应的数据接口的数据(DB7DB0)为00000001,RS,RW为0;地址归位(对应状态机状态为RETURNCURSOR)对应(DB7DB0)的数据为00000010,RS,RW为0;点设定(对应状态机状态为SETMODE)选择整体画面不移位,DDRAM地址+1,因此对应DB7DB0数据为00000110,RS,RW为0;显示状态开(对应状态机状态为SWITHMODE),光标显示关,字符不反白,因此对应DB7DB0数据为00001100,RS,RW为0;游标和显示控制(对应状态机状态为SHIFT)选择AC=AC+1,因此对应DB7DB0数据为00010100,RS,RW为0;功能设定(对应状态机状态为SETFUNCTION)选择8为数据线接口,以及基本指令集动作,因此对应DB7DB0数据为00110000,RS,RW为0;DDRAM(对应状态机状态为SETDDRAM)地址的设定则根据需要设定,对应DB7DB0数据为1000000010011111之间,RS为1,RW为0;另外,根据模块引脚说明,FPGA还需要同时控制其他几个引脚。其中,为了选择并行的数据发送模式,PSB引脚应为H。RET引脚则由FPGA控制在经过一段时间的L复位后跳为H。6 系统开发所需资源以及所用语言的简述6.1 FPGA的发展历程FPGA作为这个时代一种可重复编程逻辑器件,现场可编程门阵列的研究发现是可编程逻辑器件发展变化的必然产物,它的出现在一定的程度上推动着可编程逻辑器件更进一步的发展。所以说,了解了可编程逻辑器件的的发展历程这一些知识,同时也就了解了FPGA的相关发展历程。20世纪70年代发展起来的一种新型器件受到了很多设计者的青睐,它就是可编程逻辑器件(FPGA)。它的一些应用不仅能简化了电路的设计,降低了所需的成本还能提高了系统的可靠性,因此给数字系统的设计方式带来了翻天覆地的变化。以微电子创作技术的不断进步和更新为基础是可编程逻辑器件发展的动力,它的结构以及工艺的变化经历了一个不断发展不断变革不断创新的过程。在20世纪70年代期间,早期的可编程逻辑器件只有3种器件,分别为可编程只读存储器、紫外线可擦除制度储存器和电可擦除只读储存器15。目前,FPGA器件已经成为当前社会主流的可编辑逻辑器件之一。经过将近20年来的发展和改革,可编辑逻辑器件已经取得了突破性的进步,资源无比的丰富,使用起来越来越方便。我想将来的可编程逻辑器件,密度会比现在的高、速度会现在的快、功耗会比现在的低,还有可能会增加更多新的功能,向着更含有技术型的方向比如说集成了可编程逻辑、CPU、储存期等组件的可编程单片系统(SOPC)发展。EP2C5T144C8如下图6-1所示:图6-1 EP2C5T144C8 各个引脚图6.1.1 FPGA实现的原理对于可编程逻辑器件来说,从实现原理方面上来讲,一般分为以下两种:(1)基于查找表加寄存器结构SRAM工艺的FPGA,它的集成密度比较高还有寄存器资源很丰富,偏向做时序逻辑设计这方面,比较常见于上万门以上的设计,例如数字信号处理以及各种算法的实现等等;(2)基于乘积项结构和EEPROM工艺的FPGA,它的集成密度比较低,乘积项资源也很丰富,偏向做组合逻辑设计这方面,常见于5000门以下的设计,例如编码、译码电路等等。6.1.2 查找表的工作原理由学习得知识可知查找表实质上就是一个RAM。现阶段在FPGA中多使用四输入的查找表(LUT),因此每个LUT可以看作是一个具有4位地址线的161的RAM。每当用户通过原理图或者HDL语言描述一个逻辑电路之后,FPGA开发软件会自动而且很快的计算出逻辑电路尽有可能的结果,并会把计算出的结果事先写入了RAM。故,每当输入一个信号进行逻辑运算就相当于输入一个地址进行查表,找出地址相对应的内容,然后输出结果。6.1.3 基于FPGA逻辑实现的原理以下以一个简单的电路为例子,具体来说明FPGA是怎么样利用以上结构实现逻辑的,电路如下图6-1.1所示:图6-1.1 乘积项电路图如果组合逻辑的输出(AND3的输出)为f,则从上图可以得出f的计算公示为f=(A+B)*C*(!D)=A*C*!D + B*C*!D (以!D表示D的“非”)而FPGA将是以下面的方式来实现组合逻辑f的,电路如下图6-1.2所示: 图6-1.2 乘积项电路图2A,B,C,D分别是由FPGA芯片的管脚输入之后进入了可编程连线阵列(PIA),在它的内部会产生有以下8个输出:A,A反,B,B反,C,C反,D,D反。图中每一个“叉”表示线路相连(即可编程熔丝呈导通状态),所以得出f的计算式为:f= f1 + f2 = (A*C*!D) + (B*C*!D) 。这样组合逻辑就实现了以下的功能。但是图3电路中D触发器实现比较简单些,它直接利用了宏单元中那些可编程的D触发器来实现。时钟信号CLK从I/O脚输入之后进入了芯片内部全局时钟专用的通道,然后直接连接到可编程触发器D的时钟端中去。可编程触发器D的输出端与I/O脚是相连的,把结果输出进芯片管脚。因此FPGA就完成了图6-1.2所示电路所完成的功能。6.1.4 FPGA的设计方法FPGA的常用设计方法包括2种,有“自顶向下”和“自下而上”。当前,大规模FPGA设计大都是选择“自顶向下”的这种设计方法。所谓“自顶向下”设计方法,简单来讲,无非就是使用可以完全独立于芯片厂商和其产品结构的描述语言,在功能级对设计产品进行了定义,并且结合仿真技术的功能,用来确保设计的正确性,等到功能定义完成之后,利用逻辑综合技术,再把功能描述转换成一些具体结构芯片的网表文件格式,输出到厂商的布局布线器进而开始布局布线。布局布线的结果还可以反标回同一仿真器中,进行包括功能以及时序的后验证来确保布局布线所会带来的门延时以及线延时不会影响到设计的性能。“自顶向下”的设计方法优势是显而易见的。第一,因为功能描述完全可以独立于芯片的结构,最初阶段,设计师们可不受芯片结构的束缚,一心进行了产品设计,所以少走弯路,避免了传统设计方法带来的重新再设计的风险,从而大大缩小了设计所需周期。第二,技术上保证了设计的再利用。当前的电子产品逐渐向模块化方向发展。什么是模块化,模块化指的是拿以往设计的成果进行修改、组合、再利用的步骤,产生了全新或者派生的设计。而且“自顶向下”的设计方法的功能描述可以和芯片的结构没有关联。所以,我们可以以一种IP(Intelligence Property 知识产权)的方式来存档,以方便日后重新利用。第三,设计规模得以很大提高。用简单的语言描述就可以完成复杂的功能,而且并不需要手工来绘图。第四,芯片选择比较灵活。设计师可以在较短的时间内采用多种结构芯片来完成同一种功能描述,并不是唯一的。故能够在设计规模、速度、芯片价格以及系统性能更方面的要求进行平衡,然后选择最佳的设计结果。当下我们最为常用的功能描述语言是使用均已成为国际标准的两种硬件描述语言:VERILOG HDL语言和VHDL语言。6.1.5 FPGA的设计流程FPGA设计的方法可以归纳为一个比较简单的设计流程。FPGA开发采用的是一种高层次设计“自顶向下”方法,符合了当今芯片的开发。这种“自顶向下”设计方法首先得从系统的设计着手,功能方框的划分和结构设计在顶层进行,仿真、纠错在方框图一级进行,并且用硬件描述语言对高层次的系统进行描写,在系统一级(层)中进行验证。进而使用综合优化工具生成所需具体门电路的网表,它对应的物理实现级(层)不仅可以是印刷电路板还可以专用于集成电路。因为设计的主要仿真以及调试过程是在高层次上进行的,这样不仅有利于更早的发现结构设计上的不足,避免设计工作的无用功,同时也大大减少了逻辑功能进行仿真的工作量,提高了设计的效率。编程和编译文件逻辑综合和优化目标期间进行布线适配编程下载目标器件硬件的仿真和测试图6-1.3 FPGA设计方法流程图具体步骤如下:(1)编程和编译源文件。开始需要用文本方式或图形方式将设计的思路表达出来,再进行排错编译,为了进一步的逻辑综合做好充分的准备。常用的源程序输入方式有以下几种:原理图输入方式和文本输入方式。(2)逻辑综合和优化。将源文件经过一系列的操作之后,分解为一系列的逻辑电路和对应的联系,最后得出门级电路甚至更加底层的描述文件。然后生成了和FPGA/CPLD结构相对应的网表文
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东体育场所管理办法
- 2025年综合类-个人理财-第一章银行个人理财业务概述历年真题摘选带答案(5卷单选100题合辑)
- 天津高层消毒管理办法
- 2025年综合类-世博会知识竞赛-世博会知识竞赛-旅游法知识竞赛历年真题摘选带答案(5卷单选100题合辑)
- 大楼人员出入管理办法
- 外部信息使用管理办法
- 山东幼师编制管理办法
- 天津软件认定管理办法
- 大学食堂安全管理办法
- 小学电子印章管理办法
- 党徽党旗条例全面解读
- 2025至2030中国原煤行业市场深度发展趋势与前景展望战略报告
- 汽车总装座椅轮胎输送线技术要求
- 六大茶类培训
- 2025至2030年中国间苯二甲醇市场分析及竞争策略研究报告
- 外事安保活动方案
- 2025年 江西省公安厅警务辅助人员招聘考试笔试试卷附答案
- 2025年抗菌药物培训资料
- 2025年雅思考试写作专项预测试卷:雅思写作高分句型解析
- 购物中心威士忌酒吧行业深度调研及发展项目商业计划书
- 猪场生猪销售管理制度
评论
0/150
提交评论