今天就跟大家聊聊有关HLS Lesson20的示例分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
成都创新互联公司是一家集网站建设,千山企业网站建设,千山品牌网站建设,网站定制,千山网站建设报价,网络营销,网络优化,千山网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
当pipeline作用于函数的时候,从IO角度来看数据是没有空隙的,而作用于循环时候,则相邻的两个循环之间会有一个空隙
实例: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 { 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); } 看完上述内容,你们对HLS Lesson20的示例分析有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。
文章标题:HLSLesson20的示例分析
URL地址:http://bzwzjz.com/article/gihigc.html