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

HLS 三角函数报错:undefined reference to ‘cordic_apfixed::circ_table_arctan_128‘

最近在通过HLS实现一些算法,其中用到了hls::cos函数,写完代码编译报错:

../Vitis_HLS/hls_cordic_apfixed.h:229: undefined reference to `cordic_apfixed::circ_table_arctan_128'
build/xf_computePhaseMap_accel.o: In function `void cordic_apfixed::cordic_circ_apfixed<39, 3, 1>(ap_fixed<39, 3, (ap_q_mode)5, (ap_o_mode)3, 0>&, ap_fixed<39, 3, (ap_q_mode)5, (ap_o_mode)3, 0>&, ap_fixed<39, 3, (ap_q_mode)5, (ap_o_mode)3, 0>&)':
../Vitis_HLS/hls_cordic_apfixed.h:229: undefined reference to `cordic_apfixed::circ_table_arctan_128'
collect2: error: ld returned 1 exit status

这个变量在Vitis_HLS/hls_cordic_apfixed.h中,对应的代码是:extern const ap_ufixed<128,2> circ_table_arctan_128[128];,可见该变量是个外部变量。
网上搜了很久,没有相应的解决方案。于是自己研究为什么会这样,个人感觉这个circ_table_arctan_128变量的定义应该是在某个动态链接库中,但是找了一下没找到相应的库,因此只能用最笨的方法了。
circ_table_arctan_128是hls中用在CORDIC算法里面的一些提前计算好的数据,CORDIC算法我就不介绍了,自己百度一下网上很多,一般用在FPGA中简化三角函数的计算。那我们其实可以自己算出来这个数组然后直接修改这个头文件代码。通过GPT大法,我最终算出了可靠的值,大家直接将extern const ap_ufixed<128,2> circ_table_arctan_128[128];这行代码替换为:

const ap_ufixed<128,2> circ_table_arctan_128[128] = {0.7853981633974483,  // atan(2^-0)0.4636476090008061,  // atan(2^-1)0.24497866312686414, // atan(2^-2)0.12435499454676144, // atan(2^-3)0.06241880999595735, // atan(2^-4)0.031239833430268277, // atan(2^-5)0.015623728620476831, // atan(2^-6)0.007812341060101111, // atan(2^-7)0.0039062301319669718, // atan(2^-8)0.0019531225164788188, // atan(2^-9)0.0009765621895593195, // atan(2^-10)0.0004882812111948983, // atan(2^-11)0.00024414062014936177, // atan(2^-12)0.00012207031189367021, // atan(2^-13)0.00006103515617420877, // atan(2^-14)0.000030517578115526396, // atan(2^-15)0.000015258789061315762, // atan(2^-16)0.00000762939453110197, // atan(2^-17)0.000003814697265606496, // atan(2^-18)0.000001907348632810187, // atan(2^-19)0.0000009536743164059602, // atan(2^-20)0.0000004768371582030884, // atan(2^-21)0.0000002384185791015576, // atan(2^-22)0.00000011920928955078125, // atan(2^-23)0.00000005960464477539063, // atan(2^-24)0.00000002980232238769531, // atan(2^-25)0.000000014901161193847656, // atan(2^-26)0.000000007450580596923828, // atan(2^-27)0.000000003725290298461914, // atan(2^-28)0.000000001862645149230957, // atan(2^-29)0.0000000009313225746154785, // atan(2^-30)0.0000000004656612873077393, // atan(2^-31)0.0000000002328306436538696, // atan(2^-32)0.0000000001164153218269348, // atan(2^-33)0.00000000005820766091346741, // atan(2^-34)0.0000000000291038304567337, // atan(2^-35)0.00000000001455191522836685, // atan(2^-36)0.000000000007275957614183426, // atan(2^-37)0.000000000003637978807091713, // atan(2^-38)0.000000000001818989403545856, // atan(2^-39)0.0000000000009094947017729282, // atan(2^-40)0.0000000000004547473508864641, // atan(2^-41)0.0000000000002273736754432321, // atan(2^-42)0.000000000000113686837721616, // atan(2^-43)0.00000000000005684341886080801, // atan(2^-44)0.00000000000002842170943040401, // atan(2^-45)0.000000000000014210854715202, // atan(2^-46)0.000000000000007105427357601002, // atan(2^-47)0.000000000000003552713678800501, // atan(2^-48)0.00000000000000177635683940025, // atan(2^-49)0.0000000000000008881784197001251, // atan(2^-50)0.0000000000000004440892098500626, // atan(2^-51)0.0000000000000002220446049250313, // atan(2^-52)0.0000000000000001110223024625156, // atan(2^-53)0.00000000000000005551115123125783, // atan(2^-54)0.00000000000000002775557561562892, // atan(2^-55)0.00000000000000001387778780781446, // atan(2^-56)0.000000000000000006938893903907228, // atan(2^-57)0.000000000000000003469446951953614, // atan(2^-58)0.000000000000000001734723475976807, // atan(2^-59)0.0000000000000000008673617379884035, // atan(2^-60)0.0000000000000000004336808689942018, // atan(2^-61)0.0000000000000000002168404344971009, // atan(2^-62)0.0000000000000000001084202172485504, // atan(2^-63)0.00000000000000000005421010862427521, // atan(2^-64)0.00000000000000000002710505431213761, // atan(2^-65)0.0000000000000000000135525271560688, // atan(2^-66)0.000000000000000000006776263578034402, // atan(2^-67)0.000000000000000000003388131789017201, // atan(2^-68)0.000000000000000000001694065894508601, // atan(2^-69)0.0000000000000000000008470329472543004, // atan(2^-70)0.0000000000000000000004235164736271502, // atan(2^-71)0.0000000000000000000002117582368135751, // atan(2^-72)0.0000000000000000000001058791184067876, // atan(2^-73)0.00000000000000000000005293955920339378, // atan(2^-74)0.00000000000000000000002646977960169689, // atan(2^-75)0.00000000000000000000001323488980084845, // atan(2^-76)0.000000000000000000000006617444900424225, // atan(2^-77)0.000000000000000000000003308722450212113, // atan(2^-78)0.000000000000000000000001654361225106056, // atan(2^-79)0.000000000000000000000000827180612553028, // atan(2^-80)0.000000000000000000000000413590306276514, // atan(2^-81)0.000000000000000000000000206795153138257, // atan(2^-82)0.0000000000000000000000001033975765691285, // atan(2^-83)0.00000000000000000000000005169878828456426, // atan(2^-84)0.00000000000000000000000002584939414228213, // atan(2^-85)0.00000000000000000000000001292469707114106, // atan(2^-86)0.000000000000000000000000006462348535570531, // atan(2^-87)0.000000000000000000000000003231174267785265, // atan(2^-88)0.000000000000000000000000001615587133892633, // atan(2^-89)0.0000000000000000000000000008075935474463164, // atan(2^-90)0.0000000000000000000000000004037967737231582, // atan(2^-91)0.0000000000000000000000000002018983868615791, // atan(2^-92)0.0000000000000000000000000001009491934307896, // atan(2^-93)0.00000000000000000000000000005047459671539478, // atan(2^-94)0.00000000000000000000000000002523729835769739, // atan(2^-95)0.0000000000000000000000000000126186491788487, // atan(2^-96)0.000000000000000000000000000006309324589424349, // atan(2^-97)0.000000000000000000000000000003154662294712175, // atan(2^-98)0.000000000000000000000000000001577331147356087, // atan(2^-99)0.0000000000000000000000000000007886655736780435, // atan(2^-100)0.0000000000000000000000000000003943327868390218, // atan(2^-101)0.0000000000000000000000000000001971663934195109, // atan(2^-102)0.00000000000000000000000000000009858319670975544, // atan(2^-103)0.00000000000000000000000000000004929159835487772, // atan(2^-104)0.00000000000000000000000000000002464579917743886, // atan(2^-105)0.00000000000000000000000000000001232289958871943, // atan(2^-106)0.000000000000000000000000000000006161449794359716, // atan(2^-107)0.000000000000000000000000000000003080724897179858, // atan(2^-108)0.000000000000000000000000000000001540362448589929, // atan(2^-109)0.0000000000000000000000000000000007701812242949645, // atan(2^-110)0.0000000000000000000000000000000003850906121474823, // atan(2^-111)0.0000000000000000000000000000000001925453060737411, // atan(2^-112)0.00000000000000000000000000000000009627265303687056, // atan(2^-113)0.00000000000000000000000000000000004813632651843528, // atan(2^-114)0.00000000000000000000000000000000002406816325921764, // atan(2^-115)0.00000000000000000000000000000000001203408162960882, // atan(2^-116)0.00000000000000000000000000000000000601704081480441, // atan(2^-117)0.000000000000000000000000000000000003008520407402205, // atan(2^-118)0.000000000000000000000000000000000001504260203701103, // atan(2^-119)0.0000000000000000000000000000000000007521301018505515, // atan(2^-120)0.0000000000000000000000000000000000003760650509252758, // atan(2^-121)0.0000000000000000000000000000000000001880325254626379, // atan(2^-122)0.00000000000000000000000000000000000009401626273131894, // atan(2^-123)0.00000000000000000000000000000000000004700813136565947, // atan(2^-124)0.00000000000000000000000000000000000002350406568282974, // atan(2^-125)0.00000000000000000000000000000000000001175203284141487, // atan(2^-126)0.000000000000000000000000000000000000005876016420707434 // atan(2^-127)};

这样重新编译,hls就不会报错了。

相关文章:

HLS 三角函数报错:undefined reference to ‘cordic_apfixed::circ_table_arctan_128‘

最近在通过HLS实现一些算法&#xff0c;其中用到了hls::cos函数&#xff0c;写完代码编译报错&#xff1a; ../Vitis_HLS/hls_cordic_apfixed.h:229: undefined reference to cordic_apfixed::circ_table_arctan_128 build/xf_computePhaseMap_accel.o: In function void cord…...

【汇编】简单的linux汇编语言程序

一、Linux系统汇编语言 Linux系统上的汇编语言可以使用不同的语法风格&#xff0c;主要包括Intel语法和AT&T语法。这两种语法有各自的特点和风格区别&#xff0c;尽管它们表示的底层机器指令相同。下面分别对两种语法进行简要说明&#xff1a; Intel语法 Intel语法是由I…...

Fink CDC数据同步(四)Mysql数据同步到Kafka

依赖项 将下列依赖包放在flink/lib flink-sql-connector-kafka-1.16.2 创建映射表 创建MySQL映射表 CREATE TABLE if not exists mysql_user (id int,name STRING,birth STRING,gender STRING,PRIMARY KEY (id) NOT ENFORCED ) WITH (connector mysql-cdc,hostn…...

Adb offline疑难杂症解决方案大全记录

无线/有线Adb offline依次尝试下面步骤&#xff1a; adb kill-server && adb start-server adb reconnect offline 多次 adb tcpip 5555 后重试 检查有线端口5037、无线5555占用&#xff0c;排除改名的adb或其他应用占用 换USB线和USB口拔插、确保同一WiFi下&#xff0…...

详述FlinkSql Join操作

FlinkSql 的 Join Flink 官网将其分为了 Joins 和 Window Joins两个大类&#xff0c;其中里面又分了很多 Join 方式 参考文档&#xff1a; Joins | Apache Flink Window JOIN | Apache Flink Joins 官网介绍共有6种方式&#xff1a; Regular Join&#xff1a;流与流的 Joi…...

Ajax+JSON学习二

AjaxJSON学习二 文章目录 前言三、前后端数据交互3.1. GET请求3.2. POST请求3.3. jQuery 中的 Ajax3.4. Ajax 的替代品&#xff1a;fetch3.5. 小结 四、JSON4.1. JSON简介4.2. JSON 语法规则4.3. JSON的解析和序列化 总结 前言 三、前后端数据交互 3.1. GET请求 GET 请求一般用…...

STM32单片机的基本原理与应用(六)

串口测试实验 基本原理 在串口实验中&#xff0c;是通过mini_USB线搭建终端与电脑端&#xff08;也可称终端&#xff0c;为做区分称电脑端&#xff09;的“桥梁”&#xff0c;电脑端的串口调试助手通过mini_USB线向终端发送信息&#xff0c;由CH340芯片将USB接口进行转换&…...

《MySQL 简易速速上手小册》第4章:数据安全性管理(2024 最新版)

文章目录 4.1 用户认证和权限控制4.1.1 基础知识4.1.2 重点案例&#xff1a;使用 Python 管理 MySQL 用户权限4.1.3 拓展案例 4.2 防止 SQL 注入和其他安全威胁4.2.1 基础知识4.2.2 重点案例&#xff1a;使用 Python 和 MySQL 进行安全的数据查询4.2.3 拓展案例 4.3 数据加密和…...

VUE学习之路——列表渲染

<p v-for"item in items">{{ item }}</p>使用v-for进行列表的渲染。 这仅仅是一个简单的demo&#xff0c;使用v-for可以用来遍历数组和对象&#xff0c;具体如下&#xff1a; 注意&#xff1a;遍历数组或对象的时候&#xff0c;&#xff08;&#xff09;…...

CentOS 安装 redis 7.2

nginx官网 https://redis.io/download/ 把鼠标放到这里&#xff0c;复制下载地址 在服务器找个文件夹执行命令 wget https://github.com/redis/redis/archive/7.2.4.tar.gz tar -zxvf 7.2.4.tar.gz make make install 看到这几行就说明安装成功了 不放心的话再查看下b…...

运维自动化bingo前端

项目目录结构介绍 项目创建完成之后&#xff0c;我们会看到bingo_web项目其实是一个文件夹&#xff0c;我们进入到文件夹内部就会发现一些目录和文件&#xff0c;我们简单回顾一下里面的部分核心目录与文件。 ├─node_modules/ # node的包目录&#xff0c;项目运行的依赖包…...

Project2013下载安装教程,保姆级教程,附安装包和工具

前言 Project是一款项目管理软件&#xff0c;不仅可以快速、准确地创建项目计划&#xff0c;而且可以帮助项目经理实现项目进度、成本的控制、分析和预测&#xff0c;使项目工期大大缩短&#xff0c;资源得到有效利用&#xff0c;提高经济效益。软件设计目的在于协助专案经理发…...

【机器学习与自然语言处理】预训练 Pre-Training 各种经典方法的概念汇总

【机器学习与自然语言处理】预训练 Pre-Training 各种经典方法的概念汇总 前言请看此正文预训练 Pre-Training无监督学习 unsupervised learning概念&#xff1a;标签PCA 主成分分析&#xff08;Principal Component Analysis&#xff09;降维算法LSA 潜在语义分析&#xff08;…...

Mac电脑如何通过终端隐藏应用程序?

在我们使用Mac电脑的时候难免会遇到想要不想看到某个应用程序又不想卸载它们。值得庆幸的是&#xff0c;macOS具有一些强大的文件管理功能&#xff0c;允许用户轻松隐藏&#xff08;以及稍后显示&#xff09;文件甚至应用程序。 那么&#xff0c;Mac电脑如何通过终端隐藏应用程…...

linker list

linker list是利用lds 描述符实现同类型数据连续排布的一种机制。 下面是uboot里面的应用说明 lds文件里面需要增加section描述&#xff1a; . ALIGN(4);.u_boot_list : {KEEP(*(SORT(.u_boot_list*)));}linker_list.h: /* SPDX-License-Identifier: GPL-2.0 */ /** include…...

[CUDA手搓]从零开始用C++ CUDA搭建一个卷积神经网络(LeNet),了解神经网络各个层背后算法原理

文章目录 前言一、所需环境二、实现思路2.1. 定义了LeNet网络模型结构&#xff0c;并训练了20次2.2 以txt格式导出训练结果(模型的各个层权重偏置等参数)2.3 (可选)以pth格式导出训练结果&#xff0c;以方便后期调试2.4 C CUDA要做的事 三、C CUDA具体实现3.1 新建.cu文件并填好…...

【开源】基于JAVA+Vue+SpringBoot的数据可视化的智慧河南大屏

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 数据模块 A4.2 数据模块 B4.3 数据模块 C4.4 数据模块 D4.5 数据模块 E 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的数据可视化的智慧河南大屏&#xff0c;包含了GDP、…...

页面单跳转换率统计案例分析

需求说明 页面单跳转化率 计算页面单跳转化率&#xff0c;什么是页面单跳转换率&#xff0c;比如一个用户在一次 Session 过程中访问的页面路径 3,5,7,9,10,21&#xff0c;那么页面 3 跳到页面 5 叫一次单跳&#xff0c;7-9 也叫一次单跳&#xff0c; 那么单跳转化率就是要统计…...

眸思MouSi:“听见世界” — 用多模态大模型点亮盲人生活

文章目录 1. Introduction1.1 APP细节展示2. Demo2.1 论文链接2.2 联系方式3. Experiment3.1 多专家的结合是否有效?3.2 如何更好的将多专家整合在一起?Reference让盲人听见世界,复旦眸思大模型打破视觉界限,用科技点亮新生活 1. Introduction 在这个世界上,视力是探索万…...

电商小程序05用户注册

目录 1 搭建页面2 设置默认跳转总结 我们上一篇拆解了登录功能&#xff0c;如果用户没有账号就需要注册了。本篇我们介绍一下注册功能的实现。 1 搭建页面 打开应用&#xff0c;点击左上角的新建页面 输入页面的名称&#xff0c;用户注册 删掉网格布局&#xff0c;添加表单容…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...