AGM AGRV2K FPGA因为极高的性价比,开发方便简单等优势,受到很多客户的欢迎。
在这里,让我们一起从0开始开发AGM FPGA/CPLD。AGRV2K系列包含的2KLE的器件有AGRV2KL32, AGRV2KL48, AGRV2KL100, AGRV2KL64等。
一、器件引脚定义说明
AGRV2K在一个芯片内部,除了FPGA逻辑,还内置有MCU内核。以下是芯片的引脚定义,可以将器件当MCU,也可以作为FPGA使用。
1、AGRV2KL100 Pin-Out
LQFP-100 | Pin name | AG32VFxxxV | AGRV2KL100 |
1 | PIN_1 | IO | IO |
2 | PIN_2 | IO | IO |
3 | PIN_3 | IO | IO |
4 | PIN_4 | IO | IO |
5 | PIN_5 | IO | IO |
6 | VBAT | VBAT | VDD33 |
7 | PIN_7 | IO_RTC | IO_GB |
8 | OSC32_IN | OSC32_IN | NC |
9 | OSC32_OUT | OSC32_OUT | NC |
10 | VSS33 | GND | GND |
11 | VDD33 | VDD33 | VDD33 |
12 | OSC_IN | OSC_IN | NC |
13 | OSC_OUT | OSC_OUT | NC |
14 | NRST | NRST | NRST |
15 | PIN_15 | IO_ADC_IN10 | IO_GB |
16 | PIN_16 | IO_ADC_IN11 | IO |
17 | PIN_17 | IO_ADC_IN12 | IO |
18 | PIN_18 | IO_ADC_IN13 | IO |
19 | NC | NC | NC |
20 | VSSA | GNDA | GND |
21 | VREFP | VREFP | VDDA33 |
22 | VDDA | VDDA | VDDA33 |
23 | PIN_23 | IO_WKUP_ADC_IN0_CMP_PA0 | IO |
24 | PIN_24 | IO_ADC_IN1_CMP_PA1 | IO |
25 | PIN_25 | IO_ADC_IN2_CMP_PA2 | IO |
26 | PIN_26 | IO_ADC_IN3_CMP_PA3 | IO |
27 | VSS33 | GND | GND |
28 | VDD33 | VDD33 | VDD33 |
29 | PIN_29 | IO_ADC_IN4_CMP_PA4_DAC0 | IO |
30 | PIN_30 | IO_ADC_IN5_CMP_PA5_DAC1 | IO |
31 | PIN_31 | IO_ADC_IN6 | IO |
32 | PIN_32 | IO_ADC_IN7 | IO |
33 | PIN_33 | IO_ADC_IN14 | IO |
34 | PIN_34 | IO_ADC_IN15 | IO |
35 | PIN_35 | IO_ADC_IN8 | IO |
36 | PIN_36 | IO_ADC_IN9 | IO |
37 | PIN_37 | IO_BOOT1 | IO |
38 | PIN_38 | IO | IO |
39 | PIN_39 | IO | IO |
40 | PIN_40 | IO | IO |
41 | PIN_41 | IO | IO |
42 | PIN_42 | IO | IO |
43 | PIN_43 | IO | IO |
44 | PIN_44 | IO | IO |
45 | PIN_45 | IO | IO |
46 | PIN_46 | IO | IO |
47 | PIN_47 | IO | IO |
48 | PIN_48 | IO | IO |
49 | NC | NC | NC |
50 | VDD33 | VDD33 | VDD33 |
51 | PIN_51 | IO | IO |
52 | PIN_52 | IO | IO |
53 | PIN_53 | IO | IO |
54 | PIN_54 | IO | IO |
55 | PIN_55 | IO | IO |
56 | PIN_56 | IO | IO |
57 | PIN_57 | IO | IO |
58 | PIN_58 | IO | IO |
59 | PIN_59 | IO | IO |
60 | PIN_60 | IO | IO |
61 | PIN_61 | IO | IO |
62 | PIN_62 | IO | IO |
63 | PIN_63 | IO | IO |
64 | PIN_64 | IO | IO |
65 | PIN_65 | IO | IO |
66 | PIN_66 | IO | IO |
67 | PIN_67 | IO | IO |
68 | PIN_68 | IO_UART0_TX | IO |
69 | PIN_69 | IO_UART0_RX | IO |
70 | PIN_70 | IO_USBDM | IO |
71 | PIN_71 | IO_USBDP | IO |
72 | PIN_72 | IO_JTMS | TMS |
73 | NC | NC | NC |
74 | VSS33 | GND | GND |
75 | VDD33 | VDD33 | VDD33 |
76 | PIN_76 | IO_JTCK | TCK |
77 | PIN_77 | IO_JTDI | IO |
78 | PIN_78 | IO | IO |
79 | PIN_79 | IO | IO |
80 | PIN_80 | IO | IO |
81 | PIN_81 | IO | IO |
82 | PIN_82 | IO | IO |
83 | PIN_83 | IO | IO |
84 | PIN_84 | IO | IO |
85 | PIN_85 | IO | IO |
86 | PIN_86 | IO | IO |
87 | PIN_87 | IO | IO |
88 | PIN_88 | IO | IO |
89 | PIN_89 | IO_JTDO | IO |
90 | PIN_90 | IO_JNTRST | IO |
91 | PIN_91 | IO | IO |
92 | PIN_92 | IO | IO |
93 | PIN_93 | IO | IO |
94 | BOOT0 | BOOT0 | GND |
95 | PIN_95 | IO | IO |
96 | PIN_96 | IO | IO |
97 | PIN_97 | IO | IO |
98 | PIN_98 | IO | IO |
99 | VSS33 | GND | GND |
100 | VDD33 | VDD33 | VDD33 |
2、AGRV2KL64 Pin-Out
LQFP-64 | Pin name | AG32VFxxxR | AGRV2KL64 |
1 | VBAT | VBAT | VDD33 |
2 | PIN_2 | IO_RTC | IO_GB |
3 | OSC32_IN | OSC32_IN | NC |
4 | OSC32_OUT | OSC32_OUT | NC |
5 | OSC_IN | OSC_IN | NC |
6 | OSC_OUT | OSC_OUT | NC |
7 | NRST | NRST | NRST |
8 | PIN_8 | IO_ADC_IN10 | IO_GB |
9 | PIN_9 | IO_ADC_IN11 | IO |
10 | PIN_10 | IO_ADC_IN12 | IO |
11 | PIN_11 | IO_ADC_IN13 | IO |
12 | VSSA | GNDA | GND |
13 | VDDA | VDDA | VDDA33 |
14 | PIN_14 | IO_WKUP_ADC_IN0_CMP_PA0 | IO |
15 | PIN_15 | IO_ADC_IN1_CMP_PA1 | IO |
16 | PIN_16 | IO_ADC_IN2_CMP_PA2 | IO |
17 | PIN_17 | IO_ADC_IN3_CMP_PA3 | IO |
18 | VSS33 | GND | GND |
19 | VDD33 | VDD33 | VDD33 |
20 | PIN_20 | IO_ADC_IN4_CMP_PA4_DAC0 | IO |
21 | PIN_21 | IO_ADC_IN5_CMP_PA5_DAC1 | IO |
22 | PIN_22 | IO_ADC_IN6 | IO |
23 | PIN_23 | IO_ADC_IN7 | IO |
24 | PIN_24 | IO_ADC_IN14 | IO |
25 | PIN_25 | IO_ADC_IN15 | IO |
26 | PIN_26 | IO_ADC_IN8 | IO |
27 | PIN_27 | IO_ADC_IN9 | IO |
28 | PIN_28 | IO_BOOT1 | IO |
29 | PIN_29 | IO | IO |
30 | PIN_30 | IO | IO |
31 | PIN_31 | IO | IO |
32 | VDD33 | VDD33 | VDD33 |
33 | PIN_33 | IO | IO |
34 | PIN_34 | IO | IO |
35 | PIN_35 | IO | IO |
36 | PIN_36 | IO | IO |
37 | PIN_37 | IO | IO |
38 | PIN_38 | IO | IO |
39 | PIN_39 | IO | IO |
40 | PIN_40 | IO | IO |
41 | PIN_41 | IO | IO |
42 | PIN_42 | IO_UART0_TX | IO |
43 | PIN_43 | IO_UART0_RX | IO |
44 | PIN_44 | IO_USBDM | IO |
45 | PIN_45 | IO_USBDP | IO |
46 | PIN_46 | IO_JTMS | TMS |
47 | PIN_47 | IO | IO |
48 | VDD33 | VDD33 | VDD33 |
49 | PIN_49 | IO_JTCK | TCK |
50 | PIN_50 | IO_JTDI | IO |
51 | PIN_51 | IO | IO |
52 | PIN_52 | IO | IO |
53 | PIN_53 | IO | IO |
54 | PIN_54 | IO | IO |
55 | PIN_55 | IO_JTDO | IO |
56 | PIN_56 | IO_JNTRST | IO |
57 | PIN_57 | IO | IO |
58 | PIN_58 | IO | IO |
59 | PIN_59 | IO | IO |
60 | BOOT0 | BOOT0 | GND |
61 | PIN_61 | IO | IO |
62 | PIN_62 | IO | IO |
63 | VSS33 | GND | GND |
64 | VDD33 | VDD33 | VDD33 |
3、AGRV2KL48 Pin-Out
LQFP-48 | Pin name | AG32VFxxxC | AGRV2KL48 |
1 | VBAT | VBAT | VDD33 |
2 | PIN_2 | IO_RTC | IO_GB |
3 | OSC32_IN | OSC32_IN | NC |
4 | OSC32_OUT | OSC32_OUT | NC |
5 | OSC_IN | OSC_IN | NC |
6 | OSC_OUT | OSC_OUT | NC |
7 | NRST | NRST | NRST |
8 | VSSA | GNDA | GND |
9 | VDDA | VDDA | VDD33 |
10 | PIN_10 | IO_WKUP_ADC_IN0_CMP_PA0 | IO |
11 | PIN_11 | IO_ADC_IN1_CMP_PA1 | IO |
12 | PIN_12 | IO_ADC_IN2_CMP_PA2 | IO |
13 | PIN_13 | IO_ADC_IN3_CMP_PA3 | IO |
14 | PIN_14 | IO_ADC_IN4_CMP_PA4_DAC0 | IO |
15 | PIN_15 | IO_ADC_IN5_CMP_PA5_DAC1 | IO |
16 | PIN_16 | IO_ADC_IN6 | IO |
17 | PIN_17 | IO_ADC_IN7 | IO |
18 | PIN_18 | IO_ADC_IN8 | IO |
19 | PIN_19 | IO_ADC_IN9 | IO |
20 | PIN_20 | IO_BOOT1 | IO |
21 | PIN_21 | IO | IO |
22 | PIN_22 | IO | IO |
23 | VSS33 | GND | GND |
24 | VDD33 | VDD33 | VDD33 |
25 | PIN_25 | IO | IO |
26 | PIN_26 | IO | IO |
27 | PIN_27 | IO | IO |
28 | PIN_28 | IO | IO |
29 | PIN_29 | IO | IO |
30 | PIN_30 | IO_UART0_TX | IO |
31 | PIN_31 | IO_UART0_RX | IO |
32 | PIN_32 | IO_USBDM | IO |
33 | PIN_33 | IO_USBDP | IO |
34 | PIN_34 | IO_JTMS | TMS |
35 | PIN_35 | IO | IO |
36 | VDD33 | VDD33 | VDD33 |
37 | PIN_37 | IO_JTCK | TCK |
38 | PIN_38 | IO_JTDI | IO |
39 | PIN_39 | IO_JTDO | IO |
40 | PIN_40 | IO_JNTRST | IO |
41 | PIN_41 | IO | IO |
42 | PIN_42 | IO | IO |
43 | PIN_43 | IO | IO |
44 | BOOT0 | BOOT0 | GND |
45 | PIN_45 | IO | IO |
46 | PIN_46 | IO | IO |
47 | VSS33 | GND | GND |
48 | VDD33 | VDD33 | VDD33 |
4、AGRV2KQ32 Pin-Out
QFN-32 | Pin name | AG32VFxxxK | AGRV2KQ32 |
1 | PIN_1 | IO/RTC | IO_GB |
2 | PIN_2 | IO/OSC_IN | IO |
3 | PIN_3 | IO/OSC_OUT | IO |
4 | NRST | NRST | NRST |
5 | PIN_5 | IO_ADC_IN12 | IO |
6 | VDDA33 | VDDA33 | VDDA33 |
7 | PIN_7 | IO_WKUP_ADC_IN0_CMP_PA0 | IO |
8 | PIN_8 | IO_ADC_IN1_CMP_PA1 | IO |
9 | PIN_9 | IO_ADC_IN2_CMP_PA2 | IO |
10 | PIN_10 | IO_ADC_IN3_CMP_PA3 | IO |
11 | PIN_11 | IO_ADC_IN4_CMP_PA4_DAC0 | IO |
12 | PIN_12 | IO_ADC_IN5_CMP_PA5_DAC1 | IO |
13 | PIN_13 | IO_ADC_IN6 | IO |
14 | PIN_14 | IO_ADC_IN7 | IO |
15 | PIN_15 | IO_BOOT1 | IO |
16 | VDD33 | VDD33 | VDD33 |
17 | GND | GND | GND |
18 | PIN_18 | IO | IO |
19 | PIN_19 | IO | IO |
20 | PIN_20 | IO_UART0_TX | IO |
21 | PIN_21 | IO_UART0_RX | IO |
22 | PIN_22 | IO_USBDM | IO |
23 | PIN_23 | IO_USBDP | IO |
24 | PIN_24 | IO_JTMS | JTMS |
25 | PIN_25 | IO_JTCK | JTCK |
26 | PIN_26 | IO_JTDI | IO |
27 | PIN_27 | IO_JTDO | IO |
28 | PIN_28 | IO_JNTRST | IO |
29 | PIN_29 | IO | IO |
30 | BOOT0 | BOOT0 | GND |
31 | PIN_31 | IO | IO |
32 | VDD33 | VDD33 | VDD33 |
二、AGRV2K的电源与配置电路
AGRV2K 需 3.3V Vcc 供电, 通过 JTAG 或两线 SWJ 方式进行烧写,使用 J-LINK 下载器或AGM CMSIS-DAP 专用下载器(海振远科技批量生产与销售中),请参考下图:
注: NC 为悬空脚,请勿接任何电源或信号。软件烧录默认即为 SWJ 方式,兼容 JTAG 接口。
三、Supra开发软件开发流程
1.)软件安装:
解压缩或执行安装文件,安装 Supra 软件。 (最新版本的软件可以联系海振远科技获取)执行文件为 bin 目录中的 Supra.exe。
运行 Supra,选择菜单 File -> Import license,选择 license 文件并导入 License。
2.)新建项目:
新建一工程目录。打开 Supra, 在目录中新建 project。
进入 Tools -> Migrate:
Target Directory 默认为新建的工程目录, Migrate from directory 不填, 输入设计名称(这里例如 led), Device 选 AGRV2K 系列型号。选择 ve 文件(管脚分配文件)。 IP 文件不用填。
选择对应开发 Mode: Native 选项(AGM 自有 EDA 综合工具), Synplicity 选项(第三方综合工具,例如 Synplify, Mentor等), Compatible 选项(兼容 Quartus II 的综合工具)。
因为很多用户是从一个A品牌切换到另外一个A品牌——AGM器件的,所以下面先介绍 Supra 基于 Quartus II 综合的设计流程,其它工具设计流程类似。 Mode 选择Compatible,点 next, 生成一个以 led 命名的 Quartus II 项目,以及相应的设计文件格式(qpf, v,sdc 等)。
ve 文件为 I/O 管脚位置设置,可通过任意文本编辑器自行编辑产生。管脚名称请参考前面的管脚说明表格(PIN_1, PIN_2 格式), 全局信号最好选 IO_GB 管脚。
ve 文件格式如下(管脚设计名称+空格+封装管脚名称, #为注释符):
rst PIN_7 clk PIN_15 led[0] PIN_16 led[1] PIN_17 …… |
3.)项目设计:
用 Quartus II 打开 led.qpf 项目文件, 工程已设置好,不要修改型号。 默认为 EP4CE75,如果Quartus II 没有这个器件,需要先安装 Cyclone IV 系列器件库。
空的项目中加入你的设计文件.v,或添加其它类型设计文件。
设计完成后, Quartus II 中选择菜单中 Tools -> Tcl Scripts...,窗口中选 af_quartus.tcl,点击 Run进行编译,综合后产生所需网表文件。
4.)项目编译:
Supra 里继续执行 Next,开始进行编译。 编译选项,默认即可。
编译成功后即可得到最终烧写文件, led.bin。
如未改变工程路径, 修改设计代码后, Quartus 里只需执行正常的编译(Start Compilation),可以不用再运行 af_quartus.tcl 文件。然后在 Supra 中打开 Tools -> Compile,完成编译即可。