求助:verilog中调用其他module的语法问题
我想在 registers 模块中, 调用 register 模块,组合出 60个寄存器, 这60个寄存器都是 register的实例。
但是其中有些 寄存器的 某些bit是 只读的,是由 外部信号控制的。
例如00H寄存器中,第四个bit代表 全双工,由外部信号控制,
此时 读写寄存器 就要 空出一个 bit来。
这个是调用。
//Net Control Register . 00H
wire temp1;
mac_register NCR_1
(
.DataIn (DataIn),
.DataOut ({NCR_OUT[7:4],temp1,NCR_OUT[2:0]}),
//.DataOut (NCR_OUT),
.Write (Write),
.Clk (Clk),
.Reset (Reset),
.SyncReset (1'b0)
);
assign NCR_OUT[3] = FullD_In;
我目前的办法是,分而治之。把NCR_OUT的不受控制的那个bit空出来。
但是({NCR_OUT[7:4], ,NCR_OUT[2:0]}),但我发现只是空出来,不管用。
必须用一个 占位 连线 temp1 占据那一空位才行
请问各位大侠有什么好办法么?
这是registers 的 代码
module mac_registers( DataIn, Address, Rw, Cs, Clk, Reset, DataOut,
FullD_In, //test,test2,test3,dataInTest
);
parameter Tp = 1;
input [7:0] DataIn;
input [7:0] Address;
input Rw;
input Cs;
input Clk;
input Reset;
output [7:0] DataOut;
reg [7:0] DataOut;
input FullD_In;
wire Write = Cs & Rw;
wire Read = Cs & ~Rw;
wire NCR_SEL = Write && (Address == 8'h0);
wire [7:0] NCR_OUT;
//Net Control Register . 00H
wire temp1;
mac_register NCR_1
(
.DataIn (DataIn),
.DataOut ({NCR_OUT[7:4],temp1,NCR_OUT[2:0]}),
//.DataOut (NCR_OUT),
.Write (Write),
.Clk (Clk),
.Reset (Reset),
.SyncReset (1'b0)
);
assign NCR_OUT[3] = FullD_In;
// Reading data from registers
always @ (Read or NCR_OUT or NCR_SEL)
begin
if(Read) // read
case(Address)
8'h0: DataOut<=NCR_OUT;
default: DataOut<=8'h0;
endcase
else
DataOut<=8'h0;
end
endmodule
这是 register的代码
module mac_register(DataIn, DataOut, Write, Clk, Reset, SyncReset);
parameter WIDTH = 8; // default parameter of the register width
parameter RESET_VALUE = 0;
input [WIDTH-1:0] DataIn;
input Write;
input Clk;
input Reset;
input SyncReset;
output [WIDTH-1:0] DataOut;
reg [WIDTH-1:0] DataOut;
always @ (posedge Clk or posedge Reset)
begin
if(Reset)
DataOut<=#1 RESET_VALUE;
else
if(SyncReset)
DataOut<=#1 RESET_VALUE;
else
if(Write) // write
DataOut<=#1 DataIn;
end
endmodule // Register