行业新闻

AG32芯片FPGA/CPLD开发入门手册(MCU+CPLD联合编程)

发布 2026年7月2日
/
阅读 3 分钟

全系AG32芯片均内置2K逻辑门资源,支持FPGA/CPLD逻辑开发,芯片功能使用分为三种模式,开发者可根据项目需求灵活选择:

仅使用MCU内核:无需阅读本文档,按常规MCU开发流程即可;

仅使用CPLD逻辑资源:硬件设计与操作流程参考官方文档《MANUAL_AGRV2K_3.0.pdf》,无需阅读本文档;

MCU+CPLD联合编程:必须严格按照本文档流程,完成全套开发、配置、编译及烧录操作。

 

一、开发基础认知

1.芯片架构特性

AG32芯片由MCU内核与CPLD逻辑模块两部分组成,二者相对独立、互不干扰,同时支持信号互通联动:两部分拥有独立的编译、下载流程,芯片正常运行需同时烧录MCU固件BIN文件与CPLD逻辑BIN文件。

2.引脚映射核心规则

与ST系列芯片固定GPIO引脚映射不同,AG32芯片的GPIO、外设引脚均非固定配置,所有引脚关联、信号互通均通过VE配置文件定义。VE文件核心作用包含三点:

配置MCU外设、GPIO与芯片外部引脚的映射关系;

配置CPLD逻辑与芯片外部引脚的映射关系;

配置MCU与CPLD之间的内核信号互通通路。

3 联合编程工程规则

MCU+CPLD联合开发模式下,CPLD工程由VSCode的prepare LOGIC命令自动生成,禁止通过Supra工具手动创建。CPLD开发完全依托VSCode工程体系,不再独立运行,其顶层模块的输入输出信号,均由VE文件配置自动关联至MCU工程。

4 CPLD运行模式说明

5 默认逻辑模式(仅MCU运行)

项目仅使用MCU功能时,VE文件只需配置MCU相关引脚。在VSCode执行upload LOGIC指令后,系统会自动生成空白默认逻辑、编译并烧录CPLD固件,全程无需开发者干预,逻辑模块无自定义功能。

6 自定义逻辑模式(MCU+CPLD联合运行)

项目需同时启用MCU与CPLD功能时,需开启自定义逻辑模式。VE文件需完整配置三类信号关联:MCU与外部引脚、CPLD与外部引脚、MCU与CPLD内核信号。

通过VSCode执行prepare LOGIC可自动生成CPLD工程框架,开发者在框架内编写自定义逻辑代码,编译生成BIN文件后,统一通过VSCode完成烧录,外层流程与默认逻辑模式完全一致。

7 CPLD整体开发流程概览

完整开发流程:VSCode配置VE文件 → 执行prepare LOGIC生成CPLD工程框架 → Quartus编写逻辑代码、导出VO文件 → Supra编译生成BIN文件 → VSCode烧录固件。

二、CPLD详细开发流程

2.1 开发工具安装要求

CPLD/FPGA开发需搭配两款专用工具,工具分工明确,缺一不可:

Supra.exe:SDK安装后自动部署,无需额外安装。若路径缺失,可在目录AgRV_pio\packages\tool-agrv_logic\bin中查找,建议创建桌面快捷方式方便调用,主要用于将VO文件编译为最终烧录BIN文件。

Altera Quartus II:需用户自行安装,禁止使用Lite精简版,推荐固定版本:Quartus II 64-Bit Version 13.0.1 Build 232 06/12/2013 SJ Full Version,安装后需配套安装Cyclone IV E器件库,主要用于编写Verilog代码、转换工程、生成VO文件。

2 创建CPLD空白工程

本步骤基于已搭建完成的VSCode+MCU SDK开发环境,若无基础环境,需先参考《AG32开发环境搭建.pdf》完成环境部署。

3 开启自定义逻辑配置

以官方example例程(路径:…\AgRV_pio\platforms\AgRV\examples\example)为例,默认未开启自定义IP,需修改根目录platformio.ini文件,顶格添加以下两行配置(无前置空格):

ip_name = analog_ip

logic_dir = logic

4 生成工程框架

配置保存后,VSCode左侧工具栏将出现【Prepare LOGIC】功能,点击该按钮,工程目录下会自动生成logic文件夹,即为CPLD开发模板工程。

5 工程命名规则

工程文件夹、核心文件名均由platformio.ini配置项控制,支持自定义修改,修改后需重新执行【Prepare LOGIC】生效:

board_logic.ve:对应logic目录下顶层V文件名称;

ip_name:对应用户自定义逻辑模块V文件名称;

logic_dir:对应CPLD工程根文件夹名称。

2.2.4 核心文件说明

生成的logic目录包含两个核心Verilog文件,分工明确,严格禁止随意修改:

analog_ip.v:用户自定义逻辑入口文件,空白模板仅保留模块接口,所有CPLD功能代码均在此文件中实现;

example_board.v:工程顶层模块,由VE配置自动转换生成,负责关联MCU、系统内核与用户逻辑,禁止手动修改。

6 配置更新适配规则

后续修改VE引脚配置后,重新执行【Prepare LOGIC】会更新工程模板:顶层文件example_board.v直接覆盖更新,用户逻辑文件analog_ip.v不会被覆盖,同时生成analog_ip_tmpl.v最新接口模板,需用户手动将新接口合并至自定义逻辑文件中。

补充:创建工程前需提前在platformio.ini中配置board_logic.device,匹配芯片引脚规格(32/48/64/100脚)。

7 Quartus工程打开与配置

使用Quartus II打开example\logic工程,首次使用需确认器件选型:选择Cyclone IV E系列EP4CE75F23C8器件(官方例程默认已配置,仅需核对)。

工程内三类文件功能说明:

analog_ip.v:用户功能开发入口,自定义逻辑全部在此实现;

example_board.v:顶层绑定文件,关联系统与用户逻辑,禁止修改;

alta_sim.v:芯片系统内核封装库,提供底层功能支撑,无需关注、禁止修改。

8 工程转换与编译(Quartus端)

首次导入工程必须执行工程转换,后续代码修改可直接编译,操作步骤如下:

打开Quartus菜单栏,点击【tools】→【Tcl Scripts…】;

选中对应脚本并点击【Run】执行工程自动转换与编译;

执行完成后可查看逻辑资源占用(最大不超过2K),同时在路径\logic\simulation\modelsim下生成核心VO文件;

后续迭代开发:修改代码后可直接点击编译按钮,无需重复执行脚本转换。

9 固件编译(Supra端)

打开Supra工具,加载example\logic工程;

点击左上角【Tool】→【Compile】,在弹窗中点击【run】启动编译;

提示Compile design example_board done with code 0即编译成功,logic目录下生成最终可烧录CPLD.BIN文件。

10 固件烧录(VSCode端)

CPLD固件最终烧录需回到VSCode工程,执行烧录指令完成固件下载,实现MCU与CPLD双固件联动运行。

11 迭代开发简化流程

修改VE引脚配置:重新执行Prepare LOGIC → 合并模板接口 → Quartus编译 → Supra编译 → VSCode烧录;

仅修改CPLD逻辑代码:Quartus编译 → Supra编译 → VSCode烧录。

三、核心配置规则详解

1 自定义模块命名规范

用户自定义逻辑的模块名称、文件名必须与platformio.ini中ip_name配置值完全一致,该绑定关系由Prepare LOGIC自动匹配,手动修改命名会导致Quartus编译异常、工程匹配失败。

2 VE文件三类信号关联规则

VE文件是MCU、CPLD、外部引脚三者联动的核心桥梁,所有信号关联配置后,执行Prepare LOGIC即可自动生成CPLD顶层接口。

3 MCU与外部引脚关联

用于配置MCU外设、GPIO的引脚映射,为常规MCU开发配置,格式:MCU功能名 + 引脚ID。

示例:

GPIO4_3 PIN_32:MCU GPIO4_3映射至32号引脚;

UART0_UARTRXD PIN_31:串口0接收引脚映射至31号引脚。

4 CPLD与外部引脚关联

用于配置CPLD逻辑直接操控外部引脚,格式:CPLD自定义信号名 + 引脚ID:方向。

方向支持三种:INPUT(输入)、OUTPUT(输出)、INOUT(双向,默认),方向参数可省略。

示例:LED_D3 PIN_32:OUTPUT,定义CPLD输出信号LED_D3绑定32号引脚,配置后可在CPLD代码中直接控制引脚电平。

5 MCU与CPLD内核信号关联

实现MCU与CPLD的内核数据互通,无需占用外部引脚,格式:MCU功能名 + CPLD自定义信号名。

示例:

GPIO4_1 iocvt_chn:MCU GPIO信号关联CPLD自定义通道;

UART1_UARTTXD txd_chn:MCU串口1发送信号关联CPLD通道。

信号方向规则(以CPLD为参照):MCU输出信号对应CPLD输入信号,MCU输入信号对应CPLD输出信号。系统会根据MCU原生信号方向,自动生成对应CPLD接口,无需手动定义。

补充:除常规GPIO、外设信号外,芯片支持AHB总线、DMA、复位、启停等内核级信号互通,完整信号列表参考官方《AGRV2K_逻辑设置.pdf》。

四、官方例程解析与开发参考

1 基础例程:CPLD控制LED闪烁

例程路径:网盘「1.led灯闪烁」,为入门级基础案例,核心展示CPLD引脚映射、时钟驱动、逻辑电平控制功能。

开发流程:VE配置CPLD引脚映射 → 生成LOGIC工程 → Quartus编写时钟分频、LED翻转逻辑 → 编译导出VO文件 → Supra编译BIN → 烧录验证。

2 进阶例程:ADC/DAC/CMP模拟功能

例程路径:网盘「2.adcDac例程」,基于官方analog工程开发,实现CPLD将ADC串行数据转为MCU可识别的并行APB总线数据,是MCU+CPLD总线交互的核心参考案例。

3 工程核心文件解析

my_board.v:自动生成顶层文件,完成MCU AHB总线、时钟、DMA信号与CPLD的绑定,禁止修改;

alta_sim.v:系统底层内核库,提供芯片基础总线、时钟支撑;

ahb2apb.v:核心转换模块,实现高速AHB总线转低速APB总线,适配外设数据传输;

analog_ip.v:用户功能入口,集成3路ADC、2路DAC、1路CMP逻辑,实现模拟信号采集与转换。

4 核心总线交互原理

MCU与CPLD通过AHB总线完成数据交互:MCU端将CPLD寄存器统一映射至地址段0x6000000~0x7FFFFFFF,应用层直接操作该地址寄存器即可实现数据读写;CPLD端通过AHB总线信号感知MCU操作,完成对应逻辑响应。

核心时钟说明:

sys_clock:MCU配置的系统主时钟,为CPLD核心工作时钟;

bus_clock:系统二次分频时钟,必须为SYSCLK整数分频,默认与主时钟同频,主要用于APB总线低速外设。

5 例程使用注意事项

该例程完整逻辑占用约1.2K逻辑单元,用户可根据项目需求裁剪多余ADC/DAC/CMP通道,节省逻辑资源;

ADC、DAC、CMP模拟功能的外部引脚为硬件固定映射,不支持VE文件重配置、重映射;

二次开发建议:基于空白LOGIC工程搭建基础框架后,按需合并官方模拟功能逻辑,避免冗余代码。

标签

更多推荐