Verilog编程实现流水灯(基于FPGA的数电课设)

编程实现流水灯(verilog)

**

通过编程轮流点亮8个LED灯

**

  1. 单流水灯(每次点亮一个LED灯)
module run_led
(
	CLK,RSTn,LED_Out
);

	input CLK;
	input RSTn;
	output [7:0]LED_Out;
	

	led8_module U1
	(
	.CLK(CLK) ,	// input  CLK
	.RSTn(RSTn) ,	// input  RSTn 
	.LED_Out(LED_Out) 	// output [7:0] LED_Out--to top
	);
	
endmodule 
module led8_module
(
    CLK, RSTn, LED_Out
);

    input CLK;
    input RSTn;
    output [7:0]LED_Out;
        
    parameter T10000MS = 23'd50_000_000;      
    reg [22:0]Count;		//Delay
    reg [7:0]rLED_Out;
	 
    always @ ( posedge CLK or negedge RSTn )
	    if( !RSTn )
			begin
				Count <= 23'd0;
				rLED_Out <= 8'b0000_0001;
			end
	    else if( Count == T10000MS - 1'b1)
			 begin
				Count <= 23'd0;				  
				if( rLED_Out == 8'b0000_0000 )
					rLED_Out <= 8'b0000_0001;
				else
					rLED_Out <= {rLED_Out[0],rLED_Out[7:1]};
			 end
	    else
	        Count <= Count + 1'b1;
	        
	assign LED_Out = rLED_Out;
        
endmodule

2.双流水灯(每次点亮两个LED灯)

module run_led
(
	CLK,RSTn,LED_Out
);

	input CLK;
	input RSTn;
	output [7:0]LED_Out;
	

	led8_module U1
	(
	.CLK(CLK) ,	// input  CLK
	.RSTn(RSTn) ,	// input  RSTn 
	.LED_Out(LED_Out) 	// output [7:0] LED_Out--to top
	);
	
endmodule 
module led8_module
(
    CLK, RSTn, LED_Out
);

    input CLK;
    input RSTn;
    output [7:0]LED_Out;
        
    parameter T10000MS = 23'd50_000_000;      
    reg [22:0]Count;		//Delay
    reg [7:0]rLED_Out;
	 
    always @ ( posedge CLK or negedge RSTn )
	    if( !RSTn )
			begin
				Count <= 23'd0;
				rLED_Out <= 8'b0000_0011;
			end
	    else if( Count == T10000MS - 1'b1)
			 begin
				Count <= 23'd0;				  
				if( rLED_Out == 8'b0000_0000 )
					rLED_Out <= 8'b0000_0011;
				else
					rLED_Out <= {rLED_Out[0],rLED_Out[1],rLED_Out[7:2]};
			 end
	    else
	        Count <= Count + 1'b1;
	        
	assign LED_Out = rLED_Out;
        
endmodule
  • 16
    点赞
  • 95
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是既白呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值