如何在verilog中给出一个模块的输出,作为另一个模块的输入? //alu的代码 模块alu(结果、A、B、控制); 输出reg[0:31]结果; 输入[0:31]A; 输入[0:31]B; 输入[0:5]控制; 始终@(*) 开始 病例(对照) //F0 f1 ena enb INA公司乐趣 6'b011000:结果=A; 6'b010100:结果=B; 6'b011010:result=~A; 6'b101100:result=~B; 6'b111100:结果=A+B; 6'b111101:结果=A+B+1; 6'b111001:结果=A+1; 6'b110101:结果=B+1; 6'b111111:结果=B-A; 6'b110110:结果=-A; 6'b001100:结果=A&B; 6'b011100:结果=A | B; 6'b010000:结果=0; 6'b110001:结果=1; 6'b110010:结果=-1; 默认值:结果=0; 尾声 结束 端模 //换档器代码 模块移位器(C、sll、sr、Alu输出、clk); 输出调节器[0:31]C; 输入时钟; 输入sll,sr; 输入[0:31]算术输出; 整数i; 始终@(posedge clk) 开始 如果(sll==1'b1&&sr==1'b0) 开始 对于(i=0;i

如何在verilog中给出一个模块的输出,作为另一个模块的输入? //alu的代码 模块alu(结果、A、B、控制); 输出reg[0:31]结果; 输入[0:31]A; 输入[0:31]B; 输入[0:5]控制; 始终@(*) 开始 病例(对照) //F0 f1 ena enb INA公司乐趣 6'b011000:结果=A; 6'b010100:结果=B; 6'b011010:result=~A; 6'b101100:result=~B; 6'b111100:结果=A+B; 6'b111101:结果=A+B+1; 6'b111001:结果=A+1; 6'b110101:结果=B+1; 6'b111111:结果=B-A; 6'b110110:结果=-A; 6'b001100:结果=A&B; 6'b011100:结果=A | B; 6'b010000:结果=0; 6'b110001:结果=1; 6'b110010:结果=-1; 默认值:结果=0; 尾声 结束 端模 //换档器代码 模块移位器(C、sll、sr、Alu输出、clk); 输出调节器[0:31]C; 输入时钟; 输入sll,sr; 输入[0:31]算术输出; 整数i; 始终@(posedge clk) 开始 如果(sll==1'b1&&sr==1'b0) 开始 对于(i=0;i,verilog,iverilog,Verilog,Iverilog,调用模块移位器中的模块alu //code for alu module alu(result,A,B,control); output reg [0:31] result; input [0:31] A; input [0:31]B; input [0:5]control; always @(*) begin case(control) //F0 f1 ena enb inva inc fun 6'b011000:result=A; 6'b010100:result=B; 6'b011010:

调用模块移位器中的模块alu

//code for alu
module alu(result,A,B,control);
output reg [0:31] result;
input [0:31] A;
input [0:31]B;
input [0:5]control;
always @(*)
begin
case(control)
//F0 f1 ena enb inva inc fun
6'b011000:result=A;
6'b010100:result=B;
6'b011010:result=~A;
6'b101100:result=~B;
6'b111100:result=A+B;
6'b111101:result=A+B+1;
6'b111001:result=A+1;
6'b110101:result=B+1;
6'b111111:result=B-A;
6'b110110:result=-A;
6'b001100:result=A&B;
6'b011100:result=A|B;
6'b010000:result=0;
6'b110001:result=1;
6'b110010:result=-1;
default:result=0;
endcase
end
endmodule

//code for shifter
module shifter(C,sll,sr,Alu_Out,clk);
output  reg [0:31]C;
input clk;
input sll,sr;
input  [0:31]Alu_Out;
integer i;
always @(posedge clk)
begin
if(sll==1'b1 && sr==1'b0)
    begin
        for(i=0;i<24;i=i+1)
            begin
            C[i]<=Alu_Out[i+8];
            end
        for(i=31;i>23;i=i-1)
            begin
            C[i]<=0;
            end
    end
if(sll==1'b0 && sr==1'b1)
    begin
    C[0]<=Alu_Out[0];       
    for(i=0;i<31;i=i+1)
            begin
            C[i+1]<=Alu_Out[i];
            end
    end
end
endmodule
您的rest代码
来自第一个模块的结果值将存储在alu_out中,并在换档杆模块中提供输入。
您也可以使alu正常工作,因为您只需要一个输出。

如何连接模块请看。至于如何编写测试台:您必须自己编写,但如果您有特定问题,我们愿意提供帮助。
module shifter(C,sll,sr,Alu_Out,clk,A,B,control);
output  reg [0:31]C;
input clk;
input sll,sr;
input [0:31] A;
input [0:31]B;
input [0:5]control;
input  [0:31]Alu_Out;

alu first_call(Alu_out,A,B,control);