1. 株式会社PALTEK
  2. TECHブログ
  3. 技術情報
  4. 【Versal™ACAP】I2C Example Design Clock切り替え編 Part1【Vivado® ML 2021.2】

TECHブログ

【Versal™ACAP】I2C Example Design Clock切り替え編 Part1【Vivado® ML 2021.2】

【Versal™ACAP】I2C Example Design Clock切り替え編 Part1【Vivado® ML 2021.2】

皆さん、こんにちは。

今回は、 以前にブログでご紹介したVCK190のI2C Example Design を使って、
ボード上のOSCをI2Cで設定変更してみました。

下図のようなI2C制御コマンドで、OSCの周波数が変わる様子をVIOで確認できるまでの過程をまとめましたので紹介します。

第1回の本稿では、デザイン準備でSD Bootイメージ作成まで、
第2回では、実機確認編で周波数切り替わりまでを紹介します。

※画像クリックで大きな画像が表示されます。

出典:Vivado® ML Edition、シリアルコンソール画面

それでは、始めましょう。

目次

 

今回は、以下の環境で実行します。

  • ・HostPC CentOS 7.6
  • ・Vivado® ML Edition 2021.2
  • ・Petalinux® 2021.2

Vivado® ML Edition

それではデザインを作成します。
以前に紹介したI2C Example Designをベースに作成しているため、今回は途中からとなります。

前回までの内容については、以下リンクから参照ください。


まずは前回作成したI2C Example DesignでLinuxにログインして、I2Cインタフェースを確認します。

左右にスクロールしてご覧ください
# i2cdetect -l
i2c-1 i2c xiix-i2c			I2C adapter
i2c-0 i2c Cadence I2C at ff030000	I2C adapter

PL側とPS側に1種類ずつのI2Cインタフェースが確認できます。
アドレスの読み取りや、VCK190の回路図 [1]などを参考にして各デバイスの関係性が見えてきました。

i2c-1:PLのBank406 L18,K17ピンに繋がるI2Cインタフェース。
i2c-0:PSのI2C1,PMC MIO 44,45に繋がるI2Cインタフェース。

i2c-0は、回路図上ではI2C1と表記されているので混乱しますが、PS MIO 46,47のI2C0はi2c_pmcとして使用しているので、i2c detectでは検出されないようです。


次に今回変更を加えるVCK190上のOSCを決めます。
VCK190のユーザーガイド [2]を参考にして、PS_I2C1の接続先を確認します。
今回は、I2C MUX #1の7番目にある「HSDP_SI570」の周波数を変更してみます。

※画像クリックで大きな画像が表示されます。

出典:Xilinx VCK190評価ボード ユーザーガイド(UG1366)

i2cインタフェースが確認できたので、次にVivado® ML Editionを開きデザインに変更を加えます。


まずは前回記事で作成したデザインを開きます。

※画像クリックで大きな画像が表示されます。

出典:Vivado® ML Edition

PL側のI2Cインタフェースは不要なので、smartconnectとaxi_i2c、 Processor_System_Resetは削除します。


次に、周波数変更したことを確認するためにモニタリング用のClockを追加します。

今回はI2CでHSDP_SI570の設定を変更するため、まずモニタするのはBank105のGTY_REFCLK1になります。
あわせて、比較用に同BankのGTY_REFCLK0もモニタします。

今回、GTY_REFCLK1のピンを参照するため回路図 [1]を参照しましたが、確認の際には、以下のリンクからXTP610のダウンロードが必要です。


GTのClockを入力するためにBUFG(Utility Buffer IBUFDSGTEとBUFG GT)、 Clockモニタ用にモニタリングIP(Original)とVIO(32bit)、 モニタ用基準Clock生成用にClk_wiz(50MHz,locked)を追加します。
Clockモニタ用のIPは機会があれば紹介しますが、周波数測定はオシロスコープなど代用できるため今回は割愛します。

各々を接続し、下図のような構成となりました。
2枚目はgt_bufの構成、Constantは0です。

※画像クリックで大きな画像が表示されます。

出典:Vivado® ML Edition


※画像クリックで大きな画像が表示されます。

出典:Vivado® ML Edition


xdcファイルに観測するGTピンを割り当てます。

※画像クリックで大きな画像が表示されます。

出典:Vivado® ML Edition

Create HDL Wrapper ⇒ Generate Device Imageと実行します。
完了後、Export Hardwareを実行し、XSAファイルを生成します。

これでVivado® ML Edition側の作業は終了です。

Petalinux

今回は、LinuxでI2C制御を行うため、 前回記事のPetalinux環境をそのまま引用します。

以下コマンドで前回作成したPetalinux Projectに移動します。

左右にスクロールしてご覧ください
$ cd <name_of_project>

XSAファイルを更新します。
前回記事でI2Cに関する設定はすでに追加しているため、今回新たに追加する設定はありません。

左右にスクロールしてご覧ください
$ petalinux-config --get-hw-description=<PATH TO XSA>

Buildします。

左右にスクロールしてご覧ください
$ petalinux-build

Build完了後、ブートイメージを作成します。

左右にスクロールしてご覧ください
$ cd ./images/linux 
$ petalinux-package --boot --plm --psmfw --uboot --dtb --force

SDにBOOT.BIN, boot.scr, image.ubを移動します。
これでPetalinuxの作業は終了です。

おわりに

今回は、VCK190でI2C Example DesignでClock切り替えを行うためのデザイン準備までについて解説しました。

次回は、実機でI2C制御をLinuxから行い、実際に周波数が切り替わる様子をご紹介します。
また、別インタフェースのExampleデザインについても、ブログを通じてお伝えできればと思いますので、どうぞよろしくお願いいたします。

調査依頼や、設計検討などありましたら、お気軽にお問い合わせください。

 

お問い合わせはこちら

 

最後までお付き合いいただきありがとうございました。

参考文献
リンク内のXTP610から回路図データがダウンロードできます。
ダウンロードには、アカウント登録が必要となります。

このブログのシリーズ

Example Design関連シリーズ

関連シリーズ

Versal™ AI コア シリーズ VCK190 評価キットシリーズ