FPGA工程应用开发综合实验报告一

基于LCD的显示系统设计

2022年11月30日

摘 要
本次基于FPGA的LCD显示系统设计,在熟悉Quartus基本操作、Verilog编程语言的基本规则、SignalTap的基本应用后,通过自顶向下、分模块设计后进行连接的方式,完成控制FPGA在LCD屏幕显示内容。
本次设计分为PLL分频模块、上电复位模块、显示控制模块、显示驱动模块组成。通过分功能分模块的设计方式,便于调试,较好地完成了本次设计任务。

一、 实验需求分析
技术指标分析
(1) 功能指标分析
通过FPGA控制LCD,实现在LCD上显示自己姓名英文书写,对外提供良好的接口,可实现修改源代码来显示不同内容。
(2) 性能指标分析

二、 系统方案设计
顶层设计
图1:Cyclone IV E FPGA芯片和 LCD模块间连接示意图

表1:LCD模块引脚配置说明

分析图1、表1,我们能得到FPGA与LCD模块之间是8根数据线、5根控制线,为了简化我们程序内部的逻辑,经过分析,在本次实验中,我们只对LCD进行写操作,而误差控制我们通过增大每次写数据后的延时来减小,所以LCD_RW可以始终置0;LCD_ON始终置1;LCD_BLON可始终置1或0。
进而我们得到了下面的顶层设计

三、 模块设计
例如:
1)PLL分频模块
由于实验板载FPGA提供50MHz晶振,通过Quartus自带的PLL模块,为了更快实现在LCD上显示所需内容,设置参数,产生50MHz的时钟,作为本次设计的系统时钟,如图1所示:

图1 PLL模块

2)上电复位模块
本模块接收PLL分频后所得的50MHz时钟信号,通过Cont变量进行计数计时,便于后续模块使用,框图如图2:

图2 计数器模块
3)显示驱动模块
本模块接收系统时钟与上电复位模块输出以及显示控制模块的输出mLCD_Done;产生mLCD_Start信号、8位数据线内容和LCD_RS信号,如图3所示:

图3 显示驱动模块

在此显示之前,我们需要位LCD进行初始化操作,分析图4,我们需要配置LCD的基本功能,具体代码与分析如下:

图4 1602LCD控制指令
有限状态机分析(如图5):
S0:写内容,将数据内容送给数据线,并自动跳转状态S1;
S1:等待mLCD_done信号,有效时跳转到状态S2;
S2:计数延时,为了简化程序,我们通过延迟来保证数据正确写入到LCD中,当延时结束,计数归零,并跳转到状态S3;
S3:当S2的延时后,S3在LCD显示屏上自动向后移位,并跳转到状态S0

图5 有限状态机示意图
由编码表找到需要的字符对应的二进制表示,代码如下,映射表如图6:

图6 字符映射表
4)显示控制模块
本模块接收系统时钟与上电复位模块输出以及mLCD_start作为输入,输出为LCD_EN与mLCD_done信号,如图7:

图7 显示控制模块

四.基于SignalTap分析重点时序
本次设计重点为显示驱动模块有限状态的转换分析,与字符映射的编码。利用Quartus的SignalTap仿真功能,验证得所写程序符合预期要求,如图8:

图8 仿真

五.反思与总结

学习和使用状态转移图来描述程序逻辑,并学习精读硬件器件的说明来独立解决工程实践中的问题。

六.参考文献
实验四_基于FPGA的LCD显示系统设计(课程用实验指导书).pdf

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇