Changeset 84


Ignore:
Timestamp:
Dec 21, 2009, 5:09:06 PM (15 years ago)
Author:
demin
Message:

improve timings in all components

Location:
trunk/MultiChannelUSB
Files:
2 added
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/MultiChannelUSB/Paella.qsf

    r72 r84  
    5959set_global_assignment -name VERILOG_FILE histogram.v
    6060set_global_assignment -name VERILOG_FILE trigger.v
     61set_global_assignment -name VERILOG_FILE suppression.v
    6162set_global_assignment -name VERILOG_FILE oscilloscope.v
    6263set_global_assignment -name VERILOG_FILE usb_fifo.v
     
    6566set_global_assignment -name VERILOG_FILE test.v
    6667set_global_assignment -name VERILOG_FILE test_pll.v
     68set_global_assignment -name VERILOG_FILE sys_pll.v
    6769set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER OFF
    6870set_global_assignment -name ENABLE_CLOCK_LATENCY ON
  • trunk/MultiChannelUSB/Paella.v

    r81 r84  
    88                inout   wire                    I2C_SCL,
    99                inout   wire    [4:0]   CON_A,
    10                 inout   wire    [15:0]  CON_B,
     10                input   wire    [15:0]  CON_B,
    1111                input   wire    [12:0]  CON_C,
    1212                input   wire    [1:0]   CON_BCLK,
     
    5252        assign  RAM_ADDR        =       20'h00000;
    5353*/
    54         assign  RAM_CLK = CLK_50MHz;
     54        assign  RAM_CLK = sys_clk;
    5555        assign  RAM_CE1 = 1'b0;
    5656
     
    5858        assign  TRG                     =       4'bz;
    5959        assign  CON_A           =       5'bz;
    60         assign  CON_B           =       16'bz;
    6160        assign  USB_PA0         =       1'bz;
    6261        assign  USB_PA1         =       1'bz;
     
    9594                .usb_addr(usb_addr),
    9695
    97                 .clk(CLK_50MHz),
     96                .clk(sys_clk),
    9897                .aclr(usb_aclr),
    9998
     
    106105                .rx_q(usb_rx_data)
    107106        );
    108        
     107               
    109108        reg                     bln_reset [N-1:0];
    110109        wire    [11:0]  baseline [N-1:0];
     
    113112        reg                     ana_reset [N-1:0];
    114113        wire                    ana_peak_ready [N-1:0];
     114        wire                    ana_peak_debug [N-1:0];
    115115
    116116        reg                             osc_reset [N-1:0];
     
    155155    wire        [11:0]  data [N-1:0];
    156156    wire        [11:0]  int_data [N-1:0];
     157
     158    wire                        cmp_data_ready;
     159    wire        [11:0]  cmp_data;
     160
     161    wire                        ept_data_ready;
     162    wire        [47:0]  ept_data;
    157163   
     164        wire    [11:0]  nowhere;
     165
     166        wire                    sys_clk;
     167
     168
    158169/*
    159170    assign      osc_thrs[0] = 16'd40;
     
    176187        wire    [1:0]   uwt_flag3 [N-1:0];
    177188
    178     assign      adc_clk[0] = ADC_FCO;
    179     assign      adc_clk[1] = ADC_FCO;
    180     assign      adc_clk[2] = ADC_FCO;
     189        assign  adc_clk[0] = ADC_FCO;
     190        assign  adc_clk[1] = ADC_FCO;
     191        assign  adc_clk[2] = ADC_FCO;
    181192
    182193/*   
     
    199210                .c0(adc_pll_clk));
    200211*/
    201 /*
    202         wire                    tst_adc_clk;
    203         wire    [11:0]  tst_adc_data;
     212
     213        sys_pll sys_pll_unit(
     214                .inclk0(CLK_50MHz),
     215                .c0(sys_clk));
    204216
    205217        test test_unit(
    206                 .clk(CLK_50MHz),
    207                 .tst_clk(tst_adc_clk),
    208                 .tst_data(tst_adc_data));
    209 
    210     assign      adc_clk[2] = tst_adc_clk;
    211     assign      adc_data[2] = tst_adc_data;
    212 */
    213 /*
    214         altserial_flash_loader #(
    215                 .enable_shared_access("OFF"),
    216                 .enhanced_mode(1),
    217                 .intended_device_family("Cyclone III")) sfl_unit (
    218                 .noe(1'b0),
    219                 .asmi_access_granted(),
    220                 .asmi_access_request(),
    221                 .data0out(),
    222                 .dclkin(),
    223                 .scein(),
    224                 .sdoin());
    225 */
     218                .clk(ADC_FCO),
     219                .data(adc_data[2]));
     220//              .data(nowhere);
     221
    226222
    227223        adc_lvds #(
     
    232228                .lvds_fco(ADC_FCO),
    233229                .lvds_d(ADC_D[2:0]),
    234                 .adc_data({     adc_data[2],
     230//              .adc_data({     adc_data[2],
     231                .adc_data({     nowhere,
    235232                                        adc_data[1],
    236233                                        adc_data[0] }));
     
    250247        integer j;
    251248
    252         always @(posedge CLK_50MHz)
     249        always @(posedge sys_clk)
    253250        begin
    254251                if (cfg_reset)
     
    265262        end
    266263
     264        assign ept_data_ready = cmp_data_ready & data_ready[2] & data_ready[1] & data_ready[0];
     265        assign ept_data = {cmp_data, int_data[2], int_data[1], int_data[0]};
     266
     267        adc_fifo cmp_fifo_unit (
     268                .adc_clk(ADC_FCO),
     269                .adc_data(CON_B[11:0]),
     270                .clk(sys_clk),
     271                .data_ready(cmp_data_ready),
     272                .data(cmp_data));
     273
    267274        genvar i;
    268275
     
    285292                                .adc_clk(adc_clk[i]),
    286293                                .adc_data(adc_data[i]),
    287                                 .clk(CLK_50MHz),
     294                                .clk(sys_clk),
    288295                                .data_ready(data_ready[i]),
    289296                                .data(int_data[i]));
     
    292299
    293300                        uwt_bior31 #(.L(1)) uwt_1_unit (
    294                                 .clk(CLK_50MHz),
     301                                .clk(sys_clk),
    295302                                .data_ready(data_ready[i]),
    296303                                .x({20'h00000, data[i]}),
     
    301308               
    302309                        uwt_bior31 #(.L(2)) uwt_2_unit (
    303                                 .clk(CLK_50MHz),
     310                                .clk(sys_clk),
    304311                                .data_ready(data_ready[i]),
    305312                                .x(uwt_a1[i]),
     
    310317               
    311318                        uwt_bior31 #(.L(3)) uwt_3_unit (
    312                                 .clk(CLK_50MHz),
     319                                .clk(sys_clk),
    313320                                .data_ready(data_ready[i]),
    314321                                .x(uwt_a2[i]),
     
    319326
    320327                        lpm_mux #(
    321                                 .lpm_size(5),
     328                                .lpm_size(7),
    322329                                .lpm_type("LPM_MUX"),
    323330                                .lpm_width(12),
    324331                                .lpm_widths(3)) osc_mux_unit (
    325332                                .sel(osc_mux_sel[i][2:0]),
    326                                 .data({ bln_baseline[i],
     333                                .data({ {ana_peak_debug[i], 11'd0},
     334                                                hst_data[i],
     335//                                              uwt_d3[i][11:0],
     336                                                bln_baseline[i],
    327337                                                uwt_a3[i][20:9],
    328338                                                uwt_a2[i][17:6],
     
    332342
    333343                        lpm_mux #(
    334                                 .lpm_size(5),
     344                                .lpm_size(7),
    335345                                .lpm_type("LPM_MUX"),
    336346                                .lpm_width(12),
    337347                                .lpm_widths(3)) trg_mux_unit (
    338348                                .sel(trg_mux_sel[i][2:0]),
    339                                 .data({ bln_baseline[i],
     349                                .data({ {ana_peak_ready[i], 11'd0},
     350                                                hst_data[i],
     351//                                              uwt_d3[i][11:0],
     352                                                bln_baseline[i],
    340353                                                uwt_a3[i][20:9],
    341354                                                uwt_a2[i][17:6],
     
    364377
    365378                        baseline baseline_unit (
    366                                 .clk(CLK_50MHz),
     379                                .clk(sys_clk),
    367380                                .reset(bln_reset[i]),
    368381                                .data_ready(data_ready[i]),
     
    372385
    373386                        analyser analyser_unit (
    374                                 .clk(CLK_50MHz),
     387                                .clk(sys_clk),
    375388                                .reset(ana_reset[i]),
    376389                                .data_ready(data_ready[i]),
    377390                                .uwt_flag(uwt_flag3[i]),
    378                                 .peak_ready(ana_peak_ready[i]));
    379 
    380                         assign hst_data[i] = (hst_mux_data[i][12:1] > bln_mux_data[i]) ? (hst_mux_data[i][12:1] - bln_mux_data[i]) : 12'd0;
     391                                .peak_ready(ana_peak_ready[i]),
     392                                .peak_debug(ana_peak_debug[i]));
     393
     394                        suppression suppression_unit (
     395                                .clk(sys_clk),
     396                                .data(hst_mux_data[i][12:1]),
     397                                .baseline(bln_mux_data[i]),
     398                                .result(hst_data[i]));
     399
    381400                        assign hst_data_ready[i] = (hst_mux_data[i][0]) & (hst_data[i] >= cfg_hst_threshold[i]);
    382401
    383402                        histogram #(.W(32)) histogram_unit (
    384                                 .clk(CLK_50MHz),
     403                                .clk(sys_clk),
    385404                                .reset(hst_reset[i]),
    386405                                .data_ready(hst_data_ready[i]),
     
    390409
    391410                        trigger trigger_unit (
    392                                 .clk(CLK_50MHz),
     411                                .clk(sys_clk),
    393412                                .reset(trg_reset[i]),
    394413                                .data_ready(data_ready[i]),
     
    399418                       
    400419                        oscilloscope oscilloscope_unit (
    401                                 .clk(CLK_50MHz),
     420                                .clk(sys_clk),
    402421                                .reset(osc_reset[i]),
    403422                                .data_ready(data_ready[i]),
     
    465484
    466485        i2c_fifo i2c_unit(
    467                 .clk(CLK_50MHz),
     486                .clk(sys_clk),
    468487                .aclr(i2c_aclr),
    469488                .wrreq(i2c_wrreq),
     
    481500
    482501        control control_unit (
    483                 .clk(CLK_50MHz),
     502                .clk(sys_clk),
    484503                .cfg_reset(cfg_reset),
    485504                .cfg_src_data(cfg_memory[cfg_src_addr[4:0]]),
     
    505524                .ram_addr(RAM_ADDR),
    506525                .ram_data({RAM_DQA, RAM_DQAP, RAM_DQB, RAM_DQBP}),
     526                .ept_data_ready(ept_data_ready),
     527                .ept_data(ept_data),
    507528                .i2c_wrreq(i2c_wrreq),
    508529                .i2c_data(i2c_data),
     
    510531                .led(LED));
    511532
     533/*
     534        altserial_flash_loader #(
     535                .enable_shared_access("OFF"),
     536                .enhanced_mode(1),
     537                .intended_device_family("Cyclone III")) sfl_unit (
     538                .noe(1'b0),
     539                .asmi_access_granted(),
     540                .asmi_access_request(),
     541                .data0out(),
     542                .dclkin(),
     543                .scein(),
     544                .sdoin());
     545*/
     546
    512547endmodule
  • trunk/MultiChannelUSB/adc_fifo.v

    r72 r84  
    1212        reg             [11:0]  int_data;
    1313       
    14         reg                             state, int_rdreq, int_data_ready;
     14        reg             [1:0]   state;
     15        reg                             int_rdreq, int_data_ready;
    1516        wire                    int_wrfull, int_rdempty;
    1617
     
    2627                .overflow_checking("ON"),
    2728                .underflow_checking("ON"),
    28                 .use_eab("OFF"),
     29                .use_eab("ON"),
    2930                .write_aclr_synch("OFF")) fifo_unit (
    3031                .aclr(1'b0),
     
    4546        begin
    4647                case (state)
    47                         1'b0:
     48                        2'd0:
    4849                        begin
    4950                                int_rdreq <= 1'b1;
    5051                                int_data_ready <= 1'b0;
    51                                 state <= 1'b1;
     52                                state <= 2'd1;
    5253                        end
    5354
    54                         1'b1:
     55                        2'd1:
    5556                        begin
    5657                                if (~int_rdempty)
     
    5960                                        int_rdreq <= 1'b0;
    6061                                        int_data_ready <= 1'b1;
    61                                         state <= 1'b0;
     62                                        state <= 2'd0;
    6263                                end
    6364                        end
    6465
    65                         default:
     66                        2'd2:
    6667                        begin
    67                                 int_rdreq <= 1'b1;
    6868                                int_data_ready <= 1'b0;
    69                                 state <= 1'b1;
     69                                state <= 2'd3;
    7070                        end
     71
     72                        2'd3:
     73                        begin
     74                                state <= 2'd0;
     75                        end
     76
    7177                endcase
    7278        end
  • trunk/MultiChannelUSB/analyser.v

    r76 r84  
    44                input   wire                    data_ready,
    55                input   wire    [1:0]   uwt_flag,
    6                 output  wire                    peak_ready
     6                output  wire                    peak_ready,
     7                output  wire                    peak_debug
    78        );
    89
     10        reg                             flag_reg, flag_next;
    911        reg             [1:0]   state_reg, state_next;
    10         reg             [3:0]   counter_reg, counter_next;
    11         reg                             peak_ready_reg, peak_ready_next;
     12        reg             [4:0]   counter_reg, counter_next;
     13        reg                             peak_ready_reg;
    1214
    1315        wire                    counter_max = (&counter_reg);
     16        wire                    peak_ready_int = (flag_reg & data_ready & uwt_flag[0] & counter_max);
    1417
    1518        always @(posedge clk)
     
    1720                if (reset)
    1821                begin
     22                        flag_reg <= 1'b0;
    1923                        state_reg <= 2'd0;
    20                         counter_reg <= 4'd0;
     24                        counter_reg <= 5'd0;
    2125                        peak_ready_reg <= 1'b0;
    2226                end
    2327                else
    2428                begin
     29                        flag_reg <= flag_next;
    2530                        state_reg <= state_next;
    2631                        counter_reg <= counter_next;
    27                         peak_ready_reg <= peak_ready_next;
     32                        peak_ready_reg <= peak_ready_int;
    2833                end
    2934        end
     
    3136        always @*
    3237        begin
     38                flag_next = flag_reg;
    3339                state_next = state_reg;
    3440                counter_next = counter_reg;
    35                 peak_ready_next = peak_ready_reg;
    3641                case (state_reg)
    3742                        0: // skip first 16 samples
    3843                        begin
    39                                 peak_ready_next = 1'b0;
     44                                flag_next = 1'b0;
    4045                                if (data_ready)
    4146                                begin
    42                                         counter_next = counter_reg + 4'd1;
     47                                        counter_next = counter_reg + 5'd1;
    4348                                        if (counter_max)
    4449                                        begin
     
    5055                        1: // skip first 16 minima
    5156                        begin
     57                                flag_next = 1'b0;
    5258                                if (data_ready & uwt_flag[1])
    5359                                begin
    54                                         counter_next = counter_reg + 4'd1;
     60                                        counter_next = counter_reg + 5'd1;
    5561                                        if (counter_max)
    5662                                        begin
     
    6268                        2:
    6369                        begin
    64                                 if (data_ready & uwt_flag[0] & counter_max)
     70                                flag_next = 1'b1;
     71                                if (data_ready)
    6572                                begin
    66                                         counter_next = 4'd0;
    67                                         peak_ready_next = 1'b1;
    68                 end
    69                 else
    70                 begin
    7173                                        if (~counter_max)
    7274                                        begin
    73                                                 counter_next = counter_reg + 4'd1;
     75                                                counter_next = counter_reg + 5'd1;
    7476                                        end
    75                                         peak_ready_next = 1'b0;
    76                                 end
     77                                        if (peak_ready_int)
     78                                        begin
     79                                                counter_next = 5'd0;
     80                                        end
     81                end
    7782                        end
    7883
    7984                        default:
    8085                        begin
     86                                flag_next = 1'b0;
    8187                                state_next = 2'd0;
    82                                 counter_next = 4'd0;
    83                                 peak_ready_next = 1'b0;
     88                                counter_next = 5'd0;
    8489                        end
    8590                endcase
    8691        end
    8792
    88         assign  peak_ready = peak_ready_reg;
     93        assign  peak_ready = peak_ready_int;
     94        assign  peak_debug = peak_ready_reg;
    8995endmodule
  • trunk/MultiChannelUSB/control.v

    r79 r84  
    2828                inout   wire    [17:0]  ram_data,
    2929
     30                input   wire                    ept_data_ready,
     31                input   wire    [47:0]  ept_data,
     32
    3033                output  wire                    i2c_wrreq,
    3134                output  wire    [15:0]  i2c_data,
     
    3639
    3740        reg             [23:0]  led_counter;
    38         reg             [18:0]  ram_counter;   
     41        reg             [19:0]  ram_counter;   
    3942        reg             [10:0]  tst_counter;   
    4043        reg     [15:0]  int_addr, int_max_addr;
     
    4952        reg                     int_i2c_wrreq;
    5053
     54        reg             [47:0]  int_ept_data;
     55       
    5156        reg                     int_cfg_reset;
    5257        reg             [15:0]  int_dst_data, int_dst_addr;
     
    7479//      assign  ram_data = int_ram_we ? int_ram_data : 18'bz;
    7580//      assign  ram_addr = {ram_counter[18:5],1'd0,ram_counter[4:0]};
    76         assign  ram_addr = {1'd0, ram_counter[18:0]};
     81        assign  ram_addr = ram_counter;
    7782
    7883        genvar j;
     
    116121                                int_ram_we <= 1'b0;
    117122                                int_ram_data <= 16'd0;
    118                                 ram_counter <= 19'd0;
     123                                ram_counter <= 20'd0;
    119124                                idle_counter <= 5'd0;
    120125                                byte_counter <= 2'd0;
     
    183188                                                begin
    184189                                                        tst_counter <= 11'd0;   
    185                                                         state <= 5'd6;
     190                                                        state <= 5'd7;
    186191                                                end
    187192                                                16'h0004:
     
    189194                                                        int_ram_we <= 1'b1;
    190195                                                        int_ram_data <= 18'd0;
    191                                                         ram_counter <= 19'd0;   
    192                                                         state <= 5'd9;
     196                                                        ram_counter <= 20'd0;   
     197                                                        state <= 5'd10;
    193198                                                end
    194199                                                16'h0005:
     
    196201                                                        int_i2c_data <= src;
    197202                                                        int_i2c_wrreq <= 1'b1;
    198                                                         state <= 5'd15;
     203                                                        state <= 5'd16;
     204                                                end
     205                                                16'h0006:
     206                                                begin
     207                                                        int_ram_we <= 1'b1;
     208                                                        int_ram_data <= 18'd0;
     209                                                        ram_counter <= 20'd0;   
     210                                                        state <= 5'd17;
    199211                                                end
    200212
     
    226238                        5:
    227239                        begin
     240                                state <= 5'd6;
     241                        end
     242
     243                        6:
     244                        begin
    228245                                if (~tx_full)
    229246                                begin
     
    251268
    252269                        // tst transfer
    253                         6:
     270                        7:
    254271                        begin
    255272                                crc_reset <= 1'b0;
     
    257274                                int_wrreq <= 1'b1;
    258275                                tst_counter <= tst_counter + 11'd1;
    259                                 state <= 5'd7;
    260                         end
    261                         7:
     276                                state <= 5'd8;
     277                        end
     278                        8:
    262279                        begin
    263280                                if (~tx_full)
     
    266283                                        if (&tst_counter)
    267284                                        begin
    268                                                 state <= 5'd8;
     285                                                state <= 5'd9;
    269286                                        end
    270287                                        else
     
    274291                                end
    275292                        end
    276                         8:
     293                        9:
    277294                        begin
    278295                                if (~tx_full)
     
    283300                        end
    284301                        // ram transfer
    285                         9:
     302                        10:
    286303                        begin
    287304                                crc_reset <= 1'b0;
    288                                 state <= 5'd10;
    289                         end
    290                         10:
     305                                state <= 5'd11;
     306                        end
     307                        11:
    291308                        begin
    292309                                int_ram_data[8:1] <= ram_counter[7:0];
    293310//                              int_ram_data[8:1] <= 8'd0;
    294                                 if (&ram_counter)
    295                                 begin
    296                                         state <= 5'd11;
     311                                if (&ram_counter[18:0])
     312                                begin
     313                                        state <= 5'd12;
    297314                                end
    298315                                else
    299316                                begin
    300                                         state <= 5'd9;
    301                                         ram_counter <= ram_counter + 19'd1;
    302                                 end
    303                         end
    304                         11:
     317                                        state <= 5'd10;
     318                                        ram_counter <= ram_counter + 20'd1;
     319                                end
     320                        end
     321                        12:
    305322                        begin
    306323                                int_ram_we <= 1'b0;
    307324                                int_ram_data <= 18'd0;
    308                                 ram_counter <= 19'd0;
    309                                 state <= 5'd12;
    310                         end
    311                         12:
     325                                ram_counter <= 20'd0;
     326                                state <= 5'd13;
     327                        end
     328                        13:
    312329                        begin
    313330                                int_wrreq <= 1'b0;
    314                                 state <= 5'd13;
    315                         end
    316                         13:
    317                         begin
    318331                                state <= 5'd14;
    319332                        end
    320333                        14:
     334                        begin
     335                                state <= 5'd15;
     336                        end
     337                        15:
     338                        begin
     339                                if (~tx_full)
     340                                begin
     341                                        int_data <= int_ram_q[8:1];
     342                                        int_wrreq <= 1'b1;
     343                                        if (&ram_counter[18:0])
     344                                        begin
     345                                                state <= 5'd0;
     346                                        end
     347                                        else
     348                                        begin
     349                                                state <= 5'd13;
     350                                                ram_counter <= ram_counter + 20'd1;
     351                                        end
     352                                end
     353                        end
     354                                               
     355                        // i2c write
     356                        16:
     357                        begin
     358                                crc_reset <= 1'b0;
     359                                if (~i2c_full)
     360                                begin
     361                                        int_i2c_wrreq <= 1'b0;
     362                                        state <= 5'd0;
     363                                end
     364                        end
     365
     366                        // long sample transfer
     367                        17:
     368                        begin
     369                                crc_reset <= 1'b0;
     370                                if (ept_data_ready)
     371                                begin
     372                                        ram_counter <= ram_counter + 20'd1;
     373                                        int_ept_data <= ept_data;
     374                                        state <= 5'd18;
     375                                end
     376                        end
     377                        18:
     378                        begin
     379//                              int_ram_data[8:1] <= ram_counter[7:0];
     380                                int_ram_data[8:1] <= int_ept_data[7:0];
     381                                int_ram_data[17:10] <= int_ept_data[15:8];
     382                                ram_counter <= ram_counter + 20'd1;
     383                                state <= 5'd19;
     384                        end
     385                        19:
     386                        begin
     387//                              int_ram_data[8:1] <= ram_counter[7:0];
     388                                int_ram_data[8:1] <= int_ept_data[23:16];
     389                                int_ram_data[17:10] <= int_ept_data[31:24];
     390                                ram_counter <= ram_counter + 20'd1;
     391                                state <= 5'd20;
     392                        end
     393
     394                        20:
     395                        begin
     396//                              int_ram_data[8:1] <= ram_counter[7:0];
     397                                int_ram_data[8:1] <= int_ept_data[39:32];
     398                                int_ram_data[17:10] <= int_ept_data[47:40];
     399                                if (&ram_counter)
     400                                begin
     401                                        int_ram_we <= 1'b0;
     402                                        int_ram_data <= 18'd0;
     403                                        ram_counter <= 19'd0;
     404                                        state <= 5'd21;
     405                                end
     406                                else
     407                                begin
     408                                        state <= 5'd17;
     409                                end
     410                        end
     411/*
     412                        21:
     413                        begin
     414                                int_wrreq <= 1'b0;
     415                                state <= 5'd22;
     416                        end
     417
     418                        22:
     419                        begin
     420                                state <= 5'd23;
     421                        end
     422
     423                        23:
    321424                        begin
    322425                                if (~tx_full)
     
    330433                                        else
    331434                                        begin
    332                                                 state <= 5'd12;
    333                                                 ram_counter <= ram_counter + 19'd1;
    334                                         end
    335                                 end
    336                         end
    337                                                
    338                         // i2c write
    339                         15:
    340                         begin
    341                                 crc_reset <= 1'b0;
    342                                 if (~i2c_full)
    343                                 begin
    344                                         int_i2c_wrreq <= 1'b0;
    345                                         state <= 5'd0;
     435                                                state <= 5'd21;
     436                                                ram_counter <= ram_counter + 20'd1;
     437                                        end
     438                                end
     439                        end
     440*/
     441                        21:
     442                        begin
     443                                int_wrreq <= 1'b0;
     444                                state <= 5'd22;
     445                        end
     446
     447                        22:
     448                        begin
     449                                state <= 5'd23;
     450                        end
     451
     452                        23:
     453                        begin
     454                                if (~tx_full)
     455                                begin
     456                                        int_data <= int_ram_q[8:1];
     457                                        int_wrreq <= 1'b1;
     458                                        state <= 5'd24;
     459                                end
     460                        end
     461
     462                        24:
     463                        begin
     464                                int_data <= int_ram_q[17:10];
     465                                state <= 5'd25;
     466                        end
     467
     468                        25:
     469                        begin
     470                                if (~tx_full)
     471                                begin
     472                                        int_wrreq <= 1'b0;
     473                                        if (&ram_counter)
     474                                        begin
     475                                                state <= 5'd0;
     476                                        end
     477                                        else
     478                                        begin
     479                                                state <= 5'd21;
     480                                                ram_counter <= ram_counter + 20'd1;
     481                                        end
    346482                                end
    347483                        end
  • trunk/MultiChannelUSB/histogram.v

    r72 r84  
    1212        // signal declaration
    1313        reg             [3:0]   state_reg, state_next;
    14         reg                             flag_reg, flag_next;
    1514        reg                             wren_reg, wren_next;
    1615        reg             [11:0]  addr_reg, addr_next;
     
    1817
    1918        wire    [W-1:0] q_a_wire, q_b_wire;
    20        
    21         wire    [11:0]  addr_wire;
    22         wire    [W-1:0] data_wire;
    23        
    24         assign  addr_wire = (flag_reg) ? data : addr_reg;
    25         assign  data_wire = (flag_reg) ? (q_a_wire + 32'd1) : data_reg;
    2619
    2720        altsyncram #(
     
    3932                .outdata_aclr_a("NONE"),
    4033                .outdata_aclr_b("NONE"),
    41                 .outdata_reg_a("UNREGISTERED"),
    42                 .outdata_reg_b("UNREGISTERED"),
     34                .outdata_reg_a("CLOCK0"),
     35                .outdata_reg_b("CLOCK0"),
    4336                .power_up_uninitialized("FALSE"),
    4437                .read_during_write_mode_mixed_ports("OLD_DATA"),
     
    5346                .clock0(clk),
    5447                .wren_b(1'b0),
    55                 .address_a(addr_wire),
     48                .address_a(addr_reg),
    5649                .address_b(address),
    57                 .data_a(data_wire),
     50                .data_a(data_reg),
    5851                .data_b(),
    5952                .q_a(q_a_wire),
     
    7972                if (reset)
    8073        begin
    81                         flag_reg <= 1'b0;
    8274                        wren_reg <= 1'b1;
    8375                        addr_reg <= 12'd0;
     
    8779                else
    8880                begin
    89                         flag_reg <= flag_next;
    9081                        wren_reg <= wren_next;
    9182                        addr_reg <= addr_next;
     
    9788        always @*
    9889        begin
    99                 flag_next = flag_reg;
    10090                wren_next = wren_reg;
    10191                addr_next = addr_reg;
     
    10696                        begin
    10797                                // nothing to do
    108                                 flag_next = 1'b0;
    10998                                wren_next = 1'b0;
    11099                                addr_next = 12'd0;
     
    118107                                if (&addr_reg)
    119108                                begin
    120                                         flag_next = 1'b1;
    121109                                        wren_next = 1'b0;
    122110                                        state_next = 4'd2;
     
    130118                        2:
    131119                        begin
     120                                wren_next = 1'b0;
    132121                                if (data_ready)
    133122                                begin
    134                                         if (&q_a_wire)
    135                                         begin
    136                                                 flag_next = 1'b0;
    137                                                 state_next = 4'd0;
    138                                         end
    139                                         else
    140                                         begin
    141                                                 wren_next = 1'b1;
    142                                                 state_next = 4'd3;
    143                                         end
     123                                        addr_next = data;
     124                                        state_next = 4'd3;
    144125                                end
    145126                        end
     
    147128                        3:
    148129                        begin
    149                                 wren_next = 1'b0;
    150                                 state_next = 4'd2;
     130                                state_next = 4'd4;
     131                        end
     132
     133                        4:
     134                        begin
     135                                if (&q_a_wire)
     136                                begin
     137                                        state_next = 4'd0;
     138                                end
     139                                else
     140                                begin
     141                                        wren_next = 1'b1;
     142                                        data_next = q_a_wire + 32'd1;
     143                                        state_next = 4'd2;
     144                                end
    151145                        end
    152146
    153147                        default:
    154148                        begin
    155                                 flag_next = 1'b0;
    156149                                wren_next = 1'b0;
    157150                                addr_next = 12'd0;
  • trunk/MultiChannelUSB/i2c_fifo.v

    r71 r84  
    1515        reg                             int_rdreq, int_clken, int_sdo, int_scl, int_ack;
    1616        reg             [15:0]  int_data;
    17         reg             [8:0]   counter;
     17        reg             [9:0]   counter;
    1818        reg             [4:0]   state;
    1919
    2020        assign i2c_sda = int_sdo ? 1'bz : 1'b0;
    21         assign i2c_scl = int_scl | (int_clken ? counter[8] : 1'b0);     
     21        assign i2c_scl = int_scl | (int_clken ? counter[9] : 1'b0);     
    2222
    2323        assign start = int_data[8];
     
    3434                .overflow_checking("ON"),
    3535                .underflow_checking("ON"),
    36                 .use_eab("OFF")) fifo_tx (
     36                .use_eab("ON")) fifo_tx (
    3737                .rdreq((~int_rdempty) & (int_rdreq) & (&counter)),
    3838                .aclr(aclr),
     
    5050        always @ (posedge clk)
    5151        begin
    52                 counter <= counter + 9'd1;
     52                counter <= counter + 10'd1;
    5353                if (&counter)
    5454                begin
  • trunk/MultiChannelUSB/oscilloscope.v

    r72 r84  
    1111        // signal declaration
    1212        reg             [3:0]   state_reg, state_next;
    13         reg                             flag_reg, flag_next;
    1413        reg                             wren_reg, wren_next;
    1514        reg             [9:0]   addr_reg, addr_next;
     
    2120
    2221        wire    [15:0]  q_wire;
    23 
    24         wire    [15:0]  data_wire;
    25        
    26         assign  data_wire = (flag_reg) ? data : data_reg;
    2722
    2823        altsyncram #(
     
    3833                .operation_mode("DUAL_PORT"),
    3934                .outdata_aclr_b("NONE"),
    40                 .outdata_reg_b("UNREGISTERED"),
     35                .outdata_reg_b("CLOCK0"),
    4136                .power_up_uninitialized("FALSE"),
    4237                .read_during_write_mode_mixed_ports("OLD_DATA"),
     
    5045                .address_a(addr_reg),
    5146                .address_b(address),
    52                 .data_a(data_wire),
     47                .data_a(data_reg),
    5348                .q_b(q_wire),
    5449                .aclr0(1'b0),
     
    7671        begin
    7772                        state_reg <= 4'b1;
    78                         flag_reg <= 1'b0;
    7973                        wren_reg <= 1'b1;
    8074                        addr_reg <= 10'd0;
     
    8781                begin
    8882                        state_reg <= state_next;
    89                         flag_reg <= flag_next;
    9083                        wren_reg <= wren_next;
    9184                        addr_reg <= addr_next;
     
    10093        begin
    10194                state_next = state_reg;
    102                 flag_next = flag_reg;
    10395                wren_next = wren_reg;
    10496                addr_next = addr_reg;
     
    113105                                // nothing to do
    114106                                state_next = 4'b0;
    115                                 flag_next = 1'b0;
    116107                                wren_next = 1'b0;
    117108                                addr_next = 10'd0;
     
    125116                                if (&addr_reg)
    126117                                begin
    127                                         flag_next = 1'b1;
    128118                                        wren_next = 1'b0;
    129119                                        state_next = 4'd2;
     
    140130                                begin
    141131                                        wren_next = 1'b1;
     132                                        data_next = data;
    142133                                        state_next = 4'd3;
    143134                                end
     
    152143                                if (&counter_reg)
    153144                                begin
    154                                         flag_next = 1'b0;
    155145                                        state_next = 4'd0;
    156146                                end
     
    177167                        begin
    178168                                state_next = 4'b0;
    179                                 flag_next = 1'b0;
    180169                                wren_next = 1'b0;
    181170                                addr_next = 10'd0;
  • trunk/MultiChannelUSB/test.v

    r59 r84  
    22        (
    33                input   wire                    clk,
    4                 output  wire                    tst_clk,
    5                 output  wire    [11:0]  tst_data
     4                output  wire    [11:0]  data
    65        );
    76
    8         wire                    int_clk;
    97        reg     [11:0]  int_data;
    10         reg             [2:0]   state;
    11 
    12         test_pll test_pll_unit(
    13                 .inclk0(clk),
    14                 .c0(int_clk));
    15 
    16         always @(posedge int_clk)
     8        reg     [5:0]   counter;
     9        reg             [5:0]   state;
     10
     11        always @(posedge clk)
    1712        begin
    1813                case (state)
     14/*
    1915                        0:
    2016                        begin
     
    4642                                state <= 3'd0;
    4743                        end
     44*/
     45
     46                        6'd0:
     47                        begin
     48                                int_data <= 12'h030;
     49                                state <= 6'd1;
     50                        end
     51
     52                        6'd1:
     53                        begin
     54                                int_data <= 12'h034;
     55                                state <= 6'd2;
     56                        end
     57
     58                        6'd2:
     59                        begin
     60                                int_data <= 12'h081;
     61                                state <= 6'd3;
     62                        end
     63
     64                        6'd3:
     65                        begin
     66                                int_data <= 12'h0f5;
     67                                state <= 6'd4;
     68                        end
     69
     70                        6'd4:
     71                        begin
     72                                int_data <= 12'h10a;
     73                                state <= 6'd5;
     74                        end
     75
     76                        6'd5:
     77                        begin
     78                                int_data <= 12'h11a;
     79                                state <= 6'd6;
     80                        end
     81
     82                        6'd6:
     83                        begin
     84                                int_data <= 12'h124;
     85                                state <= 6'd7;
     86                        end
     87
     88                        6'd7:
     89                        begin
     90                                int_data <= 12'h124;
     91                                state <= 6'd8;
     92                        end
     93
     94                        6'd8:
     95                        begin
     96                                int_data <= 12'h12b;
     97                                state <= 6'd9;
     98                        end
     99
     100                        6'd9:
     101                        begin
     102                                int_data <= 12'h12a;
     103                                state <= 6'd10;
     104                        end
     105
     106                        6'd10:
     107                        begin
     108                                int_data <= 12'h12a;
     109                                state <= 6'd11;
     110                        end
     111
     112                        6'd11:
     113                        begin
     114                                int_data <= 12'h12b;
     115                                state <= 6'd12;
     116                        end
     117
     118                        6'd12:
     119                        begin
     120                                int_data <= 12'h12a;
     121                                state <= 6'd13;
     122                        end
     123
     124                        6'd13:
     125                        begin
     126                                int_data <= 12'h12e;
     127                                state <= 6'd14;
     128                        end
     129
     130                        6'd14:
     131                        begin
     132                                int_data <= 12'h12b;
     133                                state <= 6'd15;
     134                        end
     135
     136                        6'd15:
     137                        begin
     138                                int_data <= 12'h12b;
     139                                state <= 6'd16;
     140                        end
     141
     142                        6'd16:
     143                        begin
     144                                int_data <= 12'h12e;
     145                                state <= 6'd17;
     146                        end
     147
     148                        6'd17:
     149                        begin
     150                                int_data <= 12'h12b;
     151                                state <= 6'd18;
     152                        end
     153
     154                        6'd18:
     155                        begin
     156                                int_data <= 12'h12a;
     157                                state <= 6'd19;
     158                        end
     159
     160                        6'd19:
     161                        begin
     162                                int_data <= 12'h12e;
     163                                state <= 6'd20;
     164                        end
     165
     166                        6'd20:
     167                        begin
     168                                int_data <= 12'h12b;
     169                                state <= 6'd21;
     170                        end
     171
     172                        6'd21:
     173                        begin
     174                                int_data <= 12'h12e;
     175                                state <= 6'd22;
     176                        end
     177
     178                        6'd22:
     179                        begin
     180                                int_data <= 12'h12f;
     181                                state <= 6'd23;
     182                        end
     183
     184                        6'd23:
     185                        begin
     186                                int_data <= 12'h12f;
     187                                state <= 6'd24;
     188                        end
     189
     190                        6'd24:
     191                        begin
     192                                int_data <= 12'h12b;
     193                                state <= 6'd25;
     194                        end
     195
     196                        6'd25:
     197                        begin
     198                                int_data <= 12'h12b;
     199                                state <= 6'd26;
     200                        end
     201
     202                        6'd26:
     203                        begin
     204                                int_data <= 12'h12b;
     205                                state <= 6'd27;
     206                        end
     207
     208                        6'd27:
     209                        begin
     210                                int_data <= 12'h12e;
     211                                state <= 6'd28;
     212                        end
     213
     214                        6'd28:
     215                        begin
     216                                int_data <= 12'h12e;
     217                                state <= 6'd29;
     218                        end
     219
     220                        6'd29:
     221                        begin
     222                                int_data <= 12'h12e;
     223                                state <= 6'd30;
     224                        end
     225
     226                        6'd30:
     227                        begin
     228                                int_data <= 12'h12e;
     229                                state <= 6'd31;
     230                        end
     231
     232                        6'd31:
     233                        begin
     234                                int_data <= 12'h12b;
     235                                state <= 6'd32;
     236                        end
     237
     238                        6'd32:
     239                        begin
     240                                int_data <= 12'h12b;
     241                                state <= 6'd33;
     242                        end
     243
     244                        6'd33:
     245                        begin
     246                                int_data <= 12'h12b;
     247                                state <= 6'd34;
     248                        end
     249
     250                        6'd34:
     251                        begin
     252                                int_data <= 12'h12e;
     253                                state <= 6'd35;
     254                        end
     255
     256                        6'd35:
     257                        begin
     258                                int_data <= 12'h12e;
     259                                state <= 6'd36;
     260                        end
     261
     262                        6'd36:
     263                        begin
     264                                int_data <= 12'h12e;
     265                                state <= 6'd37;
     266                        end
     267
     268                        6'd37:
     269                        begin
     270                                int_data <= 12'h12e;
     271                                state <= 6'd38;
     272                        end
     273
     274                        6'd38:
     275                        begin
     276                                int_data <= 12'h12f;
     277                                state <= 6'd39;
     278                        end
     279
     280                        6'd39:
     281                        begin
     282                                int_data <= 12'h12b;
     283                                state <= 6'd40;
     284                        end
     285
     286                        6'd40:
     287                        begin
     288                                int_data <= 12'h12e;
     289                                state <= 6'd41;
     290                        end
     291
     292                        6'd41:
     293                        begin
     294                                int_data <= 12'h12f;
     295                                state <= 6'd42;
     296                        end
     297
     298                        6'd42:
     299                        begin
     300                                int_data <= 12'h0fb;
     301                                state <= 6'd43;
     302                        end
     303
     304                        6'd43:
     305                        begin
     306                                int_data <= 12'h07e;
     307                                state <= 6'd44;
     308                        end
     309
     310                        6'd44:
     311                        begin
     312                                int_data <= 12'h070;
     313                                state <= 6'd45;
     314                        end
     315
     316                        6'd45:
     317                        begin
     318                                int_data <= 12'h05a;
     319                                state <= 6'd46;
     320                        end
     321
     322                        6'd46:
     323                        begin
     324                                int_data <= 12'h045;
     325                                state <= 6'd47;
     326                        end
     327
     328                        6'd47:
     329                        begin
     330                                int_data <= 12'h03f;
     331                                state <= 6'd48;
     332                        end
     333
     334                        6'd48:
     335                        begin
     336                                int_data <= 12'h03b;
     337                                state <= 6'd49;
     338                        end
     339
     340                        6'd49:
     341                        begin
     342                                int_data <= 12'h034;
     343                                state <= 6'd50;
     344                        end
     345
     346                        6'd50:
     347                        begin
     348                                int_data <= 12'h035;
     349                                state <= 6'd51;
     350                        end
     351
     352                        6'd51:
     353                        begin
     354                                int_data <= 12'h034;
     355                                state <= 6'd52;
     356                        end
     357
     358                        6'd52:
     359                        begin
     360                                int_data <= 12'h034;
     361                                state <= 6'd53;
     362                        end
     363
     364                        6'd53:
     365                        begin
     366                                int_data <= 12'h030;
     367                                state <= 6'd54;
     368                        end
     369
     370                        6'd54:
     371                        begin
     372                                int_data <= 12'h030;
     373                                counter <= counter + 6'd1;
     374                                if (&counter)
     375                                begin
     376                                        state <= 6'd0;
     377                                end
     378                        end
    48379
    49380                        default:
    50381                        begin
    51                                 state <= 3'd0;
     382                                state <= 6'd0;
    52383                        end
    53384                endcase
    54385        end
    55386
    56         assign  tst_clk = int_clk;
    57         assign  tst_data = int_data;
     387        assign  data = int_data;
    58388
    59389endmodule
  • trunk/MultiChannelUSB/usb_fifo.v

    r58 r84  
    3535                .overflow_checking("ON"),
    3636                .underflow_checking("ON"),
    37                 .use_eab("OFF"),
     37                .use_eab("ON"),
    3838                .write_aclr_synch("OFF")) fifo_tx (
    3939                .aclr(aclr),
     
    6262                .overflow_checking("ON"),
    6363                .underflow_checking("ON"),
    64                 .use_eab("OFF"),
     64                .use_eab("ON"),
    6565                .write_aclr_synch("OFF")) fifo_rx (
    6666                .aclr(aclr),
  • trunk/MultiChannelUSB/uwt_bior31.v

    r72 r84  
    1616        localparam      index2          =       2 << (L - 1);
    1717        localparam      index3          =       3 << (L - 1);
    18         localparam      peak_index      =       ((3 << (L - 1)) + 1) >> 1;
     18        localparam      peak_index      =       ((index3 + 1) >> 1) + 1;
    1919        localparam      peak_shift      =       ((L - 1) << 1) + (L - 1);
    2020        localparam      zero            =       32'h80000000;
     
    2626        reg             [31:0]  a_reg, a_next;
    2727        reg             [31:0]  peak_reg, peak_next;
     28
     29        reg             [31:0]  tmp1_reg, tmp1_next;
     30        reg             [31:0]  tmp2_reg, tmp2_next;
     31
     32        reg                             less_reg, less_next;
     33        reg                             more_reg, more_next;
    2834
    2935        reg             [1:0]   flag_reg;
     
    3945                        peak_reg <= 0;
    4046                        flag_reg <= 0;
     47                        tmp1_reg <= 0;
     48                        tmp2_reg <= 0;
     49                        less_reg <= 1'b0;
     50                        more_reg <= 1'b0;
    4151
    4252                        for(i = 0; i <= index3; i = i + 1)
     
    5161                        peak_reg <= peak_next;
    5262                       
    53                         flag_reg[0] <= (d_reg > zero) & (d_next <= zero);
    54                         flag_reg[1] <= (d_reg < zero) & (d_next >= zero);
    55        
     63                        tmp1_reg <= tmp1_next;
     64                        tmp2_reg <= tmp2_next;
     65                        less_reg <= less_next;
     66                        more_reg <= more_next;
     67
     68                        flag_reg[0] <= (more_reg) & (~more_next);
     69                        flag_reg[1] <= (less_reg) & (~less_next);
     70                       
    5671                        // Tapped delay line: shift one
    5772                        for(i = 0; i < index3; i = i + 1)
     
    7085                // The coefficients are [1, 3, -3, -1] and [1, 3, 3, 1]
    7186
     87                tmp1_next = tap[index3] + {tap[index2][30:0], 1'b0} + tap[index2];
     88                tmp2_next = {tap[index1][30:0], 1'b0} + tap[index1] + tap[0];
     89               
     90                d_next = zero - tmp1_reg + tmp2_reg;
     91                a_next = tmp1_reg + tmp2_reg;
     92               
     93                more_next = (d_reg > zero);
     94                less_next = (d_reg < zero);
     95
     96/*             
    7297                d_next = zero - (tap[index3])
    7398                           - (tap[index2] << 1) - tap[index2]
     
    76101               
    77102                a_next = (tap[index3])
    78                            + (tap[index2] << 1) + tap[index2]
     103                           + {tap[index2] << 1} + tap[index2]
    79104                           + (tap[index1] << 1) + tap[index1]
    80105                           + (tap[0]);
    81 
     106*/
    82107                peak_next = (tap[peak_index] >> peak_shift);
    83108        end
Note: See TracChangeset for help on using the changeset viewer.