FPGA学习笔记:3位计数器设计
创作时间:
作者:
@小白创作中心
FPGA学习笔记:3位计数器设计
引用
CSDN
1.
https://blog.csdn.net/qq_45910789/article/details/139013650
FPGA(现场可编程门阵列)是一种重要的可编程逻辑器件,在数字电路设计中有着广泛的应用。本文将介绍如何使用Verilog语言设计一个3位计数器,这是一个FPGA学习的基础内容。
一、逻辑设计
1.端口设计
模块的输入端口包含系统时钟sys_clk、复位信号sys_rst_n;输出端口包含3位的计数器信号cnt[2:0]。
2.波形图绘制
每个时钟上升沿之后,计数器的值就加1,cnt循环从0计数到7,每当计数器计数到最大值时,就会从零开始重新累加。
二、程序设计
根据波形图使用Verilog编写计数器(counter.v)代码
1.计数器代码
module counter(
input sys_clk, // 系统时钟信号
input sys_rst_n, // 系统复位信号(低电平有效)
output reg [2:0] cnt // 输出计数器值,3位宽度
);
always @(posedge sys_clk or negedge sys_rst_n) begin
if (!sys_rst_n) // 如果复位信号为低电平
cnt <= 3'd0; // 计数器复位为0
else
cnt <= cnt + 3'd1; // 计数器值加1
end
endmodule
2.仿真代码
`timescale 1ns / 1ns // 仿真单位/仿真精度
module tb_counter();
// 定义输入端口
reg sys_clk; // 系统时钟信号
reg sys_rst_n; // 系统复位信号(低电平有效)
// 定义输出端口
wire [2:0] cnt; // 计数器值输出端口
// 初始化模块
initial begin
sys_clk = 1; // 初始时钟信号为高电平
sys_rst_n = 1'b0; // 初始复位信号为低电平
#201 // 延迟201个时间单位
sys_rst_n = 1'b1; // 将复位信号置为高电平,使计数器开始计数
end
// 时钟信号反转模拟
always #10 sys_clk = ~sys_clk;
// 实例化计数器模块
counter counter_inst(
.sys_clk(sys_clk), // 传递时钟信号
.sys_rst_n(sys_rst_n), // 传递复位信号
.cnt(cnt) // 传递计数器输出
);
endmodule
3.仿真结果
仿真波形与我们绘制的波形图一致
总结
计数器是逻辑设计中非常常用的一个时序电路,计数器是由寄存器和加法器组成的,使用计数器可以实现使用计数器可以对脉冲的个数计数,以实现测量、计数、分频和控制的功能。
热门推荐
眼睑炎并非小事
一到夏天就“嗨”的黄曲霉菌
探索AI智能写作的未来:从技术发展到实践应用,不容错过的重要趋势与工具推荐
特色小吃“泥嘎子”:味蕾上的乡愁与文化传承
沙苑子泡水喝有什么效果
英超风云:诺丁汉捍卫前三,纽卡斯尔力求搅局
保护你的猫咪:如何进行正确有效的驱虫?
周末补觉1~2小时最佳,这样做能降低抑郁风险
在流萤身上,我看到了二游角色塑造的未来
楚国与秦国:从盟友到敌手的历史演变
冷暴力婚姻的危害及应对策略
美股期权交易策略全解析
春秋郑国:昔日霸主的兴衰历程
表情包那些事!——自媒体版权侵权风险
热力学与流体力学基础理论:热工理论、气体状态参数与理想气体方程
如何帮助孩子理解写作(逐步提高写作能力的方法)
精选路线| 挪威骑行,早已玩到Next Level
电瓶车违规入楼充电引火灾,损失怎么赔?丨宝法案例
新加坡媒体:从古装剧到音乐会,中国娱乐风靡新加坡
宇智波带土的面具有何含义?每张面具都是一段人生
从小龙套到大明星,赵丽颖的逆袭之路
如何有效防治菜青虫
古法黄金的收藏价值与投资前景
特斯拉供应链正在改变:安全视角下的评估
言辞的艺术:巧妙的表达之道
宠物医疗技术与创新趋势研究
年底开建!龙岗这所九年一贯制学校传新进展~
手机拍照如何设置显示时间?详细教程与实例分享
搓脚底的好处和坏处
2024胡润百学全球高中排名公布!中国13所学校上榜,深国交跻身全球TOP50