MCU+CPLD 联合编程(概念及流程)

1 min read 联合编程

在使用 MCU+CPLD 联合编程之前,请确认已经熟练掌握 MCU 的使用方法,并且对 CPLD 编程(Verilog 语言)有一定的基础。另外,对 AHB 总线也需要有一定的了解。

一、前述

在 AG32 芯片中,都有内嵌 2K 的逻辑门。使用 AG32 时有三种选择:

  1. 只使用 MCU 部分:不必关注此文档。
  2. 只使用 CPLD 部分:参考“纯粹 CPLD 编程”文档。
  3. MCU 和 CPLD 联合编程:请按照本文档完整走一个流程。

二、基础了解

  1. 独立性与连通性:MCU 和 CPLD 相互独立(各自编译、下载),但通过信号连通。芯片需烧录两个 bin 才能运行。
  2. VE 文件桥梁:MCU/CPLD 到外部 Pin 脚的连通,以及 MCU 到 CPLD 之间的信号关联,全部通过 VE 文件配置。
  3. 工程生成:联合编程时,CPLD 工程由 VSCode 的 “prepare LOGIC” 命令自动生成,不能手工通过 Supra 建立。
  4. 默认 Logic 与 自定义 Logic
    • 默认 Logic:仅用 MCU 时,系统自动生成默认 logic(用户逻辑为空),对开发者无感。
    • 自定义 Logic:同时使用 MCU 和 CPLD 时,需在 VE 中配置关联,并使用 “prepare LOGIC” 生成框架工程进行开发。

三、安装软件

  • Supra:集成在 SDK 路径下(tool-agrv_logic/bin/),用于生成最终 bin。
  • Quartus II:需安装 Full 版本(推荐 v13.0.1),用于编写 Verilog 代码并导出 vo 文件。

四、CPLD 使用流程

整体分为 4 个步骤:

  1. 在 VE 文件里配置引脚关系;
  2. 建立 CPLD 空工程(prepare LOGIC)并编写逻辑;
  3. Quartus 下进行工程转换与综合;
  4. Supra 下编译出最终的 logic.bin。

五、在 VE 里定义引脚和信号关系

A. MCU 和外部引脚的关联

格式:MCU FunctionName + 空格 + Pin脚ID

示例:GPIO4_3 PIN_32

B. CPLD 和外部引脚的关联

格式:CPLD信号名称 + 空格 + Pin脚ID:方向

示例:LED_D3 PIN_32:OUTPUT

执行 prepare LOGIC 后,CPLD 顶层模块会自动生成对应的 input/output 接口。

C. MCU 和 CPLD 之间的关联

格式:MCU FunctionName + 空格 + CPLD信号名称

示例:GPIO4_1 iocvt_chn

注意:

  • 对于普通 GPIO,会生成 _in, _out_data, _out_en 三个信号。
  • 对于带方向的外设信号(如 UART TX),仅生成对应的 input/output 信号。
  • 输入/输出方向是相对于 CPLD 端而言的。
这篇文档有帮助吗?