国产精品免费无遮挡无码永久视频-国产高潮视频在线观看-精品久久国产字幕高潮-国产精品99精品无码视亚

零基礎學FPGA(八)手把手解析時序邏輯乘法器代碼

發布時間:2016-2-25 11:50    發布者:designapp
關鍵詞: FPGA , Verilog , 時序邏輯
  上次看了一下關于乘法器的Verilog代碼,有幾個地方一直很迷惑,相信很多初學者看這段代碼一定跟我當初一樣,看得一頭霧水,在網上也有一些網友提問,說這段代碼不好理解,今天小墨同學就和大家一起來看一下這段代碼,我會親自在草稿紙上演算,盡量把過程寫的詳細些,讓更多的人了解乘法器的設計思路。
  下面是一段16位乘法器的代碼,大家可以先瀏覽一下,之后我再做詳細解釋
  module mux16(
  clk,rst_n,
  start,ain,bin,yout,done
  );
  input clk; //芯片的時鐘信號。
  input rst_n; //低電平復位、清零信號。定義為0表示芯片復位;定義為1表示復位信號無效。
  input start; //芯片使能信號。定義為0表示信號無效;定義為1表示芯片讀入輸入管腳得乘數和被乘數,并將乘積復位清零。
  input[15:0] ain; //輸入a(被乘數),其數據位寬為16bit.
  input[15:0] bin; //輸入b(乘數),其數據位寬為16bit.
  output[31:0] yout; //乘積輸出,其數據位寬為32bit.
  output done; //芯片輸出標志信號。定義為1表示乘法運算完成.
  reg[15:0] areg; //乘數a寄存器
  reg[15:0] breg; //乘數b寄存器
  reg[31:0] yout_r; //乘積寄存器
  reg done_r;
  reg[4:0] i; //移位次數寄存器
  //------------------------------------------------
  //數據位控制
  always @(posedge clk or negedge rst_n)
  if(!rst_n) i  5'd0 && i >1; //移位不累加
  end
  else if(i == 5'd16 && areg[15]) yout_r[31:16]


  


  


  以上部分是最主要的計算部分,其他地方相對來說還比較簡單,例如當乘數某一位為0時,不用累加,直接右移,當i計數到16時,此時就不用再移位了,可以直接用位數表示,直接累加即可。
  下面是仿真
  

                               
               
本文地址:http://m.4huy16.com/thread-161210-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • Microchip第22屆中國技術精英年會上海首站開幕
  • 電動兩輪車設計生態系統
  • “芯”光璀璨,鵬城共賞——2025 Microchip中國技術精英年會深圳站回顧
  • 技術熱潮席卷三城,2025 Microchip中國技術精英年會圓滿收官!
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表