news 2026/9/2 23:19:13

vivado hls设计总结(二十)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
vivado hls设计总结(二十)

一、硬件高效型C语言代码之C++类和模板
1.vivado hls支持C++ class类的综合
2.vivado hls只是支持对顶层函数进行综合
3.vivado hls不支持对顶层的class类进行综合
4.如果要对类成员函数进行综合,需要将类本身例化为函数
5.不支持对位于顶层的类进行综合
6.不支持对位于顶层的类成员函数进行综合

二、顶层函数

三、类的实现

#include <fstream>
#include <iostream>
#include <iomanip>
#include <cstdlib>
using namespace std;
#define N 85
typedef int coef_t;
typedef int data_t;
typedef int acc_t;
// Class CFir definition
template<class coef_T, class data_T, class acc_T>
class CFir {
protected:
static const coef_T c[N];
data_T shift_reg[N-1];
private:
public:
data_T operator()(data_T x);
template<class coef_TT, class data_TT, class acc_TT>
friend ostream&
operator<<(ostream& o, const CFir<coef_TT, data_TT, acc_TT> &f);
};
// Load FIR coefficients
template<class coef_T, class data_T, class acc_T>
const coef_T CFir<coef_T, data_T, acc_T>::c[N] = {
#include "cpp_FIR.h"
};
// FIR main algorithm
template<class coef_T, class data_T, class acc_T>
data_T CFir<coef_T, data_T, acc_T>::operator()(data_T x) {
int i;
acc_t acc = 0;
data_t m;
loop: for (i = N-1; i >= 0; i--) {
if (i == 0) {
m = x;
shift_reg[0] = x;
} else {
m = shift_reg[i-1];
if (i != (N-1))
shift_reg[i] = shift_reg[i - 1];
}
acc += m * c[i];
}
return acc;
}
// Operator for displaying results
template<class coef_T, class data_T, class acc_T>
ostream& operator<<(ostream& o, const CFir<coef_T, data_T, acc_T> &f) {
for (int i = 0; i < (sizeof(f.shift_reg)/sizeof(data_T)); i++) {
o << shift_reg[ << i << ]= << f.shift_reg[i] << endl;
}

o << ______________ << endl;
return o;
}
data_t cpp_FIR(data_t x);

四、测试激励的编写

五、可以使用类模板来实现递归算法

//Tail recursive call
template<data_t N> struct fibon_s {
template<typename T>
static T fibon_f(T a, T b) {
return fibon_s<N-1>::fibon_f(b, (a+b));
}
};
// Termination condition
template<> struct fibon_s<1> {
template<typename T>
static T fibon_f(T a, T b) {
return b;
}
};
void cpp_template(data_t a, data_t b, data_t &dout){
dout = fibon_s<FIB_N>::fibon_f(a,b);
}

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 21:28:28

Golang map取不存在的key时返回零值

现象由于python的字典取不存在的key时会报错&#xff0c;误以为golang也是一样的。其实不然。原因golang的map取不存在的key时&#xff0c;并不会报错&#xff0c;而是会返回对应数据类型的零值&#xff0c;例子如下&#xff1a;package mainimport "fmt"func main()…

作者头像 李华
网站建设 2026/9/2 22:28:30

Infinigen程序化世界生成:5步打造你的无限创意空间

Infinigen程序化世界生成&#xff1a;5步打造你的无限创意空间 【免费下载链接】infinigen Infinite Photorealistic Worlds using Procedural Generation 项目地址: https://gitcode.com/gh_mirrors/in/infinigen 还在为3D建模的复杂流程而头疼吗&#xff1f;Infinigen…

作者头像 李华
网站建设 2026/9/2 22:26:45

深度学习毕设项目:基于python-深度学习的混凝土马路和泥地马路识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/8/31 2:50:02

大模型意图识别全攻略:从入门到精通,收藏这篇就够了

本文详细介绍了大模型应用中意图识别的方法与技巧&#xff0c;包括基础方法&#xff08;规则、深度学习、大模型&#xff09;和进阶方法&#xff08;Prompt优化、增加召回、向量检索等&#xff09;&#xff0c;并强调提升准确率的关键在于构建清晰正交的分类体系、确保每个子分…

作者头像 李华
网站建设 2026/9/2 9:37:13

AI校招风暴来袭:掌握大模型技能,轻松斩获百万年薪offer(建议收藏)_AI岗平均月薪4.7万起,大厂秋招疯狂抢人

2026届互联网大厂校招已演变为AI人才争夺战&#xff0c;阿里、腾讯等企业AI岗位占比超60%&#xff0c;百度达90%。企业更看重AI落地能力而非学历&#xff0c;AI工具使用已成"通识"技能。AI相关岗位薪资大幅上涨&#xff0c;顶尖应届博士年薪近200万。随着AI技术深入应…

作者头像 李华