BCメッセージ構造
BCメッセージ構造を下図に示します。
【BC命令リスト開始アドレス・レジスタ(0x0033)】…BC命令リストの最初のアドレスを格納
【BC命令リスト・ポインタ・レジスタ(0x0034)】…現在実行注のBC命令リストOPコードのアドレス
OPコード
BC命令リストを作成するには、OPコード、パラメータ(ポインタ)の2ワードをセットにして作成します。 パラメータ(ポインタ)は、メッセージ・コントロール/ステータス・ブロック(MCSB)と呼ばれる連続したワードのブロックを指します。 OPコード・フォーマットを下図に示します。
OPコードは、「奇数パリティ」,「OPコード」,「バリデーション」,「コンディション・コード」の4つの部分で構成され、 バリデーション部分は設定不可能です。
OPコード表を下記に示します。コードの「0x0001~0x0015」は、DDC社のEMACEで使用されているOPコードとほぼ同じ機能です。 Holt社のみの機能は緑色背景部分です。
名称 | 略語 | OPコード | パラメータ | コンディション・コードの判定、説明 | |
メッセージ実行 | XEQ | 0x01 | メッセージ・コントロール/ステータス・ブロック・アドレス | True | メッセージ・コントロール/ステータス・ブロック・アドレスで指定されるメッセージを実行します。 |
False | BC命令リストの次のOPコードの実行を続けます。 | ||||
メッセージ実行&GO | XQG | 0x16 | メッセージ・コントロール/ステータス・ブロック・アドレス | /td>True | メッセージ・コントロール/ステータス・ブロック・アドレスで指定されるメッセージを実行します。 (注:【XEQ】と似ていますが、XQGは次のMCSBの4ワード目で指定されるメッセージ・タイマがゼロにならなくても、XQGの処理が終われば次の命令OPコードをフェッチします。) |
False | BC命令リストの次のOPコードの実行を続けます。 | ||||
ジャンプ | JMP | 0x02 | BC命令リスト・アドレス | True | BC命令リストのパラメータが指定するOPコードにジャンプします。 |
False | BC命令リストの次のOPコードの実行を続けます。 | ||||
コール・サブルーチン | CAL | 0x03 | BC命令リスト・アドレス | True | BC命令リストのパラメータが指定するOPコードにジャンプし、コール・スタック上の次のOPコードをプッシュします。 (注:サブルーチンのコールスタック深さは最大8です) |
False | BC命令リストの次のOPコードの実行を続けます。 | ||||
リターン・サブルーチン | RTN | 0x04 | 不要 | True | BCコール・スタックの先頭アドレスをポップしてから、BC命令リストのポップされたOPコード・アドレスにジャンプします。 |
False | BC命令リストの次のOPコードの実行を続けます。 | ||||
割り込みリクエスト | IRQ | 0x06 | 4Bit割り込みパターン | True | 4Bit割り込みパターンを「Bus Controller (BC) Pending Interrupt Register (0x0007)」のBit8-5に書き込み、ホスト割り込みを生成します。 (注:N=0の場合は割り込みは生成されません) |
False | BC命令リストの次のOPコードの実行を続けます。 | ||||
休止 | HLT | 0x07 | 不要 | True | BC開始がホストによって発行されるまでBC命令リストの実行を停止します。 |
False | BC命令リストの次のOPコードの実行を続けます。 | ||||
遅延 | DLY | 0x08 | 遅延時間 1μsec分解能 |
True | 指定時間遅延を開始します。 【次メッセージまでの時間】よりも高い優先度を持つ。 |
False | BC命令リストの次のOPコードの実行を続けます。 | ||||
フレーム時間=0まで待機 | WFT | 0x09 | 不要 | True | フレーム時間=0までBC命令リストの実行を停止します。 |
False | BC命令リストの次のOPコードの実行を続けます。 | ||||
フレーム時間と比較 | CFT | 0x0A | 時間 100μsec分解能 |
パラメータ指定時間値を「Bus Controller (BC) Frame Time Remaining Register (0x0035)」と比較します。 | |
メッセージ時間と比較 | CMT | 0x0B | 時間 1μsec分解能 |
パラメータ指定の時間を「Bus Controller (BC) Time To Next Message Register (0x0036)」と比較します。 | |
タイムタグ・ロード | LTT | 0x0D | 時間 (分解能は 「Time Tag Counter Configuration Register (0x0039)」 Bit2-0で設定) |
True | パラメータ指定の時間で「Bus Controller (BC) Time Tag Counter (0x0043)」をロードします。 BCが32Bitタイムタグで動作するときのBit15~0を表します。 |
False | BC命令リストの次のOPコードの実行を続けます。 | ||||
タイムタグ・カウンタHighロード (32Bitタイム・ベース有効時) |
LTH | 0x18 | 時間 (分解能は 「Time Tag Counter Configuration Register (0x0039)」 Bit2-0で設定) |
True | パラメータ指定の時間で「Bus Controller (BC) Time Tag Counter High (0x0044)」をロードします。 BCが32Bitタイムタグで動作するときのBit31~16を表します。 |
False | BC命令リストの次のOPコードの実行を続けます。 | ||||
フレーム・タイマー・ロード | LFT | 0x0E | 時間 100μsec分解能 |
True | 「Bus Controller (BC) Frame Time Remaining Register (0x0035)」に指定時間の値をロードします。 |
False | BC命令リストの次のOPコードの実行を続けます。 | ||||
フレーム・タイマー開始 | SFT | 0x0F | 不要 | True | 「Bus Controller (BC) Frame Time Remaining Register (0x0035)」をデクリメント開始します。 |
False | BC命令リストの次のOPコードの実行を続けます。 | ||||
タイムタグ・カウント・プッシュ | PTT | 0x10 | 不要 | True | 「Bus Controller (BC) Time Tag Counter (0x0043)」の値をBC汎用キューにプッシュします。 |
False | BC命令リストの次のOPコードの実行を続けます。 | ||||
タイムタグ・カウント・プッシュ・ハイ (32Bitタイムタグの場合有効) |
PTH | 0x19 | 不要 | True | 「Bus Controller (BC) Time Tag Counter High (0x0044)」の値をBC汎用キューにプッシュします。 BCが32Bitタイムタグで動作するとき、これはBit31~16を表します。 |
False | BC命令リストの次のOPコードの実行を続けます。 | ||||
タイムタグ・カウント・プッシュ両方 (32Bitタイムタグの場合有効) |
PTB | 0x1A | 不要 | True | 「Bus Controller (BC) Time Tag Counter High (0x0044)」の値をプッシュし、 「Bus Controller (BC) Time Tag Counter (0x0043)」の値をBC汎用キューにプッシュします(両方のワードが同時にフェッチされますが、連続してプッシュされます) |
False | BC命令リストの次のOPコードの実行を続けます。 | ||||
ブロック・ステータス・ワード・プッシュ | PBS | 0x11 | 不要 | True | 最新のメッセージのブロック・ステータス・ワードの値をBC汎用キューにプッシュします。 |
False | BC命令リストの次のOPコードの実行を続けます。 | ||||
即値をプッシュ | PSI | 0x12 | 即値 | True | パラメータ指定のイミディエイト値をBC汎用キューにプッシュします。 |
False | BC命令リストの次のOPコードの実行を続けます。 | ||||
間接プッシュ | PSM | 0x13 | メモリ・アドレス | True | パラメータ指定アドレスに格納されている値をBC汎用キューにプッシュします。 |
False | BC命令リストの次のOPコードの実行を続けます。 | ||||
外部トリガ待機 | WTG | 0x14 | 不要 | True | BC命令リストの次のOPコードで実行を続行する前に、【BCTRIG】ピンの立ち上がりエッジを待機します。 |
False | BC命令リストの次のOPコードの実行を続けます。 | ||||
実行とフリップ | XQF | 0x15 | メッセージ・コントロール/ステータス・ブロック・アドレス | True | パラメータ指定されたメッセージ・コントロール/ステータス・ブロック・アドレスで無条件にメッセージを実行します。 メッセージ・コントロール/ステータス・ブロック・アドレスのBit4をトグルし、新しいメッセージ・コントロール/ステータス・ブロック・アドレスを、XQF OPコードに続くパラメータの更新値として記録します。 その結果、BC命令リストのこのアドレスが次実行されるとき、処理されたメッセージ・コントロール/ステータス・ブロックは、古いアドレスの代わりに更新されたアドレス(古いアドレス XOR 0x0010)に存在します。 |
False | BC命令リストの次のOPコードの実行を続けます。 | ||||
実行、フリップ&GO | XFG | 0x17 | メッセージ・コントロール/ステータス・ブロック・アドレス | True | パラメータ指定されたメッセージ・コントロール/ステータス・ブロック・アドレスで無条件にメッセージを実行します。 メッセージ・コントロール/ステータス・ブロック・アドレスのBit4をトグルし、新しいメッセージ・コントロール/ステータス・ブロック・アドレスを、XFG OPコードに続くパラメータの更新値として記録します。 その結果、BC命令リストのこのアドレスが次実行されるとき、処理されたメッセージ・コントロール/ステータス・ブロックは、古いアドレスの代わりに更新されたアドレス(古いアドレス XOR 0x0010)に存在します。 (注:【XQF】と似ていますが、XFGは次のMCSBの4ワード目で指定されるメッセージ・タイマがゼロにならなくても、XFGの処理が終われば次の命令OPコードをフェッチします。) |
False | BC命令リストの次のOPコードの実行を続けます。 | ||||
WMIメモリ・ポインタへ即値書込み | WMP | 0x1B | 即値 | True | パラメータ指定された即値を専用のWMIメモリ・ポインタ(ホスト・アクセス不可レジスタ)に書き込みます。 |
False | BC命令リストの次のOPコードの実行を続けます。 | ||||
メモリへ即値書込み | WMI | 0x1C | 即値 | True | パラメータ指定された即値を0x0050に、または、実行された最後のWMP命令で指定されたメモリ・アドレス書き込みます。 |
False | BC命令リストの次のOPコードの実行を続けます。 | ||||
メモリ・アドレスで指定されたRAMをデクリメントし、ゼロの場合は次の命令をスキップ | DSZ | 0x1D | メモリ・アドレス | True | パラメータ・ワードで指定されたメモリ・アドレスがデクリメントされます。 新しい値がゼロでない場合、次の命令が実行されます。ゼロの場合、次の命令はスキップされます。 DSZの目的は、N回繰り返し実行ループです。NはWMI OPコードで初期化され、DSZに続く命令はJMPで、ループの先頭になります。 |
False | BC命令リストの次のOPコードの実行を続けます。 | ||||
汎用フラグ・ビット | FLG | 0x0C | 汎用フラグ・ビットのワードのセット、クリア、トグル | パラメータ・ワード値は「Bus Controller (BC) General Purpose Flag Register (Write 0x0037)」の下位バイトをセット、クリア、トグルするために使用されます。 パラメータ・ワードの上位バイトと下位バイトは、以下に示すように、8つのGPフラグ・ビットのそれぞれを変更する2Bit引数を提供します。 |
Bit3-0 | 名称 Bit4=0 |
反転 Bit4=1 |
機能説明 |
0x00 | LT/GP0 | GT-EQ/GP0 | BCロジックがFLG(汎用フラグ・ビット)OPコードを実行するとき、またはホストが「Bus Controller (BC) General Purpose Flag Register (Write 0x0037)」を書き込むときに、
このフラグをトグル、セット、クリアできます。 このフラグはCMT(メッセージ時間と比較)、CMT(フレーム時間と比較)命令OPコードの時間比較の結果に基づいてセット、クリアされます。 |
0x01 | EQ/GP1 | NE/GP1 | 等しいまたはGP1フラグ BCロジックがFLG(汎用フラグ・ビット)OPコードを実行するとき、またはホストが「Bus Controller (BC) General Purpose Flag Register (Write 0x0037)」を書き込むときに、 このフラグをトグル、セット、クリアできます。 このフラグはCMT(メッセージ時間と比較)、CMT(フレーム時間と比較)命令OPコードの時間比較の結果に基づいてセット、クリアされます。 |
0x02 | GP2 | GP2 | 汎用フラグBit2-7 これらのフラグは、BCロジックがFLG(汎用フラグ・ビット)OPコードを実行するとき、またはホストが「Bus Controller (BC) General Purpose Flag Register (Write 0x0037)」を書き込むときに、トグル、セット、クリアされる。 |
0x03 | GP3 | GP3 | |
0x04 | GP4 | GP4 | |
0x05 | GP5 | GP5 | |
0x06 | GP6 | GP6 | |
0x07 | GP7 | GP7 | |
0x08 | NORES | RESP | 無応答フラグ このフラグは、RTがコマンドに応答できなかった場合、「BC (Bus Controller) Configuration Register (0x0032)」のBit15-14を使用してブログラムされたBC無応答タイム・アウトより遅く応答した場合にセットされます。 |
0x09 | FMTERR | FMTERR | フォーマット・エラー・フラグ このフラグは、受信した最後のメッセージに対する応答が、同期エンコード、ビット数、パリティ、ワード・カウントの問題を含むMIL-STD-1553Bバリデーション基準に1つ以上の違反がある場合に設定されます。 |
0x0A | GOODBLOCK | GOODBLOCK | GOOD BLOCK転送 最後の1553メッセージのステータスを反映して、このフラグはエラーのないRT-BC転送、RT-RT転送またはデータ付きモード・コード・コマンドの完了時に設定されます。 このフラグは、無効メッセージの後、BC-RT転送完了後、データ付きモード・コード・コマンド、またはデータ無しモード・コード・コマンドの受信によってリセットされます。 このフラグを使用して、RT-RT転送の送信にエラーがないことを判断できます。 |
0x0B | MSKSTATSET | MSKSTATSET | マスク状態のセット このフラグは、最後の1553メッセージのステータスを反映して、次のいずれかまたは両方の条件が発生したときにセットされます。 ・BCコントロール・ワードのメッセージで、ステータス・マスクBit14-9の少なくとも1つが0であるが、対応するビットが受信されたRTステータス・ワードにセットされる。 ・「BC (Bus Controller) Configuration Register (0x0032)」で、BCR(ブロードキャスト・コマンド受信)マスク有効Bit0が 1である。 |
0x0C | BADMSG | GOODMSG | BAD MESSAGEは、最新のメッセージのステータスを反映し、フォーマット・エラー、無応答、ループバック・エラーに対してセットされます。 |
0x0D | 1RETRY | 1RETRY | Bit4=0…1回または、2回のメッセージ・リトライを表示 Bit4=1…0回のメッセージ・リトライを表示 |
0x0E | 2RETRY | 未定義 | Bit4=0…2回のメッセージ・リトライを表示 Bit4=1…不定 |
0x0F | ALWAYS | NEVER | ALWAYS OPコードを無条件に指定するために設定されます。 OPコードをNOOPとして指定するには、Bit4=1(NEVERビットをセット)にします。 |