在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Verilog HDL基礎(chǔ)之:組合邏輯電路的實(shí)現(xiàn)(原創(chuàng))

            Verilog HDL基礎(chǔ)之:組合邏輯電路的實(shí)現(xiàn)(原創(chuàng))

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

            分為兩種,分別是組合邏輯與時序邏輯。

            本文引用地址:http://www.biyoush.com/article/201706/348845.htm

            (1)組合邏輯:輸出只是當(dāng)前輸入邏輯電平的函數(shù)(有延時),與電路的原始狀態(tài)無關(guān)的邏輯電路。也就是說,當(dāng)輸入信號中的任何一個發(fā)生變化時,輸出都有可能會根據(jù)其變化而變化,但與電路目前所處的狀態(tài)沒有任何關(guān)系。其中組合邏輯是由與、或、非門組成的網(wǎng)絡(luò)。常用的組合電路有:多路器、數(shù)據(jù)通路開關(guān)、加法器、乘法器等。

            (2)時序邏輯:輸出不只是當(dāng)前輸入的邏輯電平的函數(shù),還與電路目前所處的狀態(tài)有關(guān)。

            時序邏輯由多個觸發(fā)器和多個組合邏輯塊組成的網(wǎng)絡(luò),常用的有:計(jì)數(shù)器、復(fù)雜的數(shù)據(jù)流動控制邏輯、運(yùn)算控制邏輯、指令分析和操作控制邏輯等。同步時序邏輯是設(shè)計(jì)復(fù)雜的數(shù)字邏輯系統(tǒng)的核心。時序邏輯借助于狀態(tài)寄存器記住它目前所處的狀態(tài)。在不同的狀態(tài)下,即使所有的輸入都相同,其輸出也不一定相同。

            assign語句實(shí)現(xiàn)組合邏輯

            組合邏輯電路可以用assign語句實(shí)現(xiàn),例如:

            例1:assign加法器。

            wire a,b,c;

            assign c = a + b; //加法器

            例1實(shí)現(xiàn)的是一個簡單的加法器,assign語句也可以實(shí)現(xiàn)復(fù)雜一些的組合邏輯電路,例如:

            例2:assign選擇器。

            wire a,b,c;

            wire ena;

            assign c = ena ? a : b; //數(shù)據(jù)選擇器

            例2實(shí)現(xiàn)的是一個數(shù)據(jù)選擇器。如果組合邏輯比較復(fù)雜,用assign語句書寫就會比較繁瑣,可讀性較差。例如用assign語句實(shí)現(xiàn)一個8選1數(shù)據(jù)選擇器,如下所示:

            例3:assign 8選1選擇器。

            wire a0,a1,a2,a3,a4,a5,a6,a7,b;

            wire [2:0] addr;

            assign b = //8選1數(shù)據(jù)選擇器

            (addr == 3’d0) ? a0 :(addr == 3’d1) ? a1 :

            (addr == 3’d2) ? a2 :(addr == 3’d3) ? a3 :

            (addr == 3’d4) ? a4 :(addr == 3’d5) ? a5 :

            (addr == 3’d6) ? a6 : a7;

            //在該表達(dá)式中,當(dāng)addr不等于d0~d6時,b等于a7

            //當(dāng)addr等于d6時,b等于a6;當(dāng)addr等于d5時,b等于a5,且優(yōu)先級

            //高于addr等于d6時的情況,依次類推

            所以復(fù)雜的組合邏輯電路最好用always塊實(shí)現(xiàn)。

            從上面的幾個例子可以看出,使用assign語句描述組合邏輯電路時,格式為:

            assign 輸出變量 = 輸入變量之間的運(yùn)算結(jié)果;

            always塊實(shí)現(xiàn)組合邏輯

            組合邏輯電路也可以用assign語句實(shí)現(xiàn),例如:

            例4:always加法器。

            wire a,b,c;

            always @ (a or b) //當(dāng)a和b有變化時,觸發(fā)加法器操作

            c = a + b;

            上面這個例子實(shí)現(xiàn)了一個加法器,如果需要實(shí)現(xiàn)一個數(shù)據(jù)選擇器,可以書寫如下:

            例5:always選擇器。

            wire a,b,c;

            wire ena;

            always @ (a or b or ena) //當(dāng)a、b和ena有變化時,進(jìn)行下列操作

            if(ena == 1’b0) c = b;

            else c = a;

            如果想實(shí)現(xiàn)一個比較復(fù)雜的組合邏輯電路,例如:

            例6:always8選1選擇器。

            wire a0,a1,a2,a3,a4,a5,a6,a7,b;

            wire [2:0] addr;

            always @ (a0 or a1 or a2 or a3 or a4 or a5 or a6 or a7 or addr) begin

            case(addr) //使用case語句實(shí)現(xiàn)8選1數(shù)據(jù)選擇器

            3’d0: b = a0; //只有當(dāng)a0~a7以及addr有變化時,才觸發(fā)case的操作

            3’d1: b = a1;

            3’d2: b = a2;

            3’d3: b = a3;

            3’d4: b = a4;

            3’d5: b = a5;

            3’d6: b = a6;

            3’d7: b = a7;

            endcase

            end

            由于在always塊中可以使用if、case等語句,所以對于復(fù)雜的組合邏輯,使用always語句進(jìn)行描述顯得層次更加清楚,可讀性更強(qiáng)。

            從上面幾個例子可以看出,使用always語句描述組合邏輯電路時,格式為:

            always @ (敏感變量1 or敏感變量2 or敏感變量3 or …) begin

            各種語句的組合

            end

            其中的敏感變量包括所有的會引起輸出變化的輸入變量以及相應(yīng)的控制變量。另外,使用always語句描述組合邏輯電路時,應(yīng)該使用阻塞賦值方式,即“=”,而不是“=”。



            評論


            相關(guān)推薦

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

            關(guān)閉