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进行计算。
热门推荐
从目标设定到团队协作:企业客服管理实战指南
提升职场竞争力:从觉察到实践的硬实力养成指南
企业客户管理指南:18个维度提升客户满意度
丽江泸沽湖7日环线自驾游攻略:详细行程安排与景点介绍
刘亦菲:以音乐与演技征服观众的双栖艺人
ERP系统+大数据分析:纺织业转型升级的新引擎
闭门器怎么安装
江苏13个地级市2024年居民基础养老金标准全解析
深圳博物馆历史民俗馆:六大展览展现深圳古今变迁
深圳五大地标建筑游玩攻略:春笋、平安大厦等
日本沉没?科学真相与全球警示
日本沉没危机:巴西和澳大利亚成避难所?
小孩子排便带血怎么办?原因分析与处理建议
宝宝便秘拉粑粑带血怎么回事
周杰伦再登顶!2024年度热歌榜单揭晓
云南自驾游:昆明出发的3条特色路线及实用指南
浙大阿里联合推出轻量级人脸隐私保护方案,攻击成功率降99%
杭州用户刷脸登录误入东莞公司账户,银行称系网络波动
刷脸支付遇盗刷,上海创新“纯净码”保障用户信息安全
微信刷脸支付现安全漏洞,用户需谨慎开通
刘亦菲新歌《心悸》爆红,歌词道尽爱情中的患得患失
实力歌手云集,《玫瑰的故事》原声带成追剧新宠
Excel数据分类汇总三大方法:功能、透视表、函数详解
AI助力实验室设备管理升级,提升科研效率与安全性
从雍山雍水到京兆府:雍州历史地理变迁考
红果参如何食用
足三里:健脾益气的保健要穴,按摩艾灸效果佳
红果参能当水果吃吗?红果参水果吃了有什么好处
管理后台程序,提升设备性能
任务管理器让你秒变办公达人