[FPGA] 1、Artix-7 35T Arty FPGA 評估套件學習
Artix-7 35T Arty FPGA 評估套件學習
1、簡介
xlinx官網地址: https://china.xilinx.com/products/boards-and-kits/arty.html
1.1 產品描述
售價 99 美元的 Arty 評估套件可為各種嵌入式應用實現快捷跨越式啟步,其中包括從基於 Linux 的計算密集型系統到輕量級微控制器等各種應用。 針對 Xilinx 業界最佳低端產品效能功耗比 Artix®-7 35T FPGA 精心設計Arty 套件具有 Xilinx 可針對幾乎任何處理器使用案例進行定製的 MicroBlaze™ 處理器。
1.2 主要效能和優勢
- Artix-7 XC7A35T-L1CSG324I FPGA
- 片上模數轉換器 (XADC)。
- JTAG 與 Quad-SPI Flash 可程式設計
- 256 MB DDR3L 支援速率為 667 MHz 的 16 位匯流排
- 16 MB Quad-SPI Flash
- 10/100 Mb/s Ethernet
- USB-UART Bridge
- 開關、按鈕、RGB LED
- 4 個 Pmod 介面 (32 I/O)
- Arduino/ChipKit“盾”接外掛 (49 I/O)
1.3 特色 Xilinx 器件
專案 | 個數 |
---|---|
邏輯單元 | 33,280 |
DSP Slice | 90 |
儲存器 | 1,800 |
GTP 6.6Gb/s 收發器 | 4 |
I/O 引腳 | 250 |
注:
1.4 電路板特性
下圖是整個開發板上資源的概覽,更詳細的可以參考:
注:板子自帶JTAG,用於燒寫FPGA韌體的,DEBUG得用外接工具
1.5 視訊資源
-
開啟vivado,將開發板用一根資料線連線到電腦上,點選裝置管理找到對應的裝置;在工程頁面,雙擊XADC可以出來一個溫度曲線(這個視訊花很大篇幅講了XADC);右鍵點選xc7a35t,選擇program device可以燒寫程式;
-
瞭解如何快速簡單地在 Artix-7 A35T Arty 評估套件上不用任何 HDL而使用簡單有效的 IPI 內建設計來評估 Xilinx 模擬混合訊號 (AMS) 技術。 視訊還展示了一些 TCL 指令碼,通過 Vivado 輕鬆與 XADC 互動並後置處理資料。
2、深入
START地址: https://reference.digilentinc.com/reference/programmable-logic/arty/start
2.1 兩種開發方法HDL/SOC
FPGA讓Arty變得非常靈活。在眾多的特點中,FPGAs有能力轉換成定製的軟體定義的片上系統(SoC)。這些“軟SOC”FPGA配置使用圖形化的工具ViVADO IP積分器(Vivado IPI)來設計。在這個工具中,從廣泛的庫中拖動預構建的外圍塊,並根據需要放入處理系統。這些預構建的外圍裝置包括定時器、UART/SPI/IIC控制器以及通常在SoC或微控制器中找到的許多其他裝置。厲害的使用者還會發現,他們可以用硬體定義語言(HDL),特別是Verilog或VHDL,來建立自己的外圍塊。對於那些對學習HDL不感興趣的人來說,Xilinx高階合成工具可以通過用C編寫自定義外圍塊來定義它們。
ARTY的軟SOC配置由MyBLAZE處理器核心提供。MixBRAZE是32位RISC軟處理器核心,專門設計用於Xilinx FPGA。Arty SoC配置中的MicroBlaze處理器通常以100MHz執行,不過可以設計您的SoC,使其能夠在200MHz上執行。Arty通過提供16MB的非易失性程式記憶體和256MB的DDR3L RAM,支援具有要求高的記憶體需求的大型MicroBlaze程式。
在設計好SOC配置之後,Xilinx也提供了工具用於在軟核上應用程式開發。這是通過將您的SoC設計匯出到Vivado IPI中並匯入到Xilinx軟體開發包(XSDK)中來完成的,它是一個用於設計/除錯C中的MicroBlaze程式的整合開發環境(IDE)。在IPI到XSDK切換之後,XSDK被自動配置為包括用於SoC中包括的外圍塊的庫和示例。此時,程式設計Arty非常類似於程式設計其他SoC或微控制器平臺:程式用C編寫,通過USB程式設計到板上,然後可選地在硬體中除錯。軟SoC配置和MicroBlaze程式也可以載入到16MB非易失性程式儲存器中,以便在Arty上電後立即執行。
儘管Arty特別適合Microblaze軟SoC設計,它也可以像其他FPGA開發一樣在閘電路級別程式設計。此設計流程要求您在Vivado中使用HDL描述RTL電路,並且它不使用Vivado IPI或XSDK工具。這種設計有許多優點,但與程式設計單板計算機非常不同,而是由熟悉FPGA設計或對設計和實現不包含處理器的數位電路感興趣的人使用。
2.2 電路板電源供應系統
複雜電路一般都有多個晶片負構成整體電源系統,Arty板子也同樣具備該系統:輸入包括7~15V的DC介面和Micro-USB介面;其中DC介面後還接了一個ADP2384晶片,用於將輸入電壓降到5V;5V電壓經過ADP5052晶片分壓成多種電壓,供後級系統使用;特別的ERF3012晶片用於將ADP5052電壓穩定到1.25V,用於XADC的VREF:
下表是電源系統各路的去向:
Supply | Circuits | Device | Current (max/typical) |
---|---|---|---|
5V | Onboard Regulators, RGB LEDs | IC12: Analog Devices ADP2384 | 3.5A/0.375A to 2A |
3.3V | FPGA I/O, Clocks, Flash, PMODs, LEDs, Buttons, Switches, USB port, Ethernet | IC11: Analog Devices ADP5052 | 2.2A/NA |
0.95V | FPGA Core and Block RAM | IC11: Analog Devices ADP5052 | 1.0A/0.2A to 0.8A |
1.8V | FPGA Auxiliary | IC11: Analog Devices ADP5052 | 1.0A/NA |
1.35V | DDR3L and associated FPGA bank | IC11: Analog Devices ADP5052 | 1.0A/NA |
1.25V | XADC Analog Reference | IC13: Texas Instruments REF3012 | 25mA/NA |
3、DEMO
3.1 閃燈DEMO
Getting Started with Vivado : https://reference.digilentinc.com/vivado/getting_started/start
0) sudo 開啟工程:
source /opt/Xilinx/Vivado/2018.2/settings64.sh
sudo /opt/Xilinx/Vivado/2018.2/bin/vivado
1) 建立新工程,命令為blink:
注:視訊中建立blink檔案的時候,clk and led 輸入輸出屬性弄錯了,真正的是:clk是output, led是input
其中包含兩個重要檔案,第一個是板子檔案,另一個是自己建立的verilog檔案。對於板子檔案要和自己的開發板相匹配,此外,對於本工程需要修改下板子檔案(增加clk和led):
## Clock signal
#set_property -dict { PACKAGE_PIN E3 IOSTANDARD LVCMOS33 } [get_ports { CLK100MHZ }]; #IO_L12P_T1_MRCC_35 Sch=gclk[100]
#create_clock -add -name sys_clk_pin -period 10.00 -waveform {0 5} [get_ports { CLK100MHZ }];
set_property -dict { PACKAGE_PIN E3 IOSTANDARD LVCMOS33 } [get_ports { clk }]; #IO_L12P_T1_MRCC_35 Sch=gclk[100]
create_clock -add -name sys_clk_pin -period 10.00 -waveform {0 5} [get_ports { clk }];
...
## LEDs
set_property -dict { PACKAGE_PIN H5 IOSTANDARD LVCMOS33 } [get_ports { led }]; #IO_L24N_T3_35 Sch=led[4
#set_property -dict { PACKAGE_PIN H5 IOSTANDARD LVCMOS33 } [get_ports { led[0] }]; #IO_L24N_T3_35 Sch=led[4]
#set_property -dict { PACKAGE_PIN J5 IOSTANDARD LVCMOS33 } [get_ports { led[1] }]; #IO_25_35 Sch=led[5]
自己建立的.v檔案為:
module blink(
input clk,
output led
);
reg [24:0] count = 0;
assign led = count[24];
always @ (posedge(clk)) count <= count + 1;
endmodule
這樣blink工程實現的功能便是:週期性的控制開發板上的LED0閃爍
2) 編譯燒寫:
接下來便是編譯+燒寫,編譯需要先點選三角形(RUN)進行編譯,然後再點選三角形右邊的(create bitstream)產生*.bit檔案,如果沒有錯誤在messages中不會有錯誤提醒。接著左下角的PROGRAM AND DEBUG欄目中選擇Open Hardware Manager進行連線開發板(連線時選擇auto連線,如果找不到開發板,則說明其他哪裡有問題):
燒寫的時候點選左下角PROGRAM AND DEBUG區域中的program device便可:
此時點選Flow Navigator中的RTL ANALYSIS的Schematic會產生我們編寫程式碼對應的原理圖:
注:更詳細的燒寫方法見LINK-6,bit燒寫掉電會沒有,bin燒寫會掉電保持
LINKS
@beautifulzzzz
智慧硬體、物聯網,熱愛技術,關注產品
部落格:http://blog.beautifulzzzz.com
園友交流群:414948975