|
- module hc279( //四组异步下降沿触发的R-S锁存器 VCC:Pin16 GND:Pin8
- //1组
- input R1, //下降沿Q1清0 Pin1
- input S11, //下降沿Q1置1 Pin2
- input S12, //下降沿Q1置1 Pin3
- output reg Q1, //R1下降沿清0,S11或S12下降沿置1 Pin4
- //2组
- input R2, //下降沿Q2清0 Pin5
- input S2, //下降沿Q2置1 Pin6
- output reg Q2, //R2下降沿清0,S2下降沿置1 Pin7
- //3组
- input R3, //下降沿Q3清0 Pin10
- input S31, //下降沿Q3置1 Pin11
- input S32, //下降沿Q3置1 Pin12
- output reg Q3, //R3下降沿清0,S31或S32下降沿置1 Pin9
- //4组
- input R4, //下降沿Q4清0 Pin14
- input S4, //下降沿Q4置1 Pin15
- output reg Q4 //R4下降沿清0,S4下降沿置1 Pin13
- );
- wire S1 = S11 & S12;
- wire S3 = S31 & S32;
- initial {Q1,Q2,Q3,Q4} = 4'b0000;
- always @(negedge R1 or negedge S1) begin
- if(!S1) begin
- Q1 <= 1'b1;
- end else if(!R1) begin
- Q1 <= 1'b0;
- end
- end
- always @(negedge R2 or negedge S2) begin
- if(!S2) begin
- Q2 <= 1'b1;
- end else if(!R2) begin
- Q2 <= 1'b0;
- end
- end
- always @(negedge R3 or negedge S3) begin
- if(!S3) begin
- Q3 <= 1'b1;
- end else if(!R3) begin
- Q3 <= 1'b0;
- end
- end
- always @(negedge R4 or negedge S4) begin
- if(!S4) begin
- Q4 <= 1'b1;
- end else if(!R4) begin
- Q4 <= 1'b0;
- end
- end
- endmodule
- module main(
- input clk, //时钟输入 Pin17
- output out //8分频输出 Pin40
- );
- reg R,S;
- wire Q;
- hc279 U1(
- //.R1(),
- //.S11(),
- //.S12(),
- //.Q1(),
- //.R2(),
- //.S2(),
- //.Q2(),
- //.R3(),
- //.S31(),
- //.S32(),
- //.Q3(),
- .R4(R),
- .S4(S),
- .Q4(Q)
- );
- reg [2:0] j = 2'b0;
- assign out = Q;
- always @(posedge clk) begin
- case(j)
- 3'b000:{R,S} <= 2'b10;
- 3'b001:{R,S} <= 2'b11;
- 3'b010:{R,S} <= 2'b11;
- 3'b011:{R,S} <= 2'b11;
- 3'b100:{R,S} <= 2'b01;
- 3'b101:{R,S} <= 2'b11;
- 3'b110:{R,S} <= 2'b11;
- 3'b111:{R,S} <= 2'b11;
- endcase
- j <= j + 3'b001;
- end
- endmodule
复制代码 |
|