Bootstrap

AG32 MCU内置2K的CPLD资源,可以开发出很多定制需求功能

  • AG32MCU 内置2K的cpld资源,可以开发出很多定制需求功能

除了cpld 自带的内存,cpld 还可以使用mcu 的内存sram。
AG32 整个芯片系列,内存sram 大小都是128K。
如果mcu 用不了128K,希望分一些给cpld 来用,比如,分出来32K 给cpld。

    根据客户需求,利用内置的CPLD 资源实现高分辨率的 PWM(脉冲宽度调制),来满足客户的应用。我们针对高分辨率的PWM,有一个参考设计例程:

    在例程里的main.c文件中,通过init_pwm和shift_pwm两个函数来对pwm进行设置和步进,步进的step目前设在208ps,用户可根据需求设置,最高可以达到100ps左右,可以通过参考设计,快速上手。

    无论是在对精度要求极高的工业电机控制场景中,实现电机转速和扭矩的精准控制,降低振动和噪音,提高能源效率;还是在智能照明领域,对 LED 灯进行精准的调光调色,延长灯具寿命;

亦或是在电源管理方面,精确控制输出电压、降低纹波系数,AG32 MCU 实现的高分辨率 PWM 都有着巨大的潜力。它可以为电子系统的设计带来更多的可能性和创新空间。

  •  mcu 读写数据到cpld;

在地址设计中,cpld 的地址区间是:0x60000000 ~ 0x7FFFFFFF
当mcu 对这个区间内的地址访问时,相当于访问了cpld 的“寄存器”。
mcu 是全局寻址,对这个空间的访问和对ram(0x20000000 起)空间的访问是一样
的方式,在C 代码中,可以这样写:
读cpld:int cpRdReg = *((int *)0x60000000);
写cpld:*((int *)0x60000004) = cpWtReg;
Mcu 端读写cpld 较为简单,直接通过上述语句就可以了。
当mcu 读写动作发生时,cpld 端是如何反应的?
当上述mcu 读写动作发生时,AHB 总线会把动作拆解为读写信号,传递到analog_ip.v
的接口,用户cpld 程序需要响应该信号。
以下,以写动作*((int *)0x60000004) = cpWtReg 为例,描述cpld 端会发生的事情。
回顾下analog_ip.v 中的接口部分, 有相应的代码可以参考。

;