Changeset 63 for trunk


Ignore:
Timestamp:
Sep 23, 2009, 9:46:50 PM (15 years ago)
Author:
demin
Message:

add parameters for number of channels and channel resolution

Location:
trunk/MultiChannelUSB
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/MultiChannelUSB/Paella.v

    r59 r63  
    77                inout   wire    [6:0]   CON_A,
    88                inout   wire    [15:0]  CON_B,
    9                 inout   wire    [12:0]  CON_C,
     9                input   wire    [12:0]  CON_C,
    1010                input   wire    [1:0]   CON_BCLK,
    1111                input   wire    [1:0]   CON_CCLK,
     
    5151        assign  CON_A           =       7'bz;
    5252        assign  CON_B           =       16'bz;
    53         assign  CON_C           =       13'bz;
    5453        assign  USB_PA0         =       1'bz;
    5554        assign  USB_PA1         =       1'bz;
     
    129128    wire        [1:0]   uwt_flag [3:0];
    130129   
     130    wire        [16:0]  osc_thrs [3:0];
     131    wire                        adc_pola [3:0];
     132
     133    assign      osc_thrs[0] = 16'd40;
     134    assign      osc_thrs[1] = 16'd300;
     135    assign      osc_thrs[2] = 16'd40;
     136    assign      osc_thrs[3] = 16'd1650;
     137
     138    assign      adc_pola[0] = 1'b1;
     139    assign      adc_pola[1] = 1'b1;
     140    assign      adc_pola[2] = 1'b1;
     141    assign      adc_pola[3] = 1'b0;
     142
    131143    assign      adc_clk[0] = ADC_FCO;
    132144    assign      adc_clk[1] = ADC_FCO;
    133145    assign      adc_clk[2] = ADC_FCO;
    134    
    135     assign      adc_clk[3] = CON_B[0];
    136     assign      adc_data[3] = CON_B[12:1];
     146
     147    assign      adc_clk[3] = ADC_FCO;
     148/*   
     149    assign      adc_clk[3] = CON_CCLK[0];
     150    assign      adc_data[3] = CON_C[11:0];
     151*/
     152        adc_para adc_para_unit (
     153                .lvds_dco(ADC_DCO),
     154                .lvds_fco(ADC_FCO),
     155                .para_data_ready(CON_CCLK[0]),
     156                .para_data(CON_C[11:0]),
     157                .adc_data(adc_data[3]));
     158
    137159/*
    138160        wire                    adc_pll_clk;
     
    147169
    148170        test test_unit(
    149                 .inclk0(CLK_50MHz),
     171                .clk(CLK_50MHz),
    150172                .tst_clk(tst_adc_clk),
    151173                .tst_data(tst_adc_data));
     
    168190*/
    169191
    170         adc_lvds adc_lvds_unit (
     192        adc_lvds #(
     193                .size(3),
     194                .width(12)) adc_lvds_unit (
    171195                .lvds_dco(ADC_DCO),
    172196//              .lvds_dco(adc_pll_clk),
    173197                .lvds_fco(ADC_FCO),
    174198                .lvds_d(ADC_D),
    175                 .adc_db(adc_data[2]),
    176                 .adc_dc(adc_data[1]),
    177                 .adc_dd(adc_data[0]));
     199                .adc_data({     adc_data[0],
     200                                        adc_data[1],
     201                                        adc_data[2]}));
    178202 
    179203        genvar i;
    180204        generate
    181                 for (i = 2; i < 4; i = i + 1)
     205                for (i = 1; i < 4; i = i + 1)
    182206                begin : MCA_CHAIN
    183207                        adc_fifo adc_fifo_unit (
    184208                                .adc_clk(adc_clk[i]),
    185209                                .adc_data(adc_data[i]),
     210                                .polarity(adc_pola[i]),
    186211                                .clk(CLK_50MHz),
    187212                                .ready(adc_data_ready[i]),
     
    203228                                .reset(hst_reset[i]),
    204229                                .data_ready(adc_data_ready[i]),
    205 //                              .data(raw_data[i]),
    206                                 .data(uwt_data[i]),
     230                                .data(raw_data[i]),
     231//                              .data(uwt_data[i]),
    207232                                .address(hst_addr[i]),
    208233                                .q(hst_q[i]));
     
    222247                                .raw_data(raw_data[i]),
    223248                                .uwt_data(uwt_data[i]),
    224                                 .threshold(16'd40),
     249                                .threshold(osc_thrs[i]),
    225250                                .address(osc_addr[i]),
    226251                                .start_address(osc_start_addr[i]),
  • trunk/MultiChannelUSB/adc_lvds.v

    r58 r63  
    11module adc_lvds
     2        #(
     3                parameter       size    =       3, // number of channels
     4                parameter       width   =       12 // channel resolution
     5        )
    26        (
    3                 input   wire                    lvds_dco,
    4                 input   wire                    lvds_fco,
    5                 input   wire    [2:0]   lvds_d,
     7                input   wire                                            lvds_dco,
     8                input   wire                                            lvds_fco,
     9                input   wire    [2:0]                           lvds_d,
    610
    7                 output  reg             [11:0]  adc_db,
    8                 output  reg             [11:0]  adc_dc,
    9                 output  reg             [11:0]  adc_dd
     11                output  wire    [size*width-1:0]        adc_data
    1012        );
    1113
    12         wire    [2:0]   int_data_h, int_data_l;
    13         reg     [11:0]  int_data_next [2:0];
    14         reg     [11:0]  int_data_reg [2:0];
     14        wire    [size-1:0]      int_data_h, int_data_l;
     15        reg     [width-1:0]     int_data_next [size-1:0];
     16        reg     [width-1:0]     int_data_reg [size-1:0];
     17
     18        reg     [width-1:0]     int_adc_data [size-1:0];
     19
     20        integer i;
     21        genvar j;
    1522
    1623        altddio_in #(
     
    1825                .invert_input_clocks("ON"),
    1926                .lpm_type("altddio_in"),
    20                 .width(3)) altddio_in_unit (
     27                .width(size)) altddio_in_unit (
    2128                .datain(lvds_d),
    2229                .inclock(lvds_dco),
     
    3138        always @ (posedge lvds_dco)
    3239        begin
    33                 int_data_reg[0] <= int_data_next[0];
    34                 int_data_reg[1] <= int_data_next[1];
    35                 int_data_reg[2] <= int_data_next[2];           
     40                for (i = 0; i < size; i = i + 1)
     41                begin
     42                        int_data_reg[i] <= int_data_next[i];
     43                end
    3644        end
    3745
    3846        always @ (posedge lvds_fco)
    3947        begin
    40                 adc_db <= int_data_next[0];
    41                 adc_dc <= int_data_next[1];
    42                 adc_dd <= int_data_next[2];
     48                for (i = 0; i < size; i = i + 1)
     49                begin
     50                        int_adc_data[i] <= int_data_next[i];
     51                end
    4352        end
    4453
    4554        always @*
    4655        begin
    47                 int_data_next[0] = {int_data_reg[0][9:0], int_data_l[0], int_data_h[0]};
    48                 int_data_next[1] = {int_data_reg[1][9:0], int_data_l[1], int_data_h[1]};
    49                 int_data_next[2] = {int_data_reg[2][9:0], int_data_l[2], int_data_h[2]};
     56                for (i = 0; i < size; i = i + 1)
     57                begin
     58                        int_data_next[i] = {int_data_reg[i][9:0], int_data_l[i], int_data_h[i]};
     59                end
    5060        end
    5161
     62        generate
     63                for (j = 1; j < size; j = j + 1)
     64                begin : ADC_LVDS_OUTPUT
     65                        assign adc_data[j*width+width-1:j*width] = int_adc_data[j];
     66                end
     67        endgenerate
     68
    5269endmodule
Note: See TracChangeset for help on using the changeset viewer.