私はいくつかの出力ラインに N から M のデコーダーを持つ小さな 8 ビット プロセッサを持っています。出力への唯一のインターフェイスは状態変更であり、リードバックはありません。
デバイスは、発生するイベントを迅速に (ただしランダムに) カウントし、このカウントを「単一ビット変更」コードとして別のデバイスに提供する必要があります。出力ピンは別のデバイスによって並行して読み取られ、他のデバイスが決定するのと同じくらい速くまたは控えめに読み取られる可能性があるため、カウントが必要です。
標準の Binary Reflective Gray コードを使用する必要はありません。単一ビット変更コードを使用できます。
ただし、次のビットを追跡して効率的に変更できるようにしたいと考えています。
私は「LowestBitSet」命令を持っていません.4つの8ビットレジスタに設定された最下位ビットを見つけるのはサイクルを消費するので、この「一般的な」アプローチを使用することはできません:
Keep binary counter A
Find B as A XOR (A+1)
Bit to change is LowestBitSet in B
できるだけ少ないメモリとレジスタでこれを計算したいのですが、大きなルックアップ テーブルにはメモリが制限されすぎています。サイクル タイムは、より重要な要素です。
アルゴリズムに関する提案はありますか?