|
- module hc161( //异步清零的同步四位二进制加法计数器 VCC:Pin16 GND:Pin8
- input [3:0] D, //4位宽计数输入D Pin:6,5,4,3
- input ENP, //计数控制端 Pin7
- input ENT, //计数控制端 Pin10
- input CLK, //时钟上升沿触发 Pin2
- input LOAD, //高电平:计数+1 (ENP,ENT必须高电平,否则保持) 低电平:将D打入Q (无视ENP,ENT) CLK上升沿触发 Pin9
- input MR, //异步下降沿清零Q Pin1
- output RCO, //进位输出 与Q连接四输入与门 Pin15
- output reg [3:0] Q //4位宽计数输出Q Pin:11,12,13,14
- );
- initial Q = 4'b0;
- assign RCO = &Q;
- always @(posedge CLK or negedge MR) begin
- if(!MR) begin
- Q <= 4'b0;
- end else if(CLK) begin
- if(LOAD) begin
- if(ENP && ENT) begin
- Q <= Q + 4'b1;
- end
- end else begin
- Q <= D;
- end
- end
- end
- endmodule
- module main(
- input clk,
- output [3:0] out
- );
- hc161 U1(
- .D(4'b0000),
- .ENP(1'b1),
- .ENT(1'b1),
- .CLK(clk),
- .LOAD(1'b1),
- .MR(1'b1),
- .RCO(),
- .Q(out)
- );
- endmodule
复制代码 |
|