Verilog用のALUを書き留めようとしています。 私が経験したいくつかのエラーがあります。ALU用のVerilogモジュールが正しく動作しません
まず第一に、ここに私のコードは次のとおりです。
module yAlu(z, ex, a, b, op);
input [31:0] a, b;
input [2:0] op;
output [31:0] z, ztemp;
output ex;
wire[31:0]a0,a1,a2,a3,a4, atemp;
assign slt = 0;
assign ex = 0;
assign a0 = a & b;
assign a1 = a | b;
assign a2 = a + b;
assign a3 = a - b;
assign a4 = a[31]^b[31];
yMux #(32) lo(zLo, a0, a1, op[0]);
yMux #(32) hi(zHi, a2, a3, op[0]);
yMux #(32) temp(atemp, zLo, zHi, op[1]);
assign z = (op[2] == 1) ? a4 : atemp;
assign slt = z;
endmodule
そしてyAlu.vは、以下の用途:最後にYMUX上記
module yMux(z, a, b, c);
parameter SIZE = 2;
output [SIZE-1:0] z;
input [SIZE-1:0] a, b;
input c;
yMux1 mine[SIZE-1:0](z, a, b, c); // 2-bit 2 -to-1 mux and it would be cumbersome to write 32 mux instantiation lines.
endmodule
には、以下の使用しています。ここでは
module yMux1(z, a, b, c);
output z;
input a, b, c;
wire notC, upper, lower;
// Gates and interconnections for MUX
// if c is 0, z=a.
// if c is 1, z=b
not my_not(notC, c);
and upperAnd(upper, a, notC);
and lowerAnd(lower, c, b);
or my_or(z, upper, lower);
endmodule
がされています上記のテスト対象製品:
次のように順番に私の質問:上記のみ
Question 1.
コードは、0と1のために働くことはそれ以上に動作しません。 例えば、第2のソースコードを、
A = $ランダム性があります。 b = $ランダム;
これは機能しません。 1または0とb = 1または0のときにのみ機能します。
Question 2.
「slt」機能が正しく機能しているかどうかわかりません。これを教えるインストラクターは、sltが講義で何をしているのか私に話したことはありませんが、グーグルなどでデザインをしてもらう必要があります。
Question 3.
私がコンパイルすると、次のエラーが発生します。どうしてこれなの?
yAlu.v:38: warning: Port 1 (z) of yMux expects 32 bits, got 1.
yAlu.v:38: : Padding 31 high bits of the port.
yAlu.v:39: warning: Port 1 (z) of yMux expects 32 bits, got 1.
yAlu.v:39: : Padding 31 high bits of the port.
yAlu.v:40: warning: Port 2 (a) of yMux expects 32 bits, got 1.
yAlu.v:40: : Padding 31 high bits of the port.
yAlu.v:40: warning: Port 3 (b) of yMux expects 32 bits, got 1.
yAlu.v:40: : Padding 31 high bits of the port.
I can't fix this at all.
私はそれを正しくやっているのか分からない。私の言うことを指示するマニュアルには、十分な説明がなく、サンプル出力もありません。
私はとにかく時間内に終えることができなかったので、私はそれは問題ではないと思いますが、私は、私は私の問題の解決策を知っている必要がありますと思います。あなたが私を助けることができるかどう
はどうもありがとうございました。
タグをスパミングするのをやめてください! VerilogはアセンブラにもC言語にも関係ありません!それはプログラミング言語でさえありません。 – Olaf