⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 16_multi.v

📁 16*16有符号乘法器的 &#61548 编码方式:Booth编码
💻 V
字号:
//--------------------------------------------------------------------////      Design          :    16_multiplier////      File name       :       16_multiplier.v////      Purpose         :       ////      Limitations     :       ////      Errors          :       None known////      Include files   :       None////      Author          :       Chen Yi, Dec 30, 2007////      Simulator       :       ModelSim SE 6.1////--------------------------------------------------------------------//      Revision List//      Version         Author          Date            Change//                                                      //      0.1              Chen Yi       07/12/30       //--------------------------------------------------------------------module booth(clk, reset, load, A, B, done, result);  parameter WidthMultiplicand = 16,                   WidthMultiplier = 16,                   WidthCount = 5,Comp_add = 3'b010,Add = 3'b001;   input clk, reset, load;  input [WidthMultiplicand-1:0] A;  input [WidthMultiplier-1:0] B;  output [WidthMultiplicand+WidthMultiplier-1:0] result;  output done;   reg done, sign, E, shift, Qn_1;  reg [WidthMultiplicand-1:0] regA;  reg [WidthMultiplier-1:0] regB, regQ;  reg [WidthCount-1:0] SeqCount;  assign result = {regA,regQ};   always @(posedge clk) begin    if(!reset) begin      regA = 0;      regB = 0;      regQ = 0;      Qn_1 = 0;      shift = 0;      SeqCount = WidthMultiplier;      done = 0;    end    else if (load) begin      regA = 0;      regB = A;      regQ = B;      Qn_1 = 0;      shift = 0;      SeqCount = WidthMultiplier;      done = 0;    end    else if (!done)       case({shift,regQ[0],Qn_1})        Comp_add:begin          regA = regA + ~regB + 1;          shift = 1;          end        Add:begin          regA = regA + regB;          shift = 1;          end          default:begin            {regA,regQ,Qn_1} = ({regA,regQ,Qn_1}>>1);            regA[WidthMultiplicand-1] = regA[WidthMultiplicand-2];            SeqCount = SeqCount - 1;            shift = 0;            if (SeqCount == 0)              done = 1;          end      endcase       endendmodule      

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -