Verilog——计数器

时序逻辑代码设计

组合逻辑+触发器=时序逻辑

计数器

组合逻辑:这是一个加法器,做加一计算

Verilog代码:

`timescale 1ns/10ps//写testbench定义时间单位
module counter(
				clk,//时钟信号
				res,//复位信号
				y
				);
//端口属性
input			clk;
input			res;
output[7:0]		y;//八位计数器

//组合逻辑电路
reg[7:0]		y;//触发器,定义为reg型,虽然是输出,但是要在always语句里对它赋值,要做reg型变量定义

wire[7:0]	  sum;//+1运算的结果
assign        sum=y+1;//组合逻辑部分

//触发器工作
always@(posedge clk or negedge res)//敏感变量为时钟和复位沿;
//如果复位信号到来(复位下降沿)
if(~res)begin
	y<=0;
end
//时钟触发,正常工作时(时钟上升沿)
else begin
	y<=sum;
end

endmodule

测试代码testbench

//-------testbench of counter----
module counter_tb;
reg						clk,res;
wire[7:0]               y;
//模块例化
counter counter(
						.clk(clk),//时钟信号
						.res(res),//复位信号
						.y(y)
						);

//给clk,res赋值
//clock要反复动,不能用initial给clk大量赋值
//使用initial赋初值
initial begin
					  clk<=0;res<=0;//赋初值,复位清零
			#17       res<=1;//让res不复位,释放复位
			#6000	  $stop;//八位计数器跑两遍需要的时间,到时间调用系统任务结束
end
//clk变化
always #5 clk<=~clk;//每过5ns时钟翻一次,周期为10ns

endmodule

  • 2
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Verilog时钟计数器是一种用于对时钟信号进行计数的电路设计。它可以用于分频器、FIFO设计等场景中。在Verilog中,可以使用计数器模块来实现时钟计数器的功能。例如,可以使用8位计数器模块来实现一个8位的时钟计数器。 在给定的Verilog代码中,模块Count_1是一个8位计数器模块。它有一个时钟输入clk和一个复位输入rst_n。在每个时钟上升沿或复位信号下降沿时,计数器会根据当前计数值进行更新。当复位信号为低电平时,计数器会被清零。当计数值达到49时,计数器会重新计数。同时,模块还有一个输出out,根据计数值的不同,在特定的计数值时会改变输出值。 在测试文件Count_1_tb中,模块实例化了Count_1模块,并提供了时钟信号clk和复位信号rst_n。在初始化阶段,时钟信号被初始化为低电平,并通过always块进行周期性翻转。复位信号在开始时被置为低电平,经过一段时间后再置为高电平。测试文件中的时钟周期定义为`Clock,可以根据需要进行调整。 综上所述,给定的Verilog代码实现了一个8位的时钟计数器,可以根据时钟信号进行计数,并在特定的计数值时改变输出值。 #### 引用[.reference_title] - *1* [计数器Verilog)](https://blog.csdn.net/SummerXRT/article/details/119107916)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Verilog基础知识-——计数器设计以及任意分频设计与modelsim仿真](https://blog.csdn.net/H19981118/article/details/115353714)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值