一、在AGM 的AG32 CPLD中实现DMA(直接内存访问)功能,其核心逻辑如下:
1、系统架构
•采用主从架构:MCU作为主设备,CPLD作为从设备
•交互方式:MCU通过访问寄存器的方式与CPLD进行通信
2、DMA配置流程
•在MCU端预先配置DMA控制器,设置读取CPLD中已准备数据的参数
•配置完成后,DMA控制器进入待命状态
3、数据传输过程
•当CPLD内部数据准备就绪后,主动触发DMA请求信号
•检测到DMA请求后,MCU的DMA控制器自动将CPLD中的数据搬运至MCU指定的RAM地址
4、完成确认机制
•每次数据传输完成后,DMA控制器会向CPLD发送一个Clear信号
•该信号标志本次DMA传输过程结束
•CPLD在收到Clear信号后,可准备下一次数据传输
5、工作模式特点
•对于CPLD而言,MCU主动读取数据和DMA自动读取数据的处理逻辑基本一致。
•主要区别在于DMA模式在每次读取后会多一个Clear信号确认过程
•该机制确保了数据传输的完整性和可靠性
二、实现示例说明
参考文档《7.cpld 中配合实现 mcu 的 dma 读取》中的样例代码包含两部分:
1、MCU端实现
•配置DMA读取功能
•为便于测试,MCU会向CPLD的另一个地址写入测试数据
2、CPLD端实现
•对MCU写入的数据进行缓存
•数据缓存完成后,触发DMA请求信号
•接收并处理DMA传输完成后的Clear信号