モード設定信号
TE0808のモード設定信号について
TE0808のJ2の端子を眺めてみると、I/OピンやMGTピン、電源ピンのほかにPG_xxxやEN_xxxといった設定ピンがたくさんあることに気が付きます。
今回はこれらの設定ピンの使い方を紹介します。
電源イネーブルとパワーグッド信号
EN_xxx
ZYNQ UltraScale+の電源はLowPowerドメインやFullPowerドメインなど、いくつものドメインに分かれています。これらのドメインごとに電源をON/OFFするためのピンがEnableを示すEN_xxxと、PowerGoodを示すPG_xxxです。
EN_xxxには以下のものがあります。
- EN_LPD・・・TPS82085SILのEN。HでLPDが電源供給される。
- EN_FPD・・・NC7S08P5XでPG_LPDとAND。HでFPDが電源供給される。
- EN_PL・・・LTM4638EYのRUN。HでPLに電源供給される。
- EN_DDR・・・NC7S08P5XでPG_FPDとAND。HでDDR4に電源供給される。
- EN_PSGT・・NC7S08P5XでPG_FPDとAND。HでPSのMGTに電源供給される。
- EN_GT_R・・NC7S08P5XでPG_PLとAND。HでR側GTHに電源供給される。
- EN_GT_L・・NC7S08P5XでPG_PLとAND。HでL側GTHに電源供給される。
- EN_PLL_PWR・・TPS82085SILのEN。HでSI社PLLがEnableになる
となっています。
EN端子は、それぞれの電源ICのENABLE端子につながっていたり、PG信号とANDをとるためのワンチップゲートにつながっていたりするのですが、すべて3.3Vのロジックで動作するようになっています。Trenz製ベースボードのTEBT0808の回路図を見ると3.3Vから5.1kΩでプルアップしてDIPスイッチで切り替えられるようになっているので、GNDか、3.3Vへプルアップするかという選択ができればよいと思われます。
MGTにはRとLがあります。MGT_RはBank228、Bank229、Bank230で、J1に出ているGTHが該当します。
MGT_LはJ2に出てきているBank128のGTHが該当します。
PSGTというのは、DisplayPortなどで使われるPSのGT(ギガビットトランシーバ)です。
なお、TE0808にはSilab社(現Skyworks社)のSi5345Aというクロックドライバが搭載されています。EN_PLL_PWRはSi5345Aの電源を個別にON/OFFするためのものです。Si5345Aは最大で1200mWの電力を消費し、また極めて敏感なPLL発振器なので個別の電源を用意しているのだと思われます。
PG_xxx
PowerGood系の信号には
- LP_GOOD
- PG_FPD
- PG_PL
- PG_DDR
- PG_PSGT
- PG_GT_R
- PG_GT_L
- PG_PLL_1V8
があります。これらの信号はLP_DCDCやDCDCIN(通常は3.3V)などの電源入力に対して数kΩでプルアップされています。
まとめると、EN_xxxは3.3Vにプルアップすると各電源が有効になり、PG_xxxがHにプルアップされるというわけです。使わないクロックドメインは個別にシャットダウンできます。
PLL系信号
前述のようにTE0808にはクロックドライバSi5345Aが載っているのですが、このSi5345Aのコントロール信号がPLL_xxxの信号です。
- PLL_FINC・・・周波数増加
- PLL_LOLN・・・ロック消失(アクティブL)
- PLL_SEL0 / PLL_SEL1・・・マニュアル入力スイッチング
- PLL_FDEC・・・周波数減少
- PLL_RST・・・デバイスリセット(アクティブL)
- PLL_SCL / PLL_SDA・・・I2Cインタフェース
いろいろな信号がありますが、最低限必要なのはPLL_SCLとPLL_SDAです。I2CのインタフェースでSi5345Aの内蔵レジスタや内蔵ROMに書き込みを行うために必要です。出荷時にはSi5345Aは書き込みが行われていないので、SkyWorks社のツールをつないで外部から書き込みができるよう、ベースボードにはPLL_SDAとPLL_SCLをコネクタ等に出しておくか、FSBL中で操作できるようにしておく必要があります。
PLL_SDAとPLL_SCLの信号は1.8Vロジックです。ベースボードを設計する際に、ベースボード上にプルアップ抵抗を付けてください。I2Cのアドレスは1101001bです。
EEPROM
なお、TE0808にはEEPROMが乗っていて、PLL_SDA、PLL_SCLを通じてアクセスができるようになっています。しかし、これはSi5345Aのメモリではなく、MACアドレス等を記憶しておくための汎用的なEEPROMとして使われることを想定しているようです。
リセット信号
MRという信号は電圧監視IC「TPS3106」のMR端子につながっています。MRはManual Resetの意味であるようです。LPDの電源電圧である0.85Vが0.74Vを下回るとリセット信号POR_Bを出します。また、MR端子からもマニュアルでリセットできます。
つまり、MRをLにすると、POR_BがLになってリセットがかかります。MRはTE0808でどこにも接続されずにコネクタに出ているので、リセットを使用しない場合はオープンにすればよいでしょう。
なお、MRはTPS3106内部でLP_DCDC(3.3V)レールに対してプルアップされています。HになるのはVDD×0.7Vなので、1.8Vを加えてもHの電圧になりません。リセットをかけない場合はオープンにして、リセットをかける場合にGNDに落とすようにします。
ZYNQのコンフィグ関連端子
JTAG系信号
TCK、TDI、TMS、TDOはJTAG信号でPSの1.8V系のロジックとなっています。
TE0808上ではプルアップもプルダウンもされていません。念のため、ユーザ作成のベースボード上で1~10kΩくらいの抵抗でプルアップまたはプルダウンを行って信号がバタバタしないようにしたほうがよいでしょう。
コンフィグ関連端子
以下の端子はZYNQのコンフィグ関係の端子がそのまま出ています。
- PROG_B
- DONE
- INIT_B
- SRST_B
- PUDC_B
TE0808ボード上で4.7kΩでプルアップがされている(PUDCは1kΩ)ので、ユーザボード上ではオープンにしておいて構いません。
ZYNQのモード設定端子
MODE0..MODE3は、ZYNQの起動モードを決定します。MODEの値と起動モードの対応は以下のようになります。
- 0x0・・・JTAG
- 0x2・・・QSPI32 MIO[12:0]
- 0x3・・・SD0 MIO[25:13]
- 0x5・・・SD1 MIO[51:38]
- 0x6・・・eMMC_18 MIO[22:13]
- 0x7・・・USB0 MIO[52:63]
- 0x8・・・PJTAG_0 MIO[29:26]
- 0xE・・・SD1-LS MIO[51:39]
ZYNQ7000シリーズと異なり、SD0だけではなくSD1が使えるようになっていたり、USBやPJTAGからも起動できるようになっていて進化を感じさせます。
モード端子はTE0808上ではプルアップもプルダウンもされずにコネクタに出ています。様々なモードを試すことがあると思うので、プルアップ/ダウン抵抗やDIPスイッチで設定しておくとよいでしょう。
なお、ロジックレベルは1.8Vで、プルアップ先はPS用の1.8Vです。
その他
PJTAG
ZYNQ UltraScale+にはFPGAのロジックであるPLとプロセッサであるPSが入っていて、PLとPSのJTAGは分離できるようになっています。PSのJTAGのことをDAPとも言います。
PSとPLのJTAGがチェーンで接続されていると、ARMのJTAGデバッガがPLを認識できないことがあります。そのため、ARMはARMだけのJTAGにしたほうがよく、PJTAGをMIOから出せるようになっています。
PJTAGを出すことができるMIOは[3:0]、[15:12]、[29:26]、[41:38]、[55:52]、[61:58]といくつかあるのですが、他のMIOとの兼ね合いもあって余ったところに出すことになると思います。
Trenz純正ベースボードのTEBT0808では、
- TCK・・・MIO26(J3の88)
- TDI・・・MIO27(J3の90)
- TDO・・・MIO28(J3の92)
- TMS・・・MIO29(J3の94)
から出していますので、これらの端子に接続するのがよいでしょう。
ZYNQのエラー端子
ZYNQ UltraScale+のPSにはERR_STATUSとERR_OUTというエラー端子があります。
ERR_OUTはZYNQ内部のPMUが電源断やエラーや例外を検出するとアサートされます。ERR_STATUSはセキュアロックダウンステートであることを示します。いずれも1.8VのPS_1.8V系ロジックで、アサートされるとHになります。
TE0808のコントール端子の使い方まとめ
- EN_xxxを3.3Vにプルアップすると各電源ドメインがONになる。配線必須。
- PG_xxxは各電源ドメインの状態を表す。使わなければオープンで構わない。
- DONE、PROG、INIT、SRST、PUDCはオープンで構わない。
- MRは、マニュアルリセットしたい場合にLにする。それ以外はオープン。
- MODE[0..3]はプルアップ/ダウン抵抗を使って所定の値を設定すること。
- PLL_SDAとPLL_SCLは外部からコントロールできるようにすること。配線必須。プルアップ必須。
- それ以外のPLL_xxxはオープンで構わない。
- JTAG信号はコネクタに出す




