|
- module hc76_son(
- input R, //输入R 异步下降沿(低电平)触发
- input S, //输入S 异步下降沿(低电平)触发
- input J, //输入J
- input K, //输入K
- input CLK, //时钟 (下降沿触发)
- output reg Q, //输出Q
- output reg _Q //Q的反向输出
- );
- initial {Q,_Q} = 2'b01;
- wire [1:0] RS = {R,S};
- always @(negedge CLK or negedge R or negedge S) begin
- if(!R || !S) begin //R或S低电平
- if(RS == 2'b01) begin //R低电平
- {Q,_Q} <= 2'b01;
- end else if(RS == 2'b10) begin //S低电平
- {Q,_Q} <= 2'b10;
- end else if(RS == 2'b00) begin //R与S低电平
- {Q,_Q} <= 2'b11;
- end
- end else if(!CLK) begin
- case({J,K})
- 2'b00:{Q,_Q} <= {Q,_Q}; //JK全0(不变)
- 2'b01:{Q,_Q} <= 2'b01; //J=0 K=1 清0
- 2'b10:{Q,_Q} <= 2'b10; //J=1 K=0 置1
- 2'b11:{Q,_Q} <= ~{Q,_Q}; //JK全1(翻转)
- endcase
- end
- end
- endmodule
- module hc76( //具有异步R-S功能两路下降沿J-K触发器 VCC:Pin5 GND:Pin13
- input J_A, //Pin4
- input K_A, //Pin16
- input CLK_A, //Pin1
- input R_A, //Pin3
- input S_A, //Pin2
- output Q_A, //Pin15
- output _Q_A, //Pin14
-
- input J_B, //Pin9
- input K_B, //Pin12
- input CLK_B, //Pin6
- input R_B, //Pin8
- input S_B, //Pin7
- output Q_B, //Pin11
- output _Q_B //Pin10
- );
- hc76_son A(
- .J(J_A),
- .K(K_A),
- .CLK(CLK_A),
- .R(R_A),
- .S(S_A),
- .Q(Q_A),
- ._Q(_Q_A)
- );
- hc76_son B(
- .J(J_B),
- .K(K_B),
- .CLK(CLK_B),
- .R(R_B),
- .S(S_B),
- .Q(Q_B),
- ._Q(_Q_B)
- );
- endmodule
- module main(
- input clk, //50Mhz输入 Pin17
- output outA, //25Mhz输出 Pin40
- output outB //12.5Mhz输出 Pin41
- );
- hc76 U1(
- .J_A(1'b1),
- .K_A(1'b1),
- .CLK_A(clk),
- .R_A(1'b1),
- .S_A(1'b1),
- .Q_A(outA),
- ._Q_A(),
-
- .J_B(1'b1),
- .K_B(1'b1),
- .CLK_B(outA),
- .R_B(1'b1),
- .S_B(1'b1),
- .Q_B(outB),
- ._Q_B()
-
- );
- endmodule
复制代码 |
|