一、模块代码
module setting_reg
#(parameter my_addr = 0,
parameter width = 32,
parameter at_reset=32'd0)
(input clk, input rst, input strobe, input wire [7:0] addr,
input wire [31:0] in, output reg [width-1:0] out, output reg changed);
always @(posedge clk)
if(rst)
begin
out <= at_reset;
changed <= 1'b0;
end
else
if(strobe & (my_addr==addr))
begin
out <= in;
changed <= 1'b1;
end
else
changed <= 1'b0;
endmodule // setting_re
二、例化模块:
setting_reg #(.my_addr(0), .width(32), .at_reset(32'd1)) setting_reg_inst(
.clk(clk),
.rst(rst),
.strobe(strobe),
.addr(addr),
.in(in),
.out(out),
.changed(changed)
);
这个方法证明可以使用了,如果子模块没有数据,很可能是没有接到复位信号,复位信号要足够长,子模块才能接收到,正常模块都要经过复位,才能开始正常的状态运转。