• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

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

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

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

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

    本文引用地址:http://www.czjhyjcfj.com/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中,每當(dāng)時(shí)鐘clock上升沿到來后,輸出信號(hào)Dout的值便更新為輸入信號(hào)Din的值。當(dāng)復(fù)位信號(hào)下降沿到來時(shí),Dout的值就會(huì)變成0。必須注意的是,在中,通常使用非阻塞賦值,即使用“=”。當(dāng)always塊整個(gè)完成之后,值才會(huì)更新,例如:

    例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,此時(shí)Dout的值并沒有發(fā)生改變;接著Dout又被賦值為1,此時(shí)Dout的值依然沒發(fā)生改變;直到這個(gè)always模塊完成,Dout的值才變成最后被賦的值,此例中Dout的值為1。

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

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

    end

    其中有一個(gè)時(shí)鐘信號(hào)和一個(gè)異步復(fù)位信號(hào)。

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

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

    end

    其中有兩個(gè)時(shí)鐘信號(hào)和一個(gè)異步復(fù)位信號(hào)。

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



    評(píng)論


    相關(guān)推薦

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

    關(guān)閉
    主站蜘蛛池模板: 新闻| 青阳县| 格尔木市| 虎林市| 晴隆县| 松滋市| 长阳| 乐业县| 仙居县| 加查县| 涞水县| 金平| 增城市| 曲阳县| 肃南| 潢川县| 温宿县| 德格县| 通化县| 湾仔区| 肇东市| 大邑县| 尉犁县| 城步| 凤山县| 宁阳县| 遂宁市| 邛崃市| 邵阳县| 溧阳市| 尤溪县| 孟连| 鄂尔多斯市| 苏尼特右旗| 丰县| 永康市| 大足县| 安仁县| 黎平县| 营山县| 武强县|