Changeset 178 for trunk/3DEES/Paella.v


Ignore:
Timestamp:
Dec 20, 2013, 10:10:03 AM (11 years ago)
Author:
demin
Message:

adapt to 6ch

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/3DEES/Paella.v

    r154 r178  
    3434        );
    3535
    36         localparam      N               =       12;
     36        localparam      N               =       6;
    3737
    3838        //      Turn output ports off
     
    8383        );
    8484               
     85/*
     86        reg             [31:0]  led_counter;
     87        always @(posedge CLK_50MHz)
     88        begin
     89                led_counter = led_counter + 32'd1;
     90        end
     91        assign LED = led_counter[28];
     92*/     
    8593        wire    [11:0]  osc_mux_data [4:0];
    8694
     
    8896        wire                    trg_flag;
    8997
    90         wire    [2:0]   coi_data;
    91         wire                    coi_flag;
    92 
    9398        wire    [4*12-1:0]      int_mux_data [N-1:0];
    9499
    95         wire                    amp_flag [N-1:0];
    96         wire    [11:0]  amp_data [N-1:0];
    97 
    98         wire                    cnt_good [N-1:0];
     100        wire    [1:0]   amp_flag [3*N-1:0];
     101        wire    [12:0]  amp_data [3*N-1:0];
     102
     103        wire    [1:0]   amp_mux_flag [2:0];
     104        wire    [11:0]  amp_mux_data [2:0];
     105
     106        wire                    cnt_good [3:0];
    99107        wire    [15:0]  cnt_bits_wire;
    100108
     
    105113        wire    [11:0]  tst_data;
    106114
    107     wire        [11:0]  cmp_data;
    108     wire        [11:0]  del_data;
    109 
    110         wire    [20:0]  cic_data [N-1:0];
     115    wire        [3:0]   cmp_data;
     116    wire        [1:0]   del_data;
     117
     118        wire    [19:0]  cic_data [N-1:0];
    111119
    112120        wire    [11:0]  dec_data [N-1:0];
    113         wire    [11:0]  clp_data [N-1:0];
    114         wire    [11:0]  tmp_data [1:0];
     121        wire    [12:0]  clp_data [N-1:0];
     122        wire    [11:0]  tmp_data;
     123
    115124
    116125        wire                    i2c_reset;
     126
     127        assign  tmp_data        =       12'h000;
     128        assign  sys_clock       =       CLK_100MHz;
     129/*
     130        sys_pll sys_pll_unit(
     131                .inclk0(CLK_100MHz),
     132                .c0(sys_clock));
     133*/
    117134/*
    118135        sys_pll sys_pll_unit(
     
    124141        wire                    ADC_DCO, ADC_FCO;
    125142
     143
    126144        test test_unit(
    127145                .clock(ADC_FCO),
    128146                .data(tst_data));
     147*/
    129148
    130149        adc_lvds #(
    131                 .size(3),
     150                .size(6),
    132151                .width(12)) adc_lvds_unit (
    133152                .clock(sys_clock),
    134153                .lvds_dco(ADC_DCO),
    135154                .lvds_fco(ADC_FCO),
    136                 .lvds_d(36'd0),
    137                 .test(tst_data),
    138                 .trig(12'd0),
    139                 .adc_frame(sys_frame),
    140                 .adc_data({cmp_data, adc_data[2], adc_data[1], adc_data[0]}));
    141 */
    142         sys_pll sys_pll_unit(
    143                 .inclk0(CLK_100MHz),
    144                 .c0(sys_clock));
    145 
    146         adc_lvds #(
    147                 .size(6),
    148                 .width(24)) adc_lvds_unit (
    149                 .clock(sys_clock),
    150                 .lvds_dco(ADC_DCO),
    151                 .lvds_fco(ADC_FCO),
    152                 .lvds_d({ADC_D[5], ADC_D[4], ADC_D[3], ADC_D[2], ADC_D[1], ADC_D[0]}),
     155                .lvds_d(ADC_D),
     156//              .test(tst_data),
    153157                .adc_frame(sys_frame),
    154158                .adc_data({
    155                         adc_data[11], adc_data[10], adc_data[9], adc_data[8],
    156                         adc_data[7], adc_data[6], adc_data[5], adc_data[4],
    157                         adc_data[3], adc_data[2], adc_data[1], adc_data[0]}));
     159                        adc_data[5], adc_data[4], adc_data[3],
     160                        adc_data[2], adc_data[1], adc_data[0]}));
    158161
    159162        wire    [15:0]          cfg_bits [63:0];
     
    174177        wire                    mrg_bus_busy;
    175178
    176         wire    [12*16-1:0]     int_bus_miso;
     179        wire    [11*16-1:0]     int_bus_miso;
    177180
    178181        genvar j;
     
    197200
    198201        generate
    199                 for (j = 0; j < 12; j = j + 1)
     202                for (j = 0; j < 6; j = j + 1)
    200203                begin : MUX_DATA
    201204                        assign int_mux_data[j] = {
    202                                 amp_data[j],
    203                                 clp_data[j],
    204                                 cic_data[j][19:8],
     205                                {4'd0, amp_flag[j][0], 7'd0},
     206                                amp_data[j][11:0],
     207                                clp_data[j][11:0],
    205208                                sys_data[j]};
    206209                end
     
    210213
    211214        lpm_mux #(
    212                 .lpm_size(4*12),
     215                .lpm_size(4*6),
    213216                .lpm_type("LPM_MUX"),
    214217                .lpm_width(12),
    215                 .lpm_widths(6)) trg_mux_unit (
    216                 .sel(cfg_bits[4][13:8]),
     218                .lpm_widths(5)) trg_mux_unit (
     219                .sel(cfg_bits[4][12:8]),
    217220                .data({
    218                         int_mux_data[11], int_mux_data[10], int_mux_data[9], int_mux_data[8],
    219                         int_mux_data[7], int_mux_data[6], int_mux_data[5], int_mux_data[4],
    220                         int_mux_data[3], int_mux_data[2], int_mux_data[1], int_mux_data[0]}),
     221                        int_mux_data[5], int_mux_data[4], int_mux_data[3],
     222                        int_mux_data[2], int_mux_data[1], int_mux_data[0]}),
    221223                .result(trg_mux_data));
    222224
     
    226228               
    227229                        lpm_mux #(
    228                                 .lpm_size(4*12),
     230                                .lpm_size(4*6),
    229231                                .lpm_type("LPM_MUX"),
    230232                                .lpm_width(12),
    231                                 .lpm_widths(6)) osc_mux_unit (
    232                                 .sel(cfg_mux_selector[j*8+5:j*8]),
     233                                .lpm_widths(5)) osc_mux_unit (
     234                                .sel(cfg_mux_selector[j*8+4:j*8]),
    233235                                .data({
    234                                         int_mux_data[11], int_mux_data[10], int_mux_data[9], int_mux_data[8],
    235                                         int_mux_data[7], int_mux_data[6], int_mux_data[5], int_mux_data[4],
    236                                         int_mux_data[3], int_mux_data[2], int_mux_data[1], int_mux_data[0]}),
     236                                        int_mux_data[5], int_mux_data[4], int_mux_data[3],
     237                                        int_mux_data[2], int_mux_data[1], int_mux_data[0]}),
    237238                                .result(osc_mux_data[j]));
    238239                end
     
    264265                .bus_busy(bus_busy[1]));
    265266
    266         new_filter #(.size(12), .width(12)) filter_unit (
     267        filter #(.size(6), .width(12)) filter_unit (
    267268                .clock(sys_clock),
    268269                .frame(sys_frame),
    269270                .reset(1'b0),
    270                 .inp_data({
    271                         sys_data[11], sys_data[10], sys_data[9], sys_data[08],
    272                         sys_data[7], sys_data[6], sys_data[5], sys_data[4],
    273                         sys_data[3], sys_data[2], sys_data[1], sys_data[0]}),
    274                 .out_data({
    275                         cic_data[11], cic_data[10], cic_data[9], cic_data[8],
    276                         cic_data[7], cic_data[6], cic_data[5], cic_data[4],
    277                         cic_data[3], cic_data[2], cic_data[1], cic_data[0]}));
    278 
    279         generate
    280                 for (j = 0; j < 3; j = j + 1)
     271                .inp_data({sys_data[5], sys_data[4], sys_data[3],
     272                        sys_data[2], sys_data[1], sys_data[0]}),
     273                .out_data({cic_data[5], cic_data[4], cic_data[3],
     274                        cic_data[2], cic_data[1], cic_data[0]}));
     275/* 
     276  new_filter #(.size(6), .width(12)) filter_unit (
     277                .clock(sys_clock),
     278                .frame(sys_frame),
     279                .reset(1'b0),
     280                .inp_data({sys_data[5], sys_data[4], sys_data[3],
     281                        sys_data[2], sys_data[1], sys_data[0]}),
     282                .out_data({cic_data[5], cic_data[4], cic_data[3],
     283                        cic_data[2], cic_data[1], cic_data[0]}));
     284*/
     285
     286        generate
     287                for (j = 0; j < 2; j = j + 1)
    281288                begin : DECONV_CHAIN
    282289
    283                         clip #(.shift(22), .width(20), .widthr(12)) clip_unit (
     290                        clip #(.shift(22), .width(19), .widthr(12)) clip_unit (
    284291                                .clock(sys_clock),
    285292                                .frame(sys_frame),
    286293                                .reset(1'b0),
    287 //                              .del_data({6'd14, 6'd14, 6'd14, 6'd14}),
    288                                 .del_data({cfg_bits[39+8*j][5:0], cfg_bits[37+8*j][5:0], cfg_bits[35+8*j][5:0], cfg_bits[33+8*j][5:0]}),
    289                                 .amp_data({6'd17, 6'd17, 6'd17, 6'd17}),
    290 //                              .tau_data({16'd17193, 16'd17193, 16'd17193, 16'd17193}), /* exp(-14/1125)*1024*17 */
    291                                 .tau_data({cfg_bits[38+8*j], cfg_bits[36+8*j], cfg_bits[34+8*j], cfg_bits[32+8*j]}),
     294                                .del_data({6'd0, 6'd32, 6'd32, 6'd32}),
     295//                              .del_data({6'd0, cfg_bits[37+6*j][5:0], cfg_bits[35+6*j][5:0], cfg_bits[33+6*j][5:0]}),
     296                                .amp_data({6'd0, 6'd20, 6'd20, 6'd20}),
     297                                .tau_data({16'd0, 16'd19835, 16'd19835, 16'd19835}),
     298// exp(-32/1000)*1024*20
     299//                              .tau_data({16'd0, cfg_bits[36+6*j], cfg_bits[34+6*j], cfg_bits[32+6*j]}),
    292300                                .inp_data({
    293                                         cic_data[j*4+3][19:0], cic_data[j*4+2][19:0],
    294                                         cic_data[j*4+1][19:0], cic_data[j*4+0][19:0]}),
     301                                        19'd0, cic_data[j*3+2][18:0], cic_data[j*3+1][18:0], cic_data[j*3+0][18:0]}),
    295302                                .out_data({
    296                                         clp_data[j*4+3], clp_data[j*4+2],
    297                                         clp_data[j*4+1], clp_data[j*4+0]}));
    298 
    299                 end
    300         endgenerate
    301 
    302         generate
    303                 for (j = 0; j < 12; j = j + 1)
     303                                        tmp_data, clp_data[j*3+2], clp_data[j*3+1], clp_data[j*3+0]}));
     304
     305                end
     306        endgenerate
     307
     308        generate
     309                for (j = 0; j < 6; j = j + 1)
    304310                begin : MCA_CHAIN
    305 
    306                         assign sys_data[j] = (cfg_bits[1][j]) ? (adc_data[j] ^ 12'hfff) : (adc_data[j]);
    307 
    308                         amplitude #(.width(12)) amplitude_unit_2 (
     311/*
     312                        shift #(.shift(11), .width(19), .widthr(13)) shift_unit (
    309313                                .clock(sys_clock),
    310314                                .frame(sys_frame),
    311315                                .reset(1'b0),
    312                                 .cfg_data({1'b0, 12'd0, 12'd5}),
    313 //                              .cfg_data({cfg_bits[7+2*j][12:0], cfg_bits[6+2*j][11:0]}),
    314 //                              .inp_data(dec_data[j]),
     316                                .amp_data(6'd21),
     317                                .inp_data(cic_data[j][18:0]),
     318                                .out_data(clp_data[j]));   
     319*/
     320                        assign sys_data[j] = (cfg_bits[1][j]) ? (adc_data[j] ^ 12'hfff) : (adc_data[j]);
     321
     322                        amplitude #(.width(13)) amplitude_unit (
     323                                .clock(sys_clock),
     324                                .frame(sys_frame),
     325                                .reset(1'b0),
     326                                .min_data({1'b0, cfg_bits[7][11:0]}),
     327                                .max_data(13'd4095),
     328//                              .cfg_data(cfg_bits[6+2*j][11:0]),
    315329                                .inp_data(clp_data[j]),
    316330                                .out_flag(amp_flag[j]),
     
    323337                .frame(sys_frame),
    324338                .reset(cfg_bits[0][5]),
    325                 .hst_good((amp_flag[0]) & (cnt_good[0]) & (cfg_bits[13][1])),
     339                .hst_good((amp_flag[0][1]) & (cnt_good[0]) & (cfg_bits[13][1])),
    326340                .hst_data(amp_data[0]),
    327 /*
    328                 .hst_good((amp_flag[j]) & (cnt_good[j]) & (cfg_bits[13][1])),
    329                 .hst_data(amp_data[j]),
    330 */
    331341                .bus_ssel(bus_ssel[2]),
    332342                .bus_wren(bus_wren),
     
    338348        counter hst_counter_unit (
    339349                .clock(sys_clock),
    340 //              .frame((sys_frame) & (~ana_dead[0])),
    341                 .frame(sys_frame),
     350                .frame((sys_frame) & (~amp_flag[0][1])),
     351//              .frame(sys_frame),
    342352                .reset(cfg_bits[0][8]),
    343353                .setup(cfg_bits[13][0]),
     
    395405
    396406        lpm_mux #(
    397                 .lpm_size(12),
     407                .lpm_size(11),
    398408                .lpm_type("LPM_MUX"),
    399409                .lpm_width(16),
Note: See TracChangeset for help on using the changeset viewer.