User Tools

Site Tools


verilog_time_stamping
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
verilog_time_stamping.txt · Last modified: 2013/12/11 16:22 by pereira