[FPGA] 1、Artix-7 35T Arty FPGA 評估套件學習 + SiFive risc-v 指令集芯片驗證


時間 作者 版本 備註
2018-10-09 08:38 beautifulzzzz v1.0 到3
2018-10-18 07:23 beautifulzzzz v2.0 risc-v (4)

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 視頻資源


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

  1. 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閃爍


  1. 編譯燒寫:

接下來便是編譯+燒寫,編譯需要先點擊三角形(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燒寫會掉電保持


4、SiFive基於risc-v指令集的芯片驗證

4.1 準備工作

  1. Xilinx Artix-7 35T Arty FPGA Evaluation Kit開發板
  2. ARM-USB-TINY-H(這裏我選用JLink當作Jtag用,省了點錢)


  1. FPGA toolchain(下載WEB版開發工具:https://www.xilinx.com/support/download.html)
sudo chmod +x Xilinx_Vivado_SDK_Web_2018.2_0614_1954_Lin64.bin
sudo ./Xilinx_Vivado_SDK_Web_2018.2_0614_1954_Lin64.bin

下載合適的驅動:

cd /opt/Xilinx/Vivado/2018.2/data/xicom/cable_drivers/lin64/install_script/install_drivers/
sudo ./install_drivers

獲取Diailent板級支持文件,拷貝到Vivado下:

git clone https://github.com/Digilent/vivado-boards.git
sudo cp -r vivado-boards/new/board_files/*  /opt/Xilinx/Vivado/2018.2/data/boards/board_files/

返回到HOME目錄,啓動環境變量(每次新打開一個termianl去啓動VIVADO的時候,都需要執行):

source /opt/Xilinx/Vivado/2018.2/settings64.sh
sudo /opt/Xilinx/Vivado/2018.2/bin/vivado

  1. 通過vivado UI界面給板子配置(燒寫pre-build FPGA二進制程序)

預編譯好的二進制FPGA文件Freedom E310 Arty FPGA Dev Kit Bitstream可以從https://dev.sifive.com/dashboard/下載(需要註冊)

打開vivado -> Hardware Manager -> 選擇板子( Micron part n25q128-3.3v,也可以根據板子來篩選)-> add configuration memory device

燒寫完畢後,點擊PROG按鍵,demo程序將會執行,LED1、LED2會點亮,用上位機打開串口會發現LOG輸出:

sudo minicom -D /dev/ttyUSB0

Welcome to minicom 2.7.1

OPTIONS: I18n
Compiled on Aug 13 2017, 15:25:34.
Port /dev/ttyUSB0, 23:03:08

Press CTRL-A Z for help on special keys

core freq at 65000000 Hz

                SIFIVE, INC.

         5555555555555555555555555
        5555                   5555
       5555                     5555
      5555                       5555
     5555       5555555555555555555555
    5555       555555555555555555555555
   5555                             5555
  5555                               5555
 5555                                 5555
5555555555555555555555555555          55555
 55555           555555555           55555
   55555           55555           55555
     55555           5           55555
       55555                   55555
         55555               55555
           55555           55555
             55555       55555
               55555   55555
                 555555555
                   55555
                     5

SiFive E-Series Software Development Kit 'demo_gpio' program.
Every 2 second, the Timer Interrupt will invert the LEDs.
(Arty Dev Kit Only): Press Buttons 0, 1, 2 to Set the LEDs.
Pin 19 (HiFive1) or A5 (Arty Dev Kit) is being bit-banged
for GPIO speed demonstration.

BT0~3對應板子上的幾個按鍵:

********************************************************
********************************************************
**        Avnet/Digilent Arty Evaluation Board        **
**        LEDs and switches GPIO Demonstration        **
********************************************************
********************************************************
**
Choose Task:
BTN0: Print PWM value.
BTN1: 'Cylon' LED display.
BTN2: Scrolling LED display.
BTN3: Return to this menu.

注: 只要用USB數據線連接上就行,查看串口會發現開發板佔了兩個USB,依次打開,第二個發現會有LOG輸出
注: 此外上位機串口工具請參考: https://blog.csdn.net/zoujiachi666/article/details/79441340


[1].Artix-7 35T Arty FPGA 評估套件官網
[2].vivado license在ubuntu上安裝
[3].board fils下載地址
[4].Installing Vivado and Digilent Board Files
[5].Getting Started with Vivado
[6].Arty Programming Guide
[7].Programming Digilent FPGA Boards Through Multisim


@beautifulzzzz
智能硬件、物聯網,熱愛技術,關注產品
博客:http://blog.beautifulzzzz.com
園友交流羣:414948975
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章