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进行计算。
热门推荐
冬游甘孜:稻城亚丁VS色达佛学院,谁更值得打卡?
甘孜旅游新宠:稻城亚丁、木格措、海螺沟
甘孜双璧:稻城亚丁与海螺沟冰川的绝美之旅
塔公草原:川西高原上的绝美日落打卡地
西湾村的农业逆袭:从牛耕手种到智能温室
西田湾村:常德近郊的美丽乡村一日游攻略
蔡明:28年春晚历程,一个时代的笑声与记忆
低智商犯罪青少年的心理探秘
《低智商犯罪》:当悬疑遇上喜剧,这部剧有点不一样
苏东坡寓惠930周年:惠州西湖的建筑之美
跟着苏东坡打卡!惠州东坡文化主题游
广州塔周边游:必打卡景点大揭秘!
增城白水寨自驾游攻略:安全到达广州塔!
如何改善“夫妻关系”?这6个方法很有效,让感情迅速升温!
最高院:“1314”、“520”等特殊数额转账这种情况的仍可要回!
解密达瓦:拉萨峰会5G虚拟主播背后的AI黑科技
张飞在阆中的七年:从战将到“良牧”的传奇人生
廖凡刘琳领衔,《树影迷宫》剧情揭秘
廖凡、尹昉新作《树影迷宫》,迷雾剧场再出精品!
广州地铁20号线最新进展:南头古城站开钻,增城至广州塔将直达
华为手机otg功能怎么打开?一文读懂从基础到故障排查的深度指南
南充必打卡:朱德故里&阆中古城
《借命而生》:中国版《肖申克的救赎》,小人物的英雄主义
西青区集成电路产业园:下一个投资风口?
秦昊韩庚新剧《借命而生》,陆川执导引爆期待!
《借命而生》:杜湘东是又一个安欣?
西青经济技术开发区:产业升级新动向
秋冬季节儿童嗓子痒疼怎么办?这份安全用药指南请收好
秋冬季节儿童喉咙痛,科学护理这样做!
增城到广州塔地铁攻略:虽然没有直达,但这些方案一样便捷!