数字逻辑:模60计数器(使用MAX+plus II 、Verilog语言 编写)

代码:

module test(clk,reset,min_H,min_L,min_H_cy,min_L_cy);
input clk,reset;
output [3:0] min_H,min_L;
output min_H_cy,min_L_cy;
reg [3:0] min_H,min_L;

assign min_L_cy=(min_L==4'b1001)?1:0;
always @(posedge clk)
    begin 
		if(reset) min_L<=4'b0000;
		if(min_L_cy==1) 
			begin 
				min_L<=4'b0000;
			end
		else min_L<=min_L+1;
	end
                 
assign min_H_cy=(min_H==4'b0101)?1:0;
//另一种写法是assign min_H_cy=(min_H==4'b0101)&(min_L_cy==1)?1:0  ,需要改下注释P1后的写法;
always @(posedge clk)
	begin
		if(reset) min_H<=4'b0000;
		if(min_L_cy==1) //P1
			begin
				if(min_H_cy==1) 
					begin
						min_H<=4'b0000;
					end
//always不能写min_L;
                else min_H<=min_H+1;
			end
	end
endmodule

时序图:

在这里插入图片描述

总结:

1)每个always 处理一位(例如59的个位“9”),例如:min_L已经在第一个always处理过了,就不能在第二个always中赋值;(经验总结)

2)每一个begin-end 相当于(c语言中的)一个括号;

3)if-if else-if else … … 最后要补else,(即使语句无实际功能,例如a<=a;)要养成好习惯;

  1. 其实无需高位插眼,用二进制码表示就挺方便的。
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值