FPGA开发入门:实现流水灯设计详解
创作时间:
作者:
@小白创作中心
FPGA开发入门:实现流水灯设计详解
引用
CSDN
1.
https://m.blog.csdn.net/weixin_63553972/article/details/140699845
在FPGA开发中,流水灯设计是一个经典的入门项目,类似于编程中的"Hello World"。本文将详细介绍如何使用FPGA实现流水灯功能,包括代码编写、测试验证和实际硬件测试的全过程。
一、概述
在学习任何硬件开发时,LED流水灯都是入门级的经典项目,无论是单片机MCU、DSP还是其他硬件平台,LED流水灯都是最基础的实践项目之一。在FPGA开发中,实现流水灯功能同样需要使用计数器作为基础。
二、设计代码的编写
以下是实现流水灯功能的核心代码:
//模块定义
module led(
input rst_n,
input clk,
output reg [3:0] led_out
);
//参数定义
parameter TIME_500ms= 25_000_000;
//内部信号定义
reg [24:0] cnt;//计数500ms所需要的二进制位数
wire add_cnt;//计数器开启条件
wire end_cnt;//计数器结束条件
reg [3:0] state_n;
//计数器实现功能,0.5秒技术
always @(posedge clk or negedge rst_n)begin
if(!rst_n)begin
cnt<=0;
end
else if(add_cnt)begin
if(end_cnt)
cnt<=0;
else
cnt<=cnt+1;
end
else
cnt<=0;
end
assign add_cnt=1'b1;
assign end_cnt=add_cnt && cnt ==(TIME_500ms-1);
always @(posedge clk or negedge rst_n)begin
if(!rst_n)
led_out<=4'b0011;
else if(end_cnt)begin
led_out<={led_out[2:0],led_out[3]};
end
else
led_out<=led_out;
end
endmodule
在这段代码中,关键在于使用拼接操作实现LED灯的循环移动:led_out<={led_out[2:0],led_out[3]}。这行代码通过将最高位和最低位不断交换,实现LED灯的流水效果。
三、测试文件的编写
为了验证设计的正确性,需要编写测试文件:
//定义时间尺度
`timescale 1ns/1ps
module led_tb();
//重定义
defparam led_inst.TIME_500ms = 25;
//内部变量定义
reg clk;
reg rst_n;
wire [3:0] led_out;
//模块实例化
led led_inst(
/*input */ .rst_n (rst_n ),
/*input */ .clk (clk ),
/*output reg [3:0] */ .led_out (led_out )
);
//时钟
parameter CLK_CLY =20;
initial clk=0;
always #(CLK_CLY/2) clk=~clk;
//复位
initial begin
rst_n =1'b0;
#(CLK_CLY*2);
#3;
rst_n =1'b1;
end
//激励
endmodule
需要注意的是,在测试文件中对周期进行了重定义:defparam led_inst.TIME_500ms = 25。这种重定义仅在测试环境中有效,不会影响实际设计文件中的参数值。
四、波形仿真
通过波形仿真,可以观察到LED灯从0001到1000的循环流水效果。
五、下板验证
实际硬件测试结果如下:
热门推荐
经常反酸、烧心,严重到呕血!其实大病早有预警!
翁源兰花:从年货网红到产业龙头
高端产品如何突破市场需求
老年人的健康生活指南:20条实用建议
世界精神卫生日:从婴幼儿到中老年,这些精神卫生知识要知道
总是做噩梦?身体可能出了这 5个问题!看看你中招了吗
2024年补牙纳入医保了吗?我宣布是的,家人们看看哪些项目还不能报销
职工健保中的牙齿治疗费用如何进行报销?详细解读报销流程与注意事项
北京补牙能走报销吗?详细介绍不同补牙材料的价格及报销情况!
《蛋仔派对》最新皮肤兑换攻略!
南江大峡谷:贵州的地质奇迹
南江大峡谷环保游攻略:乘坐景区环保车
冬日徒步南江大峡谷:飞龙栈道挑战记
秋冬打卡南江大峡谷,绝美红叶等你来!
现存最大的猛禽,翼展达3米以上,能飞172公里远5小时不扇翅膀
李白的《望天门山》:古诗词中的绝美风景
李白笔下的《望天门山》:山水意境之美
安徽马鞍山采石矶:李白笔下的诗意之旅
吃降压药能吃柚子吗?了解这些很重要!
产后抑郁与乳汁分泌的关系及应对方法
《杀手13第二部》:紧张刺激的续集,角色与情节深度探索带来全新观影体验
月球上到处都是坑坑洼洼的陨石坑,可为何地球上却很少有?
黄金市场的技术分析与基本面分析如何结合?这种结合在不同市场环境下有何变化?
童年的色彩:《妹妹的红雨鞋》诗意解读
高明一日游:盈香生态园 vs 鹭湖度假区,你Pick谁?
佛山第一峰下的世外桃源:石水村一日游全攻略
高明文化之旅:千年古塔、唐代窑址与八百年人文故事
琅琊古城:临沂新晋网红打卡地
原神雷电将军攻略:技能机制、玩法详解与配队推荐
小学生英语作文写作技巧全攻略