基于RI算法的平方根计算模块的Verilg实现.docVIP

基于RI算法的平方根计算模块的Verilg实现.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于RI算法的平方根计算模块的Verilg实现.doc

例2-28基于C0RD1C算法的平方根计算模块的Verilog实现。 ①MATLAB代码 为了便于读者理解,首先用MATLAB实现计算sqrt (x2+y2)的Cordic算法,代码 如下: function Xout = mysqrt (x, y); K 二 8; An = 1; for i =1: K a(i) = l/(27i)); An =An*sqrt(1+1/(4 i)); end %anger = atan(a) ; %计算出的角度 theta = 0; for i = 1:K sigma = -sign(y); x = x - sigma^y/(2i); y = y + sigma^x/(2^i); % z = z - sigma^a(i); end Xout= x/An; 经过测试,上述程序可利用Cordic算法来计算输入数据平方和的根。 ②Verilog代码 module mysqrt(clk,x,y,fout,fy); input elk; input [15:0] x; input [15:0] y; output [15:0] fout; output [15:0] fy; reg [15:0] fout; reg [15:0] fy; //采用8级流水线来实现 wire [15:0] xl, yl ,x2, wire [15:0] x6, y6 ,x7,y2, x3, y3, x4, y4, x5, y5; y7, x8, y8; wire [15:0] xl, yl ,x2, wire [15:0] x6, y6 ,x7, // reg [15:0] xtemp, ytemp; reg addxl, addx2, addx3, addx4, addx5, addx6, addx7, addx8; reg addyl, addy2, addy3, addyd, addy5, addy6, addy7, addy8; always @(poscdgc elk) begin xtemp = x; ytemp = y; fout = x8; fy = y8; if (ytemp[15]=- =0) 〈二 begin 1; 0; end addxl addy 1 else begin addxl = 0; addyl 1; end if(yl[15] —— 0) begin addx2 = 1; addy2 = 0; end el se begin addx2 = 0; addy2 = 1; end if(y2[15]二 :0) begin addx3 〈二 1; addy3 = 0; end else begin addx3 = 0; addy3 = 1; end if(y3[15] == 0) begin addx4 = 1; addyd = 0; end else begin addx4 = 0; addy4 = 1; end if(y4[15] == 0) begin addx5 addy5 = = 1; 0; end el se begin addx5 = 0; end addy5 = 1; if(y5[15] == 0) begin addx6 = 1; addy6 〈= 0; end else begin addx6 = 0; addy6 = 1; end if(y6[15] —— 0) begin addx7 = 1; addy7 = 0; end else begin addx7 = 0; addy7 = 1; end if(y7[15] == 0) begin addx8 = 1; addy8 = 0; end else begin addx8 = 0; addy8 〈= 1; end end //第1次迭代模块 addandsub addandsublx( .A(xtemp), .B({ytemp[15], ytemp[15:1]}), .ADD(addxl), ? Q(xl), .CLK(clk)); addandsub addandsubly( A (ytemp), B( {xtemp[15], xtemp[15:1]}), .ADD (addyl), .Q(yl), .CLK(clk)); //第2次迭代模块 addandsub addandsub2x( .A(xl), .B({{2{yl[15]}},yl[15:2n), .ADD (addx2), .Q(x2), .CLK(clk)); addandsub addandsub2y( ?八(yl), .B({{2{xl[15]}},xl[15:2]}), ? ADD (addy2), .Q(y2), .CLK(clk)); //

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档