2進数を含む配列Aがあるとします。 [0 0 1 0 1 1]。ここで、配列Aの最初の '1'の位置を特定できるエンコーダを作成します。たとえば、その配列の最初の要素にインデックス1を渡すと、ロジックは配列Aに対して3を出力します。それを行うためのエレガントな方法はありますか?私はそれを行う1つの方法は、ROMを使用していると思いますが、どのようにVerilogでそれを書くのですか?ルックアップテーブルを使用していますか?Verilogの最初の非ゼロ要素エンコーダ
0
A
答えて
1
あなたはどんなエンコーディングのために組み合わせ論理の構築を自動化するgenerate
を使用することができることが望まれます。次の例では、最も高いセットビットのインデックスを返します。セットビットがない場合は-1を返します。
generateステートメントは、ループのアンロールに使用されます。ループの各段階は、ループインデックスおよび入力ベクトルビットのいくつかの任意の関数を生成することができる。第1段階の出力は次の入力への入力であるため、これは次第に複雑な組み合わせ論理を形成する。合成ツールは、最も効率的な方法で、多くの段階の組み合わせロジックを最小化、パック化、および結合するために使用されます。
たとえば、ザイリンクスVivadoでは、次の例では、16個のカスケード接続された2:1マルチプレクサではなく、16ビット入力の2つの入力LUTステージが2つに削減されています。
module highbit #(
parameter OUT_WIDTH = 4, // out uses one extra bit for not-found
parameter IN_WIDTH = 1<<(OUT_WIDTH-1)
) (
input [IN_WIDTH-1:0]in,
output [OUT_WIDTH-1:0]out
);
wire [OUT_WIDTH-1:0]out_stage[0:IN_WIDTH];
assign out_stage[0] = ~0; // desired default output if no bits set
generate genvar i;
for(i=0; i<IN_WIDTH; i=i+1)
assign out_stage[i+1] = in[i] ? i : out_stage[i];
endgenerate
assign out = out_stage[IN_WIDTH];
endmodule
1
casexで問題を解決できます。
function [2:0] prienc6;
input [5:0] select;
reg [2:0] out;
begin
casex(select)
6'b000001: out = 3'b101;
6'b00001x: out = 3'b100;
6'b0001xx: out = 3'b011;
6'b001xxx: out = 3'b010;
6'b01xxxx: out = 3'b001;
6'b1xxxxx: out = 3'b000;
endcase
prienc6 = out ;
end
endfunction
関連する問題
- 1. 行列の非ゼロ要素の逆数
- 2. Matlab - ゼロ行列要素ごとに最も近い非ゼロ要素のインデックスを見つける
- 3. 最初の要素
- 4. 最初と最後の非オーバーフロー要素をターゲットにする
- 5. jQueryの:要素の最初の子要素の最初と最後の部分
- 6. Simulinkの2次元配列の最初の非ゼロ要素のインデックスを見つける
- 7. キャプチャ非ゼロ要素、カウントおよびインデックス
- 8. DESSのクラスで最初の要素を非表示
- 9. 行列の行の最初のゼロ要素を置き換えます。
- 10. 最初の要素と最後の要素のjqueryスライダアニメーション
- 11. BigDecimalの最初の非ゼロ桁を取得する方法
- 12. Python:マルチシリーズデータフレームの最初の非ゼロを見つける方法は?
- 13. (非)対角行列で非ゼロ要素を見つけるスピード
- 14. 最初のリストの最後の2つの要素= 2番目のリストの最初の2つの要素 - プロローグ
- 15. 3Dマトリックス内の非ゼロ要素の3D位置をプロットする
- 16. 配列内の非ゼロ要素の検索
- 17. ドロップダウンリストの空の最初の要素
- 18. CollectionViewの最初の要素のIndexPath
- 19. Y要素の最初のXのcombineLatest
- 20. パンダのラベルで最初と最後の非ゼロ列を見つけよう
- 21. 最初の要素の唯一の子要素を取得
- 22. 最初の非ゼロ値で始まり、最初のゼロより後のすべてのゼロを含む平均数式
- 23. jQueryクリック型の最初の要素
- 24. ng-repeatの最初の要素をトリガー
- 25. ng-repeat implicationの最初の要素
- 26. は、リンクリストの最初の要素
- 27. MySQLの更新と最初の要素
- 28. CSSの最初の要素を取る
- 29. 各データフレームパーティションの最初の要素Spark 2.0
- 30. ブートストラップテーブルの最初の要素をシフト