
1 module D_flop(data,clk,clr,q,qb); 2 input data,clk,clr; 3 output q,qb; 4 wire a,b,c,d,e,f,ndata,nclk; 5 nand nand1(a,clr,data,clk), 6 nand2(b,ndata,clk), 7 nand4(d,c,b,clr), 8 nand5(e,c,nclk), 9 nand6(f,d,nclk), 10 nand8(qb,f,clr,q); 11 nand nand3(c,a,d), 12 nand7(q,e,qb); 13 not not1(ndata,data), 14 not2(nclk,clk); 15 endmodule
上圖就是門級Verilog語言描述的對應的網表,由圖可以看出這是一個帶異步置零的D觸發器。
同樣我們也可以采用行為描述來定義D觸發器。
普通D觸發器:

1 module D_EF(Q,D,CLK) 2 input D,CLK; 3 output Q; 4 reg Q; //在always語句中被賦值的信號要聲明為reg類型寄存器定義 5 always @ (posedge CLK) 6 begin Q <= D; end 7 endmodule
異步D觸發器:

1 module D_EF(q,qn,d,clk,set,reset) 2 input d,clk,set,reset; 3 output q,qn; 4 reg q,qn; //寄存器定義 5 always @ (posedge clk or negedge set or negedge reset) 6 begin 7 if(!reset) begin q<=0;qn<=1;end//異步清0,低有效 8 else if(!set) begin q<=1;qn<=1;end //異步置1,低有效 9 else begin q<=~d;qn<=~d;end 10 end 11 endmodule
同步觸發器:

1 module D_EF(q,qn,d,clk,set,reset) 2 input d,clk,set,reset; 3 output q,qn; 4 reg q,qn; 5 always @ (posedge clk) 6 begin 7 if(!reset) begin q<=0;qn<=1;end//同步清0,低有效 8 else if(!set) begin q<=1;qn<=1;end //同步置1,低有效 9 else begin q<=~d;qn<=~d;end 10 end 11 endmodule
注意,異步和同步觸發器中else begin q<=~d;qn<=~d;end 更正為else begin q<=d;qn<=~d;end