Line 27... |
Line 27... |
// //
|
// //
|
//==================================================================//
|
//==================================================================//
|
|
|
module ADCDataBuffer(
|
module ADCDataBuffer(
|
CLK_64MHZ, MASTER_CLK, MASTER_RST,
|
CLK_64MHZ, MASTER_CLK, MASTER_RST,
|
TIME_BASE, TRIGGER_LEVEL, ADC_DATA,
|
TIMESCALE, TRIGGER_LEVEL, VERT_OFFSET, HORZ_OFFSET,
|
|
ADC_DATA,
|
CLK_ADC,
|
CLK_ADC,
|
SNAP_DATA_EXT, SNAP_ADDR_EXT, SNAP_CLK_EXT,
|
SNAP_DATA_EXT, SNAP_ADDR_EXT, SNAP_CLK_EXT,
|
sm_adc_ram, triggered
|
TRIGGERSTYLE
|
);
|
);
|
|
|
//==================================================================//
|
//==================================================================//
|
// PARAMETER DEFINITIONS //
|
// PARAMETER DEFINITIONS //
|
//==================================================================//
|
//==================================================================//
|
Line 53... |
Line 54... |
// INPUTS / OUTPUTS //
|
// INPUTS / OUTPUTS //
|
//----------------------//
|
//----------------------//
|
input CLK_64MHZ;
|
input CLK_64MHZ;
|
input MASTER_CLK;
|
input MASTER_CLK;
|
input MASTER_RST;
|
input MASTER_RST;
|
input[5:0] TIME_BASE;
|
input[3:0] TIMESCALE;
|
input[8:0] TRIGGER_LEVEL;
|
input[10:0] TRIGGER_LEVEL, VERT_OFFSET, HORZ_OFFSET;
|
input[8:0] ADC_DATA;
|
input[8:0] ADC_DATA;
|
|
|
output CLK_ADC;
|
output CLK_ADC;
|
|
|
output[8:0] SNAP_DATA_EXT;
|
output[8:0] SNAP_DATA_EXT;
|
input[10:0] SNAP_ADDR_EXT;
|
input[10:0] SNAP_ADDR_EXT;
|
input SNAP_CLK_EXT;
|
input SNAP_CLK_EXT;
|
|
|
output[1:0]sm_adc_ram;
|
input[1:0] TRIGGERSTYLE;
|
output triggered;
|
|
//----------------------//
|
//----------------------//
|
// WIRES / NODES //
|
// WIRES / NODES //
|
//----------------------//
|
//----------------------//
|
wire CLK_64MHZ, MASTER_CLK, MASTER_RST;
|
wire CLK_64MHZ, MASTER_CLK, MASTER_RST;
|
wire[5:0] TIME_BASE;
|
wire[3:0] TIMESCALE;
|
wire[8:0] TRIGGER_LEVEL;
|
wire[10:0] TRIGGER_LEVEL, VERT_OFFSET, HORZ_OFFSET;
|
wire[8:0] ADC_DATA;
|
wire[8:0] ADC_DATA;
|
wire CLK_ADC;
|
wire CLK_ADC;
|
wire[8:0] SNAP_DATA_EXT;
|
wire[8:0] SNAP_DATA_EXT;
|
wire[10:0] SNAP_ADDR_EXT;
|
wire[10:0] SNAP_ADDR_EXT;
|
wire SNAP_CLK_EXT;
|
wire SNAP_CLK_EXT;
|
|
wire[1:0] TRIGGERSTYLE;
|
|
|
|
|
//----------------------//
|
//----------------------//
|
// VARIABLES //
|
// VARIABLES //
|
//----------------------//
|
//----------------------//
|
Line 102... |
Line 104... |
//------------------------------------------------------------------//
|
//------------------------------------------------------------------//
|
|
|
Driver_ADC ADC(
|
Driver_ADC ADC(
|
.CLK_64MHZ(CLK_64MHZ),
|
.CLK_64MHZ(CLK_64MHZ),
|
.MASTER_RST(MASTER_RST),
|
.MASTER_RST(MASTER_RST),
|
.TIME_BASE(TIME_BASE),
|
.TIMESCALE(TIMESCALE),
|
.CLK_ADC(CLK_ADC),
|
.CLK_ADC(CLK_ADC),
|
.ADC_DATA(ADC_DATA),
|
.ADC_DATA(ADC_DATA),
|
.DATA_OUT(data_from_adc)
|
.DATA_OUT(data_from_adc)
|
);
|
);
|
|
|
Line 120... |
Line 122... |
//------------------------------------------------------------------//
|
//------------------------------------------------------------------//
|
wire VCC, GND;
|
wire VCC, GND;
|
assign VCC = 1'b1;
|
assign VCC = 1'b1;
|
assign GND = 1'b0;
|
assign GND = 1'b0;
|
|
|
|
// move the following into a more organized area
|
|
wire[10:0] vert_adjustment;
|
|
assign vert_adjustment = (VERT_OFFSET);
|
|
|
RAMB16_S9_S9 ADC_QuasiFifo_Buffer(
|
RAMB16_S9_S9 ADC_QuasiFifo_Buffer(
|
.DOA(), .DOB(buf_adc_data[7:0]),
|
.DOA(), .DOB(buf_adc_data[7:0]),
|
.DOPA(), .DOPB(buf_adc_data[8]),
|
.DOPA(), .DOPB(buf_adc_data[8]),
|
.ADDRA(fifo_addr), .ADDRB(buf_adc_addr),
|
.ADDRA(fifo_addr), .ADDRB(buf_adc_addr),
|
.CLKA(CLK_ADC), .CLKB(CLK_ADC),
|
.CLKA(CLK_ADC), .CLKB(CLK_ADC),
|
Line 137... |
Line 143... |
RAMB16_S9_S9 ADC_Data_Snapshot(
|
RAMB16_S9_S9 ADC_Data_Snapshot(
|
.DOA(), .DOB(SNAP_DATA_EXT[7:0]),
|
.DOA(), .DOB(SNAP_DATA_EXT[7:0]),
|
.DOPA(), .DOPB(SNAP_DATA_EXT[8]),
|
.DOPA(), .DOPB(SNAP_DATA_EXT[8]),
|
.ADDRA(snap_addr), .ADDRB(SNAP_ADDR_EXT),
|
.ADDRA(snap_addr), .ADDRB(SNAP_ADDR_EXT),
|
.CLKA(CLK_ADC), .CLKB(SNAP_CLK_EXT),
|
.CLKA(CLK_ADC), .CLKB(SNAP_CLK_EXT),
|
.DIA(buf_adc_data[7:0]), .DIB(8'b0),
|
.DIA(buf_adc_data[7:0]+vert_adjustment[7:0]), .DIB(8'b0), /* VERTICAL OFFSET */
|
.DIPA(buf_adc_data[8]), .DIPB(GND),
|
.DIPA(buf_adc_data[8]+vert_adjustment[8]), .DIPB(GND), /* VERTICAL OFFSET */
|
.ENA(VCC), .ENB(VCC),
|
.ENA(VCC), .ENB(VCC),
|
.WEA(VCC), .WEB(GND),
|
.WEA(VCC), .WEB(GND),
|
.SSRA(GND), .SSRB(GND)
|
.SSRA(GND), .SSRB(GND)
|
);
|
);
|
|
|
Line 158... |
Line 164... |
else begin
|
else begin
|
// if(sm_adc_ram != ss_fifo_fill || sm_adc_ram != ss_fifo_half || sm_adc_ram != ss_save_snapshot)
|
// if(sm_adc_ram != ss_fifo_fill || sm_adc_ram != ss_fifo_half || sm_adc_ram != ss_save_snapshot)
|
// sm_adc_ram <= ss_fifo_fill;
|
// sm_adc_ram <= ss_fifo_fill;
|
if(sm_adc_ram == ss_fifo_fill && triggered)
|
if(sm_adc_ram == ss_fifo_fill && triggered)
|
sm_adc_ram <= ss_fifo_half;
|
sm_adc_ram <= ss_fifo_half;
|
else if(sm_adc_ram == ss_fifo_half && (fifo_addr == trig_addr + 11'd1024))
|
else if(sm_adc_ram == ss_fifo_half && (fifo_addr == (trig_addr + 11'd1023)))
|
sm_adc_ram <= ss_save_snapshot;
|
sm_adc_ram <= ss_save_snapshot;
|
else if(sm_adc_ram == ss_save_snapshot && snap_addr == 11'd2047)
|
else if(sm_adc_ram == ss_save_snapshot && snap_addr == 11'd2047)
|
sm_adc_ram <= ss_fifo_fill;
|
sm_adc_ram <= ss_fifo_fill;
|
else if(sm_adc_ram == ss_invalid)
|
else if(sm_adc_ram == ss_invalid)
|
sm_adc_ram <= ss_fifo_fill;
|
sm_adc_ram <= ss_fifo_fill;
|
Line 191... |
Line 197... |
|
|
always @ (posedge CLK_ADC or posedge MASTER_RST) begin
|
always @ (posedge CLK_ADC or posedge MASTER_RST) begin
|
if(MASTER_RST)
|
if(MASTER_RST)
|
triggered <= 1'b0;
|
triggered <= 1'b0;
|
else
|
else
|
triggered <= (data_from_adc_buffered < TRIGGER_LEVEL && data_from_adc >= TRIGGER_LEVEL);
|
triggered <= (TRIGGERSTYLE == 2'b00) && (data_from_adc_buffered < TRIGGER_LEVEL && data_from_adc >= TRIGGER_LEVEL) || // >=
|
|
(TRIGGERSTYLE == 2'b01) && (data_from_adc_buffered > TRIGGER_LEVEL && data_from_adc <= TRIGGER_LEVEL); // <=
|
end
|
end
|
|
|
always @ (posedge triggered or posedge MASTER_RST) begin
|
always @ (posedge triggered or posedge MASTER_RST) begin
|
if(MASTER_RST)
|
if(MASTER_RST)
|
trig_addr <= 11'b0;
|
trig_addr <= 11'b0;
|
Line 212... |
Line 219... |
buf_adc_addr <= 11'b0;
|
buf_adc_addr <= 11'b0;
|
end else if(sm_adc_ram == ss_save_snapshot) begin
|
end else if(sm_adc_ram == ss_save_snapshot) begin
|
snap_addr <= snap_addr + 1;
|
snap_addr <= snap_addr + 1;
|
buf_adc_addr <= buf_adc_addr + 1;
|
buf_adc_addr <= buf_adc_addr + 1;
|
end else begin
|
end else begin
|
buf_adc_addr <= trig_addr;
|
buf_adc_addr <= trig_addr - (HORZ_OFFSET-11'd319); /* HORIZONTAL OFFSET */
|
snap_addr <= 11'b0;
|
snap_addr <= 11'b0;
|
end
|
end
|
end
|
end
|
|
|
endmodule
|
endmodule
|