开方csdn

您所在的位置:网站首页 开方怎么计算公式 开方csdn

开方csdn

#开方csdn| 来源: 网络整理| 查看: 265

对于non-restoring方法,主要是用rem和den移位数据比较,rem_d长度为den+nom的总长,den_d长度为den+nom的总长度,rem_d的初始值为{{d_width{1'b0}},nom};den_d的初始值为{1'b0,den,{(n_width-1){1'b0}}}。每次比较,移位同时进行。

除法运算也是数字信号处理中经常需要使用的。在FPGA设计中,通常为了简化算法,通常将除法近似为对数据进行移位操作即除数是2的整数次幂,因为在FPGA中进行移位很容易,比如右移2位相当于除4;但是在某些特殊情况下,为了满足数据处理的指标要求,不得不进行非2的整数次幂除法运算,此时就需要设计除法器。

         对于被除数Nom,除数Den,除法可产生商Quo和余数Rem,计算式如下:                                                

1.gif

         直接用上式在FPGA中实现,好像不是那么容易,对上式做一变换得到Rem=Nom-Den*Quo,这样就有些灵感了,被除数Nom和除数Den是给定的,可以通过比对Nom和Den*Quo值大小来调节商Quo的值,因为FPGA中数值都是以二进制表示的,因此按位来调节Quo的值,Den*Quo的乘法操作可用移位实现,因此可以完全使用逻辑实现整个除法器。

         本文介绍两种常用除法器结构:Restoring除法器和NonRestoring除法器

 

NonRestoring除法器:

         Verilog HDL代码如下:

//nonrestoring divisionmodule div_uu(clk,rst,clk_en,nom,den,quo,rem);parameter integer n_width=32;parameter integer d_width=16;parameter integer q_width=n_width;parameter integer r_width=d_width;input clk;input rst;input clk_en;input [n_width-1:0] nom;input [d_width-1:0] den;output reg [q_width-1:0] quo;output reg [r_width-1:0] rem;reg [n_width+d_width-1 : 0] den_d[q_width : 1];reg [q_width-1 : 0] quo_d[q_width : 1];reg [n_width+d_width-1 : 0] rem_d[q_width : 1];reg clk_en_d[q_width : 1];always@(posedge clk)    if(rst) begin        rem_d[1]{d_width{1'b0}},nom} - {1'b0,den,{(n_width-1){1'b0}}};

                            den_d[1]1;

        clk_en_d[2*i]



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3