ABORT信号の入力によるbus errorの発生について、ロジックアナライザで観測してみました。観測結果は以下の通りです。
![]() |
DCJ11のバストランザクションについてはまだ勉強中なので確信はありませんが、ABORT信号が短時間に二回アサートされているのが気になります。
もう少しバスの勉強をしてから解析を続けます。
誤動作の原因の二つ目が判明しました。 符号なし2進数と符号付2進数の比較 後述するSOFUB_MAPの実装に符号なし2進数と符号付2進数を比較しているコードがありました。直接の比較ではありませんでしたが、符号なし整数の値を符号付整数の変数に代入し、その変数と定数を比較していたため...
ABORT_n(bus_error)がbus_readとandされていて、bus_readが~BUFCTL_nとandされているのがこの形(2回アサート)になってる原因ですね。unix v6, v7, Microdiagnostic testはこの適当な実装で動いていたので特に気にしていませんでしたが、たしかにデータシートの仕様に合っていないようです。bus_errorをwireではなくregにして値を保持するようにするのが正しいかもです。
返信削除コメントありがとうございます。HDL(Verilog, VHDLなど)については素人なのですが、ご指摘のように、1) 値を保持する、2) CONT信号がアサートされたら解除するというような変更を試みてみます。
削除