LED显示屏灰度控制系统在Nios II中的实现
2012-06-02
陈昌龙 臧传晟

摘要:介绍了LED显示屏灰度的显示方法, 着重于显示屏设计中驱动控制方式的若干算法参数。根据这些算法参数,从系统的角度提出LED显示屏灰度控制完整算法。给出基于Cyclone ii芯片的Nios II系统的设计框图,并得到在Quartus II中的仿真结果。

1 系统设计

LED显示屏控制系统由视频采集系统、主控系统、数据分配电路和LED恒流驱动电路组成。在主控电路产生的控制信号控制下,显示数据被存储到帧存储器件,然后再传输到数据分配电路:在读出逻辑的控制下送到各个LED恒流驱动电路,最后在LED屏幕显示出图像。本文重点介绍LED显示屏灰度控制系统在Nios II中的实现。

系统硬件分为三部分。第一部分是显卡信息实时提取电路,其功能是从显卡中提取CRT单色视频信号、象素时钟(PCLK)、行同步(HSYNC)和帧同步(VSYNC)等信号,经过处理后传输出去。第二部分是信号转换电路,其功能是将传输来的CRT信号经过选择、存储、读取和分配后,转换成LED显示信号。第三部分是LED驱动板,其功能是接收LED显示信号,并分配给LED屏对应的象素点,驱动LED显示。Altera公司的Nios II是基于RISC架构的嵌入式处理器软内核,它专门为可编程逻辑进行了优化设计,也为SOPC设计了一整套综合解决方案。主要包括一个CPU、I/O中断申请、计时器、UART口及大量的通用寄存器。Nios II的数据总线宽度由用户定义(最大32位),也可以根据具体需求增加并行输入输出端、连接外设的接口逻辑等,它只占用FPGA芯片很少的资源,可以嵌入在任何一个FPGA系列中与PLD模块同步运行。

2 灰度显示控制逻辑的实现

图1 灰度显示控制逻辑框图

如图1所示,按照自顶向下的系统设计方法,整个数字控制逻辑的实现包含了3个子模块:signal模块、machine模块、wr_rd模块,各模块的功能说明如下:

(1)signal模块:本模块的输入信号为系统复位信号rst、基准时钟信号pclk、异步握手输入信号link_l。输出信号为行信号row[3:0]、串行移位时钟信号ser_clk、行选通信号str、帧信号frame、场同步信号vsync、行地址信号addr_row[3:0]、列地址信号addr_colum[9:0]、数据位地址信号addr_bit[2:0]、双页SRAM 切换信号l_r、异步握手输出信号link_o、数据锁存信号lock等。主要功能是以基准时钟信号为基础,按照512行×1024列的屏体显示信号时序要求,通过生成适当计数宽度的计数器和其它判断逻辑来产生输出信号,如图2所示:

图2 signal子模块逻辑结构示意图

(2)machine子模块:输入信号包括:基准时钟信号clk、场同步信号vsync、行选通信号str、数据位地址信号addr_bit[2:0]、signal模块内部计数器输出信号count[4:0],输出信号为消影信号,很明显其逻辑功能就是根据输入信号的状态,主要是根据数据位地址的信息判断当前的帧数,从而产生适当占空比的消影信号来控制该帧中每一行数据的显示亮度。

(3)wr_rd子模块:输入信号包括:场同步信号vsync、双页SRAM切换信号l_r、微处理器数据信号data_arm [15:0]、微处理器地址信号addr_arm

[18:1]、微处理器读写控制信号ctr_arm[4:0]、SRAM地址信号addr_colume[9:0]、addr_row[3:0]、addr_bit[2:0],输出信号包括:SRAM 地址信号

addr_l/r[18:1]、SRAM 数据信号data_l/t[15:0]、SRAM读写控制信号ctl_l/r[4:0]、显示数据输出信号data[15:0]、数据锁存器、缓冲器锁存信号、输出选通信号。其逻辑功能就是根据signal模块产生的切换信号l_r,在场同步信号的控制下,切换系统总线到一片SRAM 写入数据,同时发出读控制信号、使能地址信号和数据信号从另一片SRAM 中读出显示数据。

3 灰度显示控制数字逻辑的算法流程

本数字逻辑设计中采用同步数字逻辑设计方法,使用了三个不同位数的二进制加1计数器,对基准时钟进行分频,产生相应的控制信号。不同于普通软件流程,数字逻辑为多模块并行执行模式,各模块之间有紧密的信号联系说明如下:

(1)其中Counter1为10位计数器,对基准时钟进行计数,达到1024时则产生行信号Row、行选通信号Str:当Row等于15,Counter1等于1023时(一帧扫描结束),使内部帧信号Frame有效(低电平);Counter1作为列地址信号输出从SRAM 中读取对应列数据,Row作为行地址信号输出从SRAM中读取对应行数据。

(2)Counter2为5位计数器,对内部帧信号进行计数,根据Counter2的计数状态,产生位地址信号addkbit,决定当前帧扫描8位灰度数据的哪一位,

从SRAM 中读取对应位的数据;当Counter等于11时,产生场同步信号Vsync(低电平有效),并控制Vsync的占空比。

(3)Counter3为9位计数器,对基准时钟进行计数,根据当前的位地址信号状态,计数到不同的时间参数,来控制不同位数据消影时间的长短。

灰度显示数字控制逻辑高级硬件描述语言具体实现:上层模块如下所示

module gray_grade (rst,vsync,pclk,link_i,link_o,row,lock,ser_clk,en,le,oe,str,addr_arm,

data_arm,ctr_arm,addr_l,data_l,ctr_l,addr_r,data_r,ctr_r,data);

input rst,pclk,link_i;

input[18:1] addr_arm;

input[15:0] data_arm;

input[4:0] ctr_arm;

inout[15:0] data_l,data_r;

output[18:1] addr_l,addr_r;

output[4:0] ctr_l,ctr_r;

output vsync,link_o;

output[3:0] row;

output lock,ser_clk,en,le,oe,str;

output[15:0] data;

wire[4:0] count;

wire[2:0] addr_bit;

wire[9:0] addr_colum;

wire[3:0] addr_row;

wire frame,clk;

wire l_r;

signal signal1(rst,clk,pclk,vsync,frame,row,link_i,link_o,ser_clk,lock,str,addr_bit,l_r,addr_colum,addr_row,count);

wr_rd wr_rd1(vsync,addr_arm,data_arm,ctr_arm,addr_l,data_l,ctr_l,addr_r,data_r,ctr_r,data,l_r,addr_colum,addr_row,addr_bit,oe,le):

machine machine1 (clk,vsync,str,sel,en,addr_bit,count);

end module

4 结论

使用基于Nios II处理器的SOPC解决方案实现LED显示屏的灰度控制大大缩短了开发周期,拓展系统开发的灵活性,随着新的Nios软核嵌入式处理器的推出及开发工具的不断升级,控制系统将会得到进一步的优化。

可能会用到的工具/仪表
本站简介 | 意见建议 | 免责声明 | 版权声明 | 联系我们
CopyRight@2024-2039 嵌入式资源网
蜀ICP备2021025729号