- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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));
//
您可能关注的文档
- 基于MATLAB的汽车振动控制仿真文献综述.doc
- 基于MATLAB的汽车灯光优化分析开题报告.doc
- 基于MATLAB的特定人语音识别软件开发与设计.doc
- 基于matlab的语音信号分析与处理的设计.doc
- 基于MA的软件开发方法的研究.doc
- 基于mBt机器人的创新课程设计.doc
- 基于MB的数字化设计与制造技术探讨.doc
- 基于MF编程实现可视化数控插补.doc
- 基于mGIS的从Shape文件到f文件格式转换的方法.doc
- 基于MGS的船闸监控画面的设计.doc
- 基于RM技术的机车维修优化方案.doc
- 基于RM理论的顾客忠诚提升策略研究.doc
- 基于RRAS与虚拟专用网技术在Winws中的实现.doc
- 基于RTS的超高压线路保护装置的试验研究..doc
- 基于RTS试验的STATM连接电抗器的不同类型短路故障分析.doc
- 基于RTU油井远程测控系统的数据采集与传输层软件设计..doc
- 基于ruise模型简析行驶阻力优化对于经济性的影响.doc
- 基于Ry模式的中医综合干预方案在结肠癌术后患者中的运用效果.doc
- 基于S12887时钟芯片的多功能万年历设计.doc
- 基于S2SH架构的课程设计实训教学示例项目——《客户关系管理RM系统》——实现项目中..doc
文档评论(0)