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实现一些算法,其中用到了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 cord…...
【汇编】简单的linux汇编语言程序
一、Linux系统汇编语言 Linux系统上的汇编语言可以使用不同的语法风格,主要包括Intel语法和AT&T语法。这两种语法有各自的特点和风格区别,尽管它们表示的底层机器指令相同。下面分别对两种语法进行简要说明: 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依次尝试下面步骤: adb kill-server && adb start-server adb reconnect offline 多次 adb tcpip 5555 后重试 检查有线端口5037、无线5555占用,排除改名的adb或其他应用占用 换USB线和USB口拔插、确保同一WiFi下࿰…...
详述FlinkSql Join操作
FlinkSql 的 Join Flink 官网将其分为了 Joins 和 Window Joins两个大类,其中里面又分了很多 Join 方式 参考文档: Joins | Apache Flink Window JOIN | Apache Flink Joins 官网介绍共有6种方式: Regular Join:流与流的 Joi…...
Ajax+JSON学习二
AjaxJSON学习二 文章目录 前言三、前后端数据交互3.1. GET请求3.2. POST请求3.3. jQuery 中的 Ajax3.4. Ajax 的替代品:fetch3.5. 小结 四、JSON4.1. JSON简介4.2. JSON 语法规则4.3. JSON的解析和序列化 总结 前言 三、前后端数据交互 3.1. GET请求 GET 请求一般用…...
STM32单片机的基本原理与应用(六)
串口测试实验 基本原理 在串口实验中,是通过mini_USB线搭建终端与电脑端(也可称终端,为做区分称电脑端)的“桥梁”,电脑端的串口调试助手通过mini_USB线向终端发送信息,由CH340芯片将USB接口进行转换&…...
《MySQL 简易速速上手小册》第4章:数据安全性管理(2024 最新版)
文章目录 4.1 用户认证和权限控制4.1.1 基础知识4.1.2 重点案例:使用 Python 管理 MySQL 用户权限4.1.3 拓展案例 4.2 防止 SQL 注入和其他安全威胁4.2.1 基础知识4.2.2 重点案例:使用 Python 和 MySQL 进行安全的数据查询4.2.3 拓展案例 4.3 数据加密和…...
VUE学习之路——列表渲染
<p v-for"item in items">{{ item }}</p>使用v-for进行列表的渲染。 这仅仅是一个简单的demo,使用v-for可以用来遍历数组和对象,具体如下: 注意:遍历数组或对象的时候,()…...
CentOS 安装 redis 7.2
nginx官网 https://redis.io/download/ 把鼠标放到这里,复制下载地址 在服务器找个文件夹执行命令 wget https://github.com/redis/redis/archive/7.2.4.tar.gz tar -zxvf 7.2.4.tar.gz make make install 看到这几行就说明安装成功了 不放心的话再查看下b…...
运维自动化bingo前端
项目目录结构介绍 项目创建完成之后,我们会看到bingo_web项目其实是一个文件夹,我们进入到文件夹内部就会发现一些目录和文件,我们简单回顾一下里面的部分核心目录与文件。 ├─node_modules/ # node的包目录,项目运行的依赖包…...
Project2013下载安装教程,保姆级教程,附安装包和工具
前言 Project是一款项目管理软件,不仅可以快速、准确地创建项目计划,而且可以帮助项目经理实现项目进度、成本的控制、分析和预测,使项目工期大大缩短,资源得到有效利用,提高经济效益。软件设计目的在于协助专案经理发…...
【机器学习与自然语言处理】预训练 Pre-Training 各种经典方法的概念汇总
【机器学习与自然语言处理】预训练 Pre-Training 各种经典方法的概念汇总 前言请看此正文预训练 Pre-Training无监督学习 unsupervised learning概念:标签PCA 主成分分析(Principal Component Analysis)降维算法LSA 潜在语义分析(…...
Mac电脑如何通过终端隐藏应用程序?
在我们使用Mac电脑的时候难免会遇到想要不想看到某个应用程序又不想卸载它们。值得庆幸的是,macOS具有一些强大的文件管理功能,允许用户轻松隐藏(以及稍后显示)文件甚至应用程序。 那么,Mac电脑如何通过终端隐藏应用程…...
linker list
linker list是利用lds 描述符实现同类型数据连续排布的一种机制。 下面是uboot里面的应用说明 lds文件里面需要增加section描述: . 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网络模型结构,并训练了20次2.2 以txt格式导出训练结果(模型的各个层权重偏置等参数)2.3 (可选)以pth格式导出训练结果,以方便后期调试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的数据可视化的智慧河南大屏,包含了GDP、…...
页面单跳转换率统计案例分析
需求说明 页面单跳转化率 计算页面单跳转化率,什么是页面单跳转换率,比如一个用户在一次 Session 过程中访问的页面路径 3,5,7,9,10,21,那么页面 3 跳到页面 5 叫一次单跳,7-9 也叫一次单跳, 那么单跳转化率就是要统计…...
眸思MouSi:“听见世界” — 用多模态大模型点亮盲人生活
文章目录 1. Introduction1.1 APP细节展示2. Demo2.1 论文链接2.2 联系方式3. Experiment3.1 多专家的结合是否有效?3.2 如何更好的将多专家整合在一起?Reference让盲人听见世界,复旦眸思大模型打破视觉界限,用科技点亮新生活 1. Introduction 在这个世界上,视力是探索万…...
电商小程序05用户注册
目录 1 搭建页面2 设置默认跳转总结 我们上一篇拆解了登录功能,如果用户没有账号就需要注册了。本篇我们介绍一下注册功能的实现。 1 搭建页面 打开应用,点击左上角的新建页面 输入页面的名称,用户注册 删掉网格布局,添加表单容…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...
RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...
