« ZYNQの低消費電力モードを試してみた | トップページ | Cosmo-Zの16bit版をVivadoに移行 »

2019.11.06

ZYNQのスタンバイモード中にPLは動いているか

ZYNQのスタンバイモード時に何が起きているかを詳しく調べてみました。

まず、JTAGバウンダリスキャンを使ってUARTとDDR3の信号を見たところ、/sys/power/stateドライバを操作されてから実際にスタンバイするまでの時間は150msくらいと推定されます。復帰はさらに早く数十ms以内でした。

Linuxのコンソールに戻れるので、完全にシャットダウンするよりも圧倒的に早く戻れます。

Stdby3

スタンバイモードでは、DDR3の信号はRAS=L、CAS=L、WE=H、CS=H、CKE=Lで停止しているようです。

 

気になるのはPLも一緒に停止しているかどうかです。

PLが停止してしまったらEMIOを通したUARTからの復帰ができないのでそんなことはないと思うのですが・・

念のため、PLから各部のクロック信号を出してみたところ、MMCMを経由したクロックは停止していて、それ以外のクロックは極端に遅くなっていました。

Stdby4

実際にオシロで測ってみると、PSからPLへ送られるクロックが100MHzのものは3.33MHzになり、250MHZのものは8.33MHzになっていました。

スタンバイ前↓

Stdby5

スタンバイ後↓

Stdby6

つまり、FCLKが30分の1の速度になってしまっているのです。3.3MHzではMMCMはロックできないから動作を停止したのでしょう。

結論を言うと、

  • スタンバイモードにしてもPLは停止しない
  • PSからのクロックが怪しくなるので、PSクロックを使わない設計にするべし
  • 当然ながらPLからもDDR3メモリは使えないと心得るべし

です。

PSが動いていることが確認できたので、例えばEMIO経由のGPIOで起こすようにしておけば、CPUは常にスタンバイモードにしてPLだけで計測しておいて、1分ごとにCPUを起こしてちょっと統計とか通信をしてまた眠るというアプリが作れそうです。

|

« ZYNQの低消費電力モードを試してみた | トップページ | Cosmo-Zの16bit版をVivadoに移行 »

コメント

コメントを書く



(ウェブ上には掲載しません)




« ZYNQの低消費電力モードを試してみた | トップページ | Cosmo-Zの16bit版をVivadoに移行 »