私が気にしていることは、8ビットの入力を1つ取り、1を数えることです。次に、それらの1を表します。Verilogでは、8ビット入力の1の数を数えて出力しますか?
01010111出力0101(5 1の入力からあります)
module 8to4 (in,out,hold,clk,reset);
input [7:0] in; //1 bit inputs
reg [7:0] hold; //possible use for case statement
output [3:0] out; //Shows the count of bits
always @(clk)
begin
out = in[0] + in[1] + in[2] + in[3] + in[4] + in[5] + in[6] + in[7]; //Adds the inputs from testbench and outputs it
end
endmodule
質問すべき:
- は、適切な方法は、8 1ビット入力を持っているということですか?あるいは、各変数を1ビットとして宣言する必要がありますか?入力A、B、C、D、E、F、G、H;
- 私の上記のコードが正しければ、1のカウントを表示するには適切な方法ですか?ケースステートメントが必要でしょうか?
私は本当にVerilogが新しく、まだテストベンチについて考えたくありません。
申し訳ありませんが、私はまだこれに慣れていません。おそらく '#(WIDTH-8)'を説明できますか?グーグルの「integer ii;」の束の後でも、正直言って私はVerilogがそのようなintを作ることができないと私はそれのためのテストベンチを書く手がかりを持っていないだろう。 –
申し訳ありませんが、それはタイプミスでした。私はモジュールを異なるサイズの入力に使用できるようにパラメータ化していました。 WIDTH = 8のとき、 'for'ループは元の式と全く同じことを行います。合成ツールは私のループをあなたの表現に展開します。しかし、パラメータ化されたので、 'WIDTH'を16に上書きすることができます。 –