<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 硬件描述語言Verilog HDL設(shè)計進階之:使用函數(shù)實現(xiàn)簡單的處理器

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

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

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

          4.8.1實例的內(nèi)容及目標

          1.實例內(nèi)容

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

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

          2.實例目標

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

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

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

          4.8.2原理簡介

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

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

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

          4.8.3代碼分析

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

          module mpc(instr,out);
          //端口說明
          input[17:0] instr; //輸入指令
          output[8:0] out; //輸出結(jié)果
          //內(nèi)部信號說明
          reg[8:0] out;
          reg func; //指令中提取出的操作碼的內(nèi)部變量
          reg[7:0] op1,op2; //從指令中提取的兩個操作數(shù)
          //函數(shù)聲明
          function[16:0] code_add; //函數(shù)的定義,返回一個17位的指令
          input[17:0] instr; //函數(shù)的輸入,采用與模塊輸入同樣的命名,可不同
          //函數(shù)內(nèi)部信號說明
          reg add_func; //函數(shù)內(nèi)部的操作碼變量
          reg[2:0] code; //操作碼
          reg[7:0] opr1,opr2; //兩個操作數(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中取第二個操作數(shù)
          end
          2b01: begin
          add_func=0;
          opr2=instr[15:8]; //從instr中取第二個操作數(shù)
          end
          2b10: begin
          add_func=1;
          opr2=8d1; //第二個操作數(shù)取為1,實現(xiàn)+1操作
          end
          2b11: begin
          add_func=0;
          opr2=8d1; //實現(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; //實現(xiàn)兩數(shù)相加或操作數(shù)1加1操作
          else
          out=op1-op2; //實現(xiàn)兩數(shù)相減或操作數(shù)1減1操作
          end
          endmodule



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

          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();