Verilog下的LED流水灯实现

举报
nimo的小舔狗 发表于 2022/04/19 18:23:35 2022/04/19
【摘要】 流水灯控制

设计思路

彩灯显示电路:现在有18个红色LED灯,采用状态机设计一个流水灯,工作模式为:

要求控制18个LED灯实现如下的演示花型:– 从两边往中间逐个亮;全灭 – 从中间往两头逐个亮;全灭 – 循环执行上述过程 

功能模块代码: 

module denghua(clk,clr,z,qout);
input clk,clr; 
output reg z; 
output reg[17:0] qout;
parameter S0=18'b100000000000000001;
parameter S1=18'b010000000000000010;
parameter S2=18'b001000000000000100;
parameter S3=18'b000100000000001000;
parameter S4=18'b000010000000010000;
parameter S5=18'b000001000000100000;
parameter S6=18'b000000100001000000;
parameter S7=18'b000000010010000000;
parameter S8=18'b000000001100000000;
parameter S9=18'b111111111111111111;
parameter S10=18'b111111110011111111;
parameter S11=18'b111111100001111111;
parameter S12=18'b111111000000111111;
parameter S13=18'b111110000000011111;
parameter S14=18'b111100000000001111;
parameter S15=18'b111000000000000111;
parameter S16=18'b110000000000000011;
 
 
 
always @(posedge clk or posedge clr) //此过程定义状态转换
begin 
	if(clr) 
		qout<=0; //异步复位
	else 
	case(qout)
		S0: qout<=S1;
		S1: qout<=S2;
		S2: qout<=S3;
		S3: qout<=S4;
		S4: qout<=S5;
		S5: qout<=S6;
		S6: qout<=S7;
		S7: qout<=S8;
		S8: qout<=S9;
		S9: qout<=S10;
		S10: qout<=S11;
		S11: qout<=S12;
		S12: qout<=S13;
		S13: qout<=S14;
		S14: qout<=S15;
		S15: qout<=S16;
		S16: qout<=S0;
		default: qout<=S0; /*default语句*/
	endcase
end
always @(qout) /*此过程产生输出逻辑*/
begin 
	case(qout)
		S16: z=1'b1;
		default:z=1'b0;
	endcase
end
endmodule

测试模块代码:

`timescale 1 ps/ 1 ps
module denghua_vlg_tst();
reg eachvec;
reg clk;
reg clr;
 
wire [17:0]  qout;
wire z;
 
integer i;
denghua i1 (
	.clk(clk),
	.clr(clr),
	.qout(qout),
	.z(z)
);
initial
begin
	$display("Running testbench");
	clk=1;
	clr=0;
	#40 $stop();
end
initial
	$monitor("qout:%b z:%b",qout,z);
 
always
begin
	#1 clk=~clk;	
end
endmodule
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。