Verilog學習筆記簡單功能實現(一)...............D觸發器


 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
View Code

異步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
View Code

同步觸發器:

 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
View Code

注意,異步和同步觸發器中else begin q<=~d;qn<=~d;end 更正為else begin q<=d;qn<=~d;end 

       

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM