航空・宇宙関連の電子機器で使用される特殊なデータバス、スタンダード(標準)について紹介します。

Nacelle HP
ホーム製品技術資料HI-6138/37/36/35 技術解説BC設定BCメッセージ構造/OPコード

BCメッセージ構造

BCメッセージ構造を下図に示します。


BCメッセージ構造

【BC命令リスト開始アドレス・レジスタ(0x0033)】…BC命令リストの最初のアドレスを格納
【BC命令リスト・ポインタ・レジスタ(0x0034)】…現在実行注のBC命令リストOPコードのアドレス


OPコード

BC命令リストを作成するには、OPコード、パラメータ(ポインタ)の2ワードをセットにして作成します。 パラメータ(ポインタ)は、メッセージ・コントロール/ステータス・ブロック(MCSB)と呼ばれる連続したワードのブロックを指します。 OPコード・フォーマットを下図に示します。

OPコード・フォーマット


OPコードは、「奇数パリティ」,「OPコード」,「バリデーション」,「コンディション・コード」の4つの部分で構成され、 バリデーション部分は設定不可能です。

OPコード表を下記に示します。コードの「0x0001~0x0015」は、DDC社のEMACEで使用されているOPコードとほぼ同じ機能です。 Holt社のみの機能は緑色背景部分です。

OPコード
名称 略語 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ビットをセット)にします。
Copyright(C) MIL-STD-1553.jp All Rights Reserved.