OpenCores
URL https://opencores.org/ocsvn/alternascope/alternascope/trunk

Subversion Repositories alternascope

[/] [alternascope/] [trunk/] [AdcDriver/] [d_Driver_ADCRamBuffer.v] - Diff between revs 21 and 27

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 21 Rev 27
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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.