0

シナリオは次のとおりです。

有効なレジスタがあります(RegAと呼びます)。RegA の入力プットは永続的にハイに引き上げられます。

一方、RegA のイネーブル ラインは、単純な組み合わせロジックを介して RegB の出力に接続されています。

このシナリオでは、次のクロック パルスで RegB の出力が1 クロック サイクルだけ高くなります

私の質問は、RegA の出力が RegB がハイになるのと同じクロック サイクルでハイになるか、または RegA が次のクロック サイクルでハイになるか、または競合状態のために決してハイにならない可能性があるかということです。

経験から、RegA は RegB が高くなるのと同じクロック サイクルで高くなるように感じますが、これは悪い習慣であり、信頼できないのではないかと思います。ラインを有効にする信号と、RegA が高くなるクロック エッジとの間に競合状態が発生する可能性があると考えています。イネーブル ラインはいくつかの組み合わせロジックを通過するため、その競合は毎回失われ、RegA は、RegB がハイになるのと同じクロック サイクルでイネーブル ラインがハイであることを認識しません。

4

2 に答える 2

2

あなたが話しているイネーブルはクロックイネーブルだと思いますか?この場合、私の理解が正しければ、RegA が High になる前に 1 クロック サイクルの遅延が発生します。説明:

RegA は、クロックが到着したときにイネーブル入力がアクティブである場合にのみ、クロック サイクルに反応します。ただし、RegB には内部遅延があり、RegA イネーブルに到達するまで出力から追加の組み合わせ遅延があるため、RegA がクロック サイクルを無視する前に、アクティブな信号は RegA に「到達」しません。

ただし、これは両方の方法で機能するため、2 番目のクロック サイクルが到着したときにアクティブ イネーブル信号も消えていないため、RegA はクロック サイクルを認識してそれに反応します。次のクロック サイクルで、イネーブルは再び非アクティブになります。

ただし、非アクティブ化されたクロック イネーブルは単にクロック入力を無視するため、レジスタはクロック イネーブル入力が非アクティブなときにその値を保持することに注意してください。

これは競合状態ではなく (たとえば、クロック スキューが多く、設計が不十分なシステムを使用している場合を除きますが、他の多くの問題もあります)、確実に使用できます。それ以外の場合、FPGA 設計者が取る多くのもの当然のことながら、それを行うことは不可能です。

于 2013-02-05T07:21:53.397 に答える
0

クロック分配に問題がない限り (たとえば、FPGA ではツールによって管理されます)、明確に定義された動作が得られます。

最初のクロック パルスで、クロック エッジの直後に RegB の出力が高くなります。したがって、RegA は、クロック遷移の時点でそのイネーブルが Low であることを「認識」しているため、変化しません。

次のクロック サイクルで、クロック エッジの直後に RegB の出力が Low になります。ただし、これは RegA にとっては遅すぎます。これは、(クロック エッジが来たときに) イネーブル信号を既に "見て" いるためです。遅れ)。

したがって、はい、追加のサイクル遅延が発生します。

于 2013-02-05T14:23:26.517 に答える