AG32 MCU+FPGA 使用感受

2024-06-06 17:20
文章标签 使用 fpga mcu 感受 ag32

本文主要是介绍AG32 MCU+FPGA 使用感受,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言:

        笔者35+了,10多年前开始玩单片机/FPGA啥的,从现在回想过去,眼下真的是我们国家微电子发展的好时候。各种各样的国产单片机,FPGA啥的,想想本科的时候用的Freescale,后来用的STM32,真的感叹国家发展的很快,虽然差距还存在。

        在找国产FPGA玩的过程中发现了AGM AG32系列的RISCV + FPGA的配合,断断续续把玩了两个星期,下面是使用感受和一些个人的看法。

AG32简单介绍

        AG系列这个是RISCV+FPGA(2K LE,只能做简单点的逻辑)的配合方式,价格还算便宜(淘宝48PIN 7.5的样子),和某些FPGA里面内带硬核M3(高云)和或者M33(智多晶)实际上是比较像的。官方说CPU可以跑到200M。

        这种架构与市场上的单片机+FPGA分立集成的开发板比起来,最大的优势是逻辑部分可以直接连单片机的总线,AG的是AHB总线,可以通过DMA搬运数据,甚至自己就可以做DMA主机。

        芯片的RAM 128K,默认是MCU独占,但是可以划分一部分让逻辑部分通过AHB使用;FLASH的话100Pin以上1M,其他256K,但是后100K是用来配置LOGIC的,这样看来256K还是够呛,但是实际上用到了FPGA,基本都会上100PIN吧?

        芯片只有一个PLL,这个PLL是LOGIC和MCU共用的,这样会有一个问题,这个MCU的时钟是无法动态配置的,基本就是锁定了的,功耗控制可能会是一个问题。

开发环境:

硬件方面:

        产品与GD32/STM32的PIN脚完全一致,笔者就是直接把旧的开发板换芯:

        

        买家还会推荐你买他们的下载器,基本上就是一个CMSIS-DAP + altera usb blaster + USB串口的大杂烩,如果没有其他下载器可以买一个,实际上JLINK啥的也能用,没啥必要,最主要这块下载器板子设计的比较丑,还没有外壳。AG32系列可以用JTAG或者SW下载。

开发环境方面:

        软件是厂商自己魔改的vscode + platfromIO + sdk的方式。需要特别说明,用了他的SDK破坏platfromIO原来的工作环境,无法新建其他工程了,需要对c:\user\用户名\.platfromio 文件夹先进行备份,然后来还切换文件夹适应不同的使用环境,这个相当麻烦(毕竟没人只用你家单片机啊!),希望后续厂家改改。

        Arduino:不支持

        Micropython : 不支持。

FPGA开发:

        实际上FPGA开发,是“借用”了Altrea quartus的开发环境。先在vscode里面新建工程,配置工程里面VE文件的FPGA、MCU、芯片PIN脚之间的连接信号,然后prepare logic ,就会生成一个quartus 工程,里面已经把所有的ve文件里面的信号,以及AHB总线信号给配置好了,然后就是自己写逻辑,然后编译生成。

        之后在用厂家自己的supra软件,将东西转换一下,成为一个bin文件。

        然后用烧录器吧这个bin文件烧录到FLASH的后100K。

        “借用”这个事情不好评价啊,毕竟起步阶段,但是用下来还是熟手的。

MCU开发:

        用的是官方自己写的SDK,和STM32和GD32差不多。不过与GD32基本照抄STM32的标准外设库的行为比起来,AG家的库写的还是挺不错的,看得出在让用户简洁编程上面下了不少的功夫,基本所有外设、Freertos、usb啥都写了库。另外还有非常有参考性的MCU+FPGA联合开发的库,里面通过AHB总线直接访问、或者是转APB之后访问低速外设。

        总的来说,我觉得软件开发环境除了独占PlatfromIO之外,其他都还是不错的。

优缺点

        这款芯片的价位和功能让我非常容易想起GD32/ESP32单片机。

 STM/GD32ESP32AG32
成本4(C6t6)6.5(C3-FH4)
10(S3+8MFlash)
7.5 (48pin)
13.9(100pin)
硬件集成便捷性差(指定IO/有限REMAP)好(IO交换矩阵)好 (FPGA交换PIN)
开发环境一般(独占platfromIO)
开发难度低(micropython有手就行)高(得配置的东西很多)
支持力度高(随便百度一大堆回答)中(arduino优秀,mp一般,idf地狱)低(只能问原厂,问多几句就会问你是哪个公司的,要用多少pcs,啥时候量产...)

总结和建议:

1、东西还是不错的,不过比上手一般的单片机要难不少。

2、只用单片机,它的性价比比ESP32低,建议需要使用到FPGA等场合才使用。笔者读书时的一个项目就是用CIS扫描后做数字识别,为了满足CIS的严格时序用到了STM32 + CPLD的架构,现在可以芯片搞定。

3、如果能决定入手,因为原厂的资料比较散乱,请把原厂给你的文档全部看一遍再进行上机

4、SDK我发现还是有一些BUG的,需要有一定的动手能力才能解决,如果是初学者,劝退。

这篇关于AG32 MCU+FPGA 使用感受的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1036747

相关文章

使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)

《使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)》在现代软件开发中,处理JSON数据是一项非常常见的任务,无论是从API接口获取数据,还是将数据存储为JSON格式,解析... 目录1. 背景介绍1.1 jsON简介1.2 实际案例2. 准备工作2.1 环境搭建2.1.1 添加

如何使用celery进行异步处理和定时任务(django)

《如何使用celery进行异步处理和定时任务(django)》文章介绍了Celery的基本概念、安装方法、如何使用Celery进行异步任务处理以及如何设置定时任务,通过Celery,可以在Web应用中... 目录一、celery的作用二、安装celery三、使用celery 异步执行任务四、使用celery

使用Python绘制蛇年春节祝福艺术图

《使用Python绘制蛇年春节祝福艺术图》:本文主要介绍如何使用Python的Matplotlib库绘制一幅富有创意的“蛇年有福”艺术图,这幅图结合了数字,蛇形,花朵等装饰,需要的可以参考下... 目录1. 绘图的基本概念2. 准备工作3. 实现代码解析3.1 设置绘图画布3.2 绘制数字“2025”3.3

Jsoncpp的安装与使用方式

《Jsoncpp的安装与使用方式》JsonCpp是一个用于解析和生成JSON数据的C++库,它支持解析JSON文件或字符串到C++对象,以及将C++对象序列化回JSON格式,安装JsonCpp可以通过... 目录安装jsoncppJsoncpp的使用Value类构造函数检测保存的数据类型提取数据对json数

python使用watchdog实现文件资源监控

《python使用watchdog实现文件资源监控》watchdog支持跨平台文件资源监控,可以检测指定文件夹下文件及文件夹变动,下面我们来看看Python如何使用watchdog实现文件资源监控吧... python文件监控库watchdogs简介随着Python在各种应用领域中的广泛使用,其生态环境也

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

springboot整合 xxl-job及使用步骤

《springboot整合xxl-job及使用步骤》XXL-JOB是一个分布式任务调度平台,用于解决分布式系统中的任务调度和管理问题,文章详细介绍了XXL-JOB的架构,包括调度中心、执行器和Web... 目录一、xxl-job是什么二、使用步骤1. 下载并运行管理端代码2. 访问管理页面,确认是否启动成功

使用Nginx来共享文件的详细教程

《使用Nginx来共享文件的详细教程》有时我们想共享电脑上的某些文件,一个比较方便的做法是,开一个HTTP服务,指向文件所在的目录,这次我们用nginx来实现这个需求,本文将通过代码示例一步步教你使用... 在本教程中,我们将向您展示如何使用开源 Web 服务器 Nginx 设置文件共享服务器步骤 0 —

Java中switch-case结构的使用方法举例详解

《Java中switch-case结构的使用方法举例详解》:本文主要介绍Java中switch-case结构使用的相关资料,switch-case结构是Java中处理多个分支条件的一种有效方式,它... 目录前言一、switch-case结构的基本语法二、使用示例三、注意事项四、总结前言对于Java初学者

Golang使用minio替代文件系统的实战教程

《Golang使用minio替代文件系统的实战教程》本文讨论项目开发中直接文件系统的限制或不足,接着介绍Minio对象存储的优势,同时给出Golang的实际示例代码,包括初始化客户端、读取minio对... 目录文件系统 vs Minio文件系统不足:对象存储:miniogolang连接Minio配置Min