|
- module hc390_son( //74HC390子模块
- input CKA, //时钟A (下降沿触发:Q[0]翻转)
- input CKB, //时钟B (下降沿触发:Q[3:1]计数,范围:0~4)
- input MR, //异步上升沿高电平清零
- output reg [3:0] Q //[4位宽] 分频输出Q
- );
- initial Q = 4'b0000;
- always @(negedge CKA or posedge MR) begin
- Q[0] <= MR ? 1'b0 : !Q[0];
- end
- always @(negedge CKB or posedge MR) begin
- if(MR) begin
- Q[3:1] <= 3'b000;
- end else begin
- if(Q[3:1] >= 3'b100) begin
- Q[3:1] <= 3'b000;
- end else begin
- Q[3:1] <= Q[3:1] + 3'b001;
- end
- end
- end
- endmodule
- module hc390( //双路二分频与五分频的十进制计数器 VCC:Pin16 GND:Pin8
- //A组
- input CKA_A, //时钟A (下降沿触发:Q[0]翻转) Pin1
- input CKB_A, //时钟B (下降沿触发:Q[3:1]计数,范围:0~4) Pin4
- input MR_A, //异步上升沿高电平清零 Pin2
- output [3:0] Q_A, //[4位宽] 分频输出Q Pin:7,6,5,3
- //B组
- input CKA_B, //Pin15
- input CKB_B, //Pin12
- input MR_B, //Pin14
- output [3:0] Q_B //Pin:9,10,11,13
- );
- hc390_son A(
- .CKA(CKA_A),
- .CKB(CKB_A),
- .MR(MR_A),
- .Q(Q_A)
- );
- hc390_son B(
- .CKA(CKA_B),
- .CKB(CKB_B),
- .MR(MR_B),
- .Q(Q_B)
- );
- endmodule
- module main(
- input clk, //有源晶振时钟输入 Pin17
- output out //100分频输出 Pin40
- );
- wire [3:0] QA;
- wire [3:0] QB;
- hc390 U1(
- .CKA_A(QA[3]),
- .CKB_A(clk),
- .MR_A(1'b0),
- .Q_A(QA),
- .CKA_B(QB[3]),
- .CKB_B(QA[0]),
- .MR_B(1'b0),
- .Q_B(QB)
- );
- assign out = QB[0];
- endmodule
复制代码 |
|