您的位置:網站首頁 > 電器維修資料網 > 正文 >
Verilog HDL語言之時序邏輯電路
來源: 日期:2013-11-3 17:29:37 人氣:標簽:
if(rst == 1’b0) Dout <= 1’b0;
else Dout <= Din; //D觸發器數據輸出
在例1中,每當時鐘clock上升沿到來后,輸出信號Dout的值便更新為輸入信號Din的值。當復位信號下降沿到來時,Dout的值就會變成0。必須注意的是,在時序邏輯電路中,通常使用非阻塞賦值,即使用“<=”。當always塊整個完成之后,值才會更新,例如:
例2:帶異步復位的D觸發器2。
wire Din;
wire clock,rst;
reg Dout;
always @ (posedge clock or negedge rst) //帶有異步復位
if(rst == 1’b0) out <= 1’b0;
else begin
Dout <= Din; //D觸發器輸出值還處于鎖定狀態
Dout <= 1’b1; //D觸發器輸出值依然處于鎖定狀態
End //D觸發器的輸出為1
在例2中,Dout首先被賦值為Din,此時Dout的值并沒有發生改變;接著Dout又被賦值為1,此時Dout的值依然沒發生改變;直到這個always模塊完成,Dout的值才變成 后被賦的值,此例中Dout的值為1。
在時序邏輯電路中,always的時間控制是沿觸發的,可以單個信號也可以多個信號,中間需要用關鍵字“or”連接,例如:
always @(posedge clock or posedge reset) begin //由兩個沿觸發的always塊
…
end
其中有一個時鐘信號和一個異步復位信號。
always @(posedge clock1 or posedge clock2 or posedge reset) begin
//由3個沿觸發的always塊
…
end
其中有兩個時鐘信號和一個異步復位信號。
一般而言,同步時序邏輯電路更穩定,所以建議盡量使用一個時鐘觸發。
【看看這篇文章在百度的收錄情況】
相關文章
- 上一篇: 液晶彩電信號板的控制系統組成與工作條件
- 下一篇: Verilog HDL語言基礎之數字跑表