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进行计算。
热门推荐
白血病化疗后的骨髓抑制护理指南
化疗后骨髓抑制,血小板减少怎么办?
广汽丰田锋兰达冬季驾驶全攻略:从安全到保养,这些细节要注意
独库公路:穿越雪山草原,串联多个民族的旅游黄金线
6-9月游独库公路:最佳季节与必备装备指南
长隆旅游度假区打卡攻略:从汉溪长隆到广州南站
2型糖尿病饮食方案推荐!
糖尿病患者情绪容易失控吗?
广州地铁7号线:汉溪长隆到广州南站最快路线揭秘
老年口腔健康指南:避开五大陷阱,选择正规机构
上海老洋房:艺术与历史的完美邂逅
超集建筑揭秘:上海老洋房改造秘籍
维生素C护肤法,快速美白不求人
冬季室内运动,美白也能跟上节奏?
冬季美白秘籍:柠檬、西红柿、牛奶的护肤功效与使用方法
余眜剑:75字铭文揭秘吴国兴衰,展现春秋青铜工艺巅峰
贝聿铭封山之作:苏州博物馆新馆设计背后的故事
大英博物馆古罗马文物亮相苏州,这座“博物馆学校”成文化新地标
苏州博物馆摄影攻略:贝聿铭设计的5大绝美取景点
苏州园林古镇游:从拙政园到同里,八处胜景详解
系统优化团队绩效:十大策略从目标设定到项目管理
小汽车强制报废新规全解读:这些情况必须报废
车辆强制报废影响驾照换新?这样处理最稳妥
小型汽车报废标准大揭秘:使用年限、行驶里程全解析
高原反应预防指南:从非药物到药物的完整方案
自制葱油饼:电饼铛版详细教程
从倾听到反馈:用沟通化解职场压力
职场人必修课:如何做好向上、平级、向下沟通
无糖酸奶:减肥养胃的双重选择
无糖酸奶:糖尿病患者的理想饮品