資料介紹
描述
SP701是一款基于 Spartan-7 的 FPGA 開發板。Spartan-7 FPGA 是賽靈思產品線中最理想的 FPGA 之一,因為它的每瓦性能效率。使用 MicroBlaze 軟處理器與 Zynq SoC 對應的物理實例化 ARM 內核相比,我個人發現功耗可以降低近 75%。
SP701 開發板非常方便,因為它的外圍設備和可用 I/O 范圍包括 2 個 RJ45 以太網連接器、USB 到 UART 橋接器、6 個 PMOD、一個 VITA 57.1 FMC LPC、HDMI、MIPI-CSI 和 MIPI-DSI,以及作為一些按鈕和DIP開關。這是概念驗證類型項目的理想起點。
我在這篇文章中創建的硬件設計在功能上等同于 Xilinx 網站上提供的 IPI 示例設計,但將提供有關如何布局設計的詳細指南,因為它是為SP701設計的,因此希望它更清晰從哪里開始添加任何定制設計。
為 SP701 生成許可證文件
SP701(1G/2.5G 以太網控制器)所需的 IP 之一需要許可證才能生成比特流。購買 SP701 評估套件時包含此許可證,因此只需在主機 PC 上的 Vivado 中生成并安裝數字許可證文件。
通過選擇Help > Manage License...從 Vivado啟動Xilinx License Manager
選擇獲取許可證選項卡并選中獲取我的完整或購買的基于證書的許可證選項,然后單擊立即連接,這將在您的瀏覽器中打開一個窗口,訪問 Xilinx 的網站。
出現提示時登錄 Xilinx 網站并提供所需信息(由于 FPGA 的某些敏感信息和美國的出口管制法律,需要提供此信息)。
登錄后,您會看到一個框,您可以在其中輸入代碼,在有要兌換的憑證?輸入 SP701 包裝盒中隨附的快速入門指南背面的憑證編號(它將在條形碼正上方以紅色突出顯示),然后單擊立即兌換。
一個彈出窗口將確認憑證是用于 SP701 評估套件的,單擊Yes 。
SP701 評估套件的基于證書的許可證表頂部將出現一個新行。選中旁邊的框,然后單擊生成節點鎖定許可證(憑證僅適用于節點鎖定許可證,因此不能選擇浮動許可證)。
輸入您的主機 PC 信息,您可以在Xilinx License Manager的查看主機信息下找到該信息。單擊下一步。
確認一切并再次單擊下一步,然后您必須接受許可協議。
許可證文件將通過電子郵件發送給您,說明在 Windows 和 Linux 中放置它的位置。
將電子郵件中收到的 Xilinx.lic 復制到 $HOME/.Xilinx,或者您可以返回Xilinx 許可證管理器并選擇加載許可證,其中的復制許可證按鈕將讓您指向下載的 Xilinx.lic 文件所在的位置,它將復制為您將其復制到 $HOME/.Xilinx。
重新啟動 Vivado,以便它可以檢測并獲取新的許可證文件。
注意:安裝在同一主機上的所有版本的 Vivado 都會選擇此許可證文件,因此不必擔心為每個版本的 Vivado 單獨安裝相同的許可證。
創建新的 Vivado 項目
從 Vivado 主窗口中選擇Create Project ,然后逐步完成項目設置窗口。為項目命名并選擇所需的項目目錄。
保留該選項以在此時不指定源,并且不要選擇使項目成為 Vitis 可擴展平臺的選項(這是不同日期的不同主題)。
最后,必須選擇目標FPGA芯片或開發板。Vivado 2021.2 不再需要手動安裝大量板卡,不僅來自 Xilinx 自己的產品,還包括 Avnet、Digilent 和 Trenz Electronic。Vivado 2021.2 連接到 Xilinx Board Store,這是 Xilinx 維護的 Github 上的后端存儲庫。您最初需要互聯網連接才能刷新并查看 Xilinx 電路板商店的當前版本,并下載所需電路板的預設。之后,您將能夠離線使用它們。
搜索并選擇 SP701 作為目標板,然后單擊Next 。最后一頁是要創建的 Vivado 項目的摘要。
單擊完成以生成項目。
塊設計
99% 的新 Vivado 項目將從創建塊設計開始。塊設計是一種將預先存在的 IP 塊添加到設計中的直接方法,它帶有用于自動設置配置和 IP 之間的接口連接的輔助工具。主要是,塊設計是 FPGA 設計的處理器內核也通過其支持 IP 進行實例化的地方。由于 SP701 的 FPGA 是 Spartan-7,因此必須使用軟處理器(與 Xilinx SoC 系列中的 Zynq 處理器相比,它是 FPGA 可編程邏輯中的物理實例化 ARM 內核)。因此,我將使用 Xilinx 的軟處理器 MicroBlaze。
注意:我不會介紹如何將自定義 HDL 添加到 SP701 的這個特定項目中,它將在以后的帖子中。但是,我過去曾多次為其他董事會介紹過它。
通過在Flow Navigator窗口中選擇IP Integrator下的Create Block Design來創建一個新的模塊設計。
生成空白塊設計后,您會注意到Board選項卡出現。從Sources選項卡切換到Board選項卡,您會看到 Vivado 已檢測到 SP701 板上可用的外圍接口。
此選項卡是選擇特定板作為 Vivado 項目的目標而不是僅選擇 FPGA 部件號本身的好處。它有助于加快設計過程,因為它會在您單擊每個外圍設備時過濾 IP 目錄,以僅顯示哪些 IP 塊可以連接到選定的外圍設備。
通常我首先在塊設計中添加處理器 IP 塊(在本例中為 MicroBlaze),但 SP701 有點不同。由于 DDR3 SRAM 的外部存儲器控制器啟動、運行和同步所需的時間最長,因此最好將其作為振蕩器(系統時鐘)饋送的第一件事,然后將其余 IP 置于下游. 所以我要添加到 SP701 塊設計的第一件事將是內存接口生成器IP 塊。
右鍵單擊Board選項卡中的DDR3 SRAM并選擇Connect Board Component ,然后從彈出窗口中選擇選項mig_ddr_interface 。
跳過運行生成的連接自動化,該連接自動化在 Block Design 窗口頂部以綠色橫幅彈出以連接 FPGA 復位信號。
雙擊Memory Interface Generator IP 模塊以打開其定制窗口。
在FPGA Options下,將System Reset Polarity更改為Active High并將XADC Instantiation更改為Disabled 。
在Pin Selection選項卡中,單擊 Read UCF/XDC 并導航到您保存 SP701 (mig_7series_0.xdc) 的 DDR 引腳輸出文件的位置,以將其讀入 Memory Interface Generator (MIG) IP 塊。
導入 DDR 引腳后,單擊Validate 。驗證引腳后,下一步按鈕將不再灰顯。
在System Signals Selection選項卡中,將sys_rst Bank Number設置為13 ,將 sys_rst Pin Number設置為AE15 。
單擊顯示指定配置摘要的其余選項卡,然后在最后一頁上單擊Generate 。
現在運行生成的連接自動化,它會在 Block Design 窗口頂部以綠色橫幅彈出,以連接 FPGA 復位信號。
單擊塊設計窗口頂部的+按鈕并鍵入microblaze以搜索軟處理器 IP 塊。在三個選項中,雙擊MicroBlaze將軟處理器的核心添加到塊設計中。
塊自動化和連接自動化的選項將出現在塊設計窗口的頂部。
首先運行塊自動化并選中該框以啟用中斷控制器。還將時鐘連接更改為來自/mig_7series_0/ui_clk 。由于這個外部存儲控制器是啟動、運行和同步所需的最長時間,因此最好將其他所有東西(例如軟處理器本身)放在它的下游。因此,MIG 的輸出時鐘被用作 MicroBlaze 的源時鐘以及將在塊設計中的 IP 的其余部分。
為 MicroBlaze運行Block Automation后,運行Connection Automation 。在運行連接自動化的可用選項中,僅選擇MIG ( mig_7series_0 ) 的從 AXI ( S_AXI ) 的連接自動化。
再次單擊塊設計窗口頂部的+按鈕,并將AXI BRAM 控制器添加到塊設計中。運行 AXI BRAM 控制器的所有連接自動化,確保將S_AXI 主接口設置為/microblaze_0 (cached) 。
返回Board選項卡并右鍵單擊Onboard PHY1并選擇Connect Board Component ,然后從彈出窗口中選擇選項AXI 1G/2.5G Ethernet Subsystem 。
運行生成的Block Automation,為Physical Interface Selection選擇RGMII ,為AXI Streaming Interface選擇DMA 。
對于AXI 1G/2.5G以太網子系統的連接自動化,不要選擇axis_clk (這將在下一步中手動連接)。要重置 Connection Automation,請進行以下選擇:
對于axi_ethernet_0 :
- 選擇時鐘源為/mig_7series_0/ui_clk的S_AXI
對于axi_ethernet_0_dma :
- 選擇源為/mig_7series_0/S_AXI的M_AXI_MM2S 、M_AXI_S2MM和M_AXI_SG 。
- 選擇源為/microblaze_0 ( Periph ) 的 S_AXI_LITE
對于axi_ethernet_0_refclk :
- 選擇源為/mig_7series_0/ui_clk的clk_in1
運行此 Connection Automation 后,返回并手動將axi_ethernet_0的axis_clk連接到axi_ethernet_0_refclk的clk_ou1
接下來,單擊模塊設計窗口頂部的+按鈕,并將XADC向導添加到模塊設計中。運行生成的連接自動化,將其源設置為/microblaze_0 (Periph)
雙擊XADC Wizard IP 以打開其自定義窗口并在指定選項卡下進行以下更改:
- 基本:將啟動通道選擇更改為同時選擇并在控制/狀態端口下啟用臨時總線
- 通道定序器:啟用vauxp0/vauxn0 通道啟用
單擊確定應用并關閉自定義窗口。右鍵單擊XADC Wizard IP 塊的Vp_Vn端口,然后選擇Make External選項。對Vaux0和Vaux8執行相同的操作。這個Make External選項將信號拉到設計的頂層,這樣它就可以連接到 FPGA 芯片的封裝引腳。
最后手動將XADC Wizard的temp_out[11:0]連接到Memory Interface Generator的device_temp_i[11:0] 。
至此,設計中最復雜的部分就完成了。現在可以添加其余的外圍設備。返回到 Board 選項卡,右鍵單擊以下每個外圍設備,選擇Connect Board Component ,然后為每個相應的 IP 選擇以下內容:
- SPI Flash :選擇SPI_0并運行生成的 Connection Automation,時鐘源為/mig_7series_0/ui_clk 。
- UART:選擇AXI UART16550并運行生成的 Connection Automation,時鐘源為/mig_7series_0/ui_clk 。
- IIC :選擇IIC并運行生成的 Connection Automation,時鐘源為/mig_7series_0/ui_clk 。
- DIP 開關、按鈕和LED :選擇GPIO并運行生成的 Connection Automation,時鐘源為/mig_7series_0/ui_clk 。
產生以下塊設計:
單擊模塊設計窗口頂部的+按鈕并將AXI Timer IP 添加到模塊設計,再次運行生成的連接自動化,時鐘源為/mig_7series_0/ui_clk 。
有一個concat IP 塊為AXI 中斷控制器IP的中斷輸入端口供電。默認情況下,此 concat 僅配置為接收兩個輸入,但總共有 8 個中斷信號需要通過 AXI 中斷控制器饋送到 MicroBlaze 軟處理器。雙擊 concat IP 打開其配置窗口并將其端口數從2更改為8 ,然后單擊OK 。
按以下順序連接中斷輸出:
- In0 :AXI UART16550 ip2intc_irpt
- In1 :AXI IIC ip2intc_irpt
- In2 :AXI Quad SPI ip2intc_irpt
- In3 :AXI 1G/2.5G 以太網子系統中斷
- In4 :AXI 直接內存訪問mm2s_introut
- In5 :AXI 直接內存訪問s2mm_introut
- In6 :AXI 定時器中斷
- In7 :XADC 向導ip2intc_irpt
有一些自定義頻率計數器 IP 可用于各種應用。我已將它們附在下面,您需要將它們放在本地目錄中,然后將該目錄指定為 Vivado 項目中的存儲庫。
將 IP 文件夾復制到所需的本地目錄后,從Flow Navigator窗口中選擇Settings 。選擇IP > Repository ,然后單擊+按鈕并指向 IP 文件夾所在的本地目錄。Vivado 將彈出一個窗口,顯示它在目錄中檢測到的 IP。單擊確定。
單擊應用,然后單擊確定。
在模塊設計窗口中,單擊+按鈕并添加一個freq_counter_v1 IP 模塊和兩個diff_freq_counter_v1 IP 模塊。將每個的 RST_I連接到rst_mig_7series_0_100M的peripheral_reset ,將每個的REF_CLK_I連接到mig_7series_0的ui_clk 。
將freq_counter_v1_0的CLKIN連接到mig_7series_0的ui_addn_clk_0 。
右鍵單擊diff_freq_counter_v1_0的DIFF_CLKIN_P和DIFF_CLKIN_N并選擇 Make External。然后分別重命名端口FMC_CLK0_M2C_P和FMC_CLK0_M2C_N 。
對diff_freq_counter_v1_1執行相同操作,只是將其端口分別重命名為FMC_CLK1_M2C_P和FMC_CLK1_M2C_N 。
然后添加 3 個AXI GPIO IP 塊,其中一個通道為 16 位所有輸入。僅為S_AXI接口運行生成的連接自動化,時鐘源為/mig_7series_0/ui_clk 。不要在Connection Automation 中為AXI GPIO IP選擇GPIO選項。
將freq_counter_v1_0的FREQ_CNT_O[15:0]連接到剛剛創建的 3 個 AXI GPIO 塊之一的gpio_io_i[15:0] 。
然后從diff_freq_counter_v1_0和diff_freq_counter_v1_1連接FREQ_CNT_O[15:0]并將它們連接到其他兩個AXI GPIO塊的gpio_io_i[15:0] 。
至此,SP701 這個包羅萬象的模塊設計就完成了。一旦我達到這一點(我通常在添加 IP 塊的每個實例之后執行此操作)就是使用Regenerate Layout工具使塊設計更易于查看。單擊塊設計窗口頂部的圓形箭頭圖標以重新生成塊設計中的布局。
最終設計:
創建任何塊設計的最后一步是對其進行驗證,以確認它沒有任何嚴重的警告或錯誤。單擊塊設計窗口頂部的復選框圖標,然后等待驗證彈出窗口出現結果:
單擊確定并保存塊設計。
然后返回“源”選項卡。此時,模塊設計需要通過頂層 HDL 文件在整個項目中進行實例化,您可以告訴 Vivado 自動生成該文件。
HDL 包裝器
右鍵單擊 Sources 選項卡中的模塊設計 (.bd) 文件并選擇Create HDL Wrapper...讓 Vivado 自動生成它。
在彈出窗口中,選擇默認選項以允許 Vivado 自動管理 HDL 封裝文件。
約束
完成模塊設計和頂層封裝文件后,要添加的最后一項是指定到 Spartan-7 FPGA 封裝引腳的信號路由的約束文件。
從Flow Navigator窗口中選擇添加源。選擇添加或創建約束選項,并在項目本地創建一個新的約束文件。
為 SP701 評估板添加以下約束:
set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design]
set_property CONFIG_MODE SPIx4 [current_design]
set_property BITSTREAM.CONFIG.CONFIGRATE 3 [current_design]
set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]
set_property BITSTREAM.CONFIG.UNUSEDPIN Pulldown [current_design]
set_property CFGBVS VCCO [current_design]
set_property CONFIG_VOLTAGE 3.3 [current_design]
set_property PACKAGE_PIN H21 [get_ports Vaux0_0_v_n]
set_property IOSTANDARD LVCMOS33 [get_ports Vaux0_0_v_n]
set_property IOSTANDARD LVCMOS33 [get_ports Vaux0_0_v_p]
set_property IOSTANDARD LVCMOS33 [get_ports Vaux8_0_v_n]
set_property IOSTANDARD LVCMOS33 [get_ports Vaux8_0_v_p]
set_property PACKAGE_PIN D9 [get_ports FMC_CLK0_M2C_P]
set_property IOSTANDARD LVDS_25 [get_ports FMC_CLK0_M2C_P]
set_property IOSTANDARD LVDS_25 [get_ports FMC_CLK0_M2C_N]
set_property PACKAGE_PIN J4 [get_ports FMC_CLK1_M2C_P]
set_property IOSTANDARD LVDS_25 [get_ports FMC_CLK1_M2C_P]
set_property IOSTANDARD LVDS_25 [get_ports FMC_CLK1_M2C_N]
set_property IOSTANDARD LVCMOS18 [get_ports reset]
這些限制還包括 QSPI 閃存芯片的電路配置。
生成比特流
Vivado 遵循綜合的標準 FPGA 開發流程,然后是布局布線(在 Vivado 中稱為實現),最后是比特流生成。每個步驟都出現在 Flow Navigator 窗口中以手動運行。值得注意的是,如果您嘗試在綜合之前運行實現,Vivado 將在啟動實現運行之前自動執行綜合運行。
我在 Vivado 2021.x 版本中發現了一個有趣的怪癖,有時(但并非總是)如果您單獨運行每個步驟(即您手動單擊“運行綜合”、“運行實現”和“生成比特流”,則會出現嚴重警告彈出說找不到目標FPGA的板定義文件。
這是一個完全“絨毛”的警告,對項目沒有功能影響(板定義文件沒有實際問題),但我覺得它非常煩人。幸運的是,有一個超級簡單的解決方法,如果您始終選擇“生成比特流”并讓 Vivado 自動重新運行綜合和實現,則永遠不會彈出此嚴重警告。我只發現這可能發生在 Linux 上的 Vivado 2021.x 版本中,所以如果它沒有出現在您面前,請忽略這個小插曲。
無論如何,由于我選擇“生成比特流”之前沒有進行綜合或實現運行,Vivado 會通知我并要求繼續:
單擊“是”后,Vivado 將為我提供一些關于如何利用主機 PC 資源的選項。我通常總是將這些選項設置為默認值。
我有一個帶有 32GB RAM 的 Intel i9 處理器,從開始合成到完成此設計的比特流生成大約需要 10 分鐘。
出口硬件
成功生成比特流后,需要導出硬件平臺以在 Vitis 和/或 PetaLinux 中使用,以便在 MicroBlaze 軟處理器上運行代碼的軟件開發。
選擇文件>導出>導出硬件...
選擇將比特流包含在導出的硬件平臺中,然后選擇所需的輸出目錄。
我個人喜歡將其導出到 Vivado 項目目錄的頂層,以便將所有內容放在一個位置。
這就是 Vivado 中 SP701 硬件設計的全部內容。我將在這篇文章之后提供基于此硬件設計在 Vitis 中創建 lwIP 回顯服務器的指南。
- SP701評估套件快速入門指南
- SP701評估板用戶指南
- SP701上的lwIP入門
- OMAP-L138+Spartan-6 FPGA開發板規格書
- STM32 Linux開發板推薦 ,入門進階必備!
- AXU2CG FPGA XLINX開發板底板原理圖 29次下載
- PIC24FJ256GA7 Curiosity開發板快速入門指南 19次下載
- 黑金Spartan6開發板的Verilog教程詳細說明 68次下載
- Xilinx FPGA開發板SP605的電路原理圖免費下載 25次下載
- xinlinx-Spartan6開發板原理圖 85次下載
- Artix-7 FPGA AC701開發板-板載Debug Checklist 100次下載
- 基于Spartan3火龍刀系列FPGA開發板制作的VGA實驗例程 8次下載
- Xilinx SPARTAN-3E入門開發板實例 44次下載
- spartan 3E 開發板的安裝指導 8次下載
- IDS1-XC3S400開發板用戶手冊
- fpga開發板是什么?fpga開發板有哪些? 2099次閱讀
- fpga開發板使用教程 1211次閱讀
- fpga開發板與linux開發板區別 2364次閱讀
- 如何使用代碼控制開發板 3893次閱讀
- 微雪電子FPGAXILINX XC3S250E開發板簡介 3344次閱讀
- digilentPcam 5C開發板的成像模塊介紹 2689次閱讀
- digilent Artix-7 FPGA訓練板介紹 2256次閱讀
- digilentSpartan-7開源創客開發板介紹 3371次閱讀
- digilent Spartan-3E FPGA訓練板介紹 2935次閱讀
- digilent Spartan-3E起步板介紹 3817次閱讀
- digilent Cmod S7: Spartan-7 FPGA 介紹 3162次閱讀
- Scarab Hardware公司的mini Spartan6+開發板介紹 3882次閱讀
- 新手入門應如何選擇ARM開發板_選擇開發板的注意事項 4.3w次閱讀
- 經驗分享:如何選購FPGA開發板 5570次閱讀
- FPGA開發板使用和配置方式 6798次閱讀
下載排行
本周
- 1A7159和A7139射頻芯片的資料免費下載
- 0.20 MB | 55次下載 | 5 積分
- 2PIC12F629/675 數據手冊免費下載
- 2.38 MB | 36次下載 | 5 積分
- 3PIC16F716 數據手冊免費下載
- 2.35 MB | 18次下載 | 5 積分
- 4dsPIC33EDV64MC205電機控制開發板用戶指南
- 5.78MB | 8次下載 | 免費
- 5STC15系列常用寄存器匯總免費下載
- 1.60 MB | 7次下載 | 5 積分
- 6模擬電路仿真實現
- 2.94MB | 4次下載 | 免費
- 7PCB圖繪制實例操作
- 2.92MB | 2次下載 | 免費
- 8零死角玩轉STM32F103—指南者
- 26.78 MB | 1次下載 | 1 積分
本月
- 1ADI高性能電源管理解決方案
- 2.43 MB | 452次下載 | 免費
- 2免費開源CC3D飛控資料(電路圖&PCB源文件、BOM、
- 5.67 MB | 141次下載 | 1 積分
- 3基于STM32單片機智能手環心率計步器體溫顯示設計
- 0.10 MB | 137次下載 | 免費
- 4A7159和A7139射頻芯片的資料免費下載
- 0.20 MB | 55次下載 | 5 積分
- 5PIC12F629/675 數據手冊免費下載
- 2.38 MB | 36次下載 | 5 積分
- 6如何正確測試電源的紋波
- 0.36 MB | 19次下載 | 免費
- 7PIC16F716 數據手冊免費下載
- 2.35 MB | 18次下載 | 5 積分
- 8Q/SQR E8-4-2024乘用車電子電器零部件及子系統EMC試驗方法及要求
- 1.97 MB | 8次下載 | 10 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935121次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420062次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233088次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191367次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183335次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81581次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73810次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65988次下載 | 10 積分
評論
查看更多