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.仿真结果
仿真波形与我们绘制的波形图一致
总结
计数器是逻辑设计中非常常用的一个时序电路,计数器是由寄存器和加法器组成的,使用计数器可以实现使用计数器可以对脉冲的个数计数,以实现测量、计数、分频和控制的功能。
热门推荐
支持人民币结算的国家有哪些?(国际贸易干货知识分享)
审批流程优化:打破陈规,释放效率潜能
OA系统怎么加快审批
关于LOST.DIR文件恢复你需要知道的一切
如何从Android设备上的Lost.Dir文件夹中恢复文件
芭蕾舞服装:从紧身衣到tutu裙的发展历程
跟我学写汉字,如何快速掌握技巧?怎么提高书写水平?
如何提升写字能力,从基础到进阶全面掌握?
杨枝甘露:芒果西柚西米的经典组合
微弱的光,古文中的幽微之美
一文梳理:如何构建并优化AI智算中心?
Cell子刊:我国学者研究发现,在怀孕早期感染新冠病毒,增加胎儿内脏反位风险
红糖水真的能治痛经吗?专家为你科学解析这个流传多年的说法
项目管理是如何辨别风险
中国中医协会探究中药材"白术"妙用
有效避免论文抄袭的七大诀窍
著作权抄袭的认定标准是什么,法律是怎样规定的
工业物联网网关在设备接入物联网中的核心作用
深度探秘物联网:从基础概念到广阔前景的全面解析
睡觉前吃点什么有助睡眠
病毒性脑炎的初期症状
什么是可持续咖啡?为什么你应该关心它?
Excel中显示计算过程的多种方法
48V、60V、72V电动车,多大电池才能跑100公里?行内人告诉你答案
一季度业绩快报:最高激增100%!
股票市场中的公司财报:关键财务指标分析
冬春季节小鹅养殖技术要点:从选雏到疾病防治的全方位指南
一文读懂 | C反应蛋白(CRP)与 超敏C反应蛋白(hsCRP)的区别
军队文职值得报考吗?张雪峰称其离职率50%,过来人给出利弊分析
开春瑜伽塑形计划,动作教学、呼吸法、心理调适