带异步复位、使能及装载功能的计数器

带异步复位、使能及装载功能的计数器

module CNT10(clk,rst_n,EN,data,count,load);
input[3:0] data;
input clk;
input rst_n;
input EN;//使能端
input load;//装载
output count;//输出
reg [3:0] Q ;//寄存器类型

always@(posedge clk or negedge rst_n) begin //异步复位
	if(!rst_n)
		Q <= 0;
	else if(EN) begin    //使能端
		if(load) 
			Q <= data;//装载键按下时,将数据传送给寄存器
	else if(Q<9)
			Q <= Q+1;
	else
		Q <= 0;
	end
end

always@(Q)
	begin
		if(Q==4’d9)	//如果为9
			count = 1;
		else
			count = 0;
	end
endmodule

顺手练习下tb文件的编写
ps:仿真是根据你所想模拟的情况编写,每个人情况不一定一样

`timescale 1ns/1ps
module CNT10_tb()
reg clk,rst_n,EN,count,load;
reg[3:0] data;
wire count;

initial begin
clk = 0;
rst_n = 0;
data = 4'b0000;
EN = 1;
load = 1;
#100 rst_n = 0;
end

forever clock = #20~ clock
end

CNT10 CNT10_tb(
.clk(clk),
.rst_n(rst_n),
.EN(EN),
.data(data),
.count(count),
.load(load)
);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风月ac

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值
>