基于CORDIC算法的平方根计算模块的Verilog实现.doc

基于CORDIC算法的平方根计算模块的Verilog实现.doc

ID:59827327

大小:20.50 KB

页数:6页

时间:2020-11-25

基于CORDIC算法的平方根计算模块的Verilog实现.doc_第1页
基于CORDIC算法的平方根计算模块的Verilog实现.doc_第2页
基于CORDIC算法的平方根计算模块的Verilog实现.doc_第3页
基于CORDIC算法的平方根计算模块的Verilog实现.doc_第4页
基于CORDIC算法的平方根计算模块的Verilog实现.doc_第5页
资源描述:

《基于CORDIC算法的平方根计算模块的Verilog实现.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、例2-28基于CORDIC算法的平方根计算模块的Verilog实现。①MATLAB代码为了便于读者理解,首先用MATLAB实现计算sqrt(x2+y2)的Cordic算法,代码如下:functionXout=mysqrt(x,y);K=8;An=1;fori=1:Ka(i)=1/(2^(i));An=An*sqrt(1+1/(4^i));end%anger=atan(a);%计算出的角度theta=0;fori=1:Ksigma=-sign(y);x=x-sigma*y/(2^i);y=y+sigma*x/(2^i);%z=z-sigma*a(i);endXou

2、t=x/An;经过测试,上述程序可利用Cordic算法来计算输入数据平方和的根。②Verilog代码modulemysqrt(clk,x,y,fout,fy);inputclk;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]x1,y1,x2,y2,x3,y3,x4,y4,x5,y5;wire[15:0]x6,y6,x7,y7,x8,y8;//reg[15:0]xtemp,ytemp;regaddx1

3、,addx2,addx3,addx4,addx5,addx6,addx7,addx8;regaddy1,addy2,addy3,addy4,addy5,addy6,addy7,addy8;always@(posedgeclk)beginxtemp<=x;ytemp<=y;fout<=x8;fy<=y8;if(ytemp[15]==0)beginaddx1<=1;addy1<=0;endelsebeginaddx1<=0;addy1<=1;endif(y1[15]==0)beginaddx2<=1;addy2<=0;endelsebeginaddx2<=0;add

4、y2<=1;endif(y2[15]==0)beginaddx3<=1;addy3<=0;endelsebeginaddx3<=0;addy3<=1;endif(y3[15]==0)beginaddx4<=1;addy4<=0;endelsebeginaddx4<=0;addy4<=1;endif(y4[15]==0)beginaddx5<=1;addy5<=0;endelsebeginaddx5<=0;addy5<=1;endif(y5[15]==0)beginaddx6<=1;addy6<=0;endelsebeginaddx6<=0;addy6<=1;en

5、dif(y6[15]==0)beginaddx7<=1;addy7<=0;endelsebeginaddx7<=0;addy7<=1;endif(y7[15]==0)beginaddx8<=1;addy8<=0;endelsebeginaddx8<=0;addy8<=1;endend//第1次迭代模块addandsubaddandsub1x(.A(xtemp),.B({ytemp[15],ytemp[15:1]}),.ADD(addx1),.Q(x1),.CLK(clk));addandsubaddandsub1y(.A(ytemp),.B({xtemp[15]

6、,xtemp[15:1]}),.ADD(addy1),.Q(y1),.CLK(clk));//第2次迭代模块addandsubaddandsub2x(.A(x1),.B({{2{y1[15]}},y1[15:2]}),.ADD(addx2),.Q(x2),.CLK(clk));addandsubaddandsub2y(.A(y1),.B({{2{x1[15]}},x1[15:2]}),.ADD(addy2),.Q(y2),.CLK(clk));//第3次迭代模块addandsubaddandsub3x(.A(x2),.B({{3{y2[15]}},y2[15:3

7、]}),.ADD(addx3),.Q(x3),.CLK(clk));addandsubaddandsub3y(.A(y2),.B({{3{x2[15]}},x2[15:3]}),.ADD(addy3),.Q(y3),.CLK(clk));//第4次迭代模块addandsubaddandsub4x(.A(x3),.B({{4{y3[15]}},y3[15:4]}),.ADD(addx4),.Q(x4),.CLK(clk));addandsubaddandsub4y(.A(y3),.B({{4{x3[15]}},x3[15:4]}),.ADD(addy4),.Q(y

8、4),.CLK(clk)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。