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

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);
}

http://www.jsqmd.com/news/235399/

相关文章:

  • OBS面部追踪插件终极指南:从入门到精通
  • 大学生Kali学习高频命令合集 12个实操案例 覆盖渗透测试基础场景
  • 深度学习计算机毕设之基于python-CNN卷积神经网络的宠物行为训练识别
  • 学长亲荐!继续教育必备TOP8 AI论文软件深度测评
  • Golang map取不存在的key时返回零值
  • Scarab空洞骑士模组管理器:零基础快速上手完全指南
  • Infinigen完全攻略:5步开启无限程序化世界之旅
  • 【计算机大数据毕业设计选题推荐】基于Spark+Django的健康饮食营养数据分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习 数据挖掘
  • 深度学习毕设项目:基于python-CNN卷积神经网络的宠物行为训练识别
  • 【计算机毕设选题推荐】基于Hadoop+Spark的健康风险预测系统:Python毕设完整实现方案 毕业设计 选题推荐 毕设选题 数据分析
  • 如何用FramePack快速制作专业AI动画:新手指南
  • Infinigen程序化世界生成:5步打造你的无限创意空间
  • 【图像加密】基于逻辑映射序列和线性反馈移位寄存器的状态序列生成的混沌密钥序列进行图像加密和解密附Matlab代码
  • 计算机毕设 java 基于 Java 的心理咨询系统的设计与实现 线上心理咨询服务平台 心理疏导预约管理系统
  • 基于深度学习神经网络YOLOv5目标检测的安全帽识别系统
  • 5分钟搞定!Win11Debloat让你的Windows系统飞起来 [特殊字符]
  • dy bd-ticket-guard-client-data 逆向分析
  • 2026必备!9个一键生成论文工具,助本科生轻松搞定毕业论文!
  • IF=33.2多比较组差异分析火山图
  • 【计算机毕业设计案例】基于python-CNN卷积神经网络的鱼类识别
  • 深度学习毕设选题推荐:基于python-CNN卷积神经网络的宠物行为训练识别
  • Vue.js 深度开发指南:从数据绑定到状态管理的最佳实践
  • 计算机毕设 java 基于 Java 的心理健康测试系统的设计与实现 校园心理健康服务平台 心理状态评估管理系统
  • 网络安全认证全景攻略:CISSP、CEH、OSCP深度备考策略与职业发展路径
  • 基于深度学习神经网络MTCNN的人脸检测系统源码
  • Scarab模组管理器:革命性的一站式空洞骑士模组管理解决方案
  • 【计算机毕设选题推荐】基于Django+Spark健康风险预测数据可视化分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习 数据挖掘
  • 【计算机毕业设计案例】基于python-深度学习的混凝土马路和泥地马路识别
  • 计算机深度学习毕设实战-基于python-CNN卷积神经网络的宠物行为训练识别
  • 深度学习毕设项目推荐-基于python-CNN卷积神经网络的鱼类识别