1 of 21

Jetson Nanoの�キャリアボードを自作する

🐓@NkyokuP

ロボカップSSLで回路を作ってました

V2

2021/8/29

2 of 21

ご注意

  • 本発表中のデータは鵜呑みにせずに�ご自身で一次ソースのデータを確認の上、設計にご活用ください。
  • Jetson Nanoの開発キットにはA02という旧リビジョンがありますが�こちらに付属のJetson Nanoは仕様が異なり、本発表の対象外です。
  • Jetson Nanoのピンコンパチの上位機種としてJetson Xavier NXがあります。�移行用の資料が以下URLにあります。��Jetson Xavier NX and Jetson Nano Interface Comparison and Migration Application Note, Version 1.1, 2020/09/18https://developer.nvidia.com/jetson-xavier-nx-and-jetson-nano-interface-comparison-migration-application-note

2

3 of 21

動機

3

Jetson Nanoをロボットに積みたいけど

  • 開発キットのキャリアボードが大きすぎる
  • コネクタの位置や構成が気に食わない
  • 電源シーケンスが柔軟に制御できない
  • 1枚の基板にすべて収められる
  • 必要なコネクタだけ外に出せる
  • 電源シーケンスが自由にカスタマイズできる

開発キットのキャリアボード

カスタムキャリアボード化

4 of 21

やったこと

  1. Jetson Download Center [https://developer.nvidia.com/embedded/downloads]�から設計に必要な情報を入手。 (一部以外は無料のユーザー登録が必要)
  2. シンプルなキャリアボードを作って動作確認。
  3. シンプルなキャリアボードを他の試作基板に接続してロボットのシステムをテスト。
  4. 一枚の基板に統合してロボットに搭載。

4

5 of 21

設計資料

5

6 of 21

シンプルなキャリアボードを作る

Jetson Nanoがどのような挙動をするのか把握するため�開発キットの回路図を参考に簡単なキャリアボードを作成した。

開発キットのキャリアボードの回路図・ガーバーデータ等�Jetson Nano Developer Kit Carrier Board Design Files (P3449 B01), B01-20200507, 2020/5/7�https://developer.nvidia.com/jetson-nano-carrier-board-design-files

確認事項

  • 電源容量が足りているか
  • 電源シーケンスを思うように制御できるか
  • 各種コネクタ選定、ねじ位置が合っているか
  • 高速差動信号の取り回し
  • GPIO,低速ペリフェラルがちゃんとLinuxから制御できるか

6

7 of 21

電源容量

Jetson Nano自体は5V/2Aの電源で動作する。周辺回路に以下の電源が必要である。

  • 5V : USBホスト, HDMI
  • 3.3V : M.2, DisplayPort, MIPI CSI-2カメラモジュール
  • 1.8V : レベル変換器 (Jetson NanoのほとんどのI/Oは1.8Vなので)

電源容量が本当に十分か実物で確認。

7

用途

電圧 [V]

最大電流 [A]

Jetson Nano

5

2

USBホスト

5

0.5~3

HDMI

5

0.055

DisplayPort

3.3

0.5

M.2 WiFiカード

3.3

1Aくらい?

ラズパイカメラV2

3.3

0.25

8 of 21

電源シーケンス

  • Jetson Nanoの電源オン・オフを制御する外部回路が必要。
    • POWER_ENピンの電圧を制御
    • SYS_RESET#, SHUTDOWN_REQ#ピンの監視
  • 外部回路からシャットダウンを主導するとデータを失う可能性がある。
    • SLEEP/WAKE#ピンが電源ボタンとして働くのでLowに落としてシャットダウンの開始を促す

GreenPAK (SLG46826)で制御できることを確認した。

8

Figure 2 Power-up Sequence

Figure 3 Power Down Sequence

Datasheet 2.5節, Product Design Guide 5章を参照

9 of 21

コネクタ選定

  • M.2コネクタをJetson Nanoの下に配置したいのでM.2カードの高さを確認。
  • 開発キットで使われているDDR4コネクタより1.2mm低い品種を使ってもOKと判明。

デメリット : 両面実装のM.2カードが搭載困難になる

9

基板

DDR4

M.2

A

B

DDR4

M.2

A [mm]

B [mm]

2309413-x

2199230-y

0.4

4.9

2309413-x

2199119-y

1.4

3.9

2309411-x

2199119-y

0.2

3.9

表 コネクタの組み合わせ例

※ x, yは接点の表面処理やキー位置の

バリエーション

1.5

10 of 21

高速差動信号の取り回し

  • Product Design Guideの各章にそれぞれの高速差動信号のレイアウト要件が書かれている。
    • 特性インピーダンス
    • 差動ペア内の配線長のミスマッチ(intra-pair skew)
    • 差動ペア間の配線長のミスマッチ(inter-pair skew)
    • 差動ペア間の間隔(Trace spacing)
    • Jetson Nanoからコネクタまでの配線長(Trace length)
    • etc.

  • DisplayPortで4K 60pの出力を確認。�(HDMIをDisplayPortに変えたので確認に手間取った)
  • USB SuperSpeedの動作を確認。
  • MIPI CSI-2カメラの動作を確認。

本当はアイパターンや伝送損失を見たいけど

10

図 DisplayPort周りの配線(L1, L4)

11 of 21

GPIO,低速ペリフェラルの制御

11

モジュールの�ピン名

本来の

接続先

コネクタの�ピン番号

SoCの

ピン番号

GPIO01

40ピン

29

PS05

GPIO02

M.2

20

PH06

GPIO03[1]

M.2

54[2]

PI02

GPIO05[1]

M.2

56[2]

PH07

GPIO07

40ピン

32

PV00

GPIO09

40ピン

7

PBB00

GPIO10

M.2

62

PV01

GPIO11

40ピン

31

PZ00

GPIO12

40ピン

15

PY02

GPIO13

40ピン

33

PE06

モジュールでの名前

本来の

接続先

Jetson-IO

での名前

Linuxでの�名前

UART0

M.2

uartc

ttyTHS1

UART1

40ピン

uartb

ttyTHS2

SPI0

40ピン

spi1

spidev0.x

SPI1

40ピン

spi2

spidev1.x

I2C0[3]

40ピン

i2c2

i2c-0

I2C1[3]

40ピン

i2c1

i2c-1

I2C2[4]

M.2

i2c3

i2c-2

I2S0

40ピン

i2s4b

I2S4

I2S1

M.2

i2s3

I2S3

※UART2はコンソール入出力なので使えない

[3] これらだけは3.3Vトレラント

[4] アドレス0x50は避けること

[1] M.2のW_DISABLEを制御しなくて構わないなら転用可

[2] MOSFETでレベル変換して接続されている

専用の用途がないGPIO, 低速ペリフェラルにLinuxのアプリから自由にアクセスできることを確認。

12 of 21

ロボットの基板の作成 (1/2)

  • キャリアボードを他の試作回路と接続し試作システムが完成!
  • HDL, ファームウェアを急ぎ実装してシステムをテスト。

12

先ほどのキャリアボード

モータードライバ基板

FPGA基板

電源基板

13 of 21

ロボットの基板の作成 (2/2)

  • すべての回路を一枚の基板に統合。
    • おまけにUSB Type-C化した。(USB PD, DP Alt Mode対応)�そしてType-Cは振動に弱いことに気づく。

13

https://github.com/Nkyoku/phoenix-pcb

※ロボマスとは無関係

14 of 21

コネクタの選定 (1/2)

14

Jetson Nanoの基板形状はDDR4 SO-DIMMと互換である。

開発キットのキャリアボードはTE Connectivity製のコネクタ「2309413-1」を使用している。

Jetson Nanoの下に大きな部品を置くなら2309413-x, 2309411-xを選ぶべき。

型番

コネクタ厚み

基板面との間隙

フットプリント

2309413-x

9.2 mm

5.3 mm

} コンパチ

2309411-x

8.0 mm

4.1 mm

2309409-x

5.2 mm

1.3 mm

} コンパチ

2309407-x

4.0 mm

0.1 mm

※ ‘x’は接点の表面処理のバリエーション、普通は’1’が入る。

コネクタ

厚み

基板面との間隙

15 of 21

コネクタの選定 (2/2)

15

TE ConnectivityのM.2コネクタには高さの選択肢が2つある。

開発キットのキャリアボードは「2199230-4」を使用している。

コネクタをJetson Nanoの下に配置するなら高さに気を付けること。

型番

コネクタ厚み

高さ

(S3, D5)

基板面との間隙

(S3)

基板面との間隙

(D5)

スペーサー

型番

2199230-y

4.2 mm

4.9 mm

2.5 mm

1.0 mm

9774025243R

2199119-y

3.2 mm

3.9 mm

1.5 mm

0.0 mm

9774015243R

※ ‘y’は接点の表面処理やキー位置のバリエーション

高さ

基板面との間隙

a

b

Type

a

b

S3

1.5

0

D5

1.5

1.5

コネクタ

厚み

16 of 21

電源構成

Jetson Nano自体は5V/2Aの電源で動作する。他にも周辺回路に以下の電源が必要である。

  • 5V : USBホスト, HDMI
  • 3.3V : M.2, DisplayPort, MIPI CSI-2カメラモジュール
  • 1.8V : レベル変換器 (Jetson NanoのほとんどのI/Oは1.8Vなので)

16

5V

Jetson Nano

SW

USBホスト

HDMI

SW

3.3V

1.8V

M.2

DisplayPort

Camera

レベル変換

SW

SYS_RESET#

電流制限用

EN

EN

EN

※周辺回路は非起動状態のJetson NanoのSoCのI/Oに電圧を加えてはいけない。�Jetson Nanoの出力するSYS_RESET#, MOD_SLEEP#で周辺回路のレギュレータやロードスイッチを制御するのが良い。

17 of 21

USB (データシート 4.1節, デザインガイド 6.1節)

  • USB0はデバイスとして動作する。
    • デバイスツリーを改変すればOTGにできるらしい。
  • USB1, USB2はホストとして動作する。
    • 特に使用上の制約はないので自由なデバイスに接続可能。
  • USBSSはSuperSpeedのホストとして動作する。
    • SuperSpeedポートはHighSpeedポートと独立して動くので�USB1, USB2のどちらかと組み合わせないといけない、という制約はない。
    • そのためSuperSpeed専用の第3のホストポートとして使っても良い。

17

Jetson

Nano

TX+

TX-

RX-

RX+

USB

コネクタ

USB

コネクタ

Jetson

Nano

配線しづらければ極性反転しても良い(Polarity Inversion)

TX+

TX-

RX-

RX+

18 of 21

PCIe (データシート 4.2節, デザインガイド 6.2節)

  • 4レーンまでのPCIeエンドポイントへの接続をサポート。
    • Lane Reversal, Polarity Inversionをサポート
    • マルチプレクサでポートを増やせる(らしい)
  • PCIeでは送信端にAC結合キャパシタを付けることになっている。
    • モジュールならモジュール基板上にキャパシタを付けるのが一般的らしいが�Jetson Nanoはキャパシタを内蔵していないのでSO-DIMMコネクタの近くに付ける。

18

Endpoint

Jetson

Nano

D0

D1

D3

D2

配線しづらければレーンを引っくり返せる(Lane Reversal)

Polarity Inversionも独立に適用可能

D0

D1

D3

D2

Endpoint

Jetson

Nano

D0

D1

D3

D2

D0

D1

D3

D2

TX+/TX-/RX+/RX-

19 of 21

HDMI, DisplayPort (データシート 4.3節, デザインガイド 7章)

  • 標準でDP0はDisplayPort出力, DP1はHDMI出力に設定されている。
    • DP1をDisplayPortに設定することも可能だがデバイスツリーのいくつものファイルを改変しないといけない。
  • DP1のみオーディオ出力とHDCPをサポートする。
  • DisplayPortもHDMIもレーンの並び替えや極性反転をサポートしない。�頑張って引きましょう。
  • AC結合キャパシタをSO-DIMMの近くに付ける。
  • デザインガイドには未使用のポートのHPDピンは開放で良い、と書かれているが�プルアップしておかないと謎のVGAディスプレイが認識されてしまう。

19

20 of 21

CSI (データシート 4.4節, デザインガイド 8章)

  • 最大12レーン、 4つのカメラをサポートする。
    • 2レーン×4カメラ
    • 4レーン×3カメラ
  • 開発キットでは2レーン×2カメラ構成になっている。

  • CSIのデータ, クロック以外にMCLK, PWDN, SDA, SCLの配線が必要
    • SDA, SCL� CAM_I2C_SDA, CAM_I2C_SCLをアナログスイッチやI2Cマルチプレクサで各カメラに分配する。� 標準のデバイスツリーではアナログスイッチをGPIO06で制御する。� 3,4カメラ構成ではI2Cマルチプレクサのドライバを有効にすることになる。
    • MCLK, PWDN� CAM0_MCLK, CAM1_MCLK,� CAM0_PWDN, CAM1_PWDNを各カメラに接続する。� 3,4カメラ構成ではピンが足りないので新しくGPIOを割り当てるか2つのカメラで1つのクロックを共有する構成になる。� https://forums.developer.nvidia.com/t/csi-camera-on-jetson-nano-custom-carrier-board-issue/113076

20

Product Design Guide, Table 8-3 CSI Configuration

21 of 21

基板を引く

  • USB, PCIe, DisplayPort, HDMI, CSI, GbEなどの高速信号の配線に注意を要する。
    • 4層以上の基板を使用して特性インピーダンスを各通信規格に合わせる。
    • 差動ペア内の配線長のミスマッチ(intra-pair skew)を規定以下にする。
    • 差動ペア間の配線長のミスマッチ(inter-pair skew)を規定以下にする。
    • 差動ペア間の間隔(Trace spacing)を規定以上に保つ。
    • Jetson Nanoからコネクタまでの配線長(Trace length)を規定以下にする。
    • etc.

デザインガイドに各通信規格の条件が書いてある。

21

デザインガイドに少し違反しているが

DisplayPortのPHYが優秀なおかげで

DP Alt Modeで4K 60pが通った設計

配線長 10cm

ビア 3つ

スイッチICを経由