Changeset 145


Ignore:
Timestamp:
May 9, 2011, 5:52:41 PM (13 years ago)
Author:
demin
Message:

adapt to the new card

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sandbox/MultiChannelUSB/Paella.v

    r132 r145  
    11module Paella
    22        (
    3                 input   wire                    CLK_50MHz,
     3                input   wire                    CLK_100MHz,
    44                output  wire                    LED,
    5 
    6                 inout   wire    [3:0]   TRG,
    7                 inout   wire                    I2C_SDA,
    8                 inout   wire                    I2C_SCL,
    9                 inout   wire    [4:0]   CON_A,
    10                 input   wire    [15:0]  CON_B,
    11                 input   wire    [12:0]  CON_C,
    12                 input   wire    [1:0]   CON_BCLK,
    13                 input   wire    [1:0]   CON_CCLK,
    145
    156                input   wire                    ADC_DCO,
    167                input   wire                    ADC_FCO,
    17                 input   wire    [2:0]   ADC_D,
    18 
    19                 output  wire                    USB_SLRD,
     8                input   wire    [5:0]   ADC_D,
     9
     10                output  wire    [1:0]   SPI_SEL,
     11                output  wire                    SPI_SDO,
     12                output  wire                    SPI_CLK,
     13                output  wire                    ADC_RST,
     14
     15                output  wire                    USB_SLRD,
    2016                output  wire                    USB_SLWR,
    2117                input   wire                    USB_IFCLK,
    2218                input   wire                    USB_FLAGA, // EMPTY flag for EP6
    2319                input   wire                    USB_FLAGB, // FULL flag for EP8
    24                 input   wire                    USB_FLAGC,
    25                 inout   wire                    USB_PA0,
    26                 inout   wire                    USB_PA1,
    2720                output  wire                    USB_PA2,
    28                 inout   wire                    USB_PA3,
    2921                output  wire                    USB_PA4,
    30                 output  wire                    USB_PA5,
    3122                output  wire                    USB_PA6,
    32                 inout   wire                    USB_PA7,
    3323                inout   wire    [7:0]   USB_PB,
    3424
    3525                output  wire                    RAM_CLK,
    36                 output  wire                    RAM_CE1,
    3726                output  wire                    RAM_WE,
    38                 output  wire    [19:0]  RAM_ADDR,
     27                output  wire    [21:0]  RAM_ADDR,
    3928                inout   wire                    RAM_DQAP,
    4029                inout   wire    [7:0]   RAM_DQA,
     
    4332        );
    4433
    45         localparam      N               =       3;
     34        localparam      N               =       12;
    4635
    4736        //      Turn output ports off
     
    5241        assign  RAM_ADDR        =       20'h00000;
    5342*/
     43        assign  ADC_RST = 1'b0;
     44
    5445        assign  RAM_CLK = sys_clock;
    55         assign  RAM_CE1 = 1'b0;
    56 
    57         //      Turn inout ports to tri-state
    58         assign  TRG                     =       4'bz;
    59         assign  CON_A           =       5'bz;
    60         assign  USB_PA0         =       1'bz;
    61         assign  USB_PA1         =       1'bz;
    62         assign  USB_PA3         =       1'bz;
    63         assign  USB_PA7         =       1'bz;
    64 //      assign  RAM_DQAP        =       1'bz;
    65 //      assign  RAM_DQA         =       8'bz;
    66 //      assign  RAM_DQBP        =       1'bz;
    67 //      assign  RAM_DQB         =       8'bz;
    6846
    6947        assign  USB_PA2         =       ~usb_rden;
    70         assign  USB_PA4         =       usb_addr[0];
    71         assign  USB_PA5         =       usb_addr[1];
     48        assign  USB_PA4         =       usb_addr;
    7249        assign  USB_PA6         =       ~usb_pktend;
    7350
     
    7653        wire                    usb_tx_full, usb_rx_empty;
    7754        wire    [7:0]   usb_tx_data, usb_rx_data;
    78         wire    [1:0]   usb_addr;
     55        wire                    usb_addr;
    7956
    8057        assign  USB_SLRD = ~usb_rdreq;
     
    11289        wire                    coi_flag;
    11390
    114         wire    [7*12-1:0]      int_mux_data [N-1:0];
    115 
    116         wire                    ana_dead [N-1:0];
    117         wire                    ana_good [N-1:0];
    118         wire    [11:0]  ana_data [N-1:0];
    119         wire    [11:0]  ana_base [N-1:0];
    120 
    121         wire                    amp_flag [N-1:0];
    122         wire    [11:0]  amp_data [N-1:0];
     91        wire    [4*12-1:0]      int_mux_data [N-1:0];
     92
     93        wire                    amp_flag1 [N-1:0];
     94        wire    [11:0]  amp_data1 [N-1:0];
     95
     96        wire                    amp_flag2 [N-1:0];
     97        wire    [11:0]  amp_data2 [N-1:0];
    12398
    12499        wire                    cnt_good [N-1:0];
     
    134109    wire        [11:0]  del_data;
    135110
    136         wire    [15:0]  uwt_data1 [N-1:0];
    137         wire    [18:0]  uwt_data2 [N-1:0];
    138         wire    [1:0]   uwt_flag1 [N-1:0];
    139         wire    [1:0]   uwt_flag2 [N-1:0];
    140 
    141111        wire    [20:0]  cic_data [N-1:0];
    142112
    143113        wire    [11:0]  dec_data [N-1:0];
    144         wire    [11:0]  tmp_data;
    145 
    146         wire    [1:0]   ext_flag [N-1:0];
     114        wire    [11:0]  clp_data [N-1:0];
     115        wire    [11:0]  tmp_data [1:0];
    147116
    148117        wire                    i2c_reset;
    149 
     118/*
    150119        sys_pll sys_pll_unit(
    151                 .inclk0(CLK_50MHz),
    152                 .c0(sys_clock));
     120                .inclk0(CLK_100MHz),
     121                .c0(sys_clock),
     122                .c1(ADC_DCO),
     123                .c2(ADC_FCO));
     124
     125        wire                    ADC_DCO, ADC_FCO;
    153126
    154127        test test_unit(
     
    162135                .lvds_dco(ADC_DCO),
    163136                .lvds_fco(ADC_FCO),
    164                 .lvds_d(ADC_D),
     137                .lvds_d(36'd0),
    165138                .test(tst_data),
    166                 .trig({CON_B[9:0], TRG[1:0]}),
     139                .trig(12'd0),
    167140                .adc_frame(sys_frame),
    168141                .adc_data({cmp_data, adc_data[2], adc_data[1], adc_data[0]}));
     142*/
     143        sys_pll sys_pll_unit(
     144                .inclk0(CLK_100MHz),
     145                .c0(sys_clock));
     146
     147        adc_lvds #(
     148                .size(6),
     149                .width(24)) adc_lvds_unit (
     150                .clock(sys_clock),
     151                .lvds_dco(ADC_DCO),
     152                .lvds_fco(ADC_FCO),
     153                .lvds_d({ADC_D[5], ADC_D[4], ADC_D[3], ADC_D[2], ADC_D[1], ADC_D[0]}),
     154                .adc_frame(sys_frame),
     155                .adc_data({
     156                        adc_data[11], adc_data[10], adc_data[9], adc_data[8],
     157                        adc_data[7], adc_data[6], adc_data[5], adc_data[4],
     158                        adc_data[3], adc_data[2], adc_data[1], adc_data[0]}));
    169159
    170160        wire    [15:0]  cfg_bits [31:0];
     
    175165        wire                    cfg_reset;
    176166
    177         wire    [11:0]  bus_ssel;
     167        wire    [12:0]  bus_ssel;
    178168        wire                    bus_wren;
    179169        wire    [31:0]  bus_addr;
    180170        wire    [15:0]  bus_mosi;
    181171        wire    [15:0]  bus_miso [10:0];
    182         wire    [11:0]  bus_busy;
     172        wire    [12:0]  bus_busy;
    183173
    184174        wire    [15:0]  mrg_bus_miso;
    185175        wire                    mrg_bus_busy;
    186176
    187         wire    [11*16-1:0]     int_bus_miso;
     177        wire    [12*16-1:0]     int_bus_miso;
    188178
    189179        genvar j;
     
    208198
    209199        generate
    210                 for (j = 0; j < 3; j = j + 1)
     200                for (j = 0; j < 12; j = j + 1)
    211201                begin : MUX_DATA
    212202                        assign int_mux_data[j] = {
    213 //                              {4'd0, amp_flag[j], 7'd0},
    214 //                              dec_data[j][37:26],
    215 //                              dec_data[j][36:25],
    216 //                              dec_data[j][35:24],
     203                                clp_data[j][11:0],
    217204                                dec_data[j][11:0],
    218                                 dec_data[j][11:0],
    219                                 amp_data[j][11:0],
    220                                 {ext_flag[j][1], 11'd0},
    221                                 {ext_flag[j][0], 11'd0},
    222205                                cic_data[j][19:8],
    223206                                sys_data[j]};
     
    228211
    229212        lpm_mux #(
    230                 .lpm_size(7*3),
     213                .lpm_size(4*12),
    231214                .lpm_type("LPM_MUX"),
    232215                .lpm_width(12),
    233                 .lpm_widths(5)) trg_mux_unit (
    234                 .sel(cfg_bits[4][12:8]),
    235                 .data({int_mux_data[2], int_mux_data[1], int_mux_data[0]}),
     216                .lpm_widths(6)) trg_mux_unit (
     217                .sel(cfg_bits[4][13:8]),
     218                .data({
     219                        int_mux_data[11], int_mux_data[10], int_mux_data[9], int_mux_data[8],
     220                        int_mux_data[7], int_mux_data[6], int_mux_data[5], int_mux_data[4],
     221                        int_mux_data[3], int_mux_data[2], int_mux_data[1], int_mux_data[0]}),
    236222                .result(trg_mux_data));
    237223
     
    241227               
    242228                        lpm_mux #(
    243                                 .lpm_size(7*3),
     229                                .lpm_size(4*12),
    244230                                .lpm_type("LPM_MUX"),
    245231                                .lpm_width(12),
    246                                 .lpm_widths(5)) osc_mux_unit (
    247                                 .sel(cfg_mux_selector[j*8+4:j*8]),
    248                                 .data({int_mux_data[2], int_mux_data[1], int_mux_data[0]}),
     232                                .lpm_widths(6)) osc_mux_unit (
     233                                .sel(cfg_mux_selector[j*8+5:j*8]),
     234                                .data({
     235                                        int_mux_data[11], int_mux_data[10], int_mux_data[9], int_mux_data[8],
     236                                        int_mux_data[7], int_mux_data[6], int_mux_data[5], int_mux_data[4],
     237                                        int_mux_data[3], int_mux_data[2], int_mux_data[1], int_mux_data[0]}),
    249238                                .result(osc_mux_data[j]));
    250239                end
     
    276265                .bus_busy(bus_busy[1]));
    277266
    278         new_filter #(.size(3), .width(12)) filter_unit (
     267        new_filter #(.size(12), .width(12)) filter_unit (
    279268                .clock(sys_clock),
    280269                .frame(sys_frame),
    281270                .reset(1'b0),
    282                 .inp_data({sys_data[2], sys_data[1], sys_data[0]}),
    283                 .out_data({cic_data[2], cic_data[1], cic_data[0]}));
     271                .inp_data({
     272                        sys_data[11], sys_data[10], sys_data[9], sys_data[08],
     273                        sys_data[7], sys_data[6], sys_data[5], sys_data[4],
     274                        sys_data[3], sys_data[2], sys_data[1], sys_data[0]}),
     275                .out_data({
     276                        cic_data[11], cic_data[10], cic_data[9], cic_data[8],
     277                        cic_data[7], cic_data[6], cic_data[5], cic_data[4],
     278                        cic_data[3], cic_data[2], cic_data[1], cic_data[0]}));
     279
     280        generate
     281                for (j = 0; j < 3; j = j + 1)
     282                begin : DECONV_CHAIN
    284283       
    285         deconv #(.size(1), .shift(22), .width(20), .widthr(12)) deconv_unit (
    286                 .clock(sys_clock),
    287                 .frame(sys_frame),
    288                 .reset(1'b0),
    289                 .del_data({6'd14, 6'd14, 6'd14, 6'd14}),
    290                 .amp_data({6'd17, 6'd17, 6'd17, 6'd17}),
    291                 .tau_data({16'd16660, 16'd16660, 16'd16660, 16'd16660}),
    292 //              .del_data({cfg_bits[16][5:0], cfg_bits[15][13:8], cfg_bits[15][5:0]}),
    293 //              .amp_data({cfg_bits[18][7:0], cfg_bits[17][15:8], cfg_bits[17][7:0]}),
    294 //              .tau_data({cfg_bits[21], cfg_bits[20], cfg_bits[19]}),
    295                 .inp_data({cic_data[2][19:0], cic_data[1][19:0], cic_data[0][19:0], 20'd0}),
    296                 .out_data({dec_data[2], dec_data[1], dec_data[0], tmp_data}));
    297 
    298 
    299         generate
    300                 for (j = 0; j < 3; j = j + 1)
    301                 begin : MCA_CHAIN
    302 
    303                         assign sys_data[j] = (cfg_bits[1][4*j]) ? (adc_data[j] ^ 12'hfff) : (adc_data[j]);
    304 
    305                         extrema #(.width(12)) extrema_unit (
     284                        deconv #(.shift(22), .width(20), .widthr(12)) deconv_unit (
    306285                                .clock(sys_clock),
    307286                                .frame(sys_frame),
    308287                                .reset(1'b0),
    309                                 .inp_data(dec_data[j]),
    310                                 .out_flag(ext_flag[j]));
    311 
    312                         analyser analyser_unit (
     288                                .del_data({6'd14, 6'd14, 6'd14, 6'd14}),
     289                                .amp_data({6'd17, 6'd17, 6'd17, 6'd17}),
     290                                .tau_data({16'd16320, 16'd16320, 16'd16320, 16'd16320}),
     291//                              .del_data({cfg_bits[16][5:0], cfg_bits[15][13:8], cfg_bits[15][5:0]}),
     292//                              .amp_data({cfg_bits[18][7:0], cfg_bits[17][15:8], cfg_bits[17][7:0]}),
     293//                              .tau_data({cfg_bits[21], cfg_bits[20], cfg_bits[19]}),
     294                                .inp_data({
     295                                        cic_data[j*4+3][19:0], cic_data[j*4+2][19:0],
     296                                        cic_data[j*4+1][19:0], cic_data[j*4+0][19:0]}),
     297                                .out_data({
     298                                        dec_data[j*4+3], dec_data[j*4+2],
     299                                        dec_data[j*4+1], dec_data[j*4+0]}));
     300               
     301               
     302                        clip #(.shift(22), .width(20), .widthr(12)) clip_unit (
     303                                .clock(sys_clock),
     304                                .frame(sys_frame),
     305                                .reset(1'b0),
     306                                .del_data({6'd14, 6'd14, 6'd14, 6'd14}),
     307                                .amp_data({6'd17, 6'd17, 6'd17, 6'd17}),
     308                                .tau_data({16'd17166, 16'd17166, 16'd17166, 16'd17166}),
     309                                .inp_data({
     310                                        cic_data[j*4+3][19:0], cic_data[j*4+2][19:0],
     311                                        cic_data[j*4+1][19:0], cic_data[j*4+0][19:0]}),
     312                                .out_data({
     313                                        clp_data[j*4+3], clp_data[j*4+2],
     314                                        clp_data[j*4+1], clp_data[j*4+0]}));
     315                end
     316        endgenerate
     317
     318        generate
     319                for (j = 0; j < 12; j = j + 1)
     320                begin : MCA_CHAIN
     321
     322                        assign sys_data[j] = (cfg_bits[1][j]) ? (adc_data[j] ^ 12'hfff) : (adc_data[j]);
     323
     324                        amplitude #(.width(12)) amplitude_unit_1 (
    313325                                .clock(sys_clock),
    314326                                .frame(sys_frame),
    315327                                .reset(cfg_bits[0][2+j]),
    316                                 .cfg_data({cfg_bits[7+2*j][12:0], cfg_bits[6+2*j][11:0]}),
    317                                 .uwt_flag(uwt_flag2[j]),
    318                                 .uwt_data(uwt_data2[j][18:7]),
    319                                 .ana_dead(ana_dead[j]),
    320                                 .ana_good(ana_good[j]),
    321                                 .ana_data(ana_data[j]),
    322                                 .ana_base(ana_base[j]));
    323 
    324                         amplitude #(.width(12)) amplitude_unit (
     328                                .cfg_data({1'b0, 12'd0, 12'd5}),
     329//                              .cfg_data({cfg_bits[7+2*j][12:0], cfg_bits[6+2*j][11:0]}),
     330                                .inp_data(dec_data[j]),
     331                                .out_flag(amp_flag1[j]),
     332                                .out_data(amp_data1[j]));
     333
     334                        amplitude #(.width(12)) amplitude_unit_2 (
    325335                                .clock(sys_clock),
    326336                                .frame(sys_frame),
    327337                                .reset(cfg_bits[0][2+j]),
    328 //                              .cfg_data(cfg_bits[12][11:0]),
    329                                 .cfg_data(12'd5),
    330                                 .inp_data(dec_data[j]),
    331                                 .out_flag(amp_flag[j]),
    332                                 .out_data(amp_data[j]));
     338                                .cfg_data({1'b0, 12'd0, 12'd5}),
     339//                              .cfg_data({cfg_bits[7+2*j][12:0], cfg_bits[6+2*j][11:0]}),
     340//                              .inp_data(dec_data[j]),
     341                                .inp_data(clp_data[j]),
     342                                .out_flag(amp_flag2[j]),
     343                                .out_data(amp_data2[j]));
    333344                end
    334345        endgenerate
     
    338349                .frame(sys_frame),
    339350                .reset(cfg_bits[0][5]),
    340                 .hst_good((ana_good[0]) & (cnt_good[0]) & (cfg_bits[13][1])),
    341                 .hst_data(ana_data[0]),
     351                .hst_good((amp_flag1[0]) & (cnt_good[0]) & (cfg_bits[13][1])),
     352                .hst_data(amp_data1[0]),
    342353/*
    343354                .hst_good((amp_flag[j]) & (cnt_good[j]) & (cfg_bits[13][1])),
     
    353364        counter hst_counter_unit (
    354365                .clock(sys_clock),
    355                 .frame((sys_frame) & (~ana_dead[0])),
    356 //              .frame(sys_frame),
     366//              .frame((sys_frame) & (~ana_dead[0])),
     367                .frame(sys_frame),
    357368                .reset(cfg_bits[0][8]),
    358369                .setup(cfg_bits[13][0]),
     
    385396                .bus_busy(bus_busy[11]));
    386397
     398        spi_fifo spi_unit(
     399                .clock(sys_clock),
     400                .reset(1'b0),
     401                .spi_sel(SPI_SEL),
     402                .spi_sdo(SPI_SDO),
     403                .spi_clk(SPI_CLK),
     404               
     405                .bus_ssel(bus_ssel[12]),
     406                .bus_wren(bus_wren),
     407                .bus_mosi(bus_mosi),
     408                .bus_busy(bus_busy[12]));
     409
    387410        generate
    388411                for (j = 0; j < 11; j = j + 1)
     
    393416
    394417        lpm_mux #(
    395                 .lpm_size(11),
     418                .lpm_size(12),
    396419                .lpm_type("LPM_MUX"),
    397420                .lpm_width(16),
     
    402425
    403426        lpm_mux #(
    404                 .lpm_size(12),
     427                .lpm_size(13),
    405428                .lpm_type("LPM_MUX"),
    406429                .lpm_width(1),
     
    411434
    412435        lpm_decode #(
    413                 .lpm_decodes(12),
     436                .lpm_decodes(13),
    414437                .lpm_type("LPM_DECODE"),
    415438                .lpm_width(4)) lpm_decode_unit (
Note: See TracChangeset for help on using the changeset viewer.