Changeset 107


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

Starting to test signal shaping algorithms

Location:
sandbox/MultiChannelUSB
Files:
9 added
6 deleted
6 edited

Legend:

Unmodified
Added
Removed
  • sandbox/MultiChannelUSB/Paella.qsf

    r101 r107  
    4242set_global_assignment -name ORIGINAL_QUARTUS_VERSION 9.0
    4343set_global_assignment -name PROJECT_CREATION_TIME_DATE "14:14:14  AUGUST 28, 2009"
    44 set_global_assignment -name LAST_QUARTUS_VERSION 9.0
     44set_global_assignment -name LAST_QUARTUS_VERSION "9.1 SP2"
    4545set_global_assignment -name DEVICE_FILTER_PACKAGE "ANY QFP"
    4646set_global_assignment -name DEVICE_FILTER_PIN_COUNT 240
     
    4949set_global_assignment -name AUTO_SHIFT_REGISTER_RECOGNITION OFF
    5050set_global_assignment -name MISC_FILE Paella.dpf
     51set_global_assignment -name MISC_FILE "C:/altera/project_12/Paella.dpf"
     52set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top
     53set_global_assignment -name VERILOG_FILE cic_pipeline.v
     54set_global_assignment -name VERILOG_FILE cic_filter.v
    5155set_global_assignment -name VERILOG_FILE Paella.v
    52 set_global_assignment -name VERILOG_FILE adc_fifo.v
    5356set_global_assignment -name VERILOG_FILE adc_lvds.v
    54 set_global_assignment -name VERILOG_FILE adc_para.v
    55 set_global_assignment -name VERILOG_FILE adc_pll.v
     57set_global_assignment -name VERILOG_FILE sys_pll.v
    5658set_global_assignment -name VERILOG_FILE control.v
     59set_global_assignment -name VERILOG_FILE uwt_bior31.v
    5760set_global_assignment -name VERILOG_FILE analyser.v
     61set_global_assignment -name VERILOG_FILE amplitude.v
     62set_global_assignment -name VERILOG_FILE delay.v
     63set_global_assignment -name VERILOG_FILE coincidence.v
    5864set_global_assignment -name VERILOG_FILE counter.v
    59 set_global_assignment -name VERILOG_FILE histogram.v
     65set_global_assignment -name VERILOG_FILE histogram32.v
     66set_global_assignment -name VERILOG_FILE histogram16.v
    6067set_global_assignment -name VERILOG_FILE trigger.v
    6168set_global_assignment -name VERILOG_FILE oscilloscope.v
     
    6370set_global_assignment -name VERILOG_FILE usb_fifo.v
    6471set_global_assignment -name VERILOG_FILE i2c_fifo.v
    65 set_global_assignment -name VERILOG_FILE uwt_bior31.v
    6672set_global_assignment -name VERILOG_FILE test.v
    67 set_global_assignment -name VERILOG_FILE test_pll.v
    68 set_global_assignment -name VERILOG_FILE sys_pll.v
     73set_global_assignment -name MIF_FILE test.mif
    6974set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER OFF
    7075set_global_assignment -name ENABLE_CLOCK_LATENCY ON
  • 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 (
  • sandbox/MultiChannelUSB/adc_lvds.v

    r98 r107  
    55        )
    66        (
     7                input   wire                                            clock,
     8
    79                input   wire                                            lvds_dco,
    810                input   wire                                            lvds_fco,
    911                input   wire    [size-1:0]                      lvds_d,
    1012
    11                 output  wire    [size*width-1:0]        adc_data
     13                input   wire    [11:0]                          test,
     14                input   wire    [11:0]                          trig,
     15
     16                output  wire                                            adc_frame,
     17                output  wire    [size*width-1+12:0]     adc_data
     18
    1219        );
    1320
    14         wire    [size-1:0]      int_data_h, int_data_l;
    15         reg     [width-1:0]     int_data_next [size-1:0];
    16 //      reg     [2*width:0]     int_data_next [size-1:0];
    17         reg     [width-1:0]     int_data_reg [size-1:0];
    18 //      reg     [2*width:0]     int_data_reg [size-1:0];
     21        reg                                                     state, int_rdreq, adc_frame_reg;
     22        wire                                            int_wrfull, int_rdempty;
    1923
    20         reg     [width-1:0]     int_adc_data [size-1:0];
     24        reg             [size-1:0]                      int_data_h, int_data_l;
    2125
    22         integer i;
     26        reg     [size*width-1:0]        int_data_reg;
     27        wire    [size*width-1:0]        int_data_wire;
     28
     29        wire    [size*width-1+12:0]     int_q_wire;
     30        reg             [size*width-1+12:0]     adc_data_reg;
     31       
     32
    2333        genvar j;
    2434
    25         altddio_in #(
     35        generate
     36                for (j = 0; j < size-1; j = j + 1)
     37                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;
     40                end
     41        endgenerate
     42        assign int_data_wire[(size-1)*width+width-1:(size-1)*width] = test;
     43
     44        dcfifo #(
    2645                .intended_device_family("Cyclone III"),
    27                 .invert_input_clocks("ON"),
    28 //              .invert_input_clocks("OFF"),
    29                 .lpm_type("altddio_in"),
    30                 .width(size)) altddio_in_unit (
    31                 .datain(lvds_d),
    32                 .inclock(lvds_dco),
    33                 .aclr(1'b0),
    34                 .dataout_h(int_data_h),
    35                 .dataout_l(int_data_l),
    36                 .aset(1'b0),
    37                 .inclocken(1'b1),
    38                 .sclr(1'b0),
    39                 .sset(1'b0));
     46                .lpm_numwords(16),
     47                .lpm_showahead("ON"),
     48                .lpm_type("dcfifo"),
     49                .lpm_width(size*width+12),
     50                .lpm_widthu(4),
     51                .rdsync_delaypipe(4),
     52                .wrsync_delaypipe(4),
     53                .overflow_checking("ON"),
     54                .underflow_checking("ON"),
     55                .use_eab("ON")) fifo_unit (
     56                .data({trig, int_data_wire}),
     57                .rdclk(clock),
     58                .rdreq((~int_rdempty) & int_rdreq),
     59                .wrclk(lvds_fco),
     60                .wrreq(~int_wrfull),
     61                .q(int_q_wire),
     62                .rdempty(int_rdempty),
     63                .wrfull(int_wrfull),
     64                .aclr(),
     65                .rdfull(),
     66                .rdusedw(),
     67                .wrempty(),
     68                .wrusedw());
     69
     70        always @ (posedge clock)
     71        begin
     72                case (state)
     73                        1'b0:
     74                        begin
     75                                int_rdreq <= 1'b1;
     76                                adc_frame_reg <= 1'b0;
     77                                state <= 1'b1;
     78                        end
     79
     80                        1'b1:
     81                        begin
     82                                if (~int_rdempty)
     83                                begin
     84                                        int_rdreq <= 1'b0;
     85                                        adc_frame_reg <= 1'b1;
     86                                        adc_data_reg <= int_q_wire;
     87                                        state <= 1'b0;
     88                                end
     89                        end
     90                endcase
     91        end
     92       
     93        always @ (negedge lvds_dco)
     94        begin
     95                int_data_l <= lvds_d;
     96        end
    4097
    4198        always @ (posedge lvds_dco)
    4299        begin
    43                 for (i = 0; i < size; i = i + 1)
    44                 begin
    45                         int_data_reg[i] <= int_data_next[i];
    46                 end
     100                int_data_h <= lvds_d;
     101                int_data_reg <= int_data_wire;
    47102        end
    48103
    49         always @ (posedge lvds_fco)
    50         begin
    51                 for (i = 0; i < size; i = i + 1)
    52                 begin
    53                         int_adc_data[i] <= int_data_next[i];
    54 //                      int_data_next[i] = {int_data_reg[i][2*width-2:0], int_data_l[i], int_data_h[i]};
    55                 end
    56         end
    57 
    58         always @*
    59         begin
    60                 for (i = 0; i < size; i = i + 1)
    61                 begin
    62                         int_data_next[i] = {int_data_reg[i][width-3:0], int_data_l[i], int_data_h[i]};
    63 //                      int_data_next[i] = {int_data_reg[i][2*width-2:0], int_data_l[i], int_data_h[i]};
    64                 end
    65         end
    66 
    67         generate
    68                 for (j = 0; j < size; j = j + 1)
    69                 begin : ADC_LVDS_OUTPUT
    70                         assign adc_data[j*width+width-1:j*width] = int_adc_data[j];
    71                 end
    72         endgenerate
     104        assign  adc_frame = adc_frame_reg;
     105        assign  adc_data = adc_data_reg;
    73106
    74107endmodule
  • sandbox/MultiChannelUSB/analyser.v

    r100 r107  
    3333                        state_reg <= 3'd0;
    3434                        counter_reg <= 5'd0;
    35                         sample_reg = 20'd0;
     35                        sample_reg <= 20'd0;
    3636                        dead_reg <= 1'b0;
    3737                        good_reg <= 1'b0;
     
    160160                                if (counter_max)
    161161                                begin
    162                                         if (uwt_flag[0])
     162                                        if (uwt_flag[1])
    163163                                        begin
    164164                                                counter_next = 5'd0;
  • sandbox/MultiChannelUSB/counter.v

    r94 r107  
    11module counter
    22        (
    3                 input   wire                    clock, frame, reset,
     3                input   wire                    clock, frame,
    44
    5                 input   wire    [15:0]  cfg_data,
     5                input   wire                    reset, setup, count,
    66
    77                input   wire                    bus_ssel, bus_wren,
     
    2323        wire    [63:0]  reg_bits_wire;
    2424        wire    [63:0]  cnt_bits_wire;
     25       
     26        reg                             int_load_reg;
    2527
    2628        integer i;
     
    3234                .lpm_type("LPM_COUNTER"),
    3335                .lpm_width(64)) lpm_counter_component (
    34                 .sload(cfg_data[0]),
     36                .sload(int_load_reg | setup),
    3537                .sclr(reset),
    3638                .clock(clock),
    3739                .data(reg_bits_wire),
    38 //              .cnt_en(frame & cfg_data[1]),
    39                 .cnt_en((frame) & (|cnt_bits_wire) & (cfg_data[1])),
    40                 .q(cnt_bits_wire),
    41                 .aclr(1'b0),
    42                 .aload(1'b0),
    43                 .aset(1'b0),
    44                 .cin(1'b1),
    45                 .clk_en(1'b1),
    46                 .cout(),
    47                 .eq(),
    48                 .sset(1'b0),
    49                 .updown(1'b1));
     40                .cnt_en((frame) & (count) & (|cnt_bits_wire)),
     41                .q(cnt_bits_wire));
    5042
    5143        generate
     
    6052                                .clock(clock),
    6153                                .data(bus_mosi),
    62                                 .q(reg_bits_wire[j*16+15:j*16]),
    63                                 .aclr(),
    64                                 .aload(),
    65                                 .aset(),
    66                                 .sload(),
    67                                 .sset());
     54                                .q(reg_bits_wire[j*16+15:j*16]));
    6855                                end
    6956        endgenerate
     
    8471                .lpm_width(2)) lpm_decode_unit (
    8572                .data(bus_addr),
    86                 .eq(int_ssel_wire),
    87                 .aclr(),
    88                 .clken(),
    89                 .clock(),
    90                 .enable());
     73                .eq(int_ssel_wire));
    9174
    9275        always @(posedge clock)
     
    9679                        int_miso_reg <= 16'd0;
    9780                        cnt_good_reg <= 1'b0;
     81                        int_load_reg <= 1'b0;
    9882                end
    9983                else
    10084                begin
    10185                        int_miso_reg <= int_miso_wire;
    102                         cnt_good_reg <= (|cnt_bits_wire) & (cfg_data[1]);
     86                        cnt_good_reg <= |cnt_bits_wire;
     87                        int_load_reg <= bus_ssel & bus_wren;
    10388                end
    10489        end
  • sandbox/MultiChannelUSB/test.v

    r93 r107  
    11module test
    22        (
    3                 input   wire                    clk,
     3                input   wire                    clock,
    44                output  wire    [11:0]  data
    55        );
    66
    7         reg     [11:0]  int_data;
    8         reg     [15:0]  counter;
    9 //      reg     [5:0]   counter;
    10         reg             [5:0]   state;
     7        reg     [11:0]  int_addr;
    118
    12         always @(posedge clk)
     9        always @(posedge clock)
    1310        begin
    14                 case (state)
    15 /*
    16                         0:
    17                         begin
    18                                 int_data <= 12'd0;
    19                                 state <= 6'd1;
    20                         end
    21                        
    22                         1:
    23                         begin
    24                                 int_data <= 12'd1024;
    25                                 state <= 6'd2;
    26                         end
     11                if (int_addr == 12'd2559)
     12                begin
     13                        int_addr <= 12'd0;
     14                end
     15                else
     16                begin
     17                        int_addr <= int_addr + 12'd1;
     18                end
    2719
    28                         2:
    29                         begin
    30                                 int_data <= 12'd2048;
    31                                 state <= 6'd3;
    32                         end
    33 
    34                         3:
    35                         begin
    36                                 int_data <= 12'd3072;
    37                                 state <= 6'd4;
    38                         end
    39 
    40                         4:
    41                         begin
    42                                 int_data <= 12'd4095;
    43                                 state <= 6'd5;
    44                         end
    45 
    46                         5:
    47                         begin
    48                                 int_data <= 12'd3072;
    49                                 state <= 6'd6;
    50                         end
    51 
    52                         6:
    53                         begin
    54                                 int_data <= 12'd2048;
    55                                 state <= 6'd7;
    56                         end
    57 
    58                         7:
    59                         begin
    60                                 int_data <= 12'd1024;
    61                                 state <= 6'd8;
    62                         end
    63 
    64                         8:
    65                         begin
    66                                 int_data <= 12'd0;
    67                                 counter <= counter + 6'd1;
    68                                 if (&counter)
    69                                 begin
    70                                         state <= 6'd0;
    71                                 end
    72                         end
    73 */
    74 
    75                         6'd0:
    76                         begin
    77                                 int_data <= 12'h030;
    78                                 state <= 6'd1;
    79                         end
    80 
    81                         6'd1:
    82                         begin
    83                                 int_data <= 12'h034;
    84                                 state <= 6'd2;
    85                         end
    86 
    87                         6'd2:
    88                         begin
    89                                 int_data <= 12'h081;
    90                                 state <= 6'd3;
    91                         end
    92 
    93                         6'd3:
    94                         begin
    95                                 int_data <= 12'h0f5;
    96                                 state <= 6'd4;
    97                         end
    98 
    99                         6'd4:
    100                         begin
    101                                 int_data <= 12'h10a;
    102                                 state <= 6'd5;
    103                         end
    104 
    105                         6'd5:
    106                         begin
    107                                 int_data <= 12'h11a;
    108                                 state <= 6'd6;
    109                         end
    110 
    111                         6'd6:
    112                         begin
    113                                 int_data <= 12'h124;
    114                                 state <= 6'd7;
    115                         end
    116 
    117                         6'd7:
    118                         begin
    119                                 int_data <= 12'h124;
    120                                 state <= 6'd8;
    121                         end
    122 
    123                         6'd8:
    124                         begin
    125                                 int_data <= 12'h12b;
    126                                 state <= 6'd9;
    127                         end
    128 
    129                         6'd9:
    130                         begin
    131                                 int_data <= 12'h12a;
    132                                 state <= 6'd10;
    133                         end
    134 
    135                         6'd10:
    136                         begin
    137                                 int_data <= 12'h12a;
    138                                 state <= 6'd11;
    139                         end
    140 
    141                         6'd11:
    142                         begin
    143                                 int_data <= 12'h12b;
    144                                 state <= 6'd12;
    145                         end
    146 
    147                         6'd12:
    148                         begin
    149                                 int_data <= 12'h12a;
    150                                 state <= 6'd13;
    151                         end
    152 
    153                         6'd13:
    154                         begin
    155                                 int_data <= 12'h12e;
    156                                 state <= 6'd14;
    157                         end
    158 
    159                         6'd14:
    160                         begin
    161                                 int_data <= 12'h12b;
    162                                 state <= 6'd15;
    163                         end
    164 
    165                         6'd15:
    166                         begin
    167                                 int_data <= 12'h12b;
    168                                 state <= 6'd16;
    169                         end
    170 
    171                         6'd16:
    172                         begin
    173                                 int_data <= 12'h12e;
    174                                 state <= 6'd17;
    175                         end
    176 
    177                         6'd17:
    178                         begin
    179                                 int_data <= 12'h12b;
    180                                 state <= 6'd18;
    181                         end
    182 
    183                         6'd18:
    184                         begin
    185                                 int_data <= 12'h12a;
    186                                 state <= 6'd19;
    187                         end
    188 
    189                         6'd19:
    190                         begin
    191                                 int_data <= 12'h12e;
    192                                 state <= 6'd20;
    193                         end
    194 
    195                         6'd20:
    196                         begin
    197                                 int_data <= 12'h12b;
    198                                 state <= 6'd21;
    199                         end
    200 
    201                         6'd21:
    202                         begin
    203                                 int_data <= 12'h12e;
    204                                 state <= 6'd22;
    205                         end
    206 
    207                         6'd22:
    208                         begin
    209                                 int_data <= 12'h12f;
    210                                 state <= 6'd23;
    211                         end
    212 
    213                         6'd23:
    214                         begin
    215                                 int_data <= 12'h12f;
    216                                 state <= 6'd24;
    217                         end
    218 
    219                         6'd24:
    220                         begin
    221                                 int_data <= 12'h12b;
    222                                 state <= 6'd25;
    223                         end
    224 
    225                         6'd25:
    226                         begin
    227                                 int_data <= 12'h12b;
    228                                 state <= 6'd26;
    229                         end
    230 
    231                         6'd26:
    232                         begin
    233                                 int_data <= 12'h12b;
    234                                 state <= 6'd27;
    235                         end
    236 
    237                         6'd27:
    238                         begin
    239                                 int_data <= 12'h12e;
    240                                 state <= 6'd28;
    241                         end
    242 
    243                         6'd28:
    244                         begin
    245                                 int_data <= 12'h12e;
    246                                 state <= 6'd29;
    247                         end
    248 
    249                         6'd29:
    250                         begin
    251                                 int_data <= 12'h12e;
    252                                 state <= 6'd30;
    253                         end
    254 
    255                         6'd30:
    256                         begin
    257                                 int_data <= 12'h12e;
    258                                 state <= 6'd31;
    259                         end
    260 
    261                         6'd31:
    262                         begin
    263                                 int_data <= 12'h12b;
    264                                 state <= 6'd32;
    265                         end
    266 
    267                         6'd32:
    268                         begin
    269                                 int_data <= 12'h12b;
    270                                 state <= 6'd33;
    271                         end
    272 
    273                         6'd33:
    274                         begin
    275                                 int_data <= 12'h12b;
    276                                 state <= 6'd34;
    277                         end
    278 
    279                         6'd34:
    280                         begin
    281                                 int_data <= 12'h12e;
    282                                 state <= 6'd35;
    283                         end
    284 
    285                         6'd35:
    286                         begin
    287                                 int_data <= 12'h12e;
    288                                 state <= 6'd36;
    289                         end
    290 
    291                         6'd36:
    292                         begin
    293                                 int_data <= 12'h12e;
    294                                 state <= 6'd37;
    295                         end
    296 
    297                         6'd37:
    298                         begin
    299                                 int_data <= 12'h12e;
    300                                 state <= 6'd38;
    301                         end
    302 
    303                         6'd38:
    304                         begin
    305                                 int_data <= 12'h12f;
    306                                 state <= 6'd39;
    307                         end
    308 
    309                         6'd39:
    310                         begin
    311                                 int_data <= 12'h12b;
    312                                 state <= 6'd40;
    313                         end
    314 
    315                         6'd40:
    316                         begin
    317                                 int_data <= 12'h12e;
    318                                 state <= 6'd41;
    319                         end
    320 
    321                         6'd41:
    322                         begin
    323                                 int_data <= 12'h12f;
    324                                 state <= 6'd42;
    325                         end
    326 
    327                         6'd42:
    328                         begin
    329                                 int_data <= 12'h0fb;
    330                                 state <= 6'd43;
    331                         end
    332 
    333                         6'd43:
    334                         begin
    335                                 int_data <= 12'h07e;
    336                                 state <= 6'd44;
    337                         end
    338 
    339                         6'd44:
    340                         begin
    341                                 int_data <= 12'h070;
    342                                 state <= 6'd45;
    343                         end
    344 
    345                         6'd45:
    346                         begin
    347                                 int_data <= 12'h05a;
    348                                 state <= 6'd46;
    349                         end
    350 
    351                         6'd46:
    352                         begin
    353                                 int_data <= 12'h045;
    354                                 state <= 6'd47;
    355                         end
    356 
    357                         6'd47:
    358                         begin
    359                                 int_data <= 12'h03f;
    360                                 state <= 6'd48;
    361                         end
    362 
    363                         6'd48:
    364                         begin
    365                                 int_data <= 12'h03b;
    366                                 state <= 6'd49;
    367                         end
    368 
    369                         6'd49:
    370                         begin
    371                                 int_data <= 12'h034;
    372                                 state <= 6'd50;
    373                         end
    374 
    375                         6'd50:
    376                         begin
    377                                 int_data <= 12'h035;
    378                                 state <= 6'd51;
    379                         end
    380 
    381                         6'd51:
    382                         begin
    383                                 int_data <= 12'h034;
    384                                 state <= 6'd52;
    385                         end
    386 
    387                         6'd52:
    388                         begin
    389                                 int_data <= 12'h034;
    390                                 state <= 6'd53;
    391                         end
    392 
    393                         6'd53:
    394                         begin
    395                                 int_data <= 12'h030;
    396                                 state <= 6'd54;
    397                         end
    398 
    399                         6'd54:
    400                         begin
    401                                 int_data <= 12'h030;
    402                                 counter <= counter + 16'd1;
    403                                 if (&counter)
    404                                 begin
    405                                         state <= 6'd0;
    406                                 end
    407                         end
    408 
    409                         default:
    410                         begin
    411                                 state <= 6'd0;
    412                         end
    413                 endcase
    41420        end
    41521
    416         assign  data = int_data;
     22        altsyncram #(
     23                .address_aclr_a("NONE"),
     24                .clock_enable_input_a("BYPASS"),
     25                .clock_enable_output_a("BYPASS"),
     26                .init_file("test_mwd.mif"),
     27                .intended_device_family("Cyclone III"),
     28                .lpm_hint("ENABLE_RUNTIME_MOD=NO"),
     29                .lpm_type("altsyncram"),
     30                .numwords_a(2560),
     31                .operation_mode("ROM"),
     32                .outdata_aclr_a("NONE"),
     33                .outdata_reg_a("CLOCK0"),
     34                .widthad_a(12),
     35                .width_a(12),
     36                .width_byteena_a(1)) test_rom_unit (
     37                .clock0(clock),
     38                .address_a(int_addr),
     39                .q_a(data),
     40                .aclr0(1'b0),
     41                .aclr1(1'b0),
     42                .address_b(1'b1),
     43                .addressstall_a(1'b0),
     44                .addressstall_b(1'b0),
     45                .byteena_a(1'b1),
     46                .byteena_b(1'b1),
     47                .clock1(1'b1),
     48                .clocken0(1'b1),
     49                .clocken1(1'b1),
     50                .clocken2(1'b1),
     51                .clocken3(1'b1),
     52                .data_a({12{1'b1}}),
     53                .data_b(1'b1),
     54                .eccstatus(),
     55                .q_b(),
     56                .rden_a(1'b1),
     57                .rden_b(1'b1),
     58                .wren_a(1'b0),
     59                .wren_b(1'b0));
    41760
    41861endmodule
Note: See TracChangeset for help on using the changeset viewer.