- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【Easy CPLD570】Verilog实现8x8LED矩阵灯显示
Verilog实现8x8LED矩阵灯显示
1 原理图
8x8的矩阵LED ,行H1-H8为共阳,采用三极管增加驱动,但此实验板采用5V供电,因
此无论行控制信号输出高电平或是低电平,都会导致LED有供电,只是供电强弱不一样,但
都可能点亮LED,所以实现时需要将不供电时输出高阻z ,同理对数据信号V1-V8 。
此矩阵显示原理也是分时显示每一列数据,轮流显示速率较快,让人眼无法反映识别出
来,避免闪烁。
2 CPLD 代码
module LED_array (
clk_24m,
reset_n,
Hline, //行位选信号线。
Vline //列数据信号线。
);
input wire clk_24m;
input wire reset_n;
第1 页, 共5 页
output wire [7:0] Hline;
output wire [7:0] Vline;
/******************************************************************************
24M 时钟分频,用于内部控制及计数等。
******************************************************************************/
reg [14:0] count_div1;
wire condition_732; //732 Hz 时钟信号。
always @ (posedge clk_24m or negedge reset_n)
begin
if(reset_n == 1b0)
count_div1 = 15h0000;
else
count_div1 = count_div1 + 15h0001;
end
/******************************************************************************
condition_732:
732Hz时钟信号,高电平持续一个24MHz 时钟周期,其余时间为低电平。
******************************************************************************/
assign condition_732 = count_div1[14:0]; //24MHz/2^15=732Hz 。
/******************************************************************************
对行输出IO轮流赋值,相当于分时显示每一列数据,轮转速度要快,才能让显示不闪烁。
******************************************************************************/
reg [7:0] Hshift;
always @ (posedge clk_24m or negedge reset_n)
begin
if(reset_n == 1b0)
Hshift = 8h01; //初值为1,时刻都只有一个bit为高。
else if (condition_732 == 1b1) //采用732Hz时钟, 对IO赋值进行轮转。
Hshift = { Hshift[6:0],Hshift[7] }; //通过移位实现输出IO轮流赋值。
else;
end
/******************************************************************************
行控制信号寄存器值赋值给行输出信号线,不点灯时赋值高阻。
******************************************************************************/
assign Hline[0] = Hshift[0] == 1b1 ? 1b0 :1bz;
assign Hline[1] = Hshift[1] == 1b1 ? 1b0 :1bz;
as
文档评论(0)