FPGA报告实验5.docx
- 文档编号:1116132
- 上传时间:2022-10-17
- 格式:DOCX
- 页数:15
- 大小:458.78KB
FPGA报告实验5.docx
《FPGA报告实验5.docx》由会员分享,可在线阅读,更多相关《FPGA报告实验5.docx(15页珍藏版)》请在冰豆网上搜索。
FPGA报告实验5
西南科技大学
实验报告
课程名称:
基于FPGA的现代数字系统设计
实验名称:
基于处理器核的LCD驱动电路设计
姓名:
学号:
班级:
通信1301
指导教师:
刘桂华
西南科技大学信息工程学院制
基于处理器核的LCD驱动电路设计
一、实验目的:
1、认识和了解SoPC设计技术;
2、熟悉基于PicoBlaze内核的SoPC系统设计流程;
3、熟悉和掌握字符型LCD屏的操作时序。
二、原理说明:
本次实验将完成的设计是一个基于PicoBlaze的SoPC系统,其示意图如图2.1所示。
图2.1
1、PicoBlaze微处理器核
PicoBlaze是一个8位RISC(精简指令集计算机)微处理器,是由VHDL语言开发的软处理器内核包,已经被专门设计和优化,在Xilinx公司的Virtex、Spartan-II系列以上FPGA与CoolRunner-II系列以上的CPLD器件设计中以IP核的方式提供,使用是免费的。
在XC3S500E的FPGA中,只用到了96个Silice,也就是只占用到5%的逻辑资源。
PicoBlaze执行一条命令需要2个时钟周期,在Spartan3EStarterKit板上以50MHz时钟为例,PicoBlaze也能达到25MIPS的性能。
PicoBlaze起初命名为KCPSM,是Constant(K)CodedProgrammableStateMachine的简称,意为常量编码可编程状态机。
现在已有三个版本:
(1)KCPSM,其支持类型有Virtex,Virtex-E,Spartan-II和Spartan-IIEFPGA;
(2)KCPSM2,其支持类型有Virtex-II,Virtex-IIProFPGA;(3)KCPSM3,其支持类型有Spartan-3,Virtex-4,Virtex-II,Virtex-IIPro,Virtex-5,Spartan-6,Virtex-6FPGA。
PicoBlaze8位微处理器内部结构如图2.2所示。
PicoBlaze处理器IPCore由全局寄存器、计算逻辑单元(ALU)、程序流控制标志和复位逻辑、输入/输出(I/O)、中断控制器等几大部分构成。
Picoblaze提供了49个不同指令,16个寄存器(CPLD为8个),256个直接或间接的可设定地址的端口,1个可屏蔽的、速率为35MIPS的中断。
它的性能超过了传统独立元器件组成的微处理器,而且成本低,使得PicoBlaze在数据处理和控制算法领域有着广泛的应用前景。
由于可编程部分也完成嵌入,PicoBlaze可与子程序和外围设备结合起来完成特殊的设计。
图2.2
PicoBlaze是由VHDL语言开发的小型8位软处理器内核包,其汇编器是简单的命令行式可执行文件KCPSM3.exe,用汇编语言编写的程序经过编译后放入FPGA的块RAM存储器区。
KCPSM3支持程序的指令可以到1024(使用一个BRAM),多个KCPSM3处理器可以用于处理不同的任务。
图2.3是PicoBlaze的应用框架示意图。
表2.1列出了PicoBlaze的各个端口并给予了说明。
图2.3
表2.1
端口
功能
I/O
端口
功能
I/O
instruction
18位指令输入
input
address
10位地址线
output
in_port
8位输入接口
input
port_id
I/O地址控制
output
interrupt
中断输入
input
write_strobe
写控制
output
reset
复位
input
read_strobe
读控制
output
clk
时钟输入
input
interrupt_ack
中断响应
output
instruction
18位指令输出
output
out_port
8位输出接口
output
2、2X16字符液晶显示器及其驱动
液晶显示器以其微功耗、小体积、使用灵活等诸多优点在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。
液晶显示器通常可分为两大类,一类是点阵型,另一类是字符型。
点阵型液晶通常面积较大,可以显示图形;而一般的字符型液晶只有两行,面积小,只能显示字符和一些很简单的图形,简单易控制且成本低。
Spartan3E-Starter开发板上使用了一个2×16字符LCD,其内嵌一个SitronixST7066U图形控制器,功能与三星的S6A0069X或KS0066U、Hitachi的HD44780(国内使用较广)和SMOS的SED1278一样。
与FPGA的连接关系如图2.4所示。
图2.4
该控制器有三个内部存储空间DDRAM、CGROM和CGRAM,每个都有专门用途。
送数据给这些空间之前必须初始化。
(1)显示数据RAM(DDRAM)存储要送显的字符编码。
绝大多数应用中,都是与DDRAM相结合的。
存储在DDRAM中的字符编码所涉及的特定的字符位图要么存在CGROM字符设置中,要么存在用户自定义的CGRAM的字符设置中。
图2.5给出了显示器32位字符位置的默认地址。
字符的最上行存储在地址0X00与0X0F之间。
第二行的字符存储在地址0X40与0X4F之间。
图2.5
从物理上讲,DDRAM一共有80个字符位置,每行有40个字符。
位置0X10到0X27和0X50到0X67之间的地址用来存储其它非显示数据。
此外,这些位置也可以存储只有使用控制器的显示移位功能才能显示的字符。
往DDRAM读或写之前,DDRAM地址命令得初始化地址计数器。
写DDRAM数据使用写数据到CGRAM或DDRAM命令,读DDRAM使用从CGRAM或DDRAM命令读数据。
DDRAM地址计数器要么在读或写之后保持常数,要么自动增加1或自动减1。
(2)字符产生器RAM(CGRAM)提供空间给8位的自定义字符位图。
每个自定义字符位由8行位图的5个点组成。
本实验未使用到CGRAM。
(3)字符产生器ROM(CGROM)包括每个事先定好的字符的字体位图。
字符ROM内置了192个常用字符,存储有ASCII英文字符和日本字符,英语/罗马字符存储在CGROM相应的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”就显示在屏幕上了。
图2.6
下面举例说明如何在LCD对应位置上显示所需的字符。
假设要在第1行第2列写入字符"A",这时先写入第1行第2列对应的DDRAM的地址:
01H,然后再往DDRAM中写入"A"的字符码0x41(参见图2.6字符与字符码对照表),这样LCD的第1行第2列就会出现字符A了。
也就是说,DDRAM的内容对应于把要显示的字符地址,而DDRAM的地址就对应于显示字符的位置。
总而言之,希望在LCD的某一特定位置显示某一特定字符,一般要遵循“先指定地址,后写入内容”的原则;但如果希望在LCD上显示一串连续的字符(单词等),并不需要每次写字符码之前都指定一次地址,这是因为液晶控制模块中有一个计数器叫地址计数器AC(AddressCounter)。
地址计数器的作用是负责记录写入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一般不会从显示屏读取数据。
图2.7
上电后,显示屏必须初始化建立所需的通信协议。
该初始化步骤简单,完全适合高效的8位PicoBlaze嵌入式控制器。
初始化之后,PicoBlaze控制器除了简单驱动显示屏外,还用来更为复杂的控制或计算。
在初始化显示屏和建立通信之后,所有的命令和数据以8位形式传送给字符显示屏——用2个连续的4位传送。
每个8位传送必须分为2个4位,其间隔时间至少1us,如图2.8所示。
先传高半位,再传低半位。
一个8位的写操作在下个通信之前必须间隔至少40us。
在清屏命令之后,该延时必须增至1.64ms。
三、实验步骤
1、构建一个工程名为LCD1的工程。
2、将提供的所有文件拷贝到建立的工程路径下。
把参考的例程文件kcpsm3.v、tutorial.v添加到工程中。
分析各程序之间的结构关系和顶层代码实现的功能。
3、执行KCPSM3.EXE,编译software.psm,生成新的software.v文件。
将其添加到工程中。
4、打开kcpsm3.v,阅读分析代码,结合《DigilentSpartan3E-Starter开发板说明》确定各端口应锁定的FPGA引脚,编写约束文件,完成引脚锁定。
5、综合、实现、生成下载配置文件。
6、启动iMPACK完成下载配置,观察LCD和LED的显示情况,分析功能完成效果。
7、用文本编辑器打开参考的软件代码程序software.psm,阅读代码,找到其中控制显示内容的部分,并进行修改。
要求修改后,能在LCD上的第一排显示你姓名的汉语拼音,第二排显示你的学号和班级号。
对software.psm文件分析可知,开始时便将字符地址自已成了以该字符名命名的常量,所以在改写文件时很方便的进行了改写,如上图所示。
8、重新执行KCPSM3.EXE,编译修改后的software.psm,生成新的software.v文件,替换原工程中software.v文件。
9、综合、实现、生成下载配置文件。
10、启动iMPACK完成下载配置,观察LCD和LED的显示情况,分析功能完成效果。
LCD液晶显示屏显示了名字的拼音以及学号专业。
四、思考题
1.基于FPGA的嵌入式系统设计中用什么语言实现了用LCD显示姓名班级,这种实现方式和FPGA用硬件描述语言实现LCD显示由什么区别?
4、答:
采用汇编语言编写实现。
由于在ISE下无法编译,所以用KCPSM3.EXE,编译software.psm,生成新的software.v文件。
与硬件描述语言,汇编语言与硬件描述语言的行为级与流程级建模接近,都具有一些c语言的特点,较抽象地描述了硬件电路功能,而硬件描述语言中的门级建模则与硬件电路非常接近,直观地体现了硬件电路。
这是汇编语言做不到的。
2.在实验中汇编程序设计了很多延时程序有什么作用?
这些延时程序若用FPGA的硬件描述语言来实现应该如何设计?
答:
延时是为了满足设计需求,满足LED时序操作条件,如下第一个图所示LEDc处于写状态
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FPGA 报告 实验