基于处理器核的LCD驱动电路设计.doc_第1页
基于处理器核的LCD驱动电路设计.doc_第2页
基于处理器核的LCD驱动电路设计.doc_第3页
基于处理器核的LCD驱动电路设计.doc_第4页
基于处理器核的LCD驱动电路设计.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

西南科技大学实验报告课程名称: 基于FPGA的现代数字系统设计 实验名称:基于处理器核的LCD驱动电路设计 姓 名: 学 号: 20121725 班 级: 电子1201 指导教师: 西南科技大学信息工程学院制2基于处理器核的LCD驱动电路设计一、 实验原理 本次实验将完成的设计是一个基于PicoBlaze的SoPC系统,其示意图如图2.1所示。图2.11、PicoBlaze微处理器核PicoBlaze是一个8位RISC(精简指令集计算机)微处理器,是由VHDL语言开发的软处理器内核包,已经被专门设计和优化,在Xilinx公司的Virtex、Spartan-II系列以上FPGA与CoolRunner-II系列以上的CPLD器件设计中以IP核的方式提供,使用是免费的。在XC3S500E的FPGA中,只用到了96个Silice,也就是只占用到5%的逻辑资源。PicoBlaze执行一条命令需要2个时钟周期,在Spartan3E Starter Kit板上以50MHz时钟为例,PicoBlaze也能达到25MIPS的性能。PicoBlaze起初命名为KCPSM,是Constant(K) Coded Programmable State Machine的简称,意为常量编码可编程状态机。现在已有三个版本:(1)KCPSM,其支持类型有Virtex, Virtex-E, Spartan-II和Spartan-IIE FPGA;(2)KCPSM2,其支持类型有Virtex-II, Virtex-II Pro FPGA;(3)KCPSM3,其支持类型有Spartan-3, Virtex-4, Virtex-II, Virtex-II Pro, Virtex-5, Spartan-6, Virtex-6 FPGA。PicoBlaze 8 位微处理器内部结构如图2.2所示。PicoBlaze处理器IP Core由全局寄存器、计算逻辑单元(ALU)、程序流控制标志和复位逻辑、输入/输出(I/O)、中断控制器等几大部分构成。Picoblaze提供了49个不同指令,16个寄存器(CPLD为8个),256 个直接或间接的可设定地址的端口,1 个可屏蔽的、速率为35MIPS 的中断。它的性能超过了传统独立元器件组成的微处理器,而且成本低,使得PicoBlaze在数据处理和控制算法领域有着广泛的应用前景。由于可编程部分也完成嵌入,PicoBlaze可与子程序和外围设备结合起来完成特殊的设计。图2.2PicoBlaze是由VHDL语言开发的小型8位软处理器内核包,其汇编器是简单的命令行式可执行文件KCPSM3.exe,用汇编语言编写的程序经过编译后放入FPGA的块RAM存储器区。KCPSM3支持程序的指令可以到1024(使用一个BRAM),多个KCPSM3处理器可以用于处理不同的任务。图2.3是PicoBlaze的应用框架示意图。表2.1列出了PicoBlaze的各个端口并给予了说明。图2.3表2.1端口功能I/O端口功能I/Oinstruction18位指令输入inputaddress10位地址线outputin_port8位输入接口inputport_idI/O地址控制outputinterrupt中断输入inputwrite_strobe写控制outputreset复位inputread_strobe读控制outputclk时钟输入inputinterrupt_ack中断响应outputinstruction18位指令输出outputout_port8位输出接口output2、2X16字符液晶显示器及其驱动液晶显示器以其微功耗、小体积、使用灵活等诸多优点在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。液晶显示器通常可分为两大类,一类是点阵型,另一类是字符型。点阵型液晶通常面积较大,可以显示图形;而一般的字符型液晶只有两行,面积小,只能显示字符和一些很简单的图形,简单易控制且成本低。Spartan 3E-Starter开发板上使用了一个216字符LCD,其内嵌一个Sitronix ST7066U图形控制器,功能与三星的S6A0069X或KS0066U、Hitachi的HD44780(国内使用较广)和SMOS的SED1278一样。与FPGA的连接关系如图2.4所示。图2.4该控制器有三个内部存储空间DDRAM、CGROM和CGRAM,每个都有专门用途。送数据给这些空间之前必须初始化。(1)显示数据RAM(DDRAM)存储要送显的字符编码。绝大多数应用中,都是与DDRAM相结合的。存储在DDRAM中的字符编码所涉及的特定的字符位图要么存在CG ROM字符设置中,要么存在用户自定义的CG RAM的字符设置中。图2.5给出了显示器32位字符位置的默认地址。字符的最上行存储在地址0X00与0X0F之间。第二行的字符存储在地址0X40与0X4F之间。图2.5从物理上讲,DDRAM一共有80个字符位置,每行有40个字符。位置0X10到0X27和0X50到0X67之间的地址用来存储其它非显示数据。此外,这些位置也可以存储只有使用控制器的显示移位功能才能显示的字符。往DDRAM读或写之前,DD RAM地址命令得初始化地址计数器。写DDRAM数据使用写数据到CGRAM 或DDRAM命令,读DDRAM使用从CGRAM或DDRAM命令读数据。DD RAM地址计数器要么在读或写之后保持常数,要么自动增加1或自动减1。(2)字符产生器RAM(CGRAM)提供空间给8位的自定义字符位图。每个自定义字符位由8行位图的5个点组成。本实验未使用到CGRAM。(3)字符产生器ROM(CGROM)包括每个事先定好的字符的字体位图。字符ROM内置了192个常用字符,存储有ASCII英文字符和日本字符,英语/罗马字符存储在CG ROM相应的ASCII编码地址中。如图2.6,字符码0x000x0F为用户自定义的字符图形RAM(对于5X8点阵的字符,可以存放8组,5X10点阵的字符,存放4组),0x200x7F为标准的ASCII码,0xA00xFF为日文字符和希腊文字符,其余字符码(0x100x1F及0x800x9F)没有定义。字符编码存储在DDRAM 中,每个字符的位置与CGROM的位置按顺序对应。例如,0X53的一个16进制的字符编码存储在DDRAM中的位置显示字符是“S”。0X53最上面的高4位等同于DB7:4=0101和最低的低4位等同于DB3:0=0011。字符“S”就显示在屏幕上了。图2.6下面举例说明如何在LCD对应位置上显示所需的字符。假设要在第1行第2列写入字符A,这时先写入第1行第2列对应的DDRAM的地址:01H,然后再往DDRAM中写入A的字符码0x41(参见图2.6字符与字符码对照表),这样LCD的第1行第2列就会出现字符A了。也就是说,DDRAM的内容对应于把要显示的字符地址,而DDRAM的地址就对应于显示字符的位置。总而言之,希望在LCD的某一特定位置显示某一特定字符,一般要遵循“先指定地址,后写入内容”的原则;但如果希望在LCD上显示一串连续的字符(单词等),并不需要每次写字符码之前都指定一次地址,这是因为液晶控制模块中有一个计数器叫地址计数器AC(Address Counter)。地址计数器的作用是负责记录写入DDRAM数据的地址,或从DDRAM读出数据的地址。该计数器的作用不仅仅是“写入”和“读出”地址,它还能根据用户的设定自动进行修改。比如,如果规定地址计数器在“写入DDRAM内容”这一操作完成后自动加1,那么在第1行第1列定写入一个字符后,如果不对字符显示位置(DDRAM地址)重新设置,再写入一个字符,则这个新的字符会出现在第1行第2列。LCD的读写控制时序如图2.7所示。图中说明了向LCD写操作建立、保持允许的最小时间。DF_D的数据值,寄存器选择信号(LCD_RS)以及读/写(LCD_RW)控制信号必须建立并在使能信号LCD_E转向高电平之前至少稳定40ns。使能信号必须保留高电平230ns或更长时间。在许多应用中,LCD_RW信号可以永远置低,因为FPGA一般不会从显示屏读取数据。图2.7上电后,显示屏必须初始化建立所需的通信协议。该初始化步骤简单,完全适合高效的8位PicoBlaze 嵌入式控制器。初始化之后,PicoBlaze 控制器除了简单驱动显示屏外,还用来更为复杂的控制或计算。在初始化显示屏和建立通信之后,所有的命令和数据以8位形式传送给字符显示屏用2个连续的4位传送。每个8位传送必须分为2个4位,其间隔时间至少1us,如图2.8所示。先传高半位,再传低半位。一个8位的写操作在下个通信之前必须间隔至少40us。在清屏命令之后,该延时必须增至1.64ms。图2.83、软件的编译和执行PicoBlaze应用开发分为四个步骤:代码编辑、软件调试、程序编译和系统集成。下面分别说明: (1)代码编辑:代码的编写可使用普通的文本编辑器完成。值得注意的是:编写好的程序要保存为编译器支持的psm格式即文件扩展名修改为.psm,并且文件名不可多于8个字符。 (2)软件调试:处理器应用开发者常常习惯于使用指令集仿真器(ISS)。利用诸如单步运行、连续运行、断点设置这样的手段来调试程序,Mediatronix(第三方开发商)免费提供的pBIazIDE正是这样的辅助工具。此外,pBIazIDE还能够实现代码覆盖率、运行时间统计、基于端日功能的系统级模拟等功能。使用pBhzIDE进行调试需要注意的是,pBIazIDE不能直接支持PicoBlaze的指令集。必须用该软件的文件转换接口将psm文件转化为asm文件后才能进行调试。同时,pBIazIDE也不能实现与外围可编程逻辑的联合调试。但对于一般应用的代码调试pBlazIDE完全能满足需求。 (3)程序编译:KCPSM3编译器由一个可执行文件(KCPSM3.EXE)和三个模板文件 (ROM_form.vhd、ROM_form.v和ROM_form.coe)组成。将编辑好的程序文件和编译器放置在同一个工作目录下。运行可执行文件(必须是在32位操作系统下才能执行),就能生成设计需要的文件。当编译器发现错误时会立刻停止编译程序,给出错误提示信息,设计者可根据提示修改代码、重新编译。(4)系统集成:在上层设计中调用编译好的PicoBlaze模块(包括RAM块初始化文件和KCPSM3模块文件),并加入定制的外围逻辑接口就能构成整个系统。对于整个系统的仿真、综合、适配、下载与FPGA逻辑设计流程一致。二、 实验步骤1、新建一个工程,为工程命名、指定存储路径和目标芯片等。建议同学们为每个工程都创建一个文件夹,并集中在一个文件夹进行管理。建议工程名、路径名中不要使用中文。2、将提供的所有文件拷贝到建立的工程路径下。把参考的例程文件kcpsm3.v、tutorial.v添加到工程中。分析各程序之间的结构关系和顶层代码实现的功能。3、执行KCPSM3.EXE,编译software.psm,生成新的software.v文件。将其添加到工程中。4、打开kcpsm3.v,阅读分析代码,结合Digilent Spartan 3E-Starter开发板说明确定各端口应锁定的FPGA引脚,编写约束文件,完成引脚锁定。5、综合、实现、生成下载配置文件。配置文件如下:NET clk LOC = C9 ;NET lcd_db LOC = R15 ;NET lcd_db LOC = R16 ;NET lcd_db LOC = P17 ;NET lcd_db LOC = M15 ;NET lcd_e LOC = M18 ;NET lcd_rs LOC = L18 ;NET lcd_rw LOC = L17 ;NET leds LOC = F12 ;NET leds LOC = E12 ;NET leds LOC = E11 ;NET leds LOC = F11 ;NET leds LOC = C11 ;NET leds LOC = D11 ;NET leds LOC = E9 ;NET leds LOC = F9 ;NET rst LOC = V16 ;NET switches LOC = L13 ;NET switches LOC = L14 ;NET switches LOC = H18 ;NET switches LOC = N17 ;6、启动iMPACK完成下载配置,观察LCD和LED的显示情况,分析功能完成效果。7、用文本编辑器打开参考的软件代码程序software.psm,阅读代码,找到其中控制显示内容的部分,并进行修改。要求修改后,能在LCD上的第一排显示你姓名的汉语拼音,第二排显示你的学号和班级号。修改程序如下:disp4bit_msg1: LOAD s5, ascii_c CALL ram8_as_4bit LOAD s5, ascii_h CALL ram8_as_4bit LOAD s5, ascii_e CALL ram8_as_4bit LOAD s5, ascii_n CALL ram8_as_4bit LOAD s5, ascii_SPACE CALL ram8_as_4bit LOAD s5, ascii_c CALL ram8_as_4bit LOAD s5, ascii_e CALL ram8_as_4bit LOAD s5, ascii_n CALL ram8_as_4bit LOAD s5, ascii_SPACE CALL ram8_as_4bit LOAD s5, ascii_SPACE CALL ram8_as_4bit LOAD s5, ascii_SPACE CALL ram8_as_4bit LOAD s5, ascii_SPACE CALL ram8_as_4bit LOAD s5, ascii_SPACE CALL ram8_as_4bit LOAD s5, ascii_SPACE CALL ram8_as_4bit LOAD s5, ascii_SPACE CALL ram8_as_4bit LOAD s5, ascii_SPACE CALL ram8_as_4bit RETURN disp4bit_msg2: LOAD s5, ascii_2 CALL ram8_as_4bit LOAD s5, ascii_0 CALL ram8_as_4bit LOAD s5, ascii_1 CALL ram8_as_4bit LOAD s5, ascii_2 CALL ram8_as_4bit LOAD s5, ascii_1 CALL ram8_as_4bit LOAD s5, ascii_7 CALL ram8_as_4bit LOAD s5, ascii_2 CALL ram8_as_4bit LOAD s5, ascii_5 LOAD s5, ascii_SPACE CALL ram8_as_4bit LOAD s5, ascii_d CALL ram8_as_4bit LOAD s5, ascii_i CALL ram8_as_4bit LOAD s5, ascii_a CALL ram8_as_4bit LOAD s5, ascii_n CALL ram8_as_4bit LOAD s5, ascii_z CALL ram8_as_4bit LOAD s5, ascii_i CALL ram8_as_4bit LOAD s5, ascii_1 CALL ram8_as_4bit RETURN8、重新执行KCPSM3.EXE,编译修改后的software.psm,生成新的software.v文件,替换原工程中software.v文件。9、综合、实现、生成下载配置文件。 10、启动iMPACK完成下载配置,观察LCD和LED的显示情况,分析功能完成效果。3、 实验结果及分析1:启动iMPACK完成下载配置,观察LCD和LED的显示情况显示如下内容:FPGA DESIGN LAB5whats your name2:重新执行KCPSM3.EXE,编译修改后的software.psm,生成新的software.v文件,替换原工程中software.v文件。启动iMPACK完成下载配置,观察LCD和LED的显示情况显示如下内容:Chen cen20121725 dianzi1四、实验思考题解答(实验指导书要求的思考题)1.基于FPGA的嵌入式系统设计中用什么语言实现了用LCD显示姓名班级,这种实现方式和FPGA用硬件描述语言实现LCD显示由什么区别?答:是用VHDL语言实现的,FPGA用硬件描述语言实现LCD显示是需要自己配置所有的硬件和功能的实现,需要考虑很多因素,而用第一种方式是先生成一个内核,然后将实现的程序装载进去,

温馨提示

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

评论

0/150

提交评论