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

Lu ROm

Administrator
Staff member
25 Tháng bảy 2014
481
118
43
31
One piece
vimach.net
t%E1%BA%A3i%2Bxu%E1%BB%91ng.png

- Dữ liệu đầu ra Q phụ thuộc vào xung clock. Hay nói cách khác dữ liệu đầu ra Q bằng dữ liệu đầu vào D phụ thuộc vào sự tác động của xung clock. D Flip Flop là một trong 4 flip-flop cơ bản trong thiết kế số.Vì nó là đơn giản nhất trong 4 loại nên được sử dụng rất nhiều trong thiết kế số.
D_flipflop_timing.gif

-Một số công dụng của D Flip Flop:
+ Dùng để chia tần số.
+ Chốt, lưu dữ liệu tạo ra RAM hoặc ROM…..
- Một số ví dụ về D FLIP FLOP dung verilog.
++ Ví dụ code Verilog cho D FLIP FLOP tích cực ở sườn dương.
Mã:
module flop (clk, d, q);
    input  clk, d;
    output q;
    reg    q;
       
    always @(posedge clk)
    begin
       q <= d;
    end
        endmodule
++ Ví dụ code Verilog cho D FLIP FLOP tích cực ở sườn âm có reset.
Mã:
module flop (clk, d, reset, q);
    input  clk, d, reset;
    output q;
    reg    q;
   
    always @(negedge clk or posedge reset)
        begin
       if (reset)
          q <= 1’b0;
       else
         
        q <= d;
    end
        endmodule
++ Ví dụ code Verilog cho D FLIP FLOP tích cực ở sườn dương và set đồng bộ.
Mã:
module flop (clk, d, s, q);
        input  clk, d, s;
        output q;
        reg    q;
       
    always @(posedge clk)
        begin
           if (s)
              q <= 1’b1;
           else
             
       q <= d;
        end
        endmodule
++ Ví dụ code Verilog cho D FLIP FLOP tích cực ở sườn dương và set đồng bộ, clock enable.
Mã:
module flop (clk, d, ce, pre, q);
    input        clk, ce, pre;
    input  [3:0] d;
   
output [3:0] q;
    reg    [3:0] q;
    always @(posedge clk or posedge pre)
        begin
       if (pre)
         
q <= 4’b1111;
       else if (ce)
          q <= d;
        end
        endmodule
Ví dụ về mạch chốt:
++latch với tích cực ở sườn dương .
Mã:
module latch (g, d, q);
        input  g, d;
        output q;
    reg    q;
   
always @(g or d)
        begin
           if (g)
              q <= d;
        end
        endmodule
++ latch với tích cực ở sườn dương và reset.
Mã:
module latch (g, d, clr, q);
        input  g, d, clr;
        output q;
        reg    q;
   
always @(g or d or clr)
        begin
           if (clr)
              q <= 1’b0;
           else if (g)
             
q <= d;
        end
        endmodule
++4-bit latch with an inverted gate and an asynchronous preset.
Mã:
module latch (g, d, pre, q);
        input        g, pre;
        input  [3:0] d;
       
output [3:0] q;
        reg    [3:0] q;
        always @(g or d or pre)
        begin
           if (pre)
             
q <= 4’b1111;
           else if (~g)
              q <= d;
        end
        endmodule
 
t%E1%BA%A3i%2Bxu%E1%BB%91ng.png

- Dữ liệu đầu ra Q phụ thuộc vào xung clock. Hay nói cách khác dữ liệu đầu ra Q bằng dữ liệu đầu vào D phụ thuộc vào sự tác động của xung clock. D Flip Flop là một trong 4 flip-flop cơ bản trong thiết kế số.Vì nó là đơn giản nhất trong 4 loại nên được sử dụng rất nhiều trong thiết kế số.
View attachment 33
-Một số công dụng của D Flip Flop:
+ Dùng để chia tần số.
+ Chốt, lưu dữ liệu tạo ra RAM hoặc ROM…..
- Một số ví dụ về D FLIP FLOP dung verilog.
++ Ví dụ code Verilog cho D FLIP FLOP tích cực ở sườn dương.
Mã:
module flop (clk, d, q);
    input  clk, d;
    output q;
    reg    q;
      
    always @(posedge clk)
    begin
       q <= d;
    end
        endmodule
++ Ví dụ code Verilog cho D FLIP FLOP tích cực ở sườn âm có reset.
Mã:
module flop (clk, d, reset, q);
    input  clk, d, reset;
    output q;
    reg    q;
  
    always @(negedge clk or posedge reset)
        begin
       if (reset)
          q <= 1’b0;
       else
        
        q <= d;
    end
        endmodule
++ Ví dụ code Verilog cho D FLIP FLOP tích cực ở sườn dương và set đồng bộ.
Mã:
module flop (clk, d, s, q);
        input  clk, d, s;
        output q;
        reg    q;
      
    always @(posedge clk)
        begin
           if (s)
              q <= 1’b1;
           else
            
       q <= d;
        end
        endmodule
++ Ví dụ code Verilog cho D FLIP FLOP tích cực ở sườn dương và set đồng bộ, clock enable.
Mã:
module flop (clk, d, ce, pre, q);
    input        clk, ce, pre;
    input  [3:0] d;
  
output [3:0] q;
    reg    [3:0] q;
    always @(posedge clk or posedge pre)
        begin
       if (pre)
        
q <= 4’b1111;
       else if (ce)
          q <= d;
        end
        endmodule
Ví dụ về mạch chốt:
++latch với tích cực ở sườn dương .
Mã:
module latch (g, d, q);
        input  g, d;
        output q;
    reg    q;
  
always @(g or d)
        begin
           if (g)
              q <= d;
        end
        endmodule
++ latch với tích cực ở sườn dương và reset.
Mã:
module latch (g, d, clr, q);
        input  g, d, clr;
        output q;
        reg    q;
  
always @(g or d or clr)
        begin
           if (clr)
              q <= 1’b0;
           else if (g)
            
q <= d;
        end
        endmodule
++4-bit latch with an inverted gate and an asynchronous preset.
Mã:
module latch (g, d, pre, q);
        input        g, pre;
        input  [3:0] d;
      
output [3:0] q;
        reg    [3:0] q;
        always @(g or d or pre)
        begin
           if (pre)
            
q <= 4’b1111;
           else if (~g)
              q <= d;
        end
        endmodule
bạn ơi cho mình xin code của TFF , SRFF và JKFF với
 
bạn ơi cho mình xin code của TFF , SRFF và JKFF với
Đây là SRFF
Mã:
module srff(s,r,clk,rst, q,qb);
input s,r,clk,rst;
output q,qb;
reg q,qb;
reg [1:0]sr;
always@(posedge clk,posedge rst)
begin
sr={s,r};
if(rst==0)
begin
case (sr)
2'd1:q=1'b0;
2'd2:q=1'b1;
2'd3:q=1'b1;
default: begin end
endcase
end
else
begin
q=1'b0;
end

qb=~q;
end

end module
 
  • Like
Reactions: nguyenhonghai1997bg
bạn ơi cho mình xin code của TFF , SRFF và JKFF với
Đây là JKFF nha
Mã:
module jkff(j,k,clk,rst, q,qb);
input j,k,clk,rst;
output q,qb;
reg q,qb;
reg [1:0]jk;
always@(posedge clk,posedge rst)
begin
jk={j,k};
if(rst==0)
begin
case (jk)
2'd1:q=1'b0;
2'd2:q=1'b1;
2'd3:q=~q;
default: begin end
endcase
end
else

q=1'b0;

qb=~q;

end
end module
 
  • Like
Reactions: nguyenhonghai1997bg
Đây là JKFF nha
Mã:
module jkff(j,k,clk,rst, q,qb);
input j,k,clk,rst;
output q,qb;
reg q,qb;
reg [1:0]jk;
always@(posedge clk,posedge rst)
begin
jk={j,k};
if(rst==0)
begin
case (jk)
2'd1:q=1'b0;
2'd2:q=1'b1;
2'd3:q=~q;
default: begin end
endcase
end
else

q=1'b0;

qb=~q;

end
end module
bạn có thể viết rõ các trường hợp như ở trên ko?
 
Verilog cho D FLIP FLOP tích cực ở sườn dương.
Mã:
module DFF_TB;

    // Inputs
    reg clk;
    reg d;

    // Outputs
    wire q;

    // Instantiate the Unit Under Test (UUT)
    flop uut (
        .clk(clk), 
        .d(d), 
        .q(q)
    );

     initial begin
        clk =1'b0;
        d=1'b1;
    end
   
    always #5 clk = ~clk;
    always #10 d= ~d;

     
endmodule