Ultra96 開發紀錄: 硬體認識

Ultra96 開發紀錄: 開箱文 一文中筆者紀錄了如何購買 Ultra96 開發板,在這邊文章中我們則是來看看 Ultra96 rev1 的版本,到底有哪些硬體與週邊。

Ultra96 有分 v1 與 v2 兩個版本, 本文使用的是 Ultra96v1 的硬體 ,不過請注意 Ultra96v1 已經被宣告 EOL 了

但是就算被宣告 EOL (End-of-Life) 了,因為我也只有這塊板子,所以會以 Ultra96v1 為主來寫文章

開發板概觀

首先先來看看這片開發板的外觀與有哪些週邊

和其他的 FPGA 開發板相比,這片板子由於只有無線網路功能,因此如果要連網的話就需要走 Wi-Fi ,使用起來會相對麻煩。

除此之外,由於沒有內建 JTAG 的功能,因此如果你目標是將這塊板子用於 FPGA 開發的話,你可能最好多買 專用的 JTAG 轉接板

方塊圖

大概知道外觀與 I/O 後,就來看看系統的方塊圖吧

org668dab9" class="outline-2">

UltraZed-EG

Ultra96 上核心的晶片為 Xilinx UltraScale+ MPSoC 系列的 Zynq UltraScale+ EG (XCZU3EG) ,這一系列不同版本的晶片差異如下:

可以看到 Zynq UltraScale+ EG (XCZU3EG) 雖然缺少了 H.264/H.265 的硬體解碼器,但是也是具有 Mali-400 MP2 GPU 的設備,也就是說我們手上這片要跑 Android 也是可行的。

此外,因為 Zynq UltraScale+ EG 除了是 FPGA 外,同時內建了 Cortex-A53 以及 Cortex-R5 兩種用於不同工作的處理器,我們可以透過 OpenAMP 框架來達到讓 Cortex-A53 上的 Linux 和 Cortex-R5 上的 RTOS 進行通訊以及交換資料的效果,這樣除了 FPGA 可以用於處理即時性的工作外, Cortex-R5 也可以幫忙處理類似的工作。

記憶體 (LPDDR4)

Ultra96 具有 4GB 大小的記憶體,根據 Ultra96 Hardware User Guide 上的資料來看,目前在 Ultra96 rev1 上用過以下兩種記憶體元件:

低速擴充腳位

低速擴充腳位 (Low Speed Expansion Connector) 大部分依照 96board 規範 ,將對應的 I/O 拉了出來,有些 I/O 則是你可以透過 FPGA 來進行控制。

值得注意的是,這邊的插孔的寬度是 2.0mm ,和我們常用的 2.54mm 杜邦線 寬度不同,因此也可能你會需要買 2.0mm 轉 2.54mm 的擴充板 來進行接線,或是購買 Mezzanine 來進行擴充 (要先確認相容性呦~)

在表上的 HD_GPIO (High-density I/O) 位於可程式邏輯區 (Programmable Logic, PL) 上,我們可以透過 FPGA 對其進行操控,電壓可設定範圍為 1.2V ~ 3.3V (預設為 1.8V)

而其他和處理器系統 (Processing System, PS) 相關的 I/O,預設則是被設定在 1.8V

低速擴充腳位位置

低速擴充腳位對應表

org6fee25d" class="outline-2">

高速擴充腳位

高速擴充腳位 (High Speed Expansion Connector) 則是使用 FCI 61082-061409LF 這個 60pin x 0.8mm 的插槽,

要注意的事情是,高速擴充腳位這邊除了 I²C2I²C3SD 這幾個界面外,其他都是用位於可程式邏輯區 (Programmable Logic, PL) 上的 HP_GPIO (High Performance GPIO) 替代,也就是說,需要自行透過 FPGA 去定義這些接腳的功能。

HP_GPIO 電壓可設定範圍則是 1.0V ~ 1.8V

高速擴充腳位位置

高速擴充腳位對應表

MicroSD 卡座

MicroSD 的部份採用 SCHA4B0419 這個卡座,並搭配 MAX13035E 來將輸入的 3.3V SD 卡訊號轉換成 1.8V 位準的訊號,這邊之所以要進行電壓的轉換主要是因為 Ultra96v1 的 MIO 皆是被設定在 1.8V 的狀態

位置

MicroSD 電路圖

MIO 對應表

WiFi/Bluetooth

WiFi/Bluetooth 的部份採用德州儀器 (TI) 的 WL1831MODGBMOCR 模組來使用,SoC 上的 UART0 連接到 Bluetooth 進行控制,而 WiFI 則是透過 SDIO 的界面和系統溝通

位置

WiFi/Bluetooth 電路圖

MIO 對應表

除了上面的 MIO 對應外,要控制好 Bluetooth 還需要一些位於可程式邏輯端 (Programmable Logic, PL) 的設定才行,根據 Constraints 的資訊,有以下這些設定和 Bluetooth 有關,因此在設定這塊板子的時候要注意一下

# ----------------------------------------------------------------------------
# Bluetooth
# ----------------------------------------------------------------------------
# Bank 26
set_property PACKAGE_PIN C8   [get_ports {BT_AUD_CLK              }];  # "C8.BT_AUD_CLK"
set_property PACKAGE_PIN A8   [get_ports {BT_AUD_FSYNC            }];  # "A8.BT_AUD_FSYNC"
set_property PACKAGE_PIN A9   [get_ports {BT_AUD_IN               }];  # "A9.BT_AUD_IN"
set_property PACKAGE_PIN B9   [get_ports {BT_AUD_OUT              }];  # "B9.BT_AUD_OUT"
set_property PACKAGE_PIN B5   [get_ports {BT_HCI_CTS              }];  # "B5.BT_HCI_CTS"
set_property PACKAGE_PIN B7   [get_ports {BT_HCI_RTS              }];  # "B7.BT_HCI_RTS"
org2cf639e" class="outline-2">

Mini DisplayPort

這塊板子可以透過 Mini DisplayPort 來進行畫面的輸出,我是使用 Apple 的 Mini DisplayPort to VGA Adapter 來將畫面轉換成 VGA 進行顯示

位置

電路圖

MIO 對應表

UART

板端有將 UART1 的訊號拉出來,我們可以透過 TTL 轉 USB 這種線材,或是透過 JTAG 轉接板 來讀取 UART 的訊號。

位置

UART 電路圖

MIO 對應表

I²C

需要特別一提的是,板子上面的 I²C 界面,實際上是透過 TCA9544A 來進行擴充,將一組 I²C 變成 8 個來使用

電路圖

方塊圖

MIO 對應表

orgac2dfa5" class="outline-2">

JTAG

Ultra96 有一個特別的地方,就是沒有內建 JTAG 在開發板內,因此如果你想使用 JTAG 功能的話,最好買 專用的 JTAG 轉接板

接上 JTAG 後樣子

電路圖

當然,一旦接上了這個專用的 JTAG 轉接板 後,原本好攜帶的特性就蕩然無存,因此如果你的需求是跑 PYNQ 的話,這個 JTAG 應該也不是必要的。

User LEDs

板子上面共有 4 個 使用者可以透過處理器系統 (Processing System, PS) 去進行控制的 User LEDs ,和別的 FPGA 開發板不同, 這四個 LED 都不能透過寫 Verilog 程式來進行控制

位置

User LED 電路圖

MIO 對應表

USB

Ultra96 的 USB 部份就比較複雜了,其中有一組 USB 3.0 是直接接到高速擴充腳位 (High Speed Expansion Connector) 的,其他的則是透過 USB5744 這個 USB 3.0 Hub 來進行擴充

USB 位置

USB 方塊圖

MIO 對應表

orgca8af6d" class="outline-2">

BOOT MODE

Ultra96 支援 三種 開機模式,分別是 JTAGSD CardUSB ,我們可以透過更改 SW2 的設定,來決定新的開機模式是怎樣。

JTAG

要使用 JTAG 模式的話,首先你需要購買 JTAG 轉接板 ,接下來,設定 SW2 為以下模式

SW2 位置

BOOT MODE : JTAG

這樣子,我們就可以透過 JTAG 將 Vivado 上寫好的新的 Bitstream 下載到板子上。

SD Card

如果我們要走 SD 卡開機的話,則是這樣去設定 SW2

SW2 位置

BOOT MODE : SD

重開機前記得要把 SD 卡插入到 SD 卡插槽呦~

USB

設定成 USB Mode 的話,會將 Ultra96 變成一個 USB Device ,接到電腦後透過電腦端的工具來對其進行操作

SW2 位置

BOOT MODE : USB

這個功能我還沒用過,所以也不知道實際狀況。但是根據 Zynq UltraScale+ Device Technical Reference Manual.pdf 上面的資訊,是這樣講的

orged00754" class="outline-2">

Ultra96v1 Ends of life

上面看了這麼多,事實上你去買的時候應該都是買到 Ultra96v2 的板子,因為 Ultra96v1 Ends of life 啦 Orz…

其實我也覺得很悲劇,不過畢竟板子都買了,如果沒人贊助我的話我會維持用 Ultra96v1 來寫文章,畢竟寫這個只是殺時間賺不到錢錢的 :P

後記

這篇文章從今年 1 月一直拖稿到 7 月,主要是因為今年剛好很忙,又這份電路圖沒啥顏色,實在沒有動力寫阿阿阿阿阿阿阿阿阿阿阿

結果我寫完 Ultra96 rev2 也出來了,真的是殘念 www

延伸閱讀