3661|1

6892

帖子

0

TA的资源

五彩晶圆(高级)

楼主
 

流水灯代码分享 [复制链接]

module countpro(sys_clk,rst_n,led); //接口定义
input sys_clk,rst_n; //输入:系统时钟50MHz,复位输入
output [2:0] led; //输出:3个led产生流水现象,轮流点亮
reg [25:0] count; //系统时钟频率过高,需要计数的方式来产生延时,使led保持状态一段时间
reg [2:0] led; //led低电平点亮
reg [1:0] flag; //状态转换的入口,发生变化的时候,点亮另外一个led

always @(posedge sys_clk,negedge rst_n)
if(!rst_n) //复位,给寄存器赋初值
begin
flag <= 2'b0;
count <= 26'b0;
end
else //sys_clk上升沿到来
begin
if( count == 26'b11_1111_1111_1111_1111_1111_1110 )
begin
count <= 26'b0; //count归零,便于下次重新开始计数
if(flag == 2'b10) //当flag等于2’b10时,flag归零(实际上,当flag==2’b10时,要在下一次归零,即在flag==2’b11时,马上就变成2’b00,而并非当flag==2’b10时马上变为2’b00;)
flag <= 2'b00;
else //否则flag加一
flag <= flag+2'b01;
end
else
count <= count + 1; //当count没计数到指定值是,count执行加一操作
end
always @(posedge sys_clk)
begin
case(flag) //由于flag会不断变化,并且flag在从一个值变成另一个值的时候,会保持一段很长的时间,我们利用它来产生流水灯现象
2'b00: led <= 3'b011; //点亮第一个灯 低电平点亮
2'b01: led <= 3'b101; //点亮第一个灯 低电平点亮
2'b10: led <= 3'b110; //点亮第一个灯 低电平点亮
default:led <= 3'b111; //一般要设置一个缺省状态,三个led全部灭
endcase
end
endmodule

此帖出自FPGA/CPLD论坛

最新回复

学习了  详情 回复 发表于 2010-11-29 09:50
点赞 关注
个人签名一个为理想不懈前进的人,一个永不言败人!
http://shop57496282.taobao.com/
欢迎光临网上店铺!
 

回复
举报

569

帖子

0

TA的资源

一粒金砂(高级)

沙发
 

学习了

此帖出自FPGA/CPLD论坛
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表