このデジタル論理システムで特殊なケースをどのように処理しますか?
-
20-08-2019 - |
質問
このデジタル論理図を 答え に スタックオーバーフローの別の質問. 。これは、Verilog または VHDL でコーディングされ、最終的には FPGA に実装される論理システムについて説明します。
代替テキスト http://img145.imageshack.us/img145/5125/bitshifterlogicdiagramkn7.jpg
図内の番号付きボックスは、フィールド内のビットを表します。各フィールドには、 K ビットとそのビット 現在 そして マスク コンピュータ システムによって提供されます (ラッチ レジスタまたは同等のものを使用)。中のビット 次 同じコンピュータ システムに読み戻されます。
私が投稿した解決策は、少なくとも 1 つのビットが設定されている限り機能します。 マスク フィールドに 1 つのビットが設定されています。 現在 ビットフィールド。アイデアは、 次 ビットフィールドは 現在 コンピュータ システムが何らかのタスク (元の質問ではスケジューリング操作) を実行した後のビット フィールド。
そこで、私の質問は次のとおりです。このシステムを変更して、次のような特殊なケースを適切に処理できるようにするにはどうすればよいでしょうか。 現在 ビットフィールドはすべてゼロ (ビットが設定されていない) ですか? このままでは、すべてのビットが入っていれば、 現在 がゼロの場合、そのビットに関係なく、出力もゼロになります。 マスク に設定されています。
理想的には、 現在 すべて 0 であり、最も低い設定ビットです。 マスク に設定する必要があります 次. 。また、システムは、論理ゲートを指数関数的に追加することなく、任意のビット (K) 数までスケーラブルである必要があります。元の質問の精神は、任意のビット数に対して簡単に実装できるソリューションを考え出すことでした。
以下も参照してください。 このスタックオーバーフローの質問
解決
私にとっては、私は彼らがエントリに1に設定されたビットのいずれかを持っている必要があることをFPGAのユーザーを言うだろう。
しかし、それは最初の大きなNORゲート(すべての入力がfalseの場合にのみ出力が真であるように)に予め供給し、現在のすべての入力の考えと間違っているものをお好みのソリューション、はない場合。現在のすべてのラインも、それはだと入る前に、現在の[1]当社のNORゲートの出力とORされていることを除いて、そのANDゲートに通じ継続ゲート
その方法は、現在は、[1]全ての電流が偽であれば、ANDゲートに入る真なります。
私は、ブール代数を理解して覚えておいてください、私は生のハードウェア上で働いたことがありません - 私はあなたが正しいタイミングを保証するために、ANDゲートにすべての入力信号をバッファリングする必要があります推測しているが、私は、あなたが知っているよ疑います私よりも優れている。
次の図は、場合に残っているように、そのコード/前のブロックを修正 - 最新のSOの更新は(比例、ではない固定幅フォントにそれらを残して)それらを詰めているようです。とにかく、eJames'グラフィカルな図が優れてます。
ここに私の図、あなたよりやや少ないエレガントです: - ):
+-------------------+
| |
| +---- |
Current[1]-----+------\ \ |
|NOR|o--+ |
Current[2-k]---+------/ / | |
| +---- | |
| +\ /+
| | \_/ |
+---+ | OR |
\ /Buffer \ /
+ ---
| |
+---+ +---+
|2-k| | 1 | <- These signals feed
+---+ +---+ into your AND gates.