文档库

最新最全的文档下载
当前位置:文档库 > FPGA报告实验5

FPGA报告实验5

西南科技大学

实验报告

课程名称:基于FPGA的现代数字系统设计

实验名称:基于处理器核的LCD驱动电路设计姓名:

学号:

班级:通信1301

指导教师:刘桂华

西南科技大学信息工程学院制

基于处理器核的LCD驱动电路设计

一、实验目的:

1、认识和了解SoPC设计技术;

2、熟悉基于PicoBlaze内核的SoPC系统设计流程;

3、熟悉和掌握字符型LCD屏的操作时序。

二、原理说明:

本次实验将完成的设计是一个基于PicoBlaze的SoPC系统,其示意图如图2.1所示。

FPGA报告实验5

时钟

异步复位多路拨码输入

LED

LCD

图2.1

1、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可与子程序和外围设备结合起来完成特殊的设计。

FPGA报告实验5

图2.2

PicoBlaze是由VHDL语言开发的小型8位软处理器内核包,其汇编器是简单的命令行式可执行文件KCPSM3.exe,用汇编语言编写的程序经过编译后放入FPGA的块RAM存储器区。KCPSM3支持程序的指令可以到1024(使用一个BRAM),多个KCPSM3处理器可以用于处理不同的任务。图2.3是PicoBlaze 的应用框架示意图。表2.1列出了PicoBlaze的各个端口并给予了说明。

FPGA报告实验5

图2.3

表2.1

FPGA报告实验5

2、2X16字符液晶显示器及其驱动

液晶显示器以其微功耗、小体积、使用灵活等诸多优点在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。液晶显示器通常可分为两大类,一类是点阵型,另一类是字符型。点阵型液晶通常面积较大,

可以显示图形;而一般的字符型液晶只有两行,面积小,只能显示字符和一些很简单的图形,简单易控制且成本低。

Spartan 3E-Starter开发板上使用了一个2×16字符LCD,其内嵌一个Sitronix ST7066U图形控制器,功能与三星的S6A0069X或KS0066U、Hitachi的HD44780(国内使用较广)和SMOS的SED1278一样。与FPGA的连接关系如图2.4所示。

FPGA报告实验5

图2.4

该控制器有三个内部存储空间DDRAM、CGROM和CGRAM,每个都有专门用途。送数据给这些空间之前必须初始化。

(1)显示数据RAM(DDRAM)存储要送显的字符编码。绝大多数应用中,都是与DDRAM相结合的。存储在DDRAM中的字符编码所涉及的特定的字符位图要么存在CG ROM字符设置中,要么存在用户自定义的CG RAM的字符设置中。图2.5给出了显示器32位字符位置的默认地址。字符的最上行存储在地址0X00与0X0F之间。第二行的字符存储在地址0X40与0X4F之间。

FPGA报告实验5

图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,字符码0x00~0x0F为用户自定义的字符图形RAM(对于5X8点阵的字符,可以存放8组,5X10点阵的字符,存放4组),0x20~0x7F为标准的ASCII码,0xA0~0xFF为日文字符和希腊文字符,其余字符码(0x10~0x1F及0x80~0x9F)没有定义。

字符编码存储在DDRAM 中,每个字符的位置与CGROM的位置按顺序对应。例如,0X53的一个16

进制的字符编码存储在DDRAM中的位置显示字符是“S”。0X53最上面的高4位等同于DB[7:4]=0101和最低的低4位等同于DB[3:0]=0011。字符“S”就显示在屏幕上了。

FPGA报告实验5

图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<11:8>的数据值,寄存器选择信号(LCD_RS)以及读/写(LCD_RW)控制信号必须建立并在使能信号LCD_E 转向高电平之前至少稳定40ns。使能信号必须保留高电平230ns或更长时间。在许多应用中,LCD_RW信号可以永远置低,因为FPGA一般不会从显示屏读取数据。

FPGA报告实验5

图2.7

上电后,显示屏必须初始化建立所需的通信协议。该初始化步骤简单,完全适合高效的8位PicoBlaze 嵌入式控制器。初始化之后,PicoBlaze 控制器除了简单驱动显示屏外,还用来更为复杂的控制或计算。在初始化显示屏和建立通信之后,所有的命令和数据以8位形式传送给字符显示屏——用2个连续的4位传送。每个8位传送必须分为2个4位,其间隔时间至少1us,如图2.8所示。先传高半位,再传低半位。一个8位的写操作在下个通信之前必须间隔至少40us。在清屏命令之后,该延时必须增至1.64ms。

FPGA报告实验5

三、实验步骤

1、构建一个工程名为LCD1的工程。

2、将提供的所有文件拷贝到建立的工程路径下。把参考的例程文件

kcpsm3.v、tutorial.v添加到工程中。分析各程序之间的结构关系和顶层代码实现的功能。

FPGA报告实验5

FPGA报告实验5

3、执行KCPSM3.EXE,编译software.psm,生成新的software.v文件。将其添加到工程中。

FPGA报告实验5

FPGA报告实验5

4、打开kcpsm3.v,阅读分析代码,结合《Digilent Spartan 3E-Starter开发

板说明》确定各端口应锁定的FPGA引脚,编写约束文件,完成引脚锁定。

FPGA报告实验5

5、综合、实现、生成下载配置文件。

6、启动iMPACK完成下载配置,观察LCD和LED的显示情况,分析功

能完成效果。

7、用文本编辑器打开参考的软件代码程序software.psm,阅读代码,找到

其中控制显示内容的部分,并进行修改。要求修改后,能在LCD上的第一排显示你姓名的汉语拼音,第二排显示你的学号和班级号。

FPGA报告实验5

FPGA报告实验5

对software.psm 文件分析可知,开始时便将字符地址自已成了以该字符

名命名的常量,所以在改写文件时很方便的进行了改写,如上图所示。

8、 重新执行KCPSM3.EXE ,编译修改后的software.psm ,生成新的

software.v 文件,替换原工程中software.v 文件。

9、 综合、实现、生成下载配置文件。

FPGA报告实验5

10、启动iMPACK完成下载配置,观察LCD和LED的显示情况,分析功

能完成效果。

LCD液晶显示屏显示了名字的拼音以及学号专业。

四、思考题

1. 基于FPGA的嵌入式系统设计中用什么语言实现了用LCD显示姓名班级,这种实现方式和FPGA用硬件描述语言实现LCD显示由什么区别?

4、答:采用汇编语言编写实现。由于在ISE下无法编译,所以用

KCPSM3.EXE,编译software.psm,生成新的software.v文件。与硬件

描述语言,汇编语言与硬件描述语言的行为级与流程级建模接近,都

具有一些c语言的特点,较抽象地描述了硬件电路功能,而硬件描述

语言中的门级建模则与硬件电路非常接近,直观地体现了硬件电路。

这是汇编语言做不到的。

FPGA报告实验5

2.在实验中汇编程序设计了很多延时程序有什么作用?这些延时程序若用FPGA的硬件描述语言来实现应该如何设计?

答:延时是为了满足设计需求,满足LED时序操作条件,如下第一个图所示LEDc 处于写状态时时序,当输入有效数据时,根据时序参数要求,使能端LED_E至少需要延时40us才能置为高电平,故需要一个延时。同样如图二所示,需要延时1us。

若用硬件描述语言实验,可以用时钟信号下的计数器实现对时间的延时控制。delay_1us: LOAD s0, delay_1us_const

wait_1us: SUB s0, 01

JUMP NZ, wait_1us

RETURN

delay_40us: LOAD s1, 28 ; 40 x 1us = 40us wait_40us: CALL delay_1us

SUB s1, 01

JUMP NZ, wait_40us

RETURN

FPGA报告实验5

五、实验体会及心得

1、通过实验,我对SOPC设计技术有了深刻的认识,体会到了它在设计中的巨大优势,使用嵌入的微处理器软核以及其对IP和资源的充分应用,使我们高效解决了设计难题。

2、对液晶显示屏的使用原理及时序控制有了初步认识。驱动它时需要对其进行时钟控制,使之进入读或写状态,然后在有效数据段输入命令或数据。其操作命令和字符由8位二进制数表示,显示位置由地址控制。

3、这是最后一次实验,不一样的心情,不一样的收获。喜悦中夹着淡淡的忧伤,当我凝望着实验板上显示的字符,当我望着密密麻麻的代码,一遍又一遍地询问老师渴望找想要的答案的时候,我知道我的心中的某个地方在这片土地上已长出了小苗,渴望茁壮成长。