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.仿真结果
仿真波形与我们绘制的波形图一致
总结
计数器是逻辑设计中非常常用的一个时序电路,计数器是由寄存器和加法器组成的,使用计数器可以实现使用计数器可以对脉冲的个数计数,以实现测量、计数、分频和控制的功能。
热门推荐
翡翠五行属性解析:属于什么?具体含义是什么?
七步成诗,天才璀璨——解读曹植七步诗的深邃内涵
再次转变!外资继续上调中国经济增长预测!什么信号?
住房公积金:概念、性质、用途与贷款指南
怎么证明你的采购价格是合理的?
网上怎么预约四维彩超检查
探秘妖股疯涨背后:行业催化、公司动态与资本预期的深度解码
瓦罐汤是哪里的特产?香飘四溢,千年传承!
气血与内力管理技巧:保持更佳战斗状态!
越南投资实用指南:深度解析税收制度、投资环境与注册公司
慢性疲劳综合征:隐藏的危害与全方位调治策略
如何评估自己承受的股市风险
嚼口香糖有两大好处,但前提是“无糖”
《崩坏星穹铁道》dot机制详解:伤害来源、计算公式及配装建议
劳动者入职提供虚假学历,签的劳动合同是不是就无效?
【游戏指导】观察、介入、支持——幼儿自主游戏中师幼互动有效策略研究
一文读懂计算机专业细分方向,寻找你的理想方向
房屋产权如何变更?如何办理房产过户手续?
惠州学院招生政策探秘:自主选拔机制的可能性分析
奥特曼应该怎么画
成人与儿童血压标准对照表:不同年龄段的血压正常值
十三香在烹饪中的应用技巧
域名迁移操作指南与注意事项
广州塔灯光几点开始点亮?观赏时间、技巧全攻略,快收藏!
哈基米哈基米是什么意思
帕金森病与心理健康:如何应对焦虑与抑郁
真有小行星要撞地球,甚至比我被车撞死的概率还大
如何避免团队趋同
双女主的极致宿命感,被她写尽
保和丸(浓缩丸)的适应症、疗效及副作用