HLS Lesson20-实例分析
时间:2022-04-28
本文章向大家介绍HLS Lesson20-实例分析,主要内容包括1.改善吞吐率:本质是通过改善并行度实现的、2.改善latency、3.改善area、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
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);
}
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 再见,可视化!你好,Pandas!
- 40000字 Matplotlib 实操干货,真的全!
- Python自动化(二十) | 聊聊 Python 操作PDF的几种方法(合并、拆分、水印、加密)
- C语言发展史的点点滴滴
- 我写了一个R包,简化芯片的差异分析
- 【收藏】万字解析Scipy的使用技巧!
- Python 如何使用 HttpRunner 做接口自动化测试
- Python 爬虫时,高版本 App 如何进行抓包?
- 使用 shell-operator 实现 Operator
- 我们是如何用 K8S 搞定1000个应用的测试环境
- 关于Python 3.9,那些你不知道的事
- urllib, urllib2, urllib3 都是小弟弟
- 使用 Kustomize 定制 Helm Chart
- 装逼篇 | 抖音超火的九宫格视频是如何生成的,Python 告诉你答案
- 最全总结 | 聊聊 Python 数据处理全家桶(Mysql 篇)