1. 程式人生 > >[FPGA] 1、Artix-7 35T Arty FPGA 評估套件學習

[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

注:

包含 Artix-7 XC7A35T-L1CSG324I FPGA

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燒寫會掉電保持

@beautifulzzzz
智慧硬體、物聯網,熱愛技術,關注產品
部落格:http://blog.beautifulzzzz.com
園友交流群:414948975