Verilog 如何连接两个模块?

Verilog 如何连接两个模块?,verilog,xilinx,alu,Verilog,Xilinx,Alu,我必须在一个有8个函数的ralu中创建一个alu,但是当我尝试模拟“ralu”的行为模型时,我得到的是X(输出)和Z(输入)。我做错了什么?(当我只模拟alu时,它工作得很好) 模块alu( 输入[3:0]op1, 输入[3:0]op2, 输入[2:0]函数, 输出寄存器[3:0]输出 ); 始终@(*) 案件(func) 3'b000:out=op1&op2;//functia和 3'b001:out=op1 | op2;//或 3'b010:out=~(op1和op2);//与非门 3'b0

我必须在一个有8个函数的ralu中创建一个alu,但是当我尝试模拟“ralu”的行为模型时,我得到的是X(输出)和Z(输入)。我做错了什么?(当我只模拟alu时,它工作得很好)

模块alu(
输入[3:0]op1,
输入[3:0]op2,
输入[2:0]函数,
输出寄存器[3:0]输出
);
始终@(*)
案件(func)
3'b000:out=op1&op2;//functia和
3'b001:out=op1 | op2;//或
3'b010:out=~(op1和op2);//与非门
3'b011:out=~(op1 | op2)//也没有
3'b100:out=op1^op2;//异或
3'b101:out=op1~^op2//XNOR
3'b110:out=op1+op2;
3'b111:out=op1-op2;
尾声
端模
模块ralu(
在中输入[3:0],
输入[2:0]函数,
输入时钟,
输入负载,
输出[3:0]输出
);
reg[3:0]op1;
reg[3:0]op2;
始终@(posedge clk)

如果(加载)op2您在
ralu
中缺少
alu
的声明,即:

alu myALU(
    .op1(op1),
    .op2(op2),
    .func(func),
    .out(out)
);

输入中的Z表示没有任何东西驱动它们。这可以解释X的原因。您没有显示如何将
alu
连接到
ralu
或您的测试台,因此很难进行诊断。实际上,我的问题是,我不知道如何将两者连接起来。您应该尝试或阅读语言参考手册(LRM),如SystemVerilog§23。模块和层次结构我很确定这是一个愚蠢的问题,但我应该在哪里添加它呢?或者
alumylu(.*)
因为
@(*)
证明至少支持Verilog 2001。@user3629371:在
ralu
模块定义内。
alu myALU(
    .op1(op1),
    .op2(op2),
    .func(func),
    .out(out)
);