|
本帖最后由 HDL 于 2023-1-9 09:12 编辑
- module hc109_son( //74HC109子模块
- input J, //输入J
- input K, //输入K (反向输入)
- input CLK, //上升沿触发
- input R, //异步低电平清0
- input S, //异步低电平置1
- output reg Q, //输出Q
- output reg _Q //反向输出Q
- );
- initial {Q,_Q} = 2'b01;
- wire j,k,r,s;
- assign {j,k,r,s} = {J,~K,~R,~S};
- always @(posedge CLK or posedge r or posedge s) begin
- if(r || s) begin
- if(r && !s) begin
- {Q,_Q} <= 2'b01;
- end else if(!r && s) begin
- {Q,_Q} <= 2'b10;
- end else if(r && s) begin
- {Q,_Q} <= 2'b11;
- end
- end else if(CLK) begin
- case({j,k})
- 2'b00:{Q,_Q} <= {Q,_Q};
- 2'b01:{Q,_Q} <= 2'b01;
- 2'b10:{Q,_Q} <= 2'b10;
- 2'b11:{Q,_Q} <= ~{Q,_Q};
- endcase
- end
- end
- endmodule
- module hc109( //具有异步R-S功能两路下降沿J-K触发器 VCC:Pin16 GND:Pin8
- input J_A, //Pin2
- input K_A, //Pin3
- input CLK_A, //Pin4
- input R_A, //Pin1
- input S_A, //Pin5
- output Q_A, //Pin6
- output _Q_A, //Pin7
-
- input J_B, //Pin14
- input K_B, //Pin13
- input CLK_B, //Pin12
- input R_B, //Pin15
- input S_B, //Pin11
- output Q_B, //Pin10
- output _Q_B //Pin9
- );
- hc109_son A(
- .J(J_A),
- .K(K_A),
- .CLK(CLK_A),
- .R(R_A),
- .S(S_A),
- .Q(Q_A),
- ._Q(_Q_A)
- );
- hc109_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输出 Pin42
- );
- hc109 U1(
- .J_A(1'b1),
- .K_A(1'b0),
- .CLK_A(clk),
- .R_A(1'b1),
- .S_A(1'b1),
- .Q_A(outA),
- ._Q_A(),
- .J_B(1'b1),
- .K_B(1'b0),
- .CLK_B(outA),
- .R_B(1'b1),
- .S_B(1'b1),
- .Q_B(outB),
- ._Q_B()
- );
- endmodule
复制代码 |
|