在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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設(shè)計(jì)進(jìn)階之:使用函數(shù)實(shí)現(xiàn)簡單的處理器

            硬件描述語言Verilog HDL設(shè)計(jì)進(jìn)階之:使用函數(shù)實(shí)現(xiàn)簡單的處理器

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

            4.8典型實(shí)例8:使用實(shí)現(xiàn)簡單的

            4.8.1實(shí)例的內(nèi)容及目標(biāo)

            1.實(shí)例內(nèi)容

            本實(shí)例使用設(shè)計(jì)一個(gè)簡單8位,可以實(shí)現(xiàn)兩個(gè)8位操作數(shù)的4種操作。在設(shè)計(jì)過程中,使用了調(diào)用的設(shè)計(jì)方法。

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

            2.實(shí)例目標(biāo)

            通過本實(shí)例,讀者應(yīng)達(dá)到下面的一些目的。

            ·掌握使用Verilog設(shè)計(jì)的方法。

            ·掌握Verilog設(shè)計(jì)的一般方法。

            4.8.2原理簡介

            發(fā)展到現(xiàn)在,已經(jīng)變成一個(gè)功能極其強(qiáng)大,設(shè)計(jì)也極為復(fù)雜的單元。現(xiàn)在一顆小小的CPU的運(yùn)算能力遠(yuǎn)遠(yuǎn)的超過了以前的超級(jí)計(jì)算機(jī)的能力。雖然處理器處理能力的提高和很多方面的因素有關(guān),可是處理器最終要完成的目標(biāo)還是早期CPU設(shè)計(jì)時(shí)的那個(gè)目標(biāo),那就是使用操作碼實(shí)現(xiàn)對(duì)操作數(shù)的控制和計(jì)算。

            在本實(shí)例中,實(shí)現(xiàn)的處理器是一個(gè)8位處理器,只實(shí)現(xiàn)簡單的4種操作:相加、相減、操作數(shù)減1和操作數(shù)加1。通過這4種操作向讀者展示如何使用Verilog語言設(shè)計(jì)看似復(fù)雜的CPU單元。

            當(dāng)然,這個(gè)處理器只是一個(gè)算術(shù)單元,處理器還包括很多其他的功能,在此不進(jìn)行介紹,感興趣的讀者可以查閱相關(guān)的書籍,按照本實(shí)例提供的設(shè)計(jì)方向補(bǔ)充和完善這個(gè)處理器。

            4.8.3代碼分析

            下面給出這個(gè)處理器的Verilog源代碼,讀者可以將此處理器模塊實(shí)例化至自己的工程設(shè)計(jì)中。

            module mpc(instr,out);
            //端口說明
            input[17:0] instr; //輸入指令
            output[8:0] out; //輸出結(jié)果
            //內(nèi)部信號(hào)說明
            reg[8:0] out;
            reg func; //指令中提取出的操作碼的內(nèi)部變量
            reg[7:0] op1,op2; //從指令中提取的兩個(gè)操作數(shù)
            //函數(shù)聲明
            function[16:0] code_add; //函數(shù)的定義,返回一個(gè)17位的指令
            input[17:0] instr; //函數(shù)的輸入,采用與模塊輸入同樣的命名,可不同
            //函數(shù)內(nèi)部信號(hào)說明
            reg add_func; //函數(shù)內(nèi)部的操作碼變量
            reg[2:0] code; //操作碼
            reg[7:0] opr1,opr2; //兩個(gè)操作數(shù)

            begin
            code=instr[17:16]; //輸入指令instr的高2位為操作碼code
            opr1=instr[7:0]; //輸入指令instr的低8位為操作數(shù)opr1
            //通過case語句判斷操作碼的類型,獲得操作數(shù)opr2
            case(code)
            2b00: begin
            add_func=1;
            opr2=instr[15:8]; //從instr中取第二個(gè)操作數(shù)
            end
            2b01: begin
            add_func=0;
            opr2=instr[15:8]; //從instr中取第二個(gè)操作數(shù)
            end
            2b10: begin
            add_func=1;
            opr2=8d1; //第二個(gè)操作數(shù)取為1,實(shí)現(xiàn)+1操作
            end
            2b11: begin
            add_func=0;
            opr2=8d1; //實(shí)現(xiàn)-1操作
            end
            endcase
            code_add={add_func,opr2,opr1}; //函數(shù)的返回值
            end
            endfunction
            //函數(shù)調(diào)用模塊
            always @(instr) begin
            {func,op2,op1}=code_add(instr); //調(diào)用函數(shù)
            if(func==1)
            out=op1+op2; //實(shí)現(xiàn)兩數(shù)相加或操作數(shù)1加1操作
            else
            out=op1-op2; //實(shí)現(xiàn)兩數(shù)相減或操作數(shù)1減1操作
            end
            endmodule



            關(guān)鍵詞: VerilogHDL 函數(shù) 處理器 FPGA

            評(píng)論


            相關(guān)推薦

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

            關(guān)閉