首页
学习
活动
专区
圈层
工具
发布
37 篇文章
1
Linux音频驱动-ASOC(ALSA System on Chip)
2
LPDDR5: A New Clocking Scheme 提高性能
3
FPGA 控制 RGMII 接口 PHY芯片基础
4
DDR3篇第三讲、DDR3读写测试项目分析
5
PHY(Physical Layer,PHY)通俗理
6
MIPI联盟已完成车载的Long-Reach SerDes PHY工业标准 A-PHY v1.0
7
【三】Bluetooth 技术||链路层七种状态与空口报文设计(Core_v5.2)
8
【RL-TCPnet网络教程】第5章 PHY芯片和STM32的MAC基础知识
9
FPGA和USB3.0通信-USB3.0 PHY介绍
10
USB技术浅析
11
优秀的 Verilog/FPGA开源项目介绍(二)-RISC-V
12
优秀的 Verilog/FPGA开源项目介绍(十六)- 数字频率合成器DDS
13
想学习高速ADC/DAC/SDR项目这个项目你不得不理解
14
优秀的 Verilog/FPGA开源项目介绍(九)- DP(增改版)
15
优秀的 Verilog/FPGA开源项目介绍(十三)- I2C
16
高速串行通信常用的编码方式-8b/10b编码/解码
17
SoC设计之PPA
18
SoC设计之功耗--开篇
19
开源SOC的设计与实践
20
SoC设计之功耗 – RTL/netlist功耗计算
21
转置型FIR设计
22
SSD目标检测系统系统结构网络训练
23
P2P接口Booth乘法器设计描述原理代码实现
24
流水线式p2p接口的分析与实现
25
流水线乘加树需求设计规划代码实现
26
分时复用的移位相加乘法器
27
Verilog实现全并行比较算法
28
全并行流水线移位相加乘法器
29
ROM乘法器基本算法单个ROM乘法器分时复用ROM乘法器
30
Flash中XIP模式
31
cordic的FPGA实现(五)、除法实现
32
cordic的FPGA实现(三)、乘法器实现
33
cordic的FPGA实现(三)、sin、cos函数运算与源码分析
34
FPGA卡拉ok系统--Biquad filter
35
音频总线I2S协议
36
脉冲压缩处理
37
虚拟地址(VA,virtual address)到物理地址(PA, ,physical address)的转换
清单首页SoC文章详情

cordic的FPGA实现(五)、除法实现

根据之前的更新,大家可能已经看出,其实除法器的实现,仅仅改变旋转的参考系即可,除法所使用的参考系为:z,其matlab代码为:

代码语言:javascript
复制
function c = chufaqi(x,y) 
t=1.0;
z=0;
for i=0:1:15
    %y是x累加的结果
    %z是斜度的长度 1/2^i是移动的距离 
   if y<0  %矢量向下移动  参考系为y
       y=y+x*t;
       z=z-t;
       t=t/2;
   else %矢量向上移动  参考系为y
       y=y-x*t;
       z=z+t;
       t=t/2;
   end
end
c=z;

CORDIC算法verilog实现仅需要更改乘法器的几个变量即可。

常量表

关于前几篇中使用的常量,后台看到了有朋友提问说是什么意思,在结尾和大家解释一下:

代码语言:javascript
复制
atan(1)对应的角度是45°;
atan(0.5)对应的角度是26.565051177078°;
atan(0.25)对应的角度是14.0362434679265°;
atan(0.125)对应的角度是7.1250163489018°;
atan(0.0625)对应的角度是3.57633437499735°;
atan(0.03125)对应的角度是1.78991061°;
atan(0.015625)对应的角度是0.8951737102111°;
atan(0.0078125)对应的角度是0.4476141708606°;
atan(0.00390625)对应的角度是0.2238105003685°;
atan(0.001953125)对应的角度是0.1119056770662°;
atan(0.0009765625)对应的角度是0.0559528918938°;
atan(0.00048828125)对应的角度是0.027976452617,°;
atan(0.000244140625)对应的角度是0.01398822714227°;
atan(0.0001220703125)对应的角度是0.006994113675353°;
atan(0.00006103515625)对应的角度是0.003497056850704°;
atan(0.000030517578125)对应的角度是0.0017485284269°;

将一切视为常量:

为了在FPGA上实现CORDIC运算,需要将浮点数转换为定点数,转换的方式很简单~~~,左移16位不就好了!

所以将上图中的常量统一左移16位,即乘2^16,得到的结果为:

代码语言:javascript
复制
`define rot0  32'd2949120       //45度*2^16
`define rot1  32'd1740992       //26.5651度*2^16
`define rot2  32'd919872        //14.0362度*2^16
`define rot3  32'd466944        //7.1250度*2^16
`define rot4  32'd234368        //3.5763度*2^16
`define rot5  32'd117312        //1.7899度*2^16
`define rot6  32'd58688         //0.8952度*2^16
`define rot7  32'd29312         //0.4476度*2^16
`define rot8  32'd14656         //0.2238度*2^16
`define rot9  32'd7360          //0.1119度*2^16
`define rot10 32'd3648          //0.0560度*2^16
`define rot11 32'd1856          //0.0280度*2^16
`define rot12 32'd896           //0.0140度*2^16
`define rot13 32'd448           //0.0070度*2^16
`define rot14 32'd256           //0.0035度*2^16
`define rot15 32'd128           //0.0018度*2^16
下一篇
举报
领券