AGM AG32VF407与AGRV2K开发技巧分享

浏览: 作者:Rocky 来源:HIZYUAN 时间:2023-10-04 分类:MCU应用

AGM AG32VF407与AGRV2K(MCU内置的2KLE FPGA)这2者可以联合使用,这里我们一起分享一些MCU与FPGA联合使用调试的技术疑问,供大家参考交流。


1、Question: AGRV2K内部的晶振的频率是多少?

RE: 4-to-24MHz crystal oscillator; 一般比较常用的是用8MHz。

AGRV2K 器件内部晶振,可作为逻辑设计的时钟输入, 也可接入 PLL, 并支持精度自校准。
设计中使用这个晶振的时钟输入,需要在
ve 文件中指定时钟输入管脚位置为 PIN_OSC,如:

clk PIN_OSC


并在设置文件 led.asf 中加入语句:

set_config -loc 18 0 0 CFG_RCOSC_EN 1'b1


工程编译完成后,烧录界面, Program 需选择“Full chip erase before program”。
Program 后显示的信息中包含“Info : Oscillator calibrated with value xx” 即表示内部晶振已打开并校准,可以正常使用。详细信息也可以参考agmsemi.com的资料分享。


2、Question: 如何用GPIO组去快速采集并口数据,类似memory to memory的搬移?

RE: 建议用DMA的话,估计主频/5-10吧,取决于DMA和SRAM的带宽有没有被其它外设占用。真的追求越快越好的话,直接在逻辑里用把IO的值读进一个FIFO,同时用DMA把FIFO里的东西读进SRAM,少说也能做到100M。

FIFO要用逻辑实现,编写HDL代码实现。


AGRV2K 器件支持 个 M9K Block1K Byte),共 4K Byte 空间。可直接在 Quartus II 工程中MegaWizard 中添加 Memory IP。不要超过 个 M9K

以下代码的altsyncram用的就是M9K的RAM。


202310041548556449dd



3、Question: mcu部分操作的还是0x6000000后的地址呀,而sram在0x2000000-0x2001ffff?这对于mcu来说不就是操作了外部ram而非内部ram吗?能否cpld直接能操作ox2000000的那部分地址,而不是中间转接?


RE: mcu程序里的read_buf内容就是由cpld写入的;

这个demo双向都有,数据流向是mcu (mem_buf) -> ahb -> apb -> block ram -> apb -> ahb -> mcu (read_buf);

cpld可以操作0x20000000的地址,但是需要逻辑的支持;


20231004155451b8a0ef


上面数据流向里read_buf就是在sram里,由cpld通过apb/ahb写入的.


通过线 ahb就可以直接写入sram了,反过来也是可以的。

通过ahb,mcu程序和逻辑都可以作为读写的发起方。不算是异步,ahb有时钟,都是同步的;


补充说明:ahb/apb的时钟比也可以是1:1。

刚把昨天的设计BUSCLK去掉重新编译也是工作的。开始发过来的不工作可能是quartus里编译的问题,后来重新编译就好了。



Question: 可以介绍一下AG32 MCU和AGRV2K的区别吗。


RE: AG32 MCU主推型号:AG32VF407, AG32VR103,都内置有FPGA,可以单独只使用MCU,也可以将内置FPGA一起配合使用.  

纯FPGA逻辑的型号:AGRV2KL100, AGRV2KL64, AGRV2KL48, AGRV2KQ32.



以上是部分技术问题交流的节选,描述不一定的完整,有疑问欢迎联系AGM,有机会与技术专家对接探讨,快速解决存在的技术问题,加快项目开发进度。