Một số ví dụ về JK FLIP FLOP dùng verilog

Lu ROm

Administrator
Staff member
25 Tháng bảy 2014
481
119
43
31
One piece
vimach.net
h31FFJKsong0.gif

- Nhận thấy đầu vào J, K điều khiển trạng thái ngõ ra theo đúng như cách mà S R đã làm trừ 1 điểm là khi J = K = 1 thì trạng thái cấm được chuyển thành trạng thái ngược lại ( với J = K = 0 ). Nó còn gọi là chế độ lật của hoạt động.
- Từ dạng sóng có thể thấy rằng ngõ ra FF không bị ảnh hưởng bởi sườn xuống của xung ck các đầu vào J K cũng không có tác động trừ khi xảy ra tác động lên của Ck
- FF JK có thể tạo thành từ FF SR có thêm 2 đầu and có ngõ ra đưa về như hình :
upload_2016-6-2_16-8-5.png

Còn cấu tạo bên trong của FF JK kích bằng cạnh sườn sẽ như sau :
upload_2016-6-2_16-8-32.png

- Một số ví dụ về JK FLIP FLOP dùng verilog.
++ Ví dụ code Verilog cho JK FLIP FLOP tích cực ở sườn dương,có reset.
Mã:
//Async JK Flip Flop
module jk_ff( j, k  , clk , reset, q ,qb );
input j,k;
input clk, reset ;
output q,qb;
reg q,qb;
reg [1:0]jk;

always @ ( posedge clk or posedge reset)
begin
jk={j,k};
if (reset)
begin
q = 1'b0;
qb = ~q;
end
else
begin
case (jk)
2'd0 : q = q;
2'd1 : q = 1'b0;
2'd2 : q = 1'b1;
2'd3 : q = ~q;
endcase
qb = ~q;
end
end
endmodule

++ Ví dụ code Verilog cho JK FLIP FLOP tích cực ở sườn dương.
Mã:
//Async JK Flip Flop
module jk_ff( j, k  , clk , q ,qb );
input j,k;
input clk ;
output q,qb;
reg q,qb;
reg [1:0]jk;

initial
begin
q=1'b0; qb=1'b1;                 // q is set to 0 and q1 is set to 1.
end
always @ ( posedge clk)
begin
jk={j,k};
begin
case (jk)
2'd0 : q = q;
2'd1 : q = 1'b0;
2'd2 : q = 1'b1;
2'd3 : q = ~q;
endcase
qb = ~q;
end
end
endmodule
++ Ví dụ code Verilog cho JK FLIP FLOP tích cực ở sườn âm có reset.
Mã:
//Async JK Flip Flop
module jk_ff( j, k, reset  , clk , q ,qb );
input j,k;
input clk, reset ;
output q,qb;
reg q,qb;
reg [1:0]jk;

always @ (negedge clk or posedge reset)
begin
jk={j,k};
if (reset)
begin
q = 1'b0;
qb = ~q;
end
else
begin
case (jk)
2'd0 : q = q;
2'd1 : q = 1'b0;
2'd2 : q = 1'b1;
2'd3 : q = ~q;
endcase
qb = ~q;
end
end
endmodule
 
  • Like
Reactions: nguyenhonghai1997bg
test rs FLIP FLOP tích cực ở sườn dương,có reset.

Mã:
`timescale 1ns / 1ps

////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date:   19:46:49 06/03/2016
// Design Name:   srff
// Module Name:   C:/Users/kimlu/Downloads/New folder/srff/srff_tb.v
// Project Name:  srff
// Target Device:
// Tool versions:
// Description:
//
// Verilog Test Fixture created by ISE for module: srff
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
////////////////////////////////////////////////////////////////////////////////

module srff_tb;

    // Inputs
    reg s;
    reg r;
    reg clk;
    reg reset;

    // Outputs
    wire q;
    wire qb;

    // Instantiate the Unit Under Test (UUT)
    srff uut (
        .s(s),
        .r(r),
        .clk(clk),
        .reset(reset),
        .q(q),
        .qb(qb)
    );

    initial begin
        // Initialize Inputs
        s = 1'b0;
        r = 1'b0;
        clk = 1'b0;
        reset = 1'b1;

        // Wait 100 ns for global reset to finish
        #10 reset = 1'b0;
      
        // Add stimulus here

    end
    always #10 clk = ~clk;
        initial begin
        #60 s = 1'b1;
        #50 r = 1'b0;
        #200 s = 1'b0;
        #100 r = 1'b1;
        #30 s = 1'b0;
        #45 r = 1'b0;
        end
endmodule

upload_2016-6-3_19-53-37.png
 
Last edited:
test rs FLIP FLOP tích cực ở sườn dương.
Mã:
`timescale 1ns / 1ps

////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date:   19:46:49 06/03/2016
// Design Name:   srff
// Module Name:   C:/Users/kimlu/Downloads/New folder/srff/srff_tb.v
// Project Name:  srff
// Target Device: 
// Tool versions: 
// Description:
//
// Verilog Test Fixture created by ISE for module: srff
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
////////////////////////////////////////////////////////////////////////////////

module srff_tb;

    // Inputs
    reg s;
    reg r;
    reg clk;
   

    // Outputs
    wire q;
    wire qb;

    // Instantiate the Unit Under Test (UUT)
    srff uut (
        .s(s),
        .r(r),
        .clk(clk),
        .q(q),
        .qb(qb)
    );

    initial begin
        // Initialize Inputs
        s = 1'b0;
        r = 1'b0;
        clk = 1'b0;
        // Add stimulus here

    end
    always #10 clk = ~clk;
        initial begin
        #60 s = 1'b1;
        #50 r = 1'b0;
        #200 s = 1'b0;
        #100 r = 1'b1;
        #30 s = 1'b0;
        #45 r = 1'b0;
        end
endmodule
 
Last edited:
test JK FLIP FLOP tích cực ở sườn dương,có reset.
Mã:
`timescale 1ns / 1ps

////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date:   20:11:53 06/03/2016
// Design Name:   jk_ff
// Module Name:   C:/Users/kimlu/Downloads/New folder/jkff/jk_ff_tb.v
// Project Name:  jkff
// Target Device: 
// Tool versions: 
// Description:
//
// Verilog Test Fixture created by ISE for module: jk_ff
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
////////////////////////////////////////////////////////////////////////////////

module jk_ff_tb;

    // Inputs
    reg j;
    reg k;
    reg reset;
    reg clk;

    // Outputs
    wire q;
    wire qb;

    // Instantiate the Unit Under Test (UUT)
    jk_ff uut (
        .j(j),
        .k(k),
        .reset(reset),
        .clk(clk),
        .q(q),
        .qb(qb)
    );

    initial begin
        // Initialize Inputs
        j = 1'b0;
        k = 1'b0;
        reset = 1'b1;
        clk = 1'b0;

        // Wait 100 ns for global reset to finish
        #10 reset = 1'b0;
       
        // Add stimulus here

    end
    always #10 clk = ~clk;
        initial begin
        #60 j = 1'b1;
        #50 k = 1'b0;
        #200 j = 1'b0;
        #100 k = 1'b1;
        #30 j = 1'b0;
        #45 k = 1'b0;
        end
     
endmodule
 
test JK FLIP FLOP tích cực ở sườn dương.
Mã:
`timescale 1ns / 1ps

////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date:   20:11:53 06/03/2016
// Design Name:   jk_ff
// Module Name:   C:/Users/kimlu/Downloads/New folder/jkff/jk_ff_tb.v
// Project Name:  jkff
// Target Device: 
// Tool versions: 
// Description:
//
// Verilog Test Fixture created by ISE for module: jk_ff
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
////////////////////////////////////////////////////////////////////////////////

module jk_ff_tb;

    // Inputs
    reg j;
    reg k;
    reg clk;

    // Outputs
    wire q;
    wire qb;

    // Instantiate the Unit Under Test (UUT)
    jk_ff uut (
        .j(j),
        .k(k),
        .clk(clk),
        .q(q),
        .qb(qb)
    );

    initial begin
        // Initialize Inputs
        j = 1'b0;
        k = 1'b0;
        clk = 1'b0;
        // Add stimulus here

    end
    always #10 clk = ~clk;
        initial begin
        #60 j = 1'b1;
        #50 k = 1'b0;
        #200 j = 1'b0;
        #100 k = 1'b1;
        #30 j = 1'b0;
        #45 k = 1'b0;
        end
     
endmodule