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进行计算。
热门推荐
选对复读学校位置很重要
“今天被这句话所治愈了!”物物而不物于物。
连锁企业如何高效招商加盟:策略与实践
17岁如何长高快
守护隐私,共筑防线:深入探讨艾滋病保密制度
病历被泄露,医疗系统应该如何加强信息安全保密管理?
好汉歌:水浒传主题曲的音乐魅力
土豆菜谱大全10道,家常味,好吃好做!
‘七情六欲’指的是什么?了解七情六欲的具体内容
欲望的本质与心理分析
雅典:穿越历史、文化与现代性的永恒之旅
月饼最受欢迎的十种口味 中秋节常见十类月饼有哪些
全国双一流大学一共有多少所?(147所)
皇马为姆巴佩特训,采用“C罗方案”调整状态
如何准备教师招聘考试中的笔试环节
中医食疗养肝法:吃什么,怎么吃
医学验光VS普通验光,你选对了吗?
珍禽瑞兽——古建筑中的动物形象
碘伏可以喝吗?正确使用碘伏的注意事项
香港教育大学:设置多元化特色学科
公司债务如何转移个人债务
菲律宾毒犯自首的法律规定与实践探讨
排队叫号系统解决方案
最常见的PCB测试方法
河北5A景区合集,收好这份河北5A景区名单大全,即刻出发
居间合同限制条款探究:明确约定,保障权益
怀孕几天用试纸可以试出来
鱼油适合什么人群吃
英冠焦点战:谢菲联与谢周三的对决分析
紫苏叶的产地分布与种植技术