查看: 2339|回复: 0

DSP in FPGA:开方运算

[复制链接]

该用户从未签到

发表于 2012-4-20 14:53:49 | 显示全部楼层 |阅读模式
分享到:
开方运算虽然不像加法、乘法那么常用,但是也有其用武之地。在去年的一个项目中,笔者负责的模块中就使用了开方运算,开始时使用的是Altera的IP  Core,验证模块使用没有问题;但是因为平台转换,需要转换到Xilinx的平台,许多IP  Core也需要转移,最后干脆自己写一个得了,包括前几个专题中的乘法器、除法器。
开方运算模块也使用与除法器类似的NonRestoring算法,包含输入D、输出开方结果Q和余数R;在FPGA中实现,则采用迭代方式一步步逼近结果,其中每一级的迭代式为:Ti+1=Ti(3 – Ti2)/2,Ti是1/Q的近似值。
Verilog HDL代码如下:
module sqrt
#( parameter d_width=32,
             q_width=d_width/2,
             r_width=q_width + 1)
(
    input clk,
    input rst,
    input [d_width-1:0] D,
    output reg [q_width-1:0] Q,
    output reg [r_width-1:0] R,
    input ivalid,
    output reg ovalid
 );
 
reg [d_width-1:0] D_t[q_width:1];
reg [q_width-1:0] Q_t[q_width:1];
reg signed [r_width-1:0] R_t[q_width:1];
reg ivalid_t[q_width:1];
 
always@(posedge clk)
begin
         if(rst)
         begin
                   R_t[q_width]=1;i=i-1)
begin:U
         always@(posedge clk)
         begin
                   if(rst)
                   begin
                            Q_t=0)
                                     begin

<strong><em>                                               Q_t

我的技术文章.pdf

524.28 KB, 下载次数: 6

回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /2 下一条



手机版|小黑屋|与非网

GMT+8, 2024-12-25 10:52 , Processed in 0.129412 second(s), 17 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.