インテル® Arria® 10 デバイスの初期化段階でユーザーの出力ピンが予期しない状態になる場合があります。
これは、初期化段階ではユーザーロジックとユーザー I/O ピンが同時にアクティブ化されずに徐々にアクティブ化されるためです。
例を以下に示します。( 例の図 )
- ユーザー入力ピンは、レジスターのロー・アクティブ・セット・ポートに接続します。
- このユーザー入力ピンは、電源からユーザーモードまで低く維持されます。
- レジスターからのデータ出力ポートは、ユーザー出力ピンに接続します。
コンフィグレーション段階および初期化状態でユーザー I/O ピンが弱いプルアップ状態で入力トライステートにあり、ユーザーモードの設定ポートでレジスターを高に設定することが期待されるため、ユーザー出力ピンは高い状態を維持することが期待されます。
しかし、初期化段階では、使用ロジックとユーザー I/O ピンが徐々にアクティブになります。 レジスターとユーザー出力ピンが入力ポートより高速にアクティブ化され、レジスターの初期状態が低い場合、出力ピンはレジスターから入力ポートがアクティブになり、レジスターのセットポートが低くなるまで低く伝達されます。
外部デバイスがインテル Arria 10 デバイスからの出力を監視すると、初期化段階で予期しない状態が外部デバイスの動作に影響することがあります。
この問題を回避するには、次のいずれかの方法を使用します。
- 回避策 1: INIT_DONEピンが高くなるまで、外部デバイスがユーザー出力ピンの状態を無視するようにします (回避策 1の図)
- 回避策 2: INIT_DONEピンが高くなるまで、外部ロジックを使用して入力状態を外部デバイスに適切に維持します (回避策 2の図)
- 回避策 3: 内部INIT_DONE信号が高くなるまで、ユーザーロジックを使用してArria 10 デバイスの出力状態を維持します (回避策 3の図)
内部INIT_DONE信号は、次の WYSIWYG インスタンス化で使用できます。
Verilog >>の<<
twentynm_controller u1 ( .initdonecore () ) ;
VHDL >>の<<
コンポーネントのtwentynm_controllerは次の
port (initdonecore: out STD_LOGIC );
エンドコンポーネント。
u1: twentynm_controller
ポートマップ (initdonecore => );