Changeset 91 for trunk


Ignore:
Timestamp:
Feb 28, 2010, 11:35:16 PM (15 years ago)
Author:
demin
Message:

fix communication with external SRAM

Location:
trunk/MultiChannelUSB
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/MultiChannelUSB/configuration.v

    r90 r91  
    1515        wire    [15:0]  int_ssel_wire;
    1616        wire    [15:0]  int_miso_wire;
    17         reg             [15:0]  int_miso_reg [3:0];
     17        reg             [15:0]  int_miso_reg;
    1818
    1919        wire    [15:0]  int_q_wire [15:0];
     
    6969                if (reset)
    7070                begin
    71                         for(i = 0; i <= 3; i = i + 1)
    72                         begin
    73                                 int_miso_reg[i] <= 16'd0;
    74                         end
     71                        int_miso_reg <= 16'd0;
    7572                end
    7673                else
    7774                begin
    78                         for(i = 0; i < 3; i = i + 1)
    79                         begin
    80                                 int_miso_reg[i+1] <= int_miso_reg[i];
    81                         end
    82                         int_miso_reg[0] <= int_miso_wire;
     75                        int_miso_reg <= int_miso_wire;
    8376                end
    8477        end
    8578
    8679        // output logic
    87         assign  bus_miso = int_miso_reg[3];
     80        assign  bus_miso = int_miso_reg;
    8881        assign  bus_busy = 1'b0;
    8982        assign  cfg_bits = int_bits_wire;
  • trunk/MultiChannelUSB/control.v

    r90 r91  
    183183                                        buffer[1] <= 8'd0;
    184184                                        int_bus_cntr <= 32'd0;
    185                                         state <= 5'd7;
    186185                                end
    187186                                else
    188187                                begin
    189                                         buffer[0] <= 8'd2;
     188                                        buffer[0] <= 8'd0;
    190189                                        buffer[1] <= 8'd0;
    191                                         state <= 5'd6;
    192                                 end
     190                                end
     191                                state <= 5'd7;
    193192                        end
    194193
     
    197196                                buffer[0] <= bus_miso[7:0];
    198197                                buffer[1] <= bus_miso[15:8];
     198                                int_bus_addr <= int_bus_addr + 32'd1;
     199                                int_bus_cntr <= int_bus_cntr - 32'd1;
    199200                                state <= 5'd6;
    200201                        end
     
    202203                        6:
    203204                        begin
    204                                 int_bus_addr <= int_bus_addr + 32'd1;
    205205                                state <= 5'd7;
    206206                        end
     
    208208                        7:
    209209                        begin
     210                                int_data <= buffer[0];
     211                                int_wrreq <= 1'b1;
     212                                state <= 5'd8;
     213                        end
     214
     215                        8:
     216                        begin
    210217                                if (~tx_full)
    211218                                begin
    212                                         int_data <= buffer[0];
    213                                         int_wrreq <= 1'b1;
    214                                         state <= 5'd8;
    215                                 end
    216                         end
    217 
    218                         8:
    219                         begin
    220                                 int_data <= buffer[1];
    221                                 state <= 5'd9;
     219                                        int_data <= buffer[1];
     220                                        state <= 5'd9;
     221                                end
    222222                        end
    223223
     
    227227                                begin
    228228                                        int_wrreq <= 1'b0;
    229                                         if (|int_bus_cntr)
    230                                         begin
    231                                                 state <= 5'd5;
    232                                                 int_bus_cntr <= int_bus_cntr - 32'd1;
    233                                         end
    234                                         else
    235                                         begin
    236                                                 state <= 5'd0;
    237                                         end
     229                                        state <= 5'd10;
     230                                end
     231                        end
     232
     233                        10:
     234                        begin
     235                                if (|int_bus_cntr)
     236                                begin
     237                                        state <= 5'd5;
     238                                end
     239                                else
     240                                begin
     241                                        state <= 5'd0;
    238242                                end
    239243                        end
  • trunk/MultiChannelUSB/oscilloscope.v

    r90 r91  
    2424        reg             [47:0]  osc_data_reg, osc_data_next;
    2525
    26         reg             [19:0]  cfg_cntr_max_reg, cfg_cntr_max_next;
    27         reg             [19:0]  cfg_cntr_mid_reg, cfg_cntr_mid_next;
    28 
    2926        reg             [2:0]   int_case_reg, int_case_next;
    3027
    3128        reg                             int_trig_reg, int_trig_next;
    3229        reg             [19:0]  int_trig_addr_reg, int_trig_addr_next;
    33         reg             [19:0]  int_cntr_reg, int_cntr_next;
     30
     31        reg             [19:0]  int_cntr_reg [1:0];
     32        reg             [19:0]  int_cntr_next [1:0];
    3433
    3534        reg             [15:0]  bus_mosi_reg [2:0];
     
    7170                        bus_busy_reg <= 1'b0;
    7271                        int_case_reg <= 5'd0;
    73                         int_cntr_reg <= 20'd0;
     72                        int_cntr_reg[0] <= 20'd0;
     73                        int_cntr_reg[1] <= 20'd0;
    7474                        int_trig_reg <= 1'b0;
    7575                        int_trig_addr_reg <= 20'd0;
    76                         cfg_cntr_max_reg <= 20'd0;
    77                         cfg_cntr_mid_reg <= 20'd0;
    7876                       
    7977                        for(i = 0; i <= 2; i = i + 1)
     
    9189                        bus_busy_reg <= bus_busy_next;
    9290                        int_case_reg <= int_case_next;
    93                         int_cntr_reg <= int_cntr_next;
     91                        int_cntr_reg[0] <= int_cntr_next[0];
     92                        int_cntr_reg[1] <= int_cntr_next[1];
    9493                        int_trig_reg <= int_trig_next;
    9594                        int_trig_addr_reg <= int_trig_addr_next;
    96                         cfg_cntr_max_reg <= cfg_cntr_max_next;
    97                         cfg_cntr_mid_reg <= cfg_cntr_mid_next;
    9895
    9996                        for(i = 0; i <= 2; i = i + 1)
     
    104101                end
    105102        end
    106                
    107103
    108104        always @*
     
    115111                bus_busy_next = bus_busy_reg;
    116112                int_case_next = int_case_reg;
    117                 int_cntr_next = int_cntr_reg;
     113                int_cntr_next[0] = int_cntr_reg[0];
     114                int_cntr_next[1] = int_cntr_reg[1];
    118115                int_trig_next = int_trig_reg;
    119116                int_trig_addr_next = int_trig_addr_reg;
    120                 cfg_cntr_max_next = cfg_cntr_max_reg;
    121                 cfg_cntr_mid_next = cfg_cntr_mid_reg;
    122117
    123118                for(i = 0; i < 2; i = i + 1)
     
    135130                                ram_addr_next = 20'd0;
    136131                                bus_busy_next = 1'b0;
    137                                 int_cntr_next = 20'd0;
     132                                int_cntr_next[0] = 20'd0;
     133                                int_cntr_next[1] = 20'd0;
    138134                                int_trig_next = 1'b0;
    139135
     
    162158                                        int_case_next = 3'd1;
    163159                                        int_trig_addr_next = 20'd0;
    164                                         cfg_cntr_max_next = {cfg_data[7:0], 10'd0};
    165                                         cfg_cntr_mid_next = {cfg_data[15:8], 10'd0};
     160                                        int_cntr_next[0] = {cfg_data[7:0], 10'd0};
     161                                        int_cntr_next[1] = {cfg_data[15:8], 10'd0};
    166162                                end
    167163
     
    178174                                        int_case_next = 3'd2;
    179175
    180                                         if ((~int_trig_reg) & (trg_flag) &
    181                                                 (int_cntr_reg == cfg_cntr_mid_reg))
     176                                        if ((~int_trig_reg) & (trg_flag) & (int_cntr_reg[1] == 0))
    182177                                        begin
    183178                                                int_trig_next = 1'b1;
     
    185180                                        end
    186181                                       
    187                                         if (int_trig_reg | (int_cntr_reg < cfg_cntr_mid_reg))
    188                                         begin
    189                                                 int_cntr_next = int_cntr_reg + 20'd1;
     182                                        if ((int_trig_reg) & (|int_cntr_reg[0]))
     183                                        begin
     184                                                int_cntr_next[0] = int_cntr_reg[0] - 20'd1;
     185                                        end
     186
     187                                        if ((|int_cntr_reg[1]))
     188                                        begin
     189                                                int_cntr_next[1] = int_cntr_reg[1] - 20'd1;
    190190                                        end
    191191                                end
     
    213213                                ram_data_next = {osc_data_reg[47:40], 1'b0, osc_data_reg[39:32], 1'b0};
    214214                                int_case_next = 3'd1;
    215                                 if (int_cntr_reg >= cfg_cntr_max_reg)
     215                                if (int_cntr_reg[0] == 0)
    216216                                begin
    217217                                        ram_wren_next[0] = 1'b0;
Note: See TracChangeset for help on using the changeset viewer.