前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HLS Lesson20-实例分析

HLS Lesson20-实例分析

作者头像
瓜大三哥
发布2018-02-26 15:20:44
4190
发布2018-02-26 15:20:44
举报
文章被收录于专栏:瓜大三哥瓜大三哥瓜大三哥

1.改善吞吐率:本质是通过改善并行度实现的

当pipeline作用于函数的时候,从IO角度来看数据是没有空隙的,而作用于循环时候,则相邻的两个循环之间会有一个空隙

2.改善latency

3.改善area

实例:cordic

这里要求z0的取值范围为[-π/2,π/2],对于[-π,π]的数就需要先进行预处理映射到[-π/2,π/2],然后再计算,最后再进行后处理。

#include"cordic.h"
void pre_cir_cordic(di_t full_alpha,di_t &alpha,flag_t &flag)
{
if(full_alpha>PI/2)
{
alpha=PI-full_alpha;
flag=2;
}
else if(full_alpha<-PI/2)
{
alpha=-PI-full_alpha;
flag=3;
}
else
{
alpha=full_alpha;
flag=0;
}
}
void cir_cordic_calc(di_t alpha,flag_t flag,do_t &mysin,do_t &mycos,flag_t &flag_delay)
{
const int N = 16;
do_t xi[N];
do_t yi[N];
di_t zi[N];
flag_t flag_delay_a[N];
xi[0]=Kn;
yi[0]=0;
zi[0]=alpha;
flag_delay_a[0]=flag;
const di_t myarctan[16] ={
#include"myarctan.h";
};
int m=0;
loop:
for(m=0;m<N;m++)
{
if(zi[m]>=0)
{
xi[m+1]=xi[m]-(yi[m]>>m);
yi[m+1]=yi[m]+(xi[m]>>m);
zi[m+1]=zi[m]-myarctan[m];
}
else
{
xi[m+1]=xi[m]+(yi[m]>>m);
yi[m+1]=yi[m]-(xi[m]>>m);
zi[m+1]=zi[m]+myarctan[m];
}
flag_delay_a[m+1]=flag_delay_a[m];
}
mysin=yi[N-1];
mycos=xi[N-1];
flag_delay=flag_delay_a[N-1];
}
void post_cir_cordic(do_t mysin,do_t mycos,flag_t flag_delay,do_t &sin_out,do_t &cos_out)
{
switch(int(flag_delay))
{
case 2:sin_out=mysin;cos_out=-mycos;break;
case 3:sin_out=mysin;cos_out=-mycos;break;
default:sin_out=mysin;cos_out=mycos;break;
}
}
void cir_cordic(di_t full_alpha,do_t &sin_out,do_t &cos_out)
{
di_t alpha;
flag_t flag;
do_t mysin;
do_t mycos;
flag_t flag_delay;
pre_cir_cordic(full_alpha,alpha,flag);
cir_cordic_calc(alpha,flag,mysin,mycos,flag_delay);
post_cir_cordic(mysin,mycos,flag_delay,sin_out,cos_out);
}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-11-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 瓜大三哥 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.改善吞吐率:本质是通过改善并行度实现的
  • 2.改善latency
  • 3.改善area
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档