野火A7学习第六次(计数器相关)

1 基础概念在这里插入图片描述

2 实战指南

2.1 设计规划

1 设计要求
在这里插入图片描述

2 基础规划
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2.2 波形绘制

计算
在这里插入图片描述

方法1:计数器位宽26在这里插入图片描述
方法二:计数器位宽25
在这里插入图片描述

2.3 代码编写和调试

module counter
(
	input wire sys_clk,
	input wire sys_rst_n,

	output wire led_out
);

parameter CNT_MAX = 25'd 24_999_999;  // localparam 只能用于 模块内部使用。parameter 可以从module中入口修改参数,使用#(CNT=1000)counter 例化

reg [24:0] cnt;

always@(posedge sys_clk or negedge sys_rst_n)
	if(sys_rst_n == 1'b0)
		cnt <= 25'd0;
	else if(cnt == CNT_MAX)
		cnt <= 25'd0;
	else
		cnt <= cnt + 1;


always@(posedge sys_clk or negedge sys_rst_n)
	if(sys_rst_n == 1'b0)
		led_out <= 1'b0;
	else if(cnt == CNT_MAX)
		led_out <= ~ led_out;
	else  // 如果无效 保持原来的电平
		led_out <= led_out;




endmodule

`timescale 1ns/1ns

module tb_counter();

reg sys_clk;
reg sys_rst_n;

wire led_out;

initial begin
	sys_clk = 1'b1;
	sys_rst_n <= 1'b0;
	#20
	sys_rst_n <= 1'b1;
end

always #10 sys_clk =~sys_clk;

counter
#(
	.CNT_MAX(24)
) counter_inst
(
	.sys_clk(sys_clk),
	.sys_rst_n(sys_rst_n),
	.led_out(led_out)
);

 
endmodule

2.4 逻辑仿真和波形对比

在这里插入图片描述

2.5 锁定管脚和上板测试

在这里插入图片描述
在这里插入图片描述

2.6 修改一下,添加一个合理的 脉冲标志信号

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值