在使用mcu+cpld聯合編程之前,請確認已經熟練掌握mcu的使用方法,并且對cpld編程(verilog語言)有一定的基礎。
另外,對AHB總線也需要有一定的了解。
這個章節分為兩部分:
第一部分,展示聯合編程中各種概念和操作流程;
第二部分,從具體案例出發,由淺到深來描述各種常用的編程技巧。
.
以下描述為第一部分(概念和流程)。如要查看實例講解,請參考第二部分。
.
一、前述
在AG32芯片(所有型號)中,都有內嵌2K的邏輯門,可供fpga/cpld來使用。
也就是說,使用AG32的芯片時,有三種選擇:
- 只使用mcu部分;
- 只使用cpld部分;
- 同時使用mcu和cpld(即:mcu和cpld聯合編程);
如果:
用于1(僅用做mcu),不必關注此文檔。
用于2(僅用做cpld),硬件設計和操作流程,請跳轉到“純粹cpld編程”,也不必關注此文檔。
用于3(mcu和cpld聯合編程):請按照該文檔的描述,先完整走一個流程。
.
二、基礎了解
1. AG32整顆芯片包含兩部分:mcu和cpld。
??這兩部分是相互獨立的(各自編譯、各自下載),但又可以相互連通起來(信號連通)。
??芯片要把這兩部分的bin都燒錄進去,才能運行起來。
2. mcu和cpld到外部Pin腳的連通,是通過VE文件來配置的。
??跟ST芯片每個Gpio對應某個固定Pin腳不同,在AG32中,所有的Gpio/大部分的外設,對外引腳并不是定死的。而是需要在VE文件中指定對應。
??VE中,除了配置Gpio到Pin的關聯,還可以配置mcu到cpld之間的信號關聯。
3. Mcu+cpld聯合編程時,cpld工程是由vscode的“prepare LOGIC”命令自動生成的。
??注意:聯合編程時,cpld工程不能手工通過supra建立。
??cpld的對外接口,也是依托于vscode工程來的,不再是孤立的。
??cpld中的top module的信號輸入,是關聯到mcu工程的(由VE配置出來)。
4. cpld在聯合編程中的定位:
??整顆芯片運行時,需要兩個bin:mcu的bin和cpld的bin。
??如果芯片中只使用mcu不使用cpld:
??此時,VE文件里只配置mcu用到的Pin腳即可。
??這種情況下,vscode工程中點“upload LOGIC”時,會自動生成默認logic(該logic中“用戶邏輯”為空而已),并編譯出bin并燒錄。
??整個過程中,logic部分對開發者來說是無感的。
??如果芯片中同時使用mcu和cpld:
??那么要把工程配置成“自定義logic”。
??此時VE文件里需要配置用到的mcu和pin之間、mcu和cpld之間、cpld和pin之間,三種情況下的信號關聯。
??這種情況下,VSCode下點“prepare LOGIC”按鈕,會為開發者生成cpld的框架工程。開發者需要在這個框架下完成cpld邏輯的編寫。這個編寫調試中,開發者持有主動權。等全部開發完成,并編譯出bin,燒錄就又回到VSCode去燒錄。
這個過程,除了logic需要用戶自己編寫編譯外,從更外層的視角看,整個流程還是跟“默認Logic”是相同的。
.
三、安裝軟件
mcu需要使用到的VSCode前邊已經安裝過了。
fpga/cpld需要使用Supra和Altera Quartus II兩個軟件來編程。
其中:
Supra.exe軟件在安裝完SDK后,已經在SDK路徑下了,可直接使用(無需額外安裝Supra)。
(注:如果在SDK路徑下沒有找到Supra.exe,可進入安裝路徑\AgRV_pio\packages\tool-agrv_logic\bin\去找到。同時建議手工新建一個快捷方式到SDK路徑下以方便后續使用)
Altera Quartus II軟件需要用戶自行安裝,安裝后再安裝對應的器件庫。
(注意:Quartus不能使用Lite版本,需要使用Full版本。最好使用版本:Quartus II 64-Bit Version 13.0.1 Build 232 06/12/2013 SJ Full Version)
在這兩個軟件中,
Quartus工具用來編寫vlog代碼并導出vo文件,Supra工具使用vo文件來生成最終的bin。