Ignore:
Timestamp:
Jan 17, 2011, 5:56:35 PM (14 years ago)
Author:
demin
Message:

Starting to test signal shaping algorithms

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sandbox/MultiChannelUSB/Paella.v

    r101 r107  
    8383        usb_fifo usb_unit
    8484        (
    85                 .usb_clk(USB_IFCLK),
     85                .usb_clock(USB_IFCLK),
    8686                .usb_data(USB_PB),
    8787                .usb_full(~USB_FLAGB),
     
    9393                .usb_addr(usb_addr),
    9494
    95                 .clk(sys_clock),
     95                .clock(sys_clock),
    9696
    9797                .tx_full(usb_tx_full),
     
    104104        );
    105105               
     106        wire    [11:0]  osc_mux_data [4:0];
     107
     108        wire    [11:0]  trg_mux_data;
     109        wire                    trg_flag;
     110
     111        wire    [2:0]   coi_data;
     112        wire                    coi_flag;
     113
     114        wire    [7*12-1:0]      int_mux_data [N-1:0];
     115
    106116        wire                    ana_dead [N-1:0];
    107117        wire                    ana_good [N-1:0];
     
    109119        wire    [11:0]  ana_base [N-1:0];
    110120
     121        wire                    amp_good [N-1:0];
     122        wire    [11:0]  amp_data [N-1:0];
     123
    111124        wire                    cnt_good [N-1:0];
    112 
    113         wire    [11:0]  osc_mux_data [N-1:0];
    114 
    115         wire    [11:0]  trg_mux_data;
    116         wire                    trg_flag;
    117 
    118         wire    [83:0]  int_mux_data [N-1:0];
     125        wire    [15:0]  cnt_bits_wire;
    119126
    120127        wire                    sys_clock, sys_frame;
    121128
    122         wire    [11:0]  adc_data [N-1:0];
    123     wire        [11:0]  int_data [N-1:0];
     129    wire        [11:0]  adc_data [N-1:0];
    124130    wire        [11:0]  sys_data [N-1:0];
     131        wire    [11:0]  tst_data;
     132
    125133    wire        [11:0]  cmp_data;
    126         wire    [11:0]  nowhere;
     134    wire        [11:0]  del_data;
    127135
    128136        wire    [31:0]  uwt_d1 [N-1:0];
    129137        wire    [31:0]  uwt_a1 [N-1:0];
    130         wire    [31:0]  uwt_peak1 [N-1:0];
    131138        wire    [31:0]  uwt_d2 [N-1:0];
    132139        wire    [31:0]  uwt_a2 [N-1:0];
    133         wire    [31:0]  uwt_peak2 [N-1:0];
    134140        wire    [31:0]  uwt_d3 [N-1:0];
    135141        wire    [31:0]  uwt_a3 [N-1:0];
    136         wire    [31:0]  uwt_peak3 [N-1:0];
    137142
    138143        wire    [1:0]   uwt_flag1 [N-1:0];
     
    140145        wire    [1:0]   uwt_flag3 [N-1:0];
    141146       
     147        wire    [11:0]  cic_mux_data;
     148        wire    [13:0]  cic_lfsr;
     149        wire    [24:0]  cic_data1 [N-1:0];
     150        wire    [24:0]  cic_data2 [N-1:0];
     151        wire    [24:0]  cic_data3 [N-1:0];
     152
    142153        wire                    i2c_reset;
    143 
    144 /*
    145         adc_para adc_para_unit (
    146                 .lvds_dco(ADC_DCO),
    147                 .lvds_fco(ADC_FCO),
    148                 .para_good(CON_CCLK[0]),
    149                 .para_data(CON_C[11:0]),
    150                 .adc_data(adc_data[2]));
    151 */
    152  
    153         wire                    adc_pll_clk;
    154 
    155 /*
    156         adc_pll adc_pll_unit(
    157                 .inclk0(ADC_FCO),
    158                 .c0(adc_pll_clk));
    159 */
    160154
    161155        sys_pll sys_pll_unit(
     
    164158
    165159        test test_unit(
    166                 .clk(ADC_FCO),
    167                 .data(adc_data[2]));
    168 //              .data(nowhere));
     160                .clock(ADC_FCO),
     161                .data(tst_data));
    169162
    170163        adc_lvds #(
    171164                .size(3),
    172165                .width(12)) adc_lvds_unit (
     166                .clock(sys_clock),
    173167                .lvds_dco(ADC_DCO),
    174 //              .lvds_dco(adc_pll_clk),
    175168                .lvds_fco(ADC_FCO),
    176                 .lvds_d(ADC_D[2:0]),
    177 //              .adc_data({     adc_data[2],
    178                 .adc_data({     nowhere,
    179                                         adc_data[1],
    180                                         adc_data[0] }));
    181 
    182 /*                                     
    183         assign                  cmp_data = CON_B[11:0];
    184         assign                  sys_clock = ADC_DCO;
    185         assign                  sys_frame = ADC_FCO;
    186 */
     169                .lvds_d(ADC_D),
     170                .test(tst_data),
     171                .trig({CON_B[9:0], TRG[1:0]}),
     172                .adc_frame(sys_frame),
     173                .adc_data({cmp_data, adc_data[2], adc_data[1], adc_data[0]}));
    187174
    188175        wire    [15:0]  cfg_bits [31:0];
    189176        wire    [511:0] int_cfg_bits;
    190177
    191         wire    [31:0]  cfg_mux_selector;
     178        wire    [39:0]  cfg_mux_selector;
    192179
    193180        wire                    cfg_reset;
    194181
    195         wire    [8:0]   bus_ssel;
     182        wire    [11:0]  bus_ssel;
    196183        wire                    bus_wren;
    197184        wire    [31:0]  bus_addr;
    198185        wire    [15:0]  bus_mosi;
    199         wire    [15:0]  bus_miso [7:0];
    200         wire    [8:0]   bus_busy;
     186        wire    [15:0]  bus_miso [10:0];
     187        wire    [11:0]  bus_busy;
    201188
    202189        wire    [15:0]  mrg_bus_miso;
    203190        wire                    mrg_bus_busy;
    204191
    205         wire    [127:0] int_bus_miso;
     192        wire    [11*16-1:0]     int_bus_miso;
    206193
    207194        genvar j;
     
    229216                begin : MUX_DATA
    230217                        assign int_mux_data[j] = {
    231                                 {ana_good[j], 11'd0},
    232                                 ana_data[j],
    233                                 ana_base[j],
    234                                 uwt_a3[j][20:9],
    235                                 uwt_a2[j][17:6],
    236                                 uwt_a1[j][14:3],
     218                                {4'd0, uwt_flag3[j][1], 7'd0},
     219                                {4'd0, uwt_flag3[j][0], 7'd0},
     220                                {12'd0},
     221//                              {4'd0, amp_good[j], 7'd0},
     222                                cic_data1[j][14:3],
     223                                cic_data2[j][18:7],
     224                                cic_data3[j][22:11],
     225//                              {8'd0, cic_lfsr[3:0]},
     226//                              {8'd0, cic_lfsr[5:2]},
     227//                              uwt_a3[j][20:9],
    237228                                sys_data[j]};
    238229                end
    239230        endgenerate
    240231
    241         assign cfg_mux_selector = {cfg_bits[3], cfg_bits[2]};
     232        assign cfg_mux_selector = {cfg_bits[4][7:0], cfg_bits[3], cfg_bits[2]};
    242233
    243234        lpm_mux #(
    244                 .lpm_size(21),
     235                .lpm_size(7*3),
    245236                .lpm_type("LPM_MUX"),
    246237                .lpm_width(12),
    247238                .lpm_widths(5)) trg_mux_unit (
    248                 .sel(cfg_mux_selector[28:24]),
     239                .sel(cfg_bits[4][12:8]),
    249240                .data({int_mux_data[2], int_mux_data[1], int_mux_data[0]}),
    250241                .result(trg_mux_data));
    251242
    252243        generate
    253                 for (j = 0; j < 3; j = j + 1)
     244                for (j = 0; j < 5; j = j + 1)
    254245                begin : OSC_CHAIN
    255246               
    256247                        lpm_mux #(
    257                                 .lpm_size(21),
     248                                .lpm_size(7*3),
    258249                                .lpm_type("LPM_MUX"),
    259250                                .lpm_width(12),
     
    278269                .frame(sys_frame),
    279270                .reset(cfg_bits[0][1]),
    280                 .cfg_data(cfg_bits[4][0]),
     271                .cfg_data(cfg_bits[5][12]),
    281272                .trg_flag(trg_flag),
    282                 .osc_data({cmp_data, osc_mux_data[2], osc_mux_data[1], osc_mux_data[0]}),
     273                .osc_data({cmp_data[3:0], osc_mux_data[4], osc_mux_data[3], osc_mux_data[2], osc_mux_data[1], osc_mux_data[0]}),
    283274                .ram_wren(RAM_WE),
    284275                .ram_addr(RAM_ADDR),
     
    291282                .bus_busy(bus_busy[1]));
    292283
    293 
    294         adc_fifo #(.W(48)) adc_fifo_unit (
    295                 .adc_clock(ADC_FCO),
    296                 .adc_data({CON_B[11:0], adc_data[2], adc_data[1], adc_data[0]}),
    297                 .sys_clock(sys_clock),
    298                 .sys_frame(sys_frame),
    299                 .sys_data({cmp_data, int_data[2], int_data[1], int_data[0]}));
    300 
    301 
     284        cic1 #(.size(3), .width(12)) cic3_unit (
     285                .clock(sys_clock),
     286                .frame(sys_frame),
     287                .reset(1'b0),
     288                .inp_data({sys_data[2], sys_data[1], sys_data[0]}),
     289                .out_data2({cic_data2[2], cic_data2[1], cic_data2[0]}),
     290                .out_data3({cic_data3[2], cic_data3[1], cic_data3[0]}),
     291                .out_data({cic_data1[2], cic_data1[1], cic_data1[0]}));
     292       
    302293        generate
    303294                for (j = 0; j < 3; j = j + 1)
    304295                begin : MCA_CHAIN
    305296
    306                         assign sys_data[j] = (cfg_bits[1][4*j]) ? (int_data[j] ^ 12'hfff) : (int_data[j]);
     297                        assign sys_data[j] = (cfg_bits[1][4*j]) ? (adc_data[j] ^ 12'hfff) : (adc_data[j]);
    307298
    308299                        uwt_bior31 #(.L(1)) uwt_1_unit (
     
    313304                                .d(uwt_d1[j]),
    314305                                .a(uwt_a1[j]),
    315                                 .peak(uwt_peak1[j]),
    316306                                .flag(uwt_flag1[j]));
    317307               
     
    323313                                .d(uwt_d2[j]),
    324314                                .a(uwt_a2[j]),
    325                                 .peak(uwt_peak2[j]),
    326315                                .flag(uwt_flag2[j]));
    327316               
     
    333322                                .d(uwt_d3[j]),
    334323                                .a(uwt_a3[j]),
    335                                 .peak(uwt_peak3[j]),
    336324                                .flag(uwt_flag3[j]));
    337325       
     
    341329                                .reset(cfg_bits[0][2+j]),
    342330                                .cfg_data({cfg_bits[7+2*j][12:0], cfg_bits[6+2*j][11:0]}),
    343                                 .uwt_flag(uwt_flag3[j]),
    344                                 .uwt_data(uwt_peak3[j]),
     331                                .uwt_flag(uwt_flag2[j]),
     332                                .uwt_data(uwt_a2[j][17:6]),
    345333                                .ana_dead(ana_dead[j]),
    346334                                .ana_good(ana_good[j]),
     
    348336                                .ana_base(ana_base[j]));
    349337
    350                         histogram histogram_unit (
     338                        amplitude amplitude_unit (
    351339                                .clock(sys_clock),
    352340                                .frame(sys_frame),
    353                                 .reset(cfg_bits[0][5+j]),
    354                                 .hst_good((ana_good[j]) & (cnt_good[j])),
    355                                 .hst_data(ana_data[j]),
    356                                 .bus_ssel(bus_ssel[2+j]),
    357                                 .bus_wren(bus_wren),
    358                                 .bus_addr(bus_addr[12:0]),
    359                                 .bus_mosi(bus_mosi),
    360                                 .bus_miso(bus_miso[2+j]),
    361                                 .bus_busy(bus_busy[2+j]));
    362 
    363                         counter counter_unit (
    364                                 .clock(sys_clock),
    365                                 .frame((sys_frame) & (~ana_dead[j])),
    366                                 .reset(cfg_bits[0][8+j]),
    367                                 .cfg_data(cfg_bits[12+j]),
    368                                 .bus_ssel(bus_ssel[5+j]),
    369                                 .bus_wren(bus_wren),
    370                                 .bus_addr(bus_addr[1:0]),
    371                                 .bus_mosi(bus_mosi),
    372                                 .bus_miso(bus_miso[5+j]),
    373                                 .bus_busy(bus_busy[5+j]),
    374                                 .cnt_good(cnt_good[j]));
    375 
     341                                .reset(cfg_bits[0][2+j]),
     342                                .cfg_data(cfg_bits[12][11:0]),
     343//                              .cfg_data(10'd5),
     344                                .uwt_flag(uwt_flag3[j]),
     345                                .uwt_data(uwt_a3[j][20:9]),
     346                                .amp_good(amp_good[j]),
     347                                .amp_data(amp_data[j]));
    376348                end
    377349        endgenerate
     350
     351        histogram32 histogram32_unit (
     352                .clock(sys_clock),
     353                .frame(sys_frame),
     354                .reset(cfg_bits[0][5]),
     355                .hst_good((ana_good[0]) & (cnt_good[0]) & (cfg_bits[13][1])),
     356                .hst_data(ana_data[0]),
     357/*
     358                .hst_good((amp_good[j]) & (cnt_good[j]) & (cfg_bits[13][1])),
     359                .hst_data(amp_data[j]),
     360*/
     361                .bus_ssel(bus_ssel[2]),
     362                .bus_wren(bus_wren),
     363                .bus_addr(bus_addr[12:0]),
     364                .bus_mosi(bus_mosi),
     365                .bus_miso(bus_miso[2]),
     366                .bus_busy(bus_busy[2]));
     367
     368        counter hst_counter_unit (
     369                .clock(sys_clock),
     370                .frame((sys_frame) & (~ana_dead[0])),
     371//              .frame(sys_frame),
     372                .reset(cfg_bits[0][8]),
     373                .setup(cfg_bits[13][0]),
     374                .count(cfg_bits[13][1]),
     375                .bus_ssel(bus_ssel[5]),
     376                .bus_wren(bus_wren),
     377                .bus_addr(bus_addr[1:0]),
     378                .bus_mosi(bus_mosi),
     379                .bus_miso(bus_miso[5]),
     380                .bus_busy(bus_busy[5]),
     381                .cnt_good(cnt_good[0]));
     382
    378383
    379384        i2c_fifo i2c_unit(
     
    390395                .i2c_scl(I2C_SDA),
    391396               
    392                 .bus_ssel(bus_ssel[8]),
    393                 .bus_wren(bus_wren),
    394                 .bus_mosi(bus_mosi),
    395                 .bus_busy(bus_busy[8]));
     397                .bus_ssel(bus_ssel[11]),
     398                .bus_wren(bus_wren),
     399                .bus_mosi(bus_mosi),
     400                .bus_busy(bus_busy[11]));
    396401
    397402        generate
    398                 for (j = 0; j < 8; j = j + 1)
     403                for (j = 0; j < 11; j = j + 1)
    399404                begin : BUS_OUTPUT
    400405                        assign int_bus_miso[j*16+15:j*16] = bus_miso[j];
     
    403408
    404409        lpm_mux #(
    405                 .lpm_size(8),
     410                .lpm_size(11),
    406411                .lpm_type("LPM_MUX"),
    407412                .lpm_width(16),
    408                 .lpm_widths(3)) bus_miso_mux_unit (
    409                 .sel(bus_addr[30:28]),
     413                .lpm_widths(4)) bus_miso_mux_unit (
     414                .sel(bus_addr[31:28]),
    410415                .data(int_bus_miso),
    411416                .result(mrg_bus_miso));
    412417
    413418        lpm_mux #(
    414                 .lpm_size(9),
     419                .lpm_size(12),
    415420                .lpm_type("LPM_MUX"),
    416421                .lpm_width(1),
     
    420425                .result(mrg_bus_busy));
    421426
    422 /*
    423         lpm_or #(
    424                 .lpm_size(6),
    425                 .lpm_type("LPM_OR"),
    426                 .lpm_width(16)) bus_miso_or_unit (
    427                 .data(int_bus_miso),
    428                 .result(mrg_bus_miso));
    429 */
    430 
    431427        lpm_decode #(
    432                 .lpm_decodes(9),
     428                .lpm_decodes(12),
    433429                .lpm_type("LPM_DECODE"),
    434430                .lpm_width(4)) lpm_decode_unit (
    435431                .data(bus_addr[31:28]),
    436                 .eq(bus_ssel),
    437                 .aclr(),
    438                 .clken(),
    439                 .clock(),
    440                 .enable());
     432                .eq(bus_ssel));
     433
    441434
    442435        control control_unit (
Note: See TracChangeset for help on using the changeset viewer.