FPGA-VIVADO学习:使用D触发器和计数器实现LED灯闪烁
创作时间:
作者:
@小白创作中心
FPGA-VIVADO学习:使用D触发器和计数器实现LED灯闪烁
引用
CSDN
1.
https://blog.csdn.net/waS_511/article/details/146316915
本教程将介绍如何使用FPGA开发工具VIVADO实现LED灯闪烁的功能。通过学习D触发器和计数器的工作原理,以及Verilog代码的编写和仿真测试,读者可以掌握基本的FPGA开发技能。
原理详解
D触发器
CK是时钟,Q是输出。
D触发器在时钟信号CK的上升沿读取输入D的值,并将其存储和输出。
计数器
计数器通过加法器add在每个时钟上升沿递增计数值。
Verilog实现
本设计采用低电平有效的复位信号。根据系统时钟频率33.333333MHz(周期30ns)和目标闪烁周期500ms,计算出计数器的最大值:
500ms = 500 * 1000 * 1000 ns = 16,666,666.666666
Verilog代码如下:
module led_twinkle(
Clk,
Reset_n,
Led
);
input Clk;
input Reset_n;
output reg Led;
reg [24:0]counter;
always@(posedge Clk or negedge Reset_n)
if(!Reset_n)
counter<=0;
else if (counter==16666666)//25000000
counter<=0;
else
counter<=counter+1'd1;
always@(posedge Clk or negedge Reset_n)
if(!Reset_n)
Led<=1'b0;
else if(counter==16666666)
Led<=!Led;
endmodule
仿真代码
`timescale 1ns / 1ns
module led_twinkle_tb( );
reg Clk;
reg Reset_n;
wire Led;
led_twinkle led_twinkle_inst0(
.Clk(Clk),
.Reset_n(Reset_n),
.Led(Led)
);
initial Clk=1;
always #15 Clk=~Clk;
initial begin
Reset_n=0;
#301;
Reset_n=1;
#2000_000_000;
$stop;
end
endmodule
板块验证
在硬件平台上,可以通过按键产生复位信号。根据设计要求配置IO口并生成比特流文件。需要注意的是,实际测试中发现频率计算有误,应使用50MHz而非33.333333MHz进行计算。
热门推荐
高考语文文言文翻译技巧详解
如何理解张国荣的音乐与电影成就
最适合CSGO玩家的切枪技巧:哪种方法效果最好?如何快速切换武器?
为什么阅读《鲁滨孙漂流记》?——多维价值解析
从零到热爱:五步教你如何培养英语学习兴趣
西安交通大学计算机考研全攻略:专业设置、考试要求与历年录取分数
ZooKeeper内存优化实践:从99.99%SLA到极致稳定
Windows 中的 Hosts 文件是什么?如何找到并修改它?
Windows 中的 Hosts 文件是什么?如何找到并修改它?
隐形眼镜度数怎么选
如何通过在线考核打分系统,提升组织的绩效打分流程?
木豆最佳播种时间是几月?播种时需要注意什么?
窝状角质松解症用什么药膏比较快见效
思考死亡是一种强大的工具
两款健脾苹果汤,让孩子身体越长越壮实!
冰敷与热敷的正确使用方法
亚洲五国的“天才儿童”教育
IPX8和IPX7哪个防水等级高?
玩游戏耳机怎么选?5个要点要记住!
白墙青瓦马头墙,绿水青山蔚蓝天——美到窒息的徽派建筑
《红楼梦》里金陵十二钗互相是什么关系?有什么共同特点?
权力斗争下的悲剧:唐玄宗与太平公主的冲突
DNS污染是什么?防止和清洗DNS污染的解决方案
高端职位应聘指南:打造完美求职策略
漫画《幽游白书》中的反派户愚吕弟为什么这么有人气?
珍珠母粉和珍珠粉的功效区别
足底筋膜炎的治疗方法
新疆灰枣与红枣的功效区别
Steam游戏评测 No.125《勇气默示录 2》
服用布洛芬后需留意,有些食物不能随便吃,安全用药要知道