觸發(fā)器是一個具有記憶功能的,具有兩個穩(wěn)定狀態(tài)的信息存儲器件,是構成多種時序電路的最基本邏輯單元,也是數(shù)字邏輯電路中一種重要的單元電路。
在數(shù)字系統(tǒng)和計算機中有著廣泛的應用。觸發(fā)器具有兩個穩(wěn)定狀態(tài),即“0”和“1”,在一定的外界信號作用下,可以從一個穩(wěn)定狀態(tài)翻轉到另一個穩(wěn)定狀態(tài)。
觸發(fā)器有集成觸發(fā)器和門電路組成的觸發(fā)器。觸發(fā)方式有電平觸發(fā)和邊沿觸發(fā)兩種。
D觸發(fā)器在時鐘脈沖CP的前沿(正跳變0→1)發(fā)生翻轉,觸發(fā)器的次態(tài)取決于CP的脈沖上升沿到來之前D端的狀態(tài),即次態(tài)=D。因此,它具有置0、置1兩種功能。由于在
CP=1期間電路具有維持阻塞作用,所以在CP=1期間,D端的數(shù)據(jù)狀態(tài)變化,不會影響觸發(fā)器的輸出狀態(tài)。
D觸發(fā)器應用很廣,可用做數(shù)字信號的寄存,移位寄存,分頻和波形發(fā)生器等。
D觸發(fā)器Verilog描述
今日偶然看到一些知名企業(yè)的筆試試題,隨便掃描了下,看到有幾道關于FPGA/CPLD的題目,小小的編程題,用VerilogHDL或VHDL語言編觸發(fā)器,腦袋轉了一下,模糊似乎清晰,清晰又像浸入模糊,呵呵。。。上半年,由于Boss項目,學習了FPGA,學的有點急,也斷斷續(xù)續(xù)的,才過幾個月,似乎知識已經(jīng)遠去,打開電腦,速覽以前的資料,記憶又回來了。。。簡單記錄下這道題,權當回憶。。。
//基本D觸發(fā)器
module D_EF(Q,D,CLK)
input D,CLK;
output Q;
reg Q; //在always語句中被賦值的信號要聲明為reg類型 寄存器定義
always @ (posedge CLK) //上升沿,下降沿用negedge表示,^_^ 需要記憶
begin Q 《= D; end
endmodule
//帶異步清0、異步置1的D觸發(fā)器
module D_EF(q,qn,d,clk,set,reset)
input d,clk,set,reset;
output q,qn;
reg q,qn;//寄存器定義
always @ (posedge clk or negedge set or negedge reset)
begin
if(!reset) begin q《=0;qn《=1;end//異步清0,低有效
else if(!set) begin q《=1;qn《=1;end //異步置1,低有效
else begin q《=~d;qn《=~d;end
end
endmodule
//帶同步清0、同步置1的D觸發(fā)器
module D_EF(q,qn,d,clk,set,reset)
input d,clk,set,reset;
output q,qn;
reg q,qn;
always @ (posedge clk)
begin
if(reset) begin q《=0;qn《=1;end//同步清0,高有效
else if(set) begin q《=1;qn《=1;end //同步置1,高有效
else begin q《=~d;qn《=~d;end
end
endmodule
評論