module Registers ( NSELX, NWRX, ACKX, ADRIN, DATAIN, DATAOUT, DataDrive, Clear, ScalerA ) ; input NSELX ; input NWRX ; input ACKX ; input [20:2] ADRIN ; input [31:0] DATAIN ; input [63:0] ScalerA ; output [31:0] DATAOUT ; output Clear ; output DataDrive; // add your declarations here reg Clear; reg [31:0] DATAOUT; reg DataDrive; always @(NSELX or NWRX or ACKX or DATAIN or ADRIN) begin DataDrive = 0; DATAOUT = 32'd0; // Write from VME to FPGA // Addresses and Data are driven by VME if (!NSELX & !NWRX & !ACKX) begin DataDrive = 0; DATAOUT = 32'd0; case (ADRIN) 0: Clear = DATAIN[0]; endcase //ADRIN end // Read from FPGA to VME // Addresses driven by VME - Data driven by FPGA else if (!NSELX & NWRX & !ACKX) begin DataDrive = 1; case (ADRIN) 00: DATAOUT = 32'hDABA0002; 01: DATAOUT = ScalerA[31:0]; 02: DATAOUT = ScalerA[63:32]; default: DATAOUT = 32'd0; endcase end // VME not accessing FPGA else if (NSELX & NWRX & ACKX) begin DataDrive = 1; DATAOUT = 32'd0; end end endmodule