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

📄 div.txt

📁 这是一个用verilog实现的除法器代码。
💻 TXT
字号:
除法器的电路设计,基本的思想是减法:从最高位(除符号位)开始,减去除数,得到商.

       下面这个电路是一个简单的除法器,速度不快,但是可以加入pipeline来提高频率.


module  DIV (

              Clk,

              Dividend,

              Divisior,

              Quotient

            );

    input Clk;

    input [5:0] Dividend;

    input [2:0] Divisior;

    output[7:0] Quotient;

    wire  [5:0] Abs_D;

    wire  [3:0] D_P,D_M

    wire  [3:0] P4,P3,P2,P1,P0,PR,PR1,PR2;

    wire  [3:0] R4,R3,R2,R1,R0,RR,RR1,RR2;

    wire  [7:0] C;

    reg   [7:0] Quotient; 

//====================================

    assign  Abs_D = Dividend[5] ? (~Dividend +1) : Dividend;

    assign  D_P = {1'b0,Divisior};

    assign  D_M = ~{1'b0,Divisior} + 1;

//======================================

   assign P4 = { 3'b0, Abs_D[4] };

   assign R4 = P4 - D_P;

 

   assign P3 = { R4[2:0],Abs_D[3]};

   assign R3 = P3 + (~R4[3] ? D_M : D_P);

 

   assign P2 = { R3[2:0],Abs_D[2]};

   assign R2 = P2 + (~R3[3] ? D_M : D_P);

 

   assign P1 = { R2[2:0],Abs_D[1]};

   assign R1 = P1 + (~R2[3] ? D_M : D_P);


   assign P0 = { R1[2:0],Abs_D[0]};

   assign R0 = P0 + (~R1[3] ? D_M : D_P);

 

   assign PR = { R0[2:0],1'b0};

   assign RR = PR + (~R0[3] ? D_M : D_P);

 

   assign PR1 = { RR[2:0],1'b0};

   assign RR1 = PR1 + (~RR[3] ? D_M : D_P);

 

   assign PR2 = { RR1[2:0],1'b0};

   assign RR2 = PR2 + (~RR1[3] ? D_M : D_P);

 

   assign C = { ~R4[3],~R3[3],~R2[3],~R1[3],~R0[3],~RR[3],~RR1[3],~RR2[3] };

   always @(posedge Clk)

         Quotient <= Dividend[5] ? ~C + 1 : C;

endmodule






⌨️ 快捷键说明

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