news 2026/4/15 13:15:04

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/4/15 13:13:51

【计算机毕设选题推荐】基于Django+Spark健康风险预测数据可视化分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习 数据挖掘

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡如果你遇到具体的…

作者头像 李华
网站建设 2026/4/15 13:13:49

HBase在大数据领域农业数据处理中的应用

HBase在大数据领域农业数据处理中的应用关键词&#xff1a;HBase、农业大数据、分布式存储、实时处理、数据建模、精准农业、智能决策摘要&#xff1a;本文深入探讨HBase在农业大数据处理中的核心应用场景&#xff0c;结合农业数据时空特性、多源异构特征及实时分析需求&#x…

作者头像 李华
网站建设 2026/4/2 10:37:14

DeepSeek V4模型即将来袭,编程能力或将超越GPT与Claude

DeepSeek计划于2月中旬推出主打编程能力的新一代AI模型V4&#xff0c;据内部测试&#xff0c;其在代码相关任务上的表现可能优于Claude和GPT系列。V4在处理超长代码提示方面有新突破&#xff0c;对复杂软件开发者大有帮助。恰逢中国春节发布&#xff0c;网友调侃DeepSeek"…

作者头像 李华
网站建设 2026/4/3 4:51:46

想入行大模型?四大方向详解+系统学习路线,助你快速入门

文章详细解析了AI大模型的四大方向&#xff1a;数据治理、平台搭建、模型算法和部署落地&#xff0c;涵盖工作内容、技能要求和职业前景。强调大模型领域不仅需要算法人才&#xff0c;工程人才同样重要&#xff0c;好的平台和基础设施是产品成功的关键因素。文章建议新人聚焦垂…

作者头像 李华
网站建设 2026/4/1 0:05:15

从手动调参到多智能体编排:ChatDev 2.0 正在重构我们的开发范式

如果说去年 ChatDev 1.0 的横空出世是给业界打了个样——展示了 LLM 模拟软件公司的可能性&#xff1b;那么最近开源的 ChatDev 2.0&#xff0c;在我看来&#xff0c;更像是一次从“作坊式垂直应用”到“通用工业级平台”的跨越。 项目地址&#xff1a;https://github.com/Open…

作者头像 李华
网站建设 2026/3/28 12:22:05

Scarab模组管理器:空洞骑士玩家的终极管理解决方案

Scarab模组管理器&#xff1a;空洞骑士玩家的终极管理解决方案 【免费下载链接】Scarab An installer for Hollow Knight mods written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab 作为专为《空洞骑士》打造的现代化模组管理工具&#xff0c;Sca…

作者头像 李华