FC2カウンター FPGAの部屋 ikwzm さんの fclkcfg による Zynq のPS の fclk の設定
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

ikwzm さんの fclkcfg による Zynq のPS の fclk の設定

白線追従用CNNを使用したZYBOtの白線追従走行1(準備編)”の続き。

前回は、デバイスツリー・ソース・ファイルを書いて、ビットストリームのFPGAへのロードやUIO の設定、udmabuf のロード、fclk の設定を行ったが、fclk の設定値が想定していた値と違ってしまった。
これは、ikwzm さんにお聞きしたところ、fclk1 などのClock Source が違っていたからということだった。Clock Source には、ARMPLL、DDRPLL、IOPLL の3種類あるが、どれを選ぶかで、周波数の設定値に対して、実際の値の偏差が発生するかどうか?が決まる。
このfclkcfg のバージョンでは、デバイスツリーのロード時にClock Source を変更することはできないので、u-boot 時にClock Source を変更するということだ。なお、現在のfclkcfg (fclkcfg-4.14.34-armv7-fpga_1.1.0-1_armhf.deb)では、デバイスツリーにClock Source を書くことができるので、後でやってみよう。

さて、ZYBO に挿入するMicro SD カードのZYBO_BOOT パーティションの uEnv.tst の fpga_set_cmd を以下の様に書き換えた。

fpga_set_cmd=run slcr_unlock_cmd && mw.l 0xF8000170 0x00100A00 && mw.l 0xF8000180 0x00100A00 && mw.l 0xF8000190 0x00100A00 && mw.l 0xF80001A0 0x00100A20 && run slcr_lock_cmd


U-Boot から Zynq の PLクロックとリセット信号を制御する”を参照すると、最初の fclk0 の値の設定は、”0xF8000170 0x00100A00”で、DIVISOR1 が 1 で、DIVISOR0 が 10 で、Clock Source はIOPLL ということを示す。デバイスツリーでDIVISOR の倍率は変更できるので、全部の fclk がDIVISOR1 が 1 で、DIVISOR0 が 10 だが、最後の fclk3 だけは Clock Source が ARMPLL になっている。
ZYBOt_18_180818.png

ZYBOt_19_180818.png

これでZYBOt のDebian をブートして、~/zybot/wl_tracing_cnn ディレクトリに行って、
sudo dtbocfg.rb -i --dts devicetree.dts wl_tracing_cnn
でデバイスツリーで示されるドライバをロードした。
ZYBOt_20_180818.png

シリアル・コンソールを見ると、設定通りの周波数が出ている。成功だ。
ZYBOt_21_180818.png
  1. 2018年08月19日 05:12 |
  2. Zynq
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog.fc2.com/tb.php/4267-dcd2d0a9
この記事にトラックバックする(FC2ブログユーザー)