ModelSim:27 MHzクロックをセットアップする方法
質問
27 MHzのクロック信号を設定したい ModelSim. 。私は通常、その信号 - >クロック - >セットアップ期間を右クリックして右クリックしてクロックをセットアップします。たとえば、50 MHzクロック - > 20 nsまたは私はフォースステートメントを使用しました。
27 MHzのクロックは特別であるため、整数期間ではありません。AppX値でクロックをセットアップすると、常にタイミングの問題があります。
それでは、この時計をセットアップするにはどうすればよいですか?
解決
あなたの時計は非同期です。君 意思 常に「タイミングの問題」があります - 2つのクロックエッジが互いに非常に近くに近づいている場合(必然的に時々そうなる場合があります)、フロップの一部は、転移性を示します。
27 MHzドメイン信号を50 MHzドメインに再同期させ、同期が間違っている場合があるという事実を受け入れて軽減する必要があります。 「時折」の価値をあなたのシステムに適していると思うほど小さな価値に減らす手法がありますが、それを取り除くことはありません。
他のヒント
両方のドメイン(50 MHz、27 MHz)を使用する場合は、2つのドメイン間の各イントラックに同期回路を実装する必要があります。
Signal changes_at50;
Signal read_at27;
入力しません:
read_at27 <= changes_at50;
しかし、同期回路を介してそれらを取り付けます。 (またはasync fifo。)
同期回路は通常、クロックドメイン間で発生するメタスタビリーを最小限に抑えるためにカスケードされたフリップフロップです。より多くのカスケードがメタの安定性をより良く減らしますが、データの遅延を増加させます。それはデザインの選択です。
クロックが1つしかない機能的なSIMを実行している場合、システムの入力と出力が同じ速度でクロックされる限り、クロックの正確な期間はそれほど重要ではありません。
目標期間に近い時計期間を選択し、データソースを適切に拡大することをお勧めします。