当前位置: 首页 > news >正文

公安备案 个人网站重庆网络推广平台

公安备案 个人网站,重庆网络推广平台,贵阳专业网站建设公司,优秀 网站设计 蓝色硬件:ZYNQ7010 软件:MATLAB 2019b、Vivado 2017.4、HLS 2017.4、System Generator 2017.4 1、CORDIC算法计算正余弦 CORDIC算法详细分析网上有很多资料,它的原理是用一系列旋转去逼近目标角度,这一系列旋转的角度为 θ a r c t…

硬件:ZYNQ7010
软件:MATLAB 2019b、Vivado 2017.4、HLS 2017.4、System Generator 2017.4

1、CORDIC算法计算正余弦

  CORDIC算法详细分析网上有很多资料,它的原理是用一系列旋转去逼近目标角度,这一系列旋转的角度为 θ = a r c t a n ( 2 − i ) \theta=arctan(2^{-i}) θ=arctan(2i) i i i 是迭代次数。下面给出了用CORDIC算法计算正余弦的代码,其中 s1 不做任何优化,数据类型都用的 float 型;s2 对数据类型做了定点数优化;s3 在 s2 的基础上,对迭代的循环做了流水线优化。

//cordic.h
#ifndef _CORDIC_H_
#define _CORDIC_H_
#include <ap_int.h>
#include <ap_fixed.h>
#define NUM_ITERATIONS 9
//#define s1
//#define s2
#define s3
#if defined s1
typedef float THETA_TYPE;
typedef float COS_SIN_TYPE;
#endif
#if defined s2 || defined s3
typedef ap_fixed<16,8> THETA_TYPE;
typedef ap_fixed<16,2> COS_SIN_TYPE;
#endif
void cordic(THETA_TYPE theta, COS_SIN_TYPE &s, COS_SIN_TYPE &c);
#endif
//cordic.cpp
#include "cordic.h"
const THETA_TYPE cordic_phase[NUM_ITERATIONS] = {45, 26.565, 14.036, 7.125, 3.576, 1.790, 0.895, 0.448, 0.224};
#if defined s1
void cordic(THETA_TYPE theta, COS_SIN_TYPE &s, COS_SIN_TYPE &c)
{COS_SIN_TYPE current_cos = 0.607255; // 6, 1/1.64669COS_SIN_TYPE current_sin = 0;COS_SIN_TYPE factor = 1.0;for(int i=0; i<NUM_ITERATIONS; i++){ap_int<2> sigma = (theta < 0)?-1:1;COS_SIN_TYPE temp_cos = current_cos;current_cos = current_cos-current_sin*sigma*factor;current_sin = temp_cos*sigma*factor+current_sin;theta = theta-sigma*cordic_phase[i];factor = factor/2.0;}s = current_sin;c = current_cos;
}
#endif
#if defined s2 || defined s3
void cordic(THETA_TYPE theta, COS_SIN_TYPE &s, COS_SIN_TYPE &c)
{COS_SIN_TYPE current_cos = 0.607255; // 6, 1/1.64669COS_SIN_TYPE current_sin = 0;COS_SIN_TYPE factor = 1.0;
ITERATIONS_LOOP:for(int i=0; i<NUM_ITERATIONS; i++){ap_int<2> sigma = (theta < 0)?-1:1;COS_SIN_TYPE temp_cos = current_cos;current_cos = current_cos-current_sin*sigma*factor;current_sin = temp_cos*sigma*factor+current_sin;theta = theta-sigma*cordic_phase[i];factor >>= 1;}s = current_sin;c = current_cos;
}
#endif

  三个 solution 的资源使用量和计算性能如下图所示。

在这里插入图片描述

2、上板验证

  把 s3 的模块端口设置成 ap_ctrl_none, 重新综合,导出 IP 核。在FPGA的顶层文件里例化 cordic IP 核和一个 ila IP 核,让 cordic 计算 30° 和 60° 角的正余弦值。

module cordic_test_top(input resetn,input clk);wire [15:0] w_theta;
reg [15:0] r_theta;
reg [31:0] cnt;
always @(posedge clk or negedge resetn) beginif(!resetn) begincnt <= 32'd0;endelse beginif(cnt == 32'd1000) cnt <= 32'd0;else cnt <= cnt+1'd1;end
end
always @(posedge clk or negedge resetn) beginif(!resetn) beginr_theta <= 16'd0;endelse beginif(cnt == 32'd500) r_theta <= {8'd30, 8'd0};else if(cnt == 32'd1000) r_theta <= {8'd60, 8'd0};else r_theta <= r_theta;end
end
assign w_theta = r_theta;
wire [15:0] s, c;
wire s_V_ap_vld, c_V_ap_vld;
reg [15:0] r_s, r_c;
cordic_0 cordic_inst (.s_V_ap_vld(s_V_ap_vld),  // output wire s_V_ap_vld.c_V_ap_vld(c_V_ap_vld),  // output wire c_V_ap_vld.ap_clk(clk),          // input wire ap_clk.ap_rst(~resetn),          // input wire ap_rst.theta_V(w_theta),        // input wire [15 : 0] theta_V.s_V(s),                // output wire [15 : 0] s_V.c_V(c)                // output wire [15 : 0] c_V
);
always @(posedge clk or negedge resetn) beginif(!resetn) beginr_s <= 16'd0;endelse beginif(s_V_ap_vld) beginr_s <= s;endend
end
always @(posedge clk or negedge resetn) beginif(!resetn) beginr_c <= 16'd0;endelse beginif(c_V_ap_vld) beginr_c <= c;endend
end
ila_0 ila0 (.clk(clk), // input wire clk.probe0(w_theta), // input wire [15:0]  probe0  .probe1(r_s), // input wire [15:0]  probe1 .probe2(s_V_ap_vld), // input wire [0:0]  probe2 .probe3(r_c), // input wire [15:0]  probe3 .probe4(c_V_ap_vld) // input wire [0:0]  probe4
);

   ila 上看到的波形如下图所示。注意要正确设置观测量的数据类型,即定点数和小数点位置。从图中可以看出计算的角度比较准确。

在这里插入图片描述
完整工程下载:HLS设计CORDIC算法计算正余弦

http://www.hkea.cn/news/940399/

相关文章:

  • 群辉服务器做网站网络优化的内容包括哪些
  • 做淘客的网站岳阳seo
  • 网吧设计方案seox
  • 谁做网站市场营销专业
  • 慈溪外贸公司网站网络营销就业前景和薪水
  • 电商网站建设实训报告长沙网站seo推广公司
  • 阿里云ecs怎么建网站吉林网站seo
  • 企业营销型网站建设的可行性西安竞价托管
  • 做网站如何适应分辨率网站分析培训班
  • 现在币圈有那些私募网站做的好百度推广账号登陆入口
  • 旅游网站图片营销公司排名
  • 做服务器的网站都有哪些搜狗关键词排名此会zjkwlgs
  • php动态网站开发 唐四薪 答案b站引流推广网站
  • 长沙3天2晚自由行攻略论述搜索引擎优化的具体措施
  • 外汇局网站做结汇申报被逆冬seo课程欺骗了
  • 网站运营配置免费网站在线观看人数在哪直播
  • 什么网站做一手房好系统优化的例子
  • wordpress 插入wordseo排名点击工具
  • 网站推广易网宣seo的主要分析工具
  • 安徽网站定制最大免费广告发布平台
  • 怎么查网站有没有做404公司宣传网页怎么做
  • 靠谱营销网站开发选哪家seo的优点和缺点
  • 企业网站建设论文文献综述百度推广的广告真实可信吗
  • 企业网站优化方式广州最新消息今天
  • 旅游网站开发的意义seo优化方案案例
  • 山东做网站的公司seo数据分析哪些方面
  • 做网站用哪几个端口 比较好百度贴吧官网网页
  • 弹幕网站是怎么做的百度在线翻译
  • 独立网站域名代发关键词包收录
  • 如何建立门户网站百度可以发布广告吗