基于FPGA的LED点阵显示屏的设计(4)

2019-03-29 11:02

南昌航空大学学士学位论文

4.3 LED点阵显示模块

4.3.1 LED点阵显示驱动

LED点阵显示模块完成对行扫描和列选择。将16位的行数据移位进入74HC164的寄存器中,将32位的列数据移位进入74HC595中。当完成一行的扫描输出一个脉冲信号isdone。由于人眼暂留时间,只有当画面刷新频率大于50Hz时才不会出现闪烁现象。更新行数据最大周期Tmax=1/50/16=1.25ms。程序中利用计数器cnt作为行移位标志,当计数器计数到19999时移位一次,T=(19999+1)/20000000=1ms,(系统使用20MHz晶振),所以本设计刷新周期为1ms。

以下代码为LED显示模块的端口例化程序: module displ_led(

input clk, input rst,

input [15:0] row_data,

input [31:0] data, output rclk, output sclk, output ser, output AB, output s_clk, output isdone );

AB,s_clk用于驱动74HC164;ser,sclk,rclk用于驱动74HC595。当输入 data=32'h55_55_F0_0A、row_data=16'b1111_1111_1111_1110时功能仿真波形如图4-3所示,相隔8个时钟周期ser更新一次数据,并且sclk产生一脉冲将列数据移位一次。移完所有32位数据时,rclk产生一脉冲信号将列数据锁存。同时isdone产生一脉冲用于与其他模块进行交互。

图4-3 点阵显示驱动仿真波形

16

南昌航空大学学士学位论文

4.3.2 行数据控制模块

行数据控制模块主要实现控制显示的上下移位功能。以下程序为此模块的例化程序:

module row_control(

input clk, input rst, input key_up,

input key_down,

);

input key_stop, output [15:0] row_data

其中,key_up表示上键标志信号,key_down表示下键标志信号,key_stop为停止移位标志信号,row_data为行数据输出。静态显示时,只要进行逐行扫描,第i位出现‘0’时,则选通第i行。所以当按下停止键时,则直接输出16'b1111_1111_1111_1110。当有其他键按下时则触发移位。移位时,首先启动计数器,当每计满9,999,999(即0.5s)时,行数据移位一次。如图4-4所示,仿真key_up键按下时,row_data每0.5s循环右移一次。

4.3.3 列数据控制模块

列数据控制模块主要实现左右移动、开帘、合拢四种显示方式的控制。 以下为模块的例化程序: module column_control(

input clk, input rst,

图4-4 行数据控制仿真波形

17

南昌航空大学学士学位论文

input key_left, input key_right, input key_stop, input [31:0] rdata, output [31:0] data );

其中,key_left表示左键标志信号,key_right表示右键标志信号,key_stop为停止移位标志信号,在没有读取到按键时显示方式为循环开帘和合拢。rdata为原列数据,data为移动后的列数据。移位速度为1/20s,如图4-5所示,当key_left键按下时,rdata=32'h05_05_A0_A0,每0.05s循环移位一次。

图4-5 列数据左移仿真波形

4.4 按键模块

一位按键模块debounce如图4-6所示,模块包括电平检查模块和延迟模块。

设计思路:

(1)一旦检测到有按键按下(高电平到低电平变化),电平检查模块就会拉高 H2L_Sig电平,然后拉低。

(2)10ms延迟模块检测到H2L_Sig为高电平时,就会利用10ms过滤H2L_Sig,拉高 输出。

(3)当按键被释放时,电平检测模块会拉高L2H_Sig,然后拉低。

图4-6 一位按键模块

18

南昌航空大学学士学位论文

(4)10ms延迟模块检查到L2H_Sig为高电平时,就会利用10ms过滤H2L_Sig,然后拉低输出。

组合按键则是组合五个独立按键模块,如图4-7所示。

以下为五位组合按键模块的实例化程序: module key_interface (

input CLK,

input RSTn,

图4-7 组合按键模块

input [4:0]Key_In, );

其中,五位Key_In输入连接至I/O端口,五位Key_Out主要传输给行列控制模块。

output [4:0]Key_Out

19

南昌航空大学学士学位论文

4.5 串口通信模块

4.5.1 串口接收模块

如图4-8所示,串口接收模块由电平检测模块、波特率定时模块和接收控制模块组成。

图4-8 串口接收模块

其中,detect_module模块的输入是连接至引脚rx,它主要检测一帧数据的第0位,也就是起始位,然后产生一个高脉冲经 H2L_Sig 给 rx_control_module模块 ,以表示一帧数据接收工作已经开始。

rx_bps_module模块是产生波特率定时的功能模块。它是配置波特率的模块。 当rx_control_module模块拉高Count_Sig, bps_module模块经BPS_CLK对rx_control_module模块产生定时。本设计使用9600bps传输速率。传输一位数据的周期是 0.000104166666666667s 。以20Mhz时钟频率要得到上述的定时需要设置的计数次数N:

N = 0.000104166666666667 / ( 1 / 20Mhz ) = 2083

如果从零开始算起 2083 - 1 亦即 2082 个计数。然而,采集数据要求“在周期的中间”,那么结果是 2082 / 2 ,结果等于 1041。基本上 rx_bps_module模块只有在 Count_Sig拉高的时候,模块才会开始计数。

rx_control_module模块是核心控制模块。针对串口的配置主要是1帧11位的数据,重视八位数据位,无视起始位、校验位和结束位。当RX_En_Sig拉高,这个模块就开始工作,它将采集来自RX_Pin_In的数据,当完成一帧数据接收的时候,就会产生一个高脉冲给 RX_Done_Sig。

20


基于FPGA的LED点阵显示屏的设计(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2018人教版二年级道德与法治教学计划

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: