module dataEx_v2 ( input WE_MC, OE_MC, CS_MC, input [15:0] adress_MC, inout [15:0] data_MC, inout [15:0] data_TDC, output WE_TDC, CS_TDC, OE_MC_TDC, output [3:0] adress_TDC ); logic flag; reg [15:0] adr_reg; always_comb begin if (!CS_MC) begin if(adress_MC <= 16'hf) flag = 0; else flag = 1; end else flag = 1; end always_ff @(posedge WE_MC) begin if (!CS_MC && (adress_MC == 16'h10)) adr_reg <= data_MC; end always_comb begin if (!CS_MC && (adress_MC == 16'h10) && !OE_MC) data_MC = adr_reg; else if (!OE_MC_TDC && !flag) data_MC = data_TDC; else data_MC = 16'hz; end assign WE_TDC = (flag || WE_MC); assign OE_MC_TDC = (flag || OE_MC); assign data_TDC = (!WE_MC && !flag) ? data_MC : 16'hz; assign adress_TDC = (!flag) ? adress_MC : 4'h0; assign CS_TDC = flag; endmodule