问题列表(整理中):

1. 如何定义信号量数组

如果cpld里想用信号量数组,并使每个元素对应到不同PIN,可以在ve里定义如下:

  • mcu_a[0] PIN_31
  • mcu_a[1] PIN_32
  • mcu_a[2] PIN_33
  • mcu_a[3] PIN_34
  • ...

如图:

那么,prepare LOGIC后,将在自动生成的cpld框架.v接口里,表示如下:

这里就表现为数组的形式了。

.

2. 在cpld输出相位差90度的时钟

可以在ve里(使用PHASE字段)定义如下:

具体使用如下图:

在上图的定义中,就是把pllclk4的输出,在相位上偏移90度。

除了90度,还可以输出180度和270度。

.

3. 更换了芯片怎么设置工程

比如,原先使用的是100Pin的flash大小是1M的,现在要更换成64Pin的flash是256K的。(其他的更换也是相似)

那么需要修改的点:

  1. 在platformio.ini里修改 board 字段类型,如果是1M的flash就选 agrv2k_407,如果是256k就选 agrv2k_303(还有个103,和303是完全一样的);
  2. 继续在platformio.ini里修改 logic_device 字段类型,根据实际使用的,选择一个(可选:AGRV2KL100 / AGRV2KL64 / AGRV2KL64H / AGRV2KL48 / AGRV2KQ32);
  3. 在.ve文件里,按新的管脚一一配置好;(注意:不要留无效的配置。无效的都注释掉或删除掉)

如果没有使用自定义logic,那么以上3步配置完就可以了。烧录logic、烧录code就能正常运行了。

如果使用了自定义logic,那么logic部分需要从头做一遍:

  1. 先把工程下logic目录改名(相当于备份下);
  2. 在vscode里重新 prepare LOGIC,生成出来新的cpld空工程;
  3. 启动quartus,打开该新工程运行tcl script脚本;
  4. 把前边的逻辑(第1步改名的那个)移到新的logic下,重新编译;
  5. 再重新用supra打开该工程编译;
  6. 再回到VSCode下upload LOGIC,把新的logic.bin烧录到板子上。

如果logic制作流程有忘记的,请回到这里查看细节。

.