大俠好,歡迎來到FPGA技術江湖,江湖偌大,相見即是緣分。大俠可以關注FPGA技術江湖,在“闖蕩江湖”、"行俠仗義"欄裡擷取其他感興趣的資源,或者一起煮酒言歡。
今天給大俠帶來FPGA Xilinx Zynq 系列第十六篇,開啟第六章The ZedBoard,本篇内容目錄簡介如下:
6. The ZedBoard
6.1 介紹 Zed
6.2 ZedBoard 系統架構
6.3 ZedBoard 設計流程
6.4 ZedBoard 入門
6.4.1 盒子裡有什麼?
6.4.2 硬體安裝
6.4.3 燒寫 ZedBoard
6.5 MicroZed
6.6 文檔,教程和支援
6.6.1 關于 ZedBoard 的文檔
6.6.2 示範和教程
6.6.3 線上課程
6.6.4 其他 ZedBoard 資源和支援
6.7 ZedBoard.org 社群
6.7.1 社群工程
6.7.2 部落格
6.7.3 支援論壇
6.8 章節回顧
6.9 參考文獻
本系列分享來源于《The Zynq Book》,Louise H. Crockett, Ross A. Elliot,Martin A. Enderwitz, Robert W. Stewart. L. H. Crockett, R. A. Elliot, M. A. Enderwitz and R. W. Stewart, The Zynq Book: Embedded Processing with the ARM Cortex-A9 on the Xilinx Zynq-7000 All Programmable SoC, First Edition, Strathclyde Academic Media, 2016。
The ZedBoard
現在我們已經解決了一些關于Zynq裝置的基本問題,是時候考慮Zynq最受歡迎的開發闆之一 ——ZedBoard。它的名字,“Zed” 來自于 Zynq 評估和開發 (ZynqEvaluation and Development)。ZedBoard 是截止到落筆為止可用的開發和評估闆之一。它的價格非常适合于學生和愛好者,另外還有一個 ZedBoard 使用者的線上社群。
在這章中,會介紹 ZedBoard 的架構和特性,以及一些入門的基礎資訊,還有 Xilinx 設計工具中為 ZedBoard 內建的支援。為建立 Zedboard 設計,目前可用的資源包括,教程,視訊,支援,以及值得特别一提的 ZedBoard 社群也都将被提到。
6.1 介紹 Zed
ZedBoard 是一款低功耗,基于社群的闆卡,搭載了 XC7Z020 Zynq 裝置。它是由 Xilinx,Avnet( 分銷商 ) 和 Digilent (生産商)聯合經營的。盡管這是适合于工業的開發平台,ZedBoard 具有滿足新 Zynq 使用者的特定材料 , 符合初學者的學習曲線,是以也以學生、學者和愛好者為使用者。由 Avnet 營運的網絡社群 (ZedBoard.org)緻力于幫助使用者,詳細資訊将在 6.7 節中被提到。
6.2 ZedBoard 系統架構
正如介紹中提到的一樣,ZedBoard 搭載了一個 XC7Z020 裝置。這是一種小型的 Zynq-7000 裝置,擁有基于 Artix-7 的邏輯構造,以及 13300 個邏輯單元,220 個DSP48E1, 和 140 個 BlockRAMs。該盡管它沒有高速收發器和 PCI 串行總線子產品,但是裝置有一個基于 XADC 的 IP 硬核。ZedBoard 上有很多外設接口:
- GPIO: 總共 9 個 LED 燈 ,8 個開關,7 個按鈕
- 音頻晶片 (Analog Devices ADAU1761,支援音頻線路輸入,音頻線路輸出, 麥克風輸入,耳機輸出)
- 視訊 (HDMI)
- 視訊 (VGA)
- 有機發光二極管 (OLED)顯示器• Pmod 接口 (5 個)
- 以太網
- USB-OTG ( 外設 )
- USB-JTAG ( 用于燒寫 )
- USB-UART ( 用于通信 )
- SD 卡槽 (位于闆卡下方)
- FMC 接口
- XADC 接口
- Xilinx JTAG 接口
另外,Zynq 裝置還被接到了一個 256Mbit 大小的閃存和 512MB 大小的 DDR3 内 存上,這兩者都可以在闆卡上找到。還有兩個振蕩時鐘源,其中一個頻率為100MHz,另一個則是 33.3333MHz。這些特征都在圖 6.1 中重點标出。
圖 6.1: ZedBoard 布局和接口 (正面)
6.3 ZedBoard 設計流程
ZedBoard 的設計流程已在第 3 章有所描述,另外工具鍊裡還有為 ZedBoard 提供的專門支援,利用這個可以加速開發流程。
當在 Vivado 中建立工程時,使用者會被提示選擇設計的目标平台。這時,part 部分可以被選擇為 zc7z020clg484-1( 也就是 ZedBoard 上搭載的 Zynq 裝置 ),但是注意這裡還有另外一個方法就是選擇 board 選項。在這裡,選擇 ZedBoard Zynq Evaluation and Development Kit選項意味着設計工具不止知道了正确地目标 Zynq 裝置,還知道了 ZedBoard 上特殊的特性和可用的外設(例如,LED 燈的數量,開關和按鈕使用的 GPIO 接口)。
選擇階段如圖 6.2。截止到寫這篇文章的時候,ZedBoard是由兩個的版次 (c 和 d), 是以你需要查閱你的闆卡的文檔以确定要選擇哪個。同時還有許多其他的目标闆卡可用,如果你使用這些中的一個 (比如 ZC702 或 ZC706 評估闆),這可以在設計流程中确定目标闆卡的獨特支援功能。
圖 6.2: 當 ZedBoard 作為目标闆卡時 Vivado 工程選項
6.4 ZedBoard 入門
本節中會提供 ZedBoard 工具包的簡短概述,以及完成闆卡硬體安裝的初始步驟。
6.4.1 盒子裡有什麼?
當你第一次打開盒子時,你會發現裡面除了 ZedBoard 自身以外還有很多東西。這些會由 Avnet 提供的一段視訊說明以及登載在 ZedBoard.org 的網站上。就像我們在圖 6.1 中所見的那樣,視訊會提供 ZedBoard 與衆不同的特點,以及關于運作開箱即用的設計的必須步驟。
确認一遍 ZedBoard 盒中的内容,你應該可以在裡面發現如下物品:
- Zedboard,裝在一個抗靜電袋子中
- 一張包含軟體設計工具的 DVD
- 一個可以安裝美國或歐洲接口類型的電源擴充卡
- 一條 USB-A 到 micro-USB-B 的連接配接線
- 一條 micro-USB-B 到 USB-A 母口的适配線
- 一張 4GB SD 卡
- 一個刊有入門資訊的小頁 [7]
值得記住的是那些不住在使用美國或歐洲電源接口的地區的人們可能需要一個額外的适配本地接口類型的電源擴充卡。比如住在英國的人需要一個美國到英國,或者歐洲到英國的轉換擴充卡。
還有一個普遍的需求,特别是當你遵循早期的教程,你将需要第二條 USB-A 到 micro-USB-B 的連接配接線(注意原本隻提供了一根這樣的連接配接線,你需要另找一根)。同時這也取決于你想要使用的 ZedBoard 外設,你可能需要額外的音頻,視訊和以太網的連接配接線等等。
6.4.2 硬體安裝
ZedBoard 需要連接配接到一個電源,并且被預設配置成讓主機通過 USB 的 JTAG 來燒寫 ( 即 USB-A 到 micro-USB-B 的連接配接 )。如果要通過終端程式使用 UART 來完成闆卡和 PC 之間的通信,則額外還需要一個的連接配接。這兩個接口的位置如圖 6.3 所示。如果要使用連接配接 USB 外設的話,注意這裡還有第三個 micro-USB 接口是為此保留(這可以在圖檔的底部看到)。
圖 6.3: ZedBoard 的正面左上角,明确電源與 USB 連接配接器位置
如果要使用USB-UART連接配接,需要安裝正确的裝置驅動。這些驅動可以從Cypress 得到,安裝過程的詳細資料可以在文獻 [2] 中找到,包括驅動檔案的下載下傳連結。
6.4.3 燒寫 ZedBoard
ZedBoard 可以通過四個不同的方法燒寫,這些方法是:
- USB-JTAG — 這是預設的并且是最直接的燒寫 ZedBoard 的方法 , 這隻要通過 ZedBoard 工具包的 USB 到 micro-USB 連接配接線就可以直接完成。
- 傳統 JTAG — 闆卡上有一個可用的 Xilinx JTAG 接口,如果需要的話可用來 替代 USB-JTAG 連接配接。這會需要一根未包含在 ZedBoard 工具包中的連接配接線:如一根 Xilinx Platform USB 連接配接線 [11],或者一根 Digilent USB-JTAG 燒 寫線 [10]。
- Quad-SPI 閃存 — 闆卡上的閃存是非易失性的,是以它可以用來儲存闆卡上 次斷電時的配置資訊。使用這種方法不需要連接配接線來燒寫 Zynq 裝置。
- SD 卡 — ZedBoard 的背面有一個 SD 卡槽。利用這個特性可以通過 SD 卡中存 儲的檔案來燒寫 Zynq,并且不需要任何燒寫線。這種方法在 《ZedBoardGetting Started Guide》中有所描述 [6]。
圖 6.4: 跳線設定選項
其中 JTAG 方法尤其适合于開發階段,因為此時可以很友善地在開發用 PC 和 ZedBoard 之間建立一個 USB/JTAG 連接配接。另外兩種方法則更加便攜,并且基本上更加适合于作為一種現場程式設計的方法。值得一提的是 JTAG 是一種不安全的機制,而其他方法都是安全的;這是在實驗環境外需使用 flash 和 SD 卡配置法的另一個理由。關于引導的詳細内容會在第 24 章讨論,屆時使用基于 Linux 的作業系統。
ZedBoard 的使用者可以通過一系列的跳線來選擇引導 / 燒寫方式,這些跳線位于 Digilent logo 的下方,并在圖 6.4 中有所标注。在五個跳線中,中間的三個被用 來定義闆卡的燒寫資訊來源 (JTAG,閃存或 SD 卡),最右邊的控制 JTAG 的模式,最左邊則決定内部 PLL 是否被使用。
這裡面,最後兩個選項需要更深入地講解一下。JTAG 模式是關于 JTAG 的調試 方式的:這可以是串聯的,當使用一個 JTAG 同時連接配接 PS 和 PL 的調試接口時可以如此使用;也可以是獨立的,當 PS 和 PL 的調試接口是被分開連接配接的時候使用,此時每一端都各自需要一根連接配接線。PLL 模式則決定了在開始引導過程之前,是否需要在裝置配置過程中包含一個等待 PLL 鎖定的階段。如果決定繞過 PLL,則會在引導時花費更多的時間。
還有大量關于配置選項和配置過程的資訊在《Zynq-7000 Technical Reference Manual》[13] 中。
表 6.1 中列出了被允許的跳線設定,其例子也在圖 6.5 中給出。
表 6.1: ZedBoard 跳線配置設定 [8]
圖 6.5: ZedBoard 所有跳線設定選項
6.5 MicroZed
MicroZed 是繼 ZedBoard 的成功之後的又一塊基于 Zynq 的開發闆。闆卡更小, 擁有的更少的外設,價格上也更便宜。MicroZed 的預設配置搭載 ZC7Z010 Zynq 裝置 (比 ZedBoard 上的要小一些)。MicroZed 既可以當做一個獨立的開發闆來用,也可以附加在底闆上當成一個子產品來用。相比于獨立操作,把 MicroZed 當成一個附加在底闆上的子產品來用的一個優勢就是可以使用額外的輸入輸出功能。盡管本章我們主要考慮 ZedBoard,MicroZed 和它的底闆也都可以在以下網站上找到并獲得支援。
www.ZedBoard.org
6.6 文檔,教程和支援
無論是 Zynq 的新使用者還是老使用者,都很有可能在某些階段需要參考關于 ZedBoard 的文檔。這些資訊和關鍵文檔可以從很多來源擷取,特别是通過它們還可以獲得更進階的知識。這些來源包括關于 ZedBoard 自身的文檔,闆卡的示範和教程,以及一些來自其他來源的支援。除此之外,所有之後提到的資料都可以在Zedboard.org 的 Documentation 頁面找到。
http://www.zedboard.org/support/documentation
雖然 ZedBoard 網站上的資料十分有用,但也要注意,這些網絡資料是動态的, 并且會随時間變化。尤其是版本變化時會出現新的資料。
6.6.1 關于 ZedBoard 的文檔
在關于闆卡自身的文檔方面,主要的資訊來源就是 ZedBoard 的硬體使用者手冊 [8],這裡面涵蓋了 ZedBoard 的各個功能,包括時鐘和重置信号源,電源電路,配置方法,跳線設定,片上存儲,外設接口,管腳電壓和擴充接頭。ZedBoard 勘誤文檔對這些資訊提供了一些必要更新 [4]。硬體手冊是一個很有用的參考文檔,特别是對于想要在闆卡上開發外設的使用者。
Master constraints files 是所有關于輸入輸出連接配接配置集合的檔案,這些限制檔案同時可以在 ISE 設計流程中的 .ucf 檔案和 Vivado 設計流程中的 .xdc 檔案中包含使用。
另一重要文檔關于 USB-UART 連接配接,這需要下載下傳特定驅動并在主機上安裝。這個過程可以在 《Cypress CY7C64225 USB-to-UART Setup Guide》中找到 [2]。
包含圖表、機械圖紙和材料清單的更多地闆卡相關資訊可以在以下網站上找 到,所有這些文檔都可以在 Support/Documentation 闆塊下 [14]。
www.ZedBoard.org
6.6.2 示範和教程
許多示範和教程可以協助入門。而以下這些是特别有用的:
- Getting Started Instructions卡 [7] — 在工具包中得到的一個簡短引導, 用來确定 ZedBoard 是否工作正常。
- Overview of the ZedBoard Kit 視訊 [3] — 示範如何檢查 ZedBoard 工具包 中的部件,以及如何連接配接闆卡開始工作。
- Getting Started Guide [6] — 包含許多 ZedBoard 的功能示範。
- ZedBoard: Zynq-7000 AP SoC Concepts, Tools, and Techniques (CTT) 指 南 [12] — 一個介紹 PL 和 PS 的教程,十分有用。
一些引導可能會含有一系列檔案,以及可能會針對某一特殊版本的 Xilinx 工 具,是以在開始前檢查一下版本是否正确是很重要的。
6.6.3 線上課程
在 ZedBoard.org 上有許多可用的課程,并且對于網站的注冊使用者來說都可以免費獲得。另外,教育機構的成員 ( 教師,研究者和學生 ) 可以通過 Xilinx 大學計劃擷取更多資源。教學材料會在第 7 章提到。
ZedBoard.org 上的最主要的練習資料是 Avnet 提供的 SpeedWay Training。在 本文起草時候,已經有四個課程可用,分别是 《Introduction to Zynq》 , 《Implemeting Linux on Zynq-7000 Soc》,《Software Defined Radio on Zynq》 和 《Debugging Arm Procesor System》。
另一個非正式的練習來源是 ZynqGeek,一個 ZedBoard.org 社群成員釋出的博 客。它一般會給出一些特定的程式(有時也釋出在 ZedBoard.org 的論壇中),還有比如 “HelloWorld” 的例子;如何在 PL 上建立并連接配接外設;以及建立 Linux 核心等話題。關于 ZedBoard 社群的内容會在之後的 6.7 小節讨論。
6.6.4 其他 ZedBoard 資源和支援
一般來說,看一些其他人的設計很有好處,是以在 ZedBoard.org 釋出的多個參考設計十分有用。它們被放在 Support/Reference Design 闆塊下,主要由 Avnet 和其他 ZedBoard 人員開發的标準工程組成。這些工程包括一個四相移相鍵控(QPSK)示範,一個使用基于 Zynq 的 HDMI 視訊設計,以及 Zynq 上的桌面 Linux 系統。其中有部分需要不包含在 ZedBoard 工具包中的額外的子產品,比如 Pmod 或 FMC 闆卡。
6.7 ZedBoard.org 社群
這是 ZedBoard 的社群闆塊,由 www.ZedBoard.org 網站維護。讓 ZedBoard 區 别于其他開發闆,并且建立了一個環境使 ZedBoard 使用者可以擷取資源,交流想法以及互相幫助以解決問題。這裡着重點出該網站的社群方面,至于其他方面,尤其是文檔,在之前的章節以及有所涵蓋。
6.7.1 社群工程
除了參考設計外,社群中還有一個頁面釋出社群工程,這些設計由 ZedBoard 網站成員貢獻,既可以分享完整的設計,也可以是未完成的工程,放在那裡尋找幫助,或者促進參與度。所有社群成員都可以送出社群工程,這需要經過一個簡短的稽核程式。這些工程按照貢獻日期,包含 OLED 顯示、電機控制、使用 AMS101 附加子產品的混合信号處理程式。這些工程包含了一系列的從簡單系統開始的主題。其中也一部分需要使用額外的子產品,但是大部分都隻需要 ZedBoard 本身即可。
6.7.2 部落格
ZedBoard.org 社群也有部分被連結到 Zynq 愛好者的部落格。直到本文起草,其 中有兩個特别活躍的部落格,ZynqGeek 和 Zynq from scartch。個人部落格的發表經常會基于一些難題,以及解釋 Zynq 設計中一些疑雜的地方,無論是關于基本原則,硬體設計還是軟體開發。這之中許多都遵循着教程的格式。部落格的發表經常會激勵其他人的提問和評論,這也增加了社群的感覺。
6.7.3 支援論壇
在釋出後一年之内,超過 3000 塊 ZedBoard 賣給了社群,另有差不多數量賣給了學術機構 [9],是以該平台擁有強力并且高速增長的使用者群。他們論壇的形式轉化成了一個健康的 ZedBoard社群。這些論壇給 ZedBoard使用者提供了一個問答平台,特别是為初學者提供了一個尋找幫助的優質環境。這些設施同時提供中英文兩種語言。ZedBoard 使用者也可以在 Xilinx 官方論壇中提問和解答:http://forums.xilinx.com/
6.8 章節回顧
本章節主要介紹了 ZedBoard,一款搭載 Zynq XC7Z020 裝置的低功耗評估和開發 闆。本章中包含了 ZedBoard 的重點特性,同時重點闡述了闆卡上多種實體接口以及它們的作用。我們同樣看到了設計工具對于 ZedBoard 的特殊支援 (同樣對于其他開發闆也是),這可以幫助加快設計程序。
ZedBoard一部分目标是鼓勵學術和愛好者社群使用 Zynq,是以特别為初學者 入門 Zynq 提供了大量的可用資源。在之前的幾頁中,我們确認了 ZedBoard 工具包中的内容,解釋了如何安裝,以及總結了 ZedBoard 入門資訊的幾個關鍵來源。之後,我們讨論了 ZedBoard的社群方面,尤其關注了社群工程,以及論壇之類的,“活的 ” 資源以解決技術問題以及和相同平台内的其他人交換想法。
ZedBoard 擁有大量使用者,特别是學術機構。在下一章,我們的主題繼續聚焦于 Zynq 和 ZedBoard 的教育,研究和練習。
6.9 參考文獻
說明:所有的 URL 最後在 2014 年 6 月通路過。
[1] Analog Devices, “Analog Devices FMC - Communications Board: Analog Connectivity with Xilinx Zynq”, 2012. 位于 :http://www.analog.com/static/imported-files/overviews/FMC-Communications_Product_Highlight.pdf
[2] Avnet, “Cypress CY7C64225 USB-to_UART Setup Guide”, version 1.3, January 2014.
[3] Avnet, “Overview of the ZedBoard Kit”, 視訊 .位于 : http://www.zedboard.org/videos/overview-zedboard-kit
[4] Avnet, “ZedBoard Rev C.1 Errata”, revision 1.4, January 2014.
[5] Avnet, “ZedBoard Rev D.2 Errata”, revision 1.1, January 2014.
[6] Avnet, “ZedBoard Getting Started Guide”, version 7.0, January 2014.
[7] Avnet, “ZedBoard Getting Started Instructions”.
[8] Avnet, “ZedBoard (Zynq Evaluation and Development) Hardware User’s Guide”, version 2.2, January 2014.
[9] BusinessWire 網站 , “Avnet Electronics Marketing Celebrates One Year of ZedBoard”, 23rd July, 2013. 位于 : http://www.businesswire.com/news/home/20130723005579/en/Avnet-Electronics-MarketingCelebrates-Year-ZedBoard
[10]Digilent, Inc., “XUP USB-JTAG Programming Cable” 網頁 . 位于 : http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,395,716&Prod=XUP-USB-JTAG
[11]Xilinx, Inc., “Platform Cable USB II” 網頁 . 位于 : http://www.xilinx.com/products/boards-and-kits/HW-USB-II-G.htm
[12]Xilinx, Inc., “ZedBoard: Zynq-7000 AP SoC Concepts, Tools, and Techniques”, Vivado 13.2, July 2013. 位于 : http://www.zedboard.org/support/design (requires login)
[13]Xilinx, Inc., “Zynq-7000 Technical Reference Manual”, UG585, version 1.7, February 2014. 位于 : http://www.xilinx.com/support/documentation/user_guides/ug585-Zynq-7000-TRM.pdf
[14]ZedBoard.org “Documentation” 網頁 .位于 : http://www.zedboard.org/support/documentation。
第十六篇到此結束,下一篇将帶來第十七篇,開啟第七章,包括教育、研究和教育訓練等相關内容。歡迎各位大俠一起交流學習,共同進步。
END
後續會持續更新,帶來Vivado、 ISE、Quartus II 、candence等安裝相關設計教程,學習資源、項目資源、好文推薦等,希望大俠持續關注。
大俠們,江湖偌大,繼續闖蕩,願一切安好,有緣再見!