新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > Verilog HDL基礎(chǔ)之:時序邏輯電路

Verilog HDL基礎(chǔ)之:時序邏輯電路

作者: 時間:2017-06-05 來源:網(wǎng)絡(luò) 收藏

在Verilog HDL語言中,使用always語句塊來實現(xiàn)。例如,實現(xiàn)一個帶有異步復(fù)位信號的如下。

本文引用地址:http://m.butianyuan.cn/article/201706/348836.htm

例1:帶異步復(fù)位的1。

wire Din;

wire clock,rst;

reg Dout;

always @ (posedge clock or negedge rst) //帶有異步復(fù)位

if(rst == 1’b0) Dout = 1’b0;

else Dout = Din; //數(shù)據(jù)輸出

在例1中,每當時鐘clock上升沿到來后,輸出信號Dout的值便更新為輸入信號Din的值。當復(fù)位信號下降沿到來時,Dout的值就會變成0。必須注意的是,在中,通常使用非阻塞賦值,即使用“=”。當always塊整個完成之后,值才會更新,例如:

例2:帶異步復(fù)位的D觸發(fā)器2。

wire Din;

wire clock,rst;

reg Dout;

always @ (posedge clock or negedge rst) //帶有異步復(fù)位

if(rst == 1’b0) out = 1’b0;

else begin

Dout = Din; //D觸發(fā)器輸出值還處于鎖定狀態(tài)

Dout = 1’b1; //D觸發(fā)器輸出值依然處于鎖定狀態(tài)

End //D觸發(fā)器的輸出為1

在例2中,Dout首先被賦值為Din,此時Dout的值并沒有發(fā)生改變;接著Dout又被賦值為1,此時Dout的值依然沒發(fā)生改變;直到這個always模塊完成,Dout的值才變成最后被賦的值,此例中Dout的值為1。

中,always的時間控制是沿觸發(fā)的,可以單個信號也可以多個信號,中間需要用關(guān)鍵字“or”連接,例如:

always @(posedge clock or posedge reset) begin //由兩個沿觸發(fā)的always塊

end

其中有一個時鐘信號和一個異步復(fù)位信號。

always @(posedge clock1 or posedge clock2 or posedge reset) begin

//由3個沿觸發(fā)的always塊

end

其中有兩個時鐘信號和一個異步復(fù)位信號。

一般而言,同步時序邏輯電路更穩(wěn)定,所以建議盡量使用一個時鐘觸發(fā)。



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉