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进行计算。
热门推荐
春节家庭关系攻略:如何避免争吵?
偏头痛、紧张型头痛、丛集性头痛:如何快速区分与应对
摩羯座男生性格揭秘:腹黑还是暖男?
双11特辑:职场饭局礼仪完全指南,一本书掌握座位安排与聊天技巧
职场人必知的饭局买单术:从准备到执行的完整指南
IL-6水平升高,警惕冠心病风险
聪明加幽默,生肖猴的无敌社交术
自律成功的十大习惯:早起、目标设定到反思总结
胃溃疡治疗:西医重抑酸,中医重调理
从早睡到调息:中医养生12法打造健康生活
黄山“特种兵”一日游:迎客松、莲花峰、天都峰全攻略
肝血管瘤怎么办?中医专家给出6大调理建议
黑枣牛奶,三天一次美肤秘籍
精神疾病患者如何应对病情反复带来的心理压力?
揭秘唐代宫女:华丽服饰下的严格等级制度
达瓦斯教你识别突破箱体股
陈式太极拳:10大科学依据与3步修炼法
传统拳术重内功修炼,现代散打偏重外在力量
和襄高速六安段启动连续梁施工,全长170.5公里
垫下巴是长久的吗?
华晨宇演唱会门票秒空,歌迷抢票大战再登热搜
免疫治疗:黑色素瘤治疗的新希望
主动分频技术,让你的车载音响更高级
汽车音响分频器接线教程,小白也能秒懂!
研究揭示:我国抗生素残留水平居高,耐药性风险亟待重视
青霉素残留影响食品安全,有机食品成重要解决方案
30年国债ETF大涨6.83%,债市延续牛市格局
初冬打卡清河坊&凤凰寺,杭州历史文化游
360安全卫士主页篡改问题:两种技术解决方案
掌握"been"用法,让你的英语更地道