前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >cordic的FPGA实现(三)、乘法器实现

cordic的FPGA实现(三)、乘法器实现

作者头像
根究FPGA
发布2020-06-30 11:28:09
6420
发布2020-06-30 11:28:09
举报
文章被收录于专栏:根究FPGA

当CORDIC运算在齐次线性坐标系下时,可使用CORDIC实现乘法运算,这只乘法器有一些弊端,就是输入z只能是介于-2~2之间。

CORDIC算法实现最简单的功能即为线性函数,实现乘法器。

原CORDIC模块的输入为x、y、z,现在将原模块的输入y屏蔽掉,输出y就会产生乘法效果,然而,这个乘法器的输入z只能介于-2~2之间,这个乘法器为针对小数的乘法器,z只要介于-2~2之间,后面有多少位小数don’t care at all!

(公式又来了,还是截图吧)

在迭代的过程中,x并没有移动方向,只有不断减半而已,对于z,其绝对值要不断的趋向于0,在z>0时矢量就执行相减操作,z<0时就执行相加操作;x为输入乘数,在迭代的过程中不断累加(减),最后的结果就是乘积。

matlab代码:

代码语言:javascript
复制
function a = chengfaqi(x,z)  
y=0;
t=1.0;
for i=0:1:15
    if z>0   %矢量向下移动 以z为参考系
        y=y+x*t;
        z=z-t;
        t=t/2;
    elseif z<=0  %矢量向上移动
        y=y-x*t;
        z=z+t;
        t=t/2;
   end
end 
a=y;

仿真代码:

代码语言:javascript
复制
`timescale 1ns/1ps

module cfq_tb;

reg clk;
reg rst_n;
reg iCall;
reg [31:0]ix;
reg [31:0]iz;
wire oDone;
wire [31:0]oData;
wire [31:0]z,x,y;
chengfaqi u0(
.clk(clk),
.rst_n(rst_n),
.iCall(iCall),
.ix(ix),
.iz(iz),
.oDone(oDone),
.oData(oData),
.z(z),
.x(x),
.y(y)
);

initial begin
rst_n=0; #10; rst_n=1;
 clk=0;
 forever #1 clk=~clk;
end 

reg[7:0]i;
always@(posedge clk or negedge rst_n)
if(~rst_n)
begin
 i<=8'd0;
 iCall<=1'b0;
 {ix,iz}<={32'd0,32'd0};
end 
else begin 
 case(i)
 0:  //x=0.4 z=1.3 
  begin
   if(oDone)
   begin
    i<=i+1'b1;
    iCall<=1'b0;
   end 
  else 
    begin
    iCall<=1'b1;
    ix<=0.4*65536;
    iz<=1.3*65536;
    end   
  end 
 1: //x=1.3 z=1.3
  begin
  if(oDone)
   begin
    i<=i+1'b1;
    iCall<=1'b0;
   end 
  else 
    begin
    iCall<=1'b1;
    ix<=1.3*65536;
    iz<=1.3*65536;
    end    
  end 
 2:
  begin
   if(oDone)
   begin
    i<=i+1'b1;
    iCall<=1'b0;
   end 
  else 
    begin
    iCall<=1'b1;
    ix<=3.8*65536;
    iz<=1.9*65536;
    end   
  end 
 3:
  begin
   if(oDone)
   begin
    i<=i+1'b1;
    iCall<=1'b0;
   end 
  else 
    begin
    iCall<=1'b1;
    ix<=10.125*65536;
    iz<=2*65536;
    end   
  end 
 4:
  begin
   i<=i;
  end 
 default:;
 endcase
end 
endmodule 

仿真结果:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 根究FPGA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档