使用哪种方式可以将 MATLAB 算法转换到FPGA中运行?

devtools/2024/11/15 4:46:09/

FPGA在进行相关算法计算时,一般都会使用高级语言进行算法验证,目前比较常见的就是 MATLAB ,那么使用哪种方式可以将MATLAB中实现的算哒转换到FPGA中?

81ed79d4fdf7a2966c29906097d6ade4.png

目前可以通过多种方式在 FPGA 中实现算法

Simulink HDL Coder

MathWorks 提供了一个名为 Simulink HDL 编码器从 Simulink 模型和嵌入式 M 代码创建可综合的 HDL。Simulink HDL Coder对于快速评估硬件中的新算法非常有用。但是,使用 Xilinx System Generator 工具可以实现更高的性能。

8e431117e19597fcb76f2e86f79b6ab8.png

System Generator for DSP

Xilinx System Generator for DSP:Xilinx 提供了一个高度优化的模块库,可以在 Simulink 中进行仿真,然后编译用于 FPGA 上运行。设计时候需要使用 MATLAB Simulink 环境中,并用 System Generator 模块替换 Simulink 的模块。此设计流程提供比 HDL Coder 更高的性能,因为每个模块都是针对 Xilinx FPGA 预先优化的 IP。

48600ec94eebe9a9112a29f822be67b4.png

Synphony HSL

Synopsys(Synopsys, Inc. (NASDAQ: SNPS) 是全球领先的半导体设计、验证和制造软件和 IP 供应商) 有一个高级综合工具 (HSL),称为 Synphony HLS。

Synphony HLS 解决方案具有以下优势,可显著提高生产率,优于传统方法:

  • 从 M 到优化 RTL 的自动化流程

  • ASIC 和 FPGA 优化 RTL 架构的综合

  • 用于早期算法验证的快速原型方法

与低效且容易出错的手动重新编码流程不同,Synphony HLS 直接从高级 M 代码和 Synphony HLS 优化的 IP 模型库创建可实施的 RTL 和 C 模型。使用独特的约束驱动定点传播功能,设计人员可以快速直观地从可综合的高级浮点 M 代码子集中导出定点模型。然后,Synphony HLS 引擎将合成经过架构优化的 RTL,满足面积、速度和功率目标。

我还没有使用过这个工具,所以不能评论他们的设计流程。这听起来类似于Xilinx停产的工具-AccelDSP,这为快速原型化MATLAB算法和目标FPGA硬件提供了一种很好的方法。然而,它通常不会产生高性能的设计。

86489e3c63eaf928cbe68b54b7205697.png

手动HDL编码

最后一个选项是手动编码。理解算法做了哪些运算,尝试从硬件角度理解。 通常所有的算法都可以在硬件中通过乘法、加法、减法、除法等基本运算来实现。为此,需要verilog编程技能和数字设计等方面知识。根据MATLAB算法,从头开始,使用VHDL或Verilog(可能实例化Xilinx IP)编写设计代码,创建HDL测试平台,并将MATLAB的输入/输出向量与HDL仿真器进行比较。几十年来,工程师们一直以这种方式进行设计,但这是一种缓慢且容易出错的方式。与 MathWorks HDL Coder 一样,它确实具有产生不依赖于特定软件工具的 HDL 设计的优势,同时兼具占用资源少等优点,然而也就这些优点而已。

总结

从方便快捷出发,优选System Generator for DSP,但是无法说服每一个人,所以还是手动编写吧~

5f6aaf418c43b4a1d5fecf9fed8c9130.png

http://www.ppmy.cn/devtools/97799.html

相关文章

小程序商城被盗刷,使用SCDN安全加速有用吗?

在电子商务蓬勃发展的今天,小程序商城因其便捷性和灵活性成为商家和消费者的新宠。然而,随着其普及,小程序商城的安全问题也日益凸显,尤其是盗刷现象频发,给商家和用户带来了巨大损失。面对这一挑战,是否可…

springboot的学习(四):bean的加载和控制

简介 主要是加载bean的方式已经加载bean的控制 spring加载bean方式 在xml中使用bean标签声明bean,启动类中使用ClassPathXmlApplicationContext加载xml在xml中自定义命名空间,配置自动扫描,对于加载自定义的bean,在类上添加com…

ActiveMQ、RabbitMQ、Kafka、RocketMQ在事务性消息、性能、高可用和容错、定时消息、负载均衡、刷盘策略的区别

ActiveMQ、RabbitMQ、Kafka、RocketMQ这四种消息队列在事务性消息、性能、高可用和容错、定时消息、负载均衡、刷盘策略等方面各有其特点和差异。以下是对这些方面的详细比较: 1. 事务性消息 ActiveMQ:支持事务性消息。ActiveMQ可以基于JMS&#xff08…

操作系统(Ubuntu安装配置)

1.1.什么是操作系统 操作系统(Operating System,简称OS)是一种系统软件,它是计算机硬件和应用软件之间的桥梁。它管理计算机的硬件和软件资源,为应用程序提供接口和服务,并协调应用程序的运行。操作系统是…

高性能内存对象缓存

Memcached概述 一套开源的高性能分布式内存对象缓存系统 所有的数据都存储在内存中 支持任意存储类型的数据 提高网站的访问速度 数据存储方式与数据过期方式 数据存储方式:Slab Allocation 按组分配内存,每次先分配一个Slab,相当于一个大小为1M的页&…

前端跨域2

前端跨域2 前端跨域解决方案&#xff08;11种方案&#xff09; 1.JSONP跨域解决方案的底层原理 script、img、link、iframe...<script src"https://cdn.bootcss.com/jquery/3.4.1/core.js"></script>// 这个就是因为script标签没有跨域限制&#xff0…

做谷歌seo如何创建良好的用户体验?

Google 希望排名靠前的页面能够为用户提供良好的体验&#xff0c;所以网站提升用户体验很重要。以下是一些实用的小建议&#xff0c;让你的网站更受用户欢迎&#xff0c;并且有助于提升你的 SEO 排名。 现代化设计&#xff1a;确保你的网站设计符合当前的审美和功能趋势。使用高…

如何利用matlab对G882数据进行频谱分析

以前看地球物理教材的时候&#xff0c;经常碰到和卷积和傅里叶变换&#xff0c;一看到卷积或者反卷积就头大&#xff0c;直接跳过去&#xff0c;至于傅里叶变换&#xff0c;由于有高数的基础&#xff0c;明白它是将时域变换成频率域的公式。最近要用matlab对时域信号进行频谱分…