なぜいくつかのマイクロコントローラーには、このような大きな同期遅延があるのですか?


11

Atmel SAM-D21シリーズマイクロコントローラーでは、多くの周辺機器がメインCPUクロックと非同期のクロックを使用し、これらの周辺機器へのアクセスは同期ロジックを通過する必要があります。クロックがCPU時間に比べて遅い周辺機器では、これにより非常に大きな遅延が発生する可能性があります。たとえば、RTCが1024Hzクロックを使用するように構成され(設計意図のように見える)、CPUが48Mhzで実行されている場合、「現在時刻」レジスタを読み取ると、バスロジックが200,000を超える待機状態を挿入します(最小1024Hzクロックの5サイクル)。CPUに読み取り要求を発行させ、他の無関係なコードを実行し、200,000サイクル以上を返して時間を取得することは可能ですが、実際に時間をより速く読み取る方法はないようです。

同期についての私の理解では、シングルビット同期回路は宛先クロックの2〜3サイクルだけ信号を遅延させます。マルチビット量の同期は少し難しくなりますが、ソースクロックよりも高速な場合はデスティネーションクロックの5サイクル以内で信頼性の高い動作を保証できるさまざまなアプローチがあり、そうでない場合はわずか数サイクルだけです。同期のためにソースクロックドメインで6サイクルを必要とするAtmel SAM-D21が行うこと、および同期遅延が「同期完了」割り込みを必要とするほど十分に長い設計に有利な要因は何ですか?同期遅延は、そのような割り込みを不要にするほど短いですか?


2
この質問をありがとう。私の手元にある問題をようやく理解させました。私がここに来たのは、SAMD20 / 21でウォッチドッグタイマー(WDT)のクリアに5ミリ秒近くかかる理由が理解できなかったためです。今では、それはハードウェア設計によるものであり、私のエラーではないことがわかっています。(WDTは1024 Hzでクロックされますが、これが唯一の賢明なオプションです。)これで、少なくともそれに応じて対処できます。
T-ブル

2
@ T-Bull:これらの部分のウォッチドッグの本当に楽しいところは、ソフトウェアがリセットコマンドを発行してからコマンドがシンクロナイザーを通過するまでの間に無効になることです。その間隔中にデバイスがスリープ状態になると、他の何かデバイスをウェイクアップするまで、または他の何かウェイクアップするまでウォッチドッグは実行されません。
supercat

回答:


2

それは私にとって物事を行う別の方法です。私はレジスタがCPUクロックまたはそのクロックの少なくとも1/2にあるアーキテクチャに慣れています。したがって、レジスタを作成すると、すぐに準備が整います。おそらく、彼らは省電力のためにこのようにやっているのでしょうか?ペリフェラルレジスタを独自の非常に遅いクロックドメインに配置する場合、メインオシレータまたはCPUクロックを起動して実行する必要はないが、ペリフェラルの値を更新し続けることができます。

その場合は、スーパースローペリフェラルブロックにレジスタを書き込んでから、CPU全体のパワーアイランドを無効にするか、クロックゲートし、スローシンクロナイザーに喜んで読み込ませてから、CPUを中断してそれを引き出します。睡眠の。

あるいは、6サイクル回ってすべての書き込みを待つ代わりに、最大量の命令を覚醒時間に詰め込むことができます。

なぜそんなに多くの同期サイクルを使用しているのか、妄想である可能性がある、または顧客の1人に対する高い信頼性の基準を満たしている可能性があります。確かに言うことはできませんが、すべてのramがeccを持ち、設定値などにプリロードされるなど、需要のある顧客を見たことがあります。

これは決定的な答えではありませんが、データシートを少し調べた後の私の考えです。


2
「6サイクル」は、周辺クロックの6サイクルです。たとえば、リアルタイムクロックモジュールに1024Hz(Atmelの推奨と思われる)を供給するように設定し、CPUクロックを48MHzに設定すると、周辺クロックの6サイクルはCPUクロックの281,250サイクルになり、非常に長くなります特にサービスが必要な割り込みがある場合は、スピンする時間です。低速クロックが8Mhz(36 CPUサイクルのスピンを意味する)の場合、スピニングは中程度に恐ろしいだけですが、1024Hzクロックでのスピンよりもハードフォールトの方が優れています。
-supercat
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.