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号线票价政策及线路特点详解
茶叶的大众品鉴法:一观二闻三品
“旅游+”深度融合之贞丰:做“热”文化 做“火”旅游
5种好书,突破英语阅读
手机悬浮球关闭方法与注意事项
吸气时心脏像针扎一样疼,过一会就好了
广东有自己的鹤岗了,清远房价未来走势如何?
清远成广东价格洼地?业内:15万1套是个例,但30万买房没问题
如何为你的孩子选择完美的育儿室灯?
中医经络基础培训:从理论到实践的全面解析
历史上孙策是怎么死的?为何会被自己人所杀?
检测个人信息泄露的四个实用方法
初学者骑动感单车怎样坚持(八大建议)
骑动感单车好处多 医生:心率超过160 最好先休息一下
“流感神药”玛巴洛沙韦真这么神?合肥多家药店无货,医生提醒:并非人人适用
喝葛根粉的作用与功效有哪些
RSI指标详解:如何利用RSI指标提升交易决策的准确性?
35岁后的女人,多健身有什么好处?怎么安排健身计划?
炖出补气滋补美味的十全大补鸡汤
家庭健康推荐:适合全家人的药膳食谱料理
管理者类型变革中,领导力如何发展?