Ignore:
Timestamp:
May 8, 2011, 11:13:17 PM (14 years ago)
Author:
demin
Message:

adapt to afe8551

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sandbox/MultiChannelUSB/adc_lvds.v

    r107 r140  
    11module adc_lvds
    22        #(
    3                 parameter       size    =       3, // number of channels
    4                 parameter       width   =       12 // channel resolution
     3                parameter       size    =       8, // number of channels
     4                parameter       width   =       24 // channel resolution
    55        )
    66        (
     
    1111                input   wire    [size-1:0]                      lvds_d,
    1212
    13                 input   wire    [11:0]                          test,
    14                 input   wire    [11:0]                          trig,
    15 
    1613                output  wire                                            adc_frame,
    17                 output  wire    [size*width-1+12:0]     adc_data
     14                output  wire    [size*width-1:0]        adc_data
    1815
    1916        );
    20 
     17        localparam      width2  =       width + 1;
     18               
    2119        reg                                                     state, int_rdreq, adc_frame_reg;
    2220        wire                                            int_wrfull, int_rdempty;
    2321
    24         reg             [size-1:0]                      int_data_h, int_data_l;
     22        reg             [size-1:0]                      int_data_p, int_data_n;
    2523
    26         reg     [size*width-1:0]        int_data_reg;
    27         wire    [size*width-1:0]        int_data_wire;
     24        reg     [2:0]                           int_edge_reg;
    2825
    29         wire    [size*width-1+12:0]     int_q_wire;
    30         reg             [size*width-1+12:0]     adc_data_reg;
     26        reg     [size*width-1:0]        int_fifo_reg;
     27        wire    [size*width-1:0]        int_fifo_wire;
     28
     29        reg     [size*width2-1:0]       int_data_reg;
     30        wire    [size*width2-1:0]       int_data_wire;
     31
     32        wire    [size*width-1:0]        int_q_wire;
     33        reg             [size*width-1:0]        adc_data_reg;
    3134       
     35
    3236
    3337        genvar j;
    3438
    3539        generate
    36                 for (j = 0; j < size-1; j = j + 1)
     40                for (j = 0; j < size; j = j + 1)
    3741                begin : INT_DATA
    38                         assign int_data_wire[j*width+width-1:j*width] = {int_data_reg[j*width+width-3:j*width], int_data_h[j], int_data_l[j]};
    39 //                      assign int_data_wire[j*width+width-1:j*width] = test;
     42// MSB first
     43//                      assign int_data_wire[j*width+width-1:j*width] = {int_data_reg[j*width+width-3:j*width], int_data_p[j], int_data_n[j]};
     44// LSB first
     45//                      assign int_data_wire[j*width+width-1:j*width] = {int_data_n[j], int_data_p[j], int_data_reg[j*width+width-1:j*width+2]};
     46                        assign int_data_wire[j*width2+width2-1:j*width2] = {int_data_n[j], int_data_p[j], int_data_reg[j*width2+width2-1:j*width2+2]};
     47                        assign int_fifo_wire[j*width+width-1:j*width] = int_data_reg[j*width2+width2-2:j*width2];
    4048                end
    4149        endgenerate
    42         assign int_data_wire[(size-1)*width+width-1:(size-1)*width] = test;
    4350
    4451        dcfifo #(
     
    4754                .lpm_showahead("ON"),
    4855                .lpm_type("dcfifo"),
    49                 .lpm_width(size*width+12),
     56                .lpm_width(size*width),
    5057                .lpm_widthu(4),
    5158                .rdsync_delaypipe(4),
     
    5461                .underflow_checking("ON"),
    5562                .use_eab("ON")) fifo_unit (
    56                 .data({trig, int_data_wire}),
     63//              .data(int_data_wire),
     64                .data(int_fifo_reg),
    5765                .rdclk(clock),
    5866                .rdreq((~int_rdempty) & int_rdreq),
     
    93101        always @ (negedge lvds_dco)
    94102        begin
    95                 int_data_l <= lvds_d;
     103                int_data_n <= lvds_d;
    96104        end
    97105
    98106        always @ (posedge lvds_dco)
    99107        begin
    100                 int_data_h <= lvds_d;
     108                int_data_p <= lvds_d;
    101109                int_data_reg <= int_data_wire;
     110                int_edge_reg <= {int_edge_reg[1:0], lvds_fco};
     111                if (int_edge_reg[1] & (~int_edge_reg[2]))
     112                begin
     113                        int_fifo_reg <= int_fifo_wire;
     114                end
    102115        end
    103116
Note: See TracChangeset for help on using the changeset viewer.