前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >cordic的FPGA实现(五) 除法实现

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

作者头像
数字芯片社区
发布于 2020-07-20 07:58:19
发布于 2020-07-20 07:58:19
1.2K00
代码可运行
举报
文章被收录于专栏:数字芯片数字芯片
运行总次数:0
代码可运行

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
`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

END

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

本文分享自 数字ICer 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Verilog实现CORDIC算法--FPGA求sin函数和cos函数--FPGA求actan函数--FPGA开平方
CORDIC(Coordinate Rotation Digital Computer)坐标旋转数字计算算法可以通过“移位相加”来计算sin、cos、tan、actan、乘法、除法、平方和开根号(求FFT运算的模值)、双曲函数等,涉及3种坐标系、2种模式,共计6这个组合,是高速运算的关键。
FPGA探索者
2021/03/15
5.7K0
cordic的FPGA实现(三)、sin、cos函数运算与源码分析
在旋转模式中曾提到:由于每次伪旋转都导致向量模长发生了变化,以Ki表示第i次伪旋转模长补偿因子,所以第i次伪旋转真实旋转的结果应该为:
根究FPGA
2020/06/30
2.2K0
cordic的FPGA实现(三)、sin、cos函数运算与源码分析
CORDIC算法详解(六)- CORDIC 算法的硬件实现
网上有很多类似的介绍,但是本文会结合实例进行介绍,尽量以最简单的语言进行解析。   CORDIC ( Coordinate Rotation Digital Computer ) 是坐标旋转数字计算机算法的简称, 由 Vloder• 于 1959 年在设计美国航空导航控制系统的过程中首先提出[1], 主要用于解决导航系统中三角函数、 反三角函数和开方等运算的实时计算问题。 1971 年, Walther 将圆周系统、 线性系统和双曲系统统一到一个 CORDIC 迭代方程里 , 从而提出了一种统一的CORDIC 算法形式[2]。   CORDIC 算法应用广泛, 如离散傅里叶变换 、 离散余弦变换、 离散 Hartley 变换、Chirp-Z 变换、 各种滤波以及矩阵的奇异值分解中都可应用 CORDIC 算法。 从广义上讲,CORDIC 算法提供了一种数学计算的逼近方法。 由于它最终可分解为一系列的加减和移位操作, 故非常适合硬件实现。 例如, 在工程领域可采用 CORDIC 算法实现直接数字频率合成器。 本节在阐述 CORDIC 算法三种旋转模式的基础上, 介绍了利用 CORDIC 算法计算三角函数、 反三角函数和复数求模等相关理论。 以此为依据, 阐述了基于 FPGA 的 CORDIC 算法的设计与实现及其工程应用。
碎碎思
2020/06/28
5.4K0
cordic的FPGA实现(三)、乘法器实现
当CORDIC运算在齐次线性坐标系下时,可使用CORDIC实现乘法运算,这只乘法器有一些弊端,就是输入z只能是介于-2~2之间。
根究FPGA
2020/06/30
7450
cordic的FPGA实现(三)、乘法器实现
cordic的FPGA实现(二) 向量模式与伪旋转处理
本节更新的Coordinate Rorate Digital Computer的向量模式介绍与伪旋转处理,结尾处会总结旋转模式与向量模式的区别,在接下来的系列中会更新乘法器、除法器、sin函数、cos函数的verilog实现与matlab实现原理,并分享verilog与matlab代码。
数字芯片社区
2020/07/20
8960
cordic的FPGA实现(二) 向量模式与伪旋转处理
车辆动力学方程推导和代码实现
车辆动力学模型是描述汽车运动规律的微分方程,一般用于分析汽车的平顺性和操纵稳定性。二自由度的车辆动力学模型基于单车模型假设,只考虑轮胎侧偏特性,其应用前提是
艰默
2024/01/23
7901
车辆动力学方程推导和代码实现
优秀的 Verilog/FPGA开源项目介绍(三十七)- MATH库
数字信号处理( Digital Signal Processing)技术广泛地应用于通信与信息系统、信号与信息处理、自动控制、 雷达、军事、航空航天、医疗、家用电器等许多领域。DSP 技术可以快速地对采集的信号进行量化、变换、滤波、估值 、增强、压缩、识别等处理,以得到符合需要的信号形式。而用FPGA进行数字信号处理的核心就是数学运算,今天介绍几个和FPGA进行数学运算的相关开源项目。
碎碎思
2023/08/30
1.3K0
优秀的 Verilog/FPGA开源项目介绍(三十七)- MATH库
Unity基础(17)-四元数与欧拉角与矩阵
Quaternion中存放了x,y,z,w四个数据成员,可以用下标来进行访问,对应的下标分别是0,1,2,3 其实最简单来说:四元数就是表示一个3D物体的旋转,它是一种全新数学数字,甚至不是复数。 四元数其实就是表示旋转。
孙寅
2020/06/02
5.4K0
Unity基础(17)-四元数与欧拉角与矩阵
【C语言】C语言入门知识
(1)全局变量------在{}外部定义的变量 (2)局部变量------在{}内部定义的变量
YoungMLet
2024/03/01
2.2K0
【C语言】C语言入门知识
C语言执行效率如何保证?
2、一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。
小林C语言
2020/12/31
6.5K0
C语言执行效率如何保证?
彩色的Hello World到彩色的Donuts甜甜圈-蓝桥ROS云课-C++案例
在C++语言中,可以使用ANSI转义码来输出彩色字符串。下面是一个输出彩色Hello world字符串的示例代码:
zhangrelay
2023/03/31
5940
彩色的Hello World到彩色的Donuts甜甜圈-蓝桥ROS云课-C++案例
干货!嵌入式C语言源代码优化方案
选择一种合适的数据结构很重要,如果在一堆随机存放的数中使用了大量的插入和删除指令,那使用链表要快得多。数组与指针语句具有十分密切的关系,一般来说,指针比较灵活简洁,而数组则比较直观,容易理解。对于大部分的编译器,使用指针比使用数组生成的代码更短,执行效率更高。
混说Linux
2022/11/18
2.9K1
干货:嵌入式C语言源代码优化方案(非编译器优化)
选择一种合适的数据结构很重要,如果在一堆随机存放的数中使用了大量的插入和删除指令,那使用链表要快得多。数组与指针语句具有十分密切的关系,一般来说,指针比较灵活简洁,而数组则比较直观,容易理解。对于大部分的编译器,使用指针比使用数组生成的代码更短,执行效率更高。
C语言与CPP编程
2020/12/02
1.7K0
C语言高效编程与代码优化
在本篇文章中,我收集了很多经验和方法。应用这些经验和方法,可以帮助我们从执行速度和内存使用等方面来优化C语言代码。
C语言与CPP编程
2020/10/20
3.4K0
【必读】C语言基础知识大全
C语言程序的结构认识 用一个简单的c程序例子,介绍c语言的基本构成、格式、以及良好的书写风格,使小伙伴对c语言有个初步认识。 例1:计算两个整数之和的c程序: #include main() { int a,b,sum; /*定义变量a,b,sum为整型变量*/ a=20; /*把整数20赋值给整型变量a*/ b=15; /*把整数15赋值给整型变量b*/ sum=a+b; /*把两个数之和赋值给整型变量sum*/ printf(“a=%d,b=%d,su
老九君
2018/03/06
6.4K0
【必读】C语言基础知识大全
刚体力学整理
质点:一个有质量的几何点,忽略其大小、形状及内部结构的影响,在空间只占据一个点的位置。它是对实际研究对象的简化,理想模型。
算法之名
2023/10/16
1.2K0
刚体力学整理
毕设:基于FPGA的FIR数字滤波器设计
大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分。大侠可以关注FPGA技术江湖,在“闯荡江湖”、"行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢。
FPGA技术江湖
2020/12/30
2.5K0
Go 语言的基本数据类型
0)变量声明 var 变量名字 类型 = 表达式 例: var num int = 10 复制代码 其中“类型”或“= 表达式”两个部分可以省略其中的一个。 1)根据初始化表达式来推导类型信息 2)默认值初始化为0。 例: var num int // var num int = 0 var num = 10 // var num int = 10 复制代码 1)整型1.1)整型类型类型名称有无符号bit数 int8Yes8 int16Yes16 int32Yes32 int64Yes64 uint8
李海彬
2018/03/27
1.4K0
MD5加密概述,原理及实现
MD5消息摘要算法,属Hash算法一类。MD5算法对输入任意长度的消息进行运行,产生一个128位的消息摘要(32位的数字字母混合码)。
全栈程序员站长
2022/09/15
3.2K0
【短道速滑十一】标准的Gabor滤波器及Log_Gabor滤波器的实现、解析、速度优化及其和Halcon中gen_gabor的比较。
  最近有朋友在研究Halcon中gen_gabor的函数,和我探讨,因为我之前也没有怎么去关注这个函数,因此,前前后后大概也折腾了有一个星期去模拟实现这个东西,虽然最终没有实现这个函数,但是也是有所收获,这里做一点总结,也算是最这个函数有个完美的收尾吧。
用户1138785
2023/10/23
5700
【短道速滑十一】标准的Gabor滤波器及Log_Gabor滤波器的实现、解析、速度优化及其和Halcon中gen_gabor的比较。
推荐阅读
相关推荐
Verilog实现CORDIC算法--FPGA求sin函数和cos函数--FPGA求actan函数--FPGA开平方
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验