加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權(quán)保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

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

2013/08/21
閱讀需 4 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

在Verilog HDL語言中,時序邏輯電路使用always語句塊來實現(xiàn)。例如,實現(xiàn)一個帶有異步復位信號D觸發(fā)器如下。

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

wire Din;

wire clock,rst;

reg Dout;

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

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

     else Dout   <= Din;                            //D觸發(fā)器數(shù)據(jù)輸出

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

例2:帶異步復位的D觸發(fā)器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觸發(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

其中有一個時鐘信號和一個異步復位信號。

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

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

    …

end

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

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

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

華清遠見(www.farsight.com.cn)是國內(nèi)領(lǐng)先嵌入師培訓機構(gòu),2004年注冊于中國北京海淀高科技園區(qū),除北京總部外,上海、深圳、成都、南京、武漢、西安、廣州均有直營分公司。華清遠見除提供嵌入式相關(guān)的長期就業(yè)培訓、短期高端培訓、師資培訓及企業(yè)員工內(nèi)訓等業(yè)務(wù)外,其下屬研發(fā)中心還負責嵌入式、Android及物聯(lián)網(wǎng)方向的教學實驗平臺的研發(fā)及培訓教材的出版,截止目前為止已公開出版70余本嵌入式/移動開發(fā)/物聯(lián)網(wǎng)相關(guān)圖書。企業(yè)理念:專業(yè)始于專注 卓識源于遠見。企業(yè)價值觀:做良心教育、做專業(yè)教育,更要做受人尊敬的職業(yè)教育。