これは初めてのVerilog HDLプログラミングであり、私のコードに何が問題なのかわかりません。私はビヘイビアコードで単純なALUを設計する必要があります。Verilog HDLビヘイビアコーディングモジュール(ALU用)
これまでは、減算器と加算器モジュールを作成しました(他のモジュールを追加する必要がありますが、他のモジュールを追加する前に、これらのモジュールをALUモジュールで使用したいと思います)。
私は、同じプロジェクト(かなり確信して、これは行動ある?)で別々.Vファイルで以下のモジュールがあります。私はこれらをテストし、彼らが働いていることがわかり
module adder3bit(sum, co, a, b);
parameter n = 2;
output reg [n:0] sum;
output reg co;
input [n:0] a;
input [n:0] b;
always @(a, b)
{co, sum} = a + b;
endmodule
module subtract3bit(diff, bo, a, b);
parameter n = 2;
output reg [n:0] diff;
output reg bo;
input [n:0] a;
input [n:0] b;
always @(a, b)
{bo, diff} = a - b;
endmodule
を。
は今、私はメインALUモジュールにそれらを呼び出すしようとしています:
module alu(out, overflow, a, b,sel);
input [2:0] a, b;
input sel;
output [2:0] out;
output overflow;
always @(a,b,sel)
begin
if(sel=='b0)
adder3bit A1(out,overflow,a,b);
if(sel=='b1)
subtract3bit S1(out, overflow, a, b);
end
endmodule
私の構文が間違っているかもしれないが、それはエラーを示しています。私はVerilogにはまったく慣れていません。私は最初にC.を学ぶことでどのように感じたかを感じます。
モジュールが正しく呼び出されていることはわかっていますが、if文と何か関係があると思います。
ありがとう、私は何か新しいことを学ぶことを望みます!
'n'と' N'を使って違法な同じパラメータを指定します。 1つまたは別のものを選ぶ。業界といくつかのプログラミング言語の一般的な実践であるため、大文字を使用してパラメータを識別することをお勧めします。 – Greg
もちろん、ありがとうございます! –
ありがとうございました。したがって、モジュールは事前に初期化する必要があります。つまり、alwaysブロック内のモジュールの出力が読み取られるたびに、aとbに応じて新しい入力が読み込まれます。また、sumとdiffの2本の線を宣言する代わりに、単一のout線を使用することもできますか? – Darklink9110