1  前言

FPGA(Field-Programmable Gate Array,现场可编程逻辑门阵列)是一种可编程的半导体器件,因其硬件可重构性、硬件并行计算能力、低延迟和实时性的优势,广泛应用于数字电路设计、原型验证和系统加速等领域。但开发效率不足以及设计人员门槛较高,正在成为制约其应用落地的最大障碍。

在实际项目中,很多企业都会遇到这样的困境:算法模型已经在仿真环境中跑通,但要真正达到在FPGA芯片上实现模型的功能,却往往要经历数周甚至数月的Verilog代码开发设计、仿真测试和下板调试。这一过程不仅耗时耗力,并且对工程师也有较高的设计门槛,同时在整个开发周期中,需要算法、FPGA工程师密切配合和沟通,稍有不同步就可能导致返工,大大降低了开发验证的效率和增加人力成本。

基于这一痛点,世冠科技GCKontrol平台提供了“图形化建模到自动生成Verilog代码”的新方法,加速算法模型从理论到实践下板验证过程,帮助企业缩短FPGA开发周期和降低人力成本,促进产品化的进程,助力更高效的FPGA设计开发。

2  面临的挑战

在FPGA芯片上验证的算法模型,从理论到实践的全生命周期,以使用专业的工业软件图形化建模仿真为开始,到FPGA工程师编写Verilog代码,再到v代码的仿真测试,最后以下板调试符合预期为结束。这一传统流程存在四大挑战:

01开发周期长

代码开发和仿真时间往往占据整个项目周期的一半以上。

02跨专业协作成本高

算法工程师与FPGA工程师需要频繁沟通,模型和代码不同步的情况屡见不鲜。

03出错率高

人工编码语法或时序错误会导致大量返工与重复测试。

04代码质量不稳定

人工编写的代码质量由工程师的水平决定,不同的工程师开发的代码质量参差不齐,代码风格不统一,不利于产品化。

对于追求快速原型验证和产品迭代的企业而言,这些问题无疑严重制约了效率和竞争力。

3  解决方案

基于世冠科技GCKontrol平台,提供了一种可以自动生成Verilog代码的技术路线:工程师使用GCKontrol建模软件,进行图形化建模之后,经过一系列的操作,即可自动生成Verilog代码,从而跳过人工编写代码和仿真测试的环节,通过IDE软件将代码综合编译后,将bit文件下载到FPGA芯片板卡上,实现对FPGA设计流程的高效优化。

其方案框图如图1所示:

图片

图 1 方案框图

接下来简单介绍下目前GCKontrol建模软件支持自动生成Verilog代码的基础模块。

3.1 支持自动生成Verilog的基础单元

图片

图 2 支持自动生成Verilog代码的基础模块

图片

图 3 支持自动生成Verilog代码的模块

由图2和图3可知,目前支持自动生成Verilog代码的基础模块有输入输出模块,常量模块,加减模块,乘除模块,增益模块,最值模块,取整模块,绝对值模块,取余模块,饱和模块,死区模块,符号模块,积分模块,微分模块,延迟模块,位转换模块,多条件表达式模块,零阶保持,斜坡函数,斜率限制函数等。

这些都是算法模型搭建的必要单元,这些模块支持自动生成Verilog代码,为满足不同要求的算法模型的搭建提供了前提条件。目前还正在开发较为复杂的基础函数和各种信号发生器等模块,从而支持后续复杂度更高的模型搭建和下板验证。

3.2 包含基础运算模块的工程示例

图片

图 4 搭建包含基础运算模块的gck工程

如图4所示,可使用全部基本运算模块搭建一个gck工程。点击仿真后,如图5所示,用户可在界面上查看每个模块的结果,也可通过2D面板灵活添加数据,查看任意模块的仿真输出。

图片

图 5 仿真结果显示

价值点

工程师能够在建模阶段快速验证算法逻辑,减少后期跨团队的沟通与调试成本。

3.3 自动生成Verilog代码

图片

图 6 自动生成Verilog代码路径

由图6可知,在工程路径的CodeLink_v的文件夹下,可以看到自动生成Verilog代码的所有v文件。这些代码符合行业规范,支持综合编译成bit文件并下板调试。

价值点

·自动生成的Verilog代码与模型保持完全同步,杜绝“模型更新但代码未更新”的问题;

·避免人工编码语法错误和代码质量不稳定的情形,提高一次性验证成功率;

·直接可用的代码显著缩短下板调试周期。

3.4 附加功能——代码预览

图片

图 7 Verilog代码预览

由图7可知,GCKontrol软件自动生成Verilog代码后,支持在界面对生成的代码进行在线预览,方便在模型级随时查看自动生成的Verilog代码。

价值点

模型与代码实时对照,工程师在建模阶段即可检查逻辑,提前发现偏差,减少后期返工。

4  总结与展望

基于世冠科技GCKontrol平台,通过将图形化建模工程直接自动生成Verilog代码,大大缩短了项目开发周期,节省了人力成本,并保证了代码风格的稳定性和可靠性,极大的优化了FPGA的设计流程。

未来,GCKontrol将持续扩展模块库,支持通信、雷达、工业控制等更复杂的算法场景。助力更高效的FPGA设计开发,为复杂算法模型从理论到实践的一键转换提供更强有力的支持。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/98212.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/98212.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/98212.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DBAPI免费版对比apiSQL免费版

DBAPI简介 零代码开发api服务,只需编写sql,就可以生成http api服务。支持api动态创建,兼容多种数据库。 适用于BI报表、数据可视化大屏的后端接口快速开发。 旨在为企业数据服务的发布提供完整解决方案 一、DBAPI免费版本支持1个数据源连接支…

CTFHub SSRF通关笔记8:数字IP Bypass 原理详解与渗透实战

目录 一、SSRF 二、数字IP原理 1、IP多进制 (1)十进制整数格式 (Dword / 长整数格式) (2)八进制格式 (Octal IP) (3)十六进制格式 (Hex IP) 2、SSRF绕过 三、渗透实战 1、打开靶场 2、尝试127.0.…

C++中双引号和单引号的区别(全面分析)

我在刷算法题的时候经常遇到,用了 出现警告或者使用" "直接报错,尤其是在字符串部分(py玩家后遗症/(ㄒoㄒ)/~~)在详细了解后总结一下加强记忆。 总的来说在 C 中,双引号 "" 和单引号 是完全不同…

Ubuntu20.04仿真 |iris四旋翼添加云台相机详述

申明: 1、本人使用的是Ubuntu20.04ros1gazeboxtdronepx4的仿真组合 2、为了使传感器模型和飞机模型解耦合,实现不同平台对传感器可直接调用,本系列博文涉及的所有传感器均不直接添加在相应平台的sdf当中,而是通过编写xxx_joint.…

《人工智能AI之机器学习基石》系列 第 16 篇:关联规则与数据挖掘——“啤酒与尿布”传奇背后的增长秘密

《人工智能AI之机器学习基石》⑯ 专栏核心理念: 用通俗语言讲清楚机器学习的核心原理,强调“洞察+ 技术理解 + 应用连接”,构建一个完整的、富有启发性的知识体系。 引言:藏在购物车里的“读心术” 朋友们,欢迎回到我们的AI基石之旅。 在过去的两次探索中,我们深入…

Spring Boot 的自动配置原理

Spring Boot 的自动配置是其 "约定大于配置" 理念的核心实现,它能自动配置 Spring 应用所需的各种组件,大幅减少手动配置。下面从核心注解、加载流程、条件过滤等方面详细讲解其原理,并结合关键源码说明。一、自动配置的入口&#…

谷歌云平台(Google Cloud Platform, GCP)介绍(全球领先的云计算服务平台,为企业和开发者提供包括计算、存储、数据分析、人工智能、机器学习、网络和安全等在内的全面云服务)

文章目录**1. GCP的核心优势****1.1 全球领先的基础设施****1.2 强大的数据分析和人工智能能力****1.3 卓越的安全性和合规性****1.4 灵活的定价模式****2. GCP的主要服务****2.1 计算服务****2.2 存储和数据库****2.3 网络服务****2.4 人工智能与大数据****2.5 安全与管理工具…

RISC-V异常机制和异常定位

不少人在调试RISC-V core时,面对异常的出现不知所措,不知道如何定位代码问题。这里将从RISC-V异常机制以及几个异常实例学习下。 1 异常机制 1.1 什么是异常 异常是软件程序员不得不要深入了解的,首先在学习异常机制前,对异常要…

c++中导出函数调用约定为__stdcall类型函数并指定导出函数名称

开发环境在Visual studio 2022版本下,为防止编译器重命名函数名称(会加上8等等乱七八糟的东西),我们对函数名称进行指定:一、新建.def文件,名称须与dll名称相同,并放在与cpp文件相同文件夹下&am…

Vision Transformer (ViT) :Transformer在computer vision领域的应用(二)

METHOD,论文主要部分 In model design we follow the original Transformer (Vaswani et al., 2017) as closely as possible. An advantage of this intentionally simple setup is that scalable NLP Transformer architectures – and their efficient implementations –…

AI 论文周报丨红队测试语言模型/多视角 3D 点追踪方法/蛋白质表示学习框架/密码学漏洞检测新框架……

近年来,已有若干方法尝试从单目视频实现 3D 点跟踪,然而由于在遮挡和复杂运动等挑战性场景中难以准确估计 3D 信息,这些方法的性能仍难以满足实际应用对高精度与鲁棒性的要求。 基于此,苏黎世联邦理工学院、卡内基梅隆大学联合提出…

STM32 通过USB的Mass Storage Class读写挂载的SD卡出现卡死问题

问题描述:使用stm32cubemx生成的sdio和usb Mass Storage Class的代码后,在USB_DEVICE\App\usbd_storage_if.c文件里面的接口调用以下函数出现卡死问题: SD_Driver.disk_initialize(0); SD_Driver.disk_read(lun, buf, blk_addr, blk_len) SD_…

Go语言中 error 接口与自定义错误类型的深入解析

在 Go 语言开发中,我们经常需要处理各种错误情况。Go 语言通过 error 接口提供了一套简洁而强大的错误处理机制。然而,当涉及到自定义错误类型时,许多开发者会遇到一些令人困惑的问题。本文将通过一个实际案例来深入探讨这个问题。 问题背景 …

字幕编辑工具推荐,Subtitle Edit v4.0.13发布:增强语音识别+优化翻译功能

大家好呀,不知道大家有没有做自媒体相关工作的呢,你们是不是也觉得剪辑视频时最头疼的往往不是画面而是字幕,时间轴对不上、格式不兼容、需要手动翻译,这些琐碎工作消耗的精力甚至超过剪辑本身。 当你试遍各种在线工具却发现要么…

【Java后端】Spring Boot 集成雪花算法唯一 ID

Spring Boot 实现基于雪花算法的分布式唯一 ID 生成器在分布式系统中,我们经常需要生成 全局唯一 ID,比如用户 ID、订单号、消息 ID 等。常见的方式有:数据库自增主键、UUID、Redis/Zookeeper 分布式 ID 服务、百度 UidGenerator、美团 Leaf …

C语言初尝试——洛谷

一、C数组:C 语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。声明数组在 C 中要声明一个数组,需要指定元素的类型和元素的数量&#xf…

C++八大排序

C排序算法一、概览二、代码实现1.冒泡排序2.插入排序3.希尔排序4.堆排序5.选择排序6.快速排序7.归并排序三、排序时间、空间复杂度总结排序,是C各大算法当中非常常见的一个步骤(过程),通常我们使用便捷的algorithmalgorithmalgori…

每天五分钟深度学习:深层神经网络的优势

本文重点 在人工智能领域,深层神经网络(DNN)的崛起标志着技术范式的根本性转变。相较于传统浅层神经网络(如单层感知机、线性回归模型),深层网络通过引入多层隐藏层,实现了对复杂数据模式的深度解析与高效建模。 深层神经网络 神经网络中输入层表示神经网络的第0层,…

相机几何 空间点到像素平面转换

一个空间中点到像素平面转换,需要经过1. 空间坐标系转换到相机坐标系2. 相机坐标系下3D点到相机平面转换3. 相机平面到像素平面转换相机三维空间到像素平面转换1. 3D点到相机平面转换2. 相机平面到像素平面转换涉及到单位的转换,和像素原点到相机平面原点…

webpack5 vue3同一仓库,不同命令切换项目

技术方案:手动输入不同的命令,启动不同项目。实现这种能力本篇文章是通过不同路由划分,进而实现不同项目的划分。所以简单来说就是通过输入不同命令行在webpack中找到不同项目的路由,进而打不同项目的包,实现项目隔离。…