FPGA流水灯和跑马灯

本文详细介绍了FPGA中流水灯和跑马灯的区别,流水灯表现为LED依次亮起,形成循环效果,而跑马灯则是快速切换,使LED看起来在移动。文中通过创建led_water项目,演示了从工程新建到代码编写,再到仿真的全过程,包括流水灯和跑马灯的具体实现步骤与代码,并展示了使用Signal Tap进行分析的流程。
摘要由CSDN通过智能技术生成

流水灯和跑马灯的区别:

在这里插入图片描述

流水灯顾名思义就是让 LED 如同流水一般,从无灯亮,到亮一个,再到亮二个,以此类推,亮 3 个、 4…12 个,最后全部熄灭,再周而复始的循环下去。
而跑马灯就是每次只亮一个,以极快的速度循环,看起来就像led灯跑起来了一样。

流水灯具体实现:

首先新建一个工程项目取名叫led_water
文件夹中再新建duc,prj,src,sim,tcl文件夹:
在这里插入图片描述
在quartus II中新建工项目:在这里插入图片描述
在这里插入图片描述
之后编写代码:

module led_water(
	input			clk	,//50MHz
	input			rst_n	,//system reset

	output reg	[3:0]	led	 //LED 
);
	parameter CNT_MAX = 25'd25_000_000;

	reg	[24:0]		cnt;	//500ms计数器
	wire					add_cnt;//计数器使能信号
	wire					end_cnt;//计数器清零信号
	
	//计数器描述
	always@(posedge clk or negedge rst_n)begin
		if(!rst_n)begin
			cnt <= 25'd0; //复位清零
		end
		else if(add_cnt)begin //计数器使能
			if(end_cnt)begin 	 
				cnt <= 25'd0;	 //计数器清零
			end
			else begin
				cnt <= cnt + 1'b1;
			end
		end
		else begin
			cnt <= 25'd0; //意外情况、清零
		end
	end

	assign add_cnt = 1'b1;
	assign end_cnt = add_cnt && (cnt == CNT_MAX - 1'd1);
	
	//输出LED信号描述
	always@(posedge clk or negedge rst_n)begin
		if(!rst_n)begin
			led <= 4'b0000; //复位全灭
		end
		else if
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值