Ignore:
Timestamp:
Sep 7, 2009, 1:01:04 AM (15 years ago)
Author:
demin
Message:

first working version

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/MultiChannelUSB/Paella.v

    r34 r35  
    7272        reg                             led_reg;       
    7373//      assign  LED                     =       counter[24];
    74 //      assign  LED                     =       ~usb_fifo_rx_empty;
    7574        assign  LED                     =       led_reg;
    76 //      assign  LED                     =       usb_fifo_led;
    7775
    7876        wire                    usb_wrreq, usb_rdreq, usb_rden, usb_pktend;
    79         wire                    usb_fifo_aclr, usb_fifo_led;
     77        wire                    usb_fifo_aclr;
    8078        reg                             usb_fifo_tx_wrreq;
    8179        reg                             usb_fifo_rx_rdreq;
     
    104102
    105103                .tx_full(usb_fifo_tx_full),
    106 //              .tx_wrreq(usb_fifo_tx_wrreq),
    107 //              .tx_wrreq((~usb_fifo_tx_full) & (state1 == 3'd5)),
    108104                .tx_wrreq((~usb_fifo_tx_full) & usb_fifo_tx_wrreq),
    109105                .tx_data(usb_fifo_tx_data),
    110 //              .tx_data(osc_counter),
    111106
    112107                .rx_empty(usb_fifo_rx_empty),
    113108                .rx_rdreq(usb_fifo_rx_rdreq),
    114                 .rx_q(usb_fifo_rx_data),
    115                
    116                 .led(usb_fifo_led)
     109                .rx_q(usb_fifo_rx_data)
    117110        );
    118111       
    119         reg             [10:0]  osc_counter;   
     112        reg             [10:0]  tst_counter;   
     113
     114        reg             [9:0]   osc_counter;   
    120115        reg                     osc_reset;
    121116        reg                     osc_byte_num;
     
    129124        wire    [31:0]  hst_q;
    130125
    131         reg             [2:0]   state0, state1, state2;
     126        reg             [3:0]   state0, state1, state2;
    132127        reg                             adc_fifo_rdreq;
    133128        wire                    adc_fifo_rdempty;
     
    194189                                        adc_fifo_rdreq <= 1'b1;
    195190                                        adc_data_ready <= 1'b1;
    196                                         state0 <= 3'd2;
     191                                        state0 <= 4'd2;
    197192                                end
    198193                        end
     
    202197                                adc_fifo_rdreq <= 1'b0;
    203198                                adc_data_ready <= 1'b0;
    204                                 state0 <= 3'd1;
     199                                state0 <= 4'd1;
    205200                        end
    206201
    207202                        default:
    208203                        begin
    209                                 state0 <= 3'd1;
     204                                state0 <= 4'd1;
    210205                        end
    211206                endcase
    212207        end
    213 /*
     208
    214209        always @(posedge CLK_50MHz)
    215210        begin
    216                 case (state1)
     211                case(state1)
    217212                        1:
    218213                        begin
     
    221216                                hst_reset <= 1'b0;
    222217                                osc_reset <= 1'b0;
    223                                 state1 <= 3'd2;
     218                                state1 <= 4'd2;
    224219                        end
    225220
     
    233228                                                begin
    234229                                                        hst_reset <= 1'b1;
    235                                                         state1 <= 3'd1;
     230                                                        state1 <= 4'd1;
    236231                                                end
    237232                                                8'h31:
    238233                                                begin
    239                                                         led_reg <= 1'b1;
    240234                                                        hst_addr <= 12'd0;
    241235                                                        hst_byte_num <= 2'd0;   
    242                                                         state1 <= 3'd3;
     236                                                        state1 <= 4'd3;
    243237                                                end
    244238                                                8'h32:
    245239                                                begin
     240                                                        led_reg <= 1'b1;
    246241                                                        osc_reset <= 1'b1;
    247                                                         state1 <= 3'd1;
     242                                                        state1 <= 4'd1;
    248243                                                end
    249244                                                8'h33:
     
    253248                                                        osc_counter <= 10'd0;
    254249                                                        osc_byte_num <= 1'd0;   
    255                                                         state1 <= 3'd4;
    256                                                 end
    257 
     250                                                        state1 <= 4'd6;
     251                                                end
     252                                                8'h34:
     253                                                begin
     254                                                        led_reg <= 1'b1;
     255                                                        state1 <= 4'd1;
     256                                                end
     257                                                8'h35:
     258                                                begin
     259                                                        led_reg <= 1'b0;
     260                                                        tst_counter <= 11'd0;   
     261                                                        state1 <= 4'd9;
     262                                                end
    258263                                        endcase
    259264                                end
    260265                        end
    261266
     267                        // hst transfer
    262268                        3:
    263269                        begin
    264                                 // hst transfer
    265                                 usb_fifo_rx_rdreq <= 1'b0;
    266                                 usb_fifo_tx_wrreq <= ~usb_fifo_tx_full;
     270                                usb_fifo_tx_data <= hst_q[7:0];
     271                                usb_fifo_tx_wrreq <= 1'b1;
     272                                hst_byte_num <= 2'd1;
     273                                state1 <= 4'd4;
     274                        end
     275                        4:
     276                        begin
    267277                                if (~usb_fifo_tx_full)
    268278                                begin
     
    273283                                                2'd3: usb_fifo_tx_data <= hst_q[31:24];
    274284                                        endcase
    275                                        
    276285                                        if ((&hst_byte_num) & (&hst_addr))
    277286                                        begin
    278                                                 state1 <= 3'd1;
    279                                         end
    280                                         else if (&hst_byte_num)
    281                                         begin
    282                                                 hst_addr <= hst_addr + 12'd1;
    283                                         end
    284 
    285                                         hst_byte_num <= hst_byte_num + 2'd1;                           
    286                                 end
    287                         end
    288 
    289                         4:
    290                         begin
    291                                 usb_fifo_rx_rdreq <= 1'b0;
    292                                 usb_fifo_tx_wrreq <= 1'b0;
    293                                 usb_fifo_tx_data <= osc_counter;
    294                             state1 <= 3'd5;
    295                         end
    296 
     287                                                state1 <= 4'd5;
     288                                        end
     289                                        else
     290                                        begin
     291                                                if (&hst_byte_num)
     292                                                begin
     293                                                        hst_addr <= hst_addr + 12'd1;
     294                                                end
     295                                                hst_byte_num <= hst_byte_num + 2'd1;
     296                                        end
     297                                end
     298                        end
    297299                        5:
    298300                        begin
    299301                                if (~usb_fifo_tx_full)
    300302                                begin
    301                                         usb_fifo_tx_wrreq <= 1'b1;
    302                                         state1 <= 3'd6;
    303                                 end
    304                         end
    305 
     303                                        usb_fifo_tx_wrreq <= 1'b0;
     304                                        state1 <= 4'd1;
     305                                end
     306                        end
     307
     308                        // osc transfer
    306309                        6:
    307310                        begin
    308                                 usb_fifo_tx_wrreq <= 1'b0;
    309                                 if (&osc_counter)
    310                                 begin
    311                                         state1 <= 3'd1;
    312                                 end
    313                                 else
    314                                 begin
    315                                         osc_counter <= osc_counter + 11'd1;
    316                                         state1 <= 3'd4;
    317                                 end
    318                         end
    319 
    320                         4:
    321                         begin
    322                                 // osc transfer
    323                                 usb_fifo_rx_rdreq <= 1'b0;
    324                                 usb_fifo_tx_wrreq <= ~usb_fifo_tx_full;
    325                                 if(~usb_fifo_tx_full)
    326                                 begin
    327                                         usb_fifo_tx_data <= osc_counter;
    328                                         osc_counter <= osc_counter + 11'd1;
    329                                         if (&osc_counter) state1 <= 3'd1;
    330 
     311                                usb_fifo_tx_data <= osc_q[7:0];
     312                                usb_fifo_tx_wrreq <= 1'b1;
     313                                osc_byte_num <= 1'd1;
     314                                state1 <= 4'd7;
     315                        end
     316                        7:
     317                        begin
     318                                if (~usb_fifo_tx_full)
     319                                begin
    331320                                        case (osc_byte_num)
    332321                                                1'd0: usb_fifo_tx_data <= osc_q[7:0];
    333322                                                1'd1: usb_fifo_tx_data <= osc_q[15:8];
    334323                                        endcase
    335 
    336                                         if ((osc_byte_num) & (&osc_counter))
    337                                         begin
    338                                                 state1 <= 3'd1;
    339                                         end
    340                                         else if (osc_byte_num)
    341                                         begin
    342                                                 osc_addr <= osc_addr + 10'd1;
    343                                                 osc_counter <= osc_counter + 10'd1;
    344                                         end
    345 
    346                                         osc_byte_num <= ~osc_byte_num;                         
    347 
    348                                 end
    349                         end
    350 
     324                                        if ((&osc_byte_num) & (&osc_counter))
     325                                        begin
     326                                                state1 <= 4'd8;
     327                                        end
     328                                        else
     329                                        begin
     330                                                if (&osc_byte_num)
     331                                                begin
     332                                                        osc_addr <= osc_addr + 10'd1;
     333                                                        osc_counter <= osc_counter + 10'd1;
     334                                                end
     335                                                osc_byte_num <= osc_byte_num + 1'd1;
     336                                        end
     337                                end
     338                        end
     339                        8:
     340                        begin
     341                                if (~usb_fifo_tx_full)
     342                                begin
     343                                        usb_fifo_tx_wrreq <= 1'b0;
     344                                        state1 <= 4'd1;
     345                                end
     346                        end
     347                        // tst transfer
     348                        9:
     349                        begin
     350                                usb_fifo_tx_data <= tst_counter;
     351                                usb_fifo_tx_wrreq <= 1'b1;
     352                                tst_counter <= tst_counter + 11'd1;
     353                                state1 <= 4'd10;
     354                        end
     355                        10:
     356                        begin
     357                                if (~usb_fifo_tx_full)
     358                                begin
     359                                        usb_fifo_tx_data <= tst_counter;
     360                                        if (tst_counter == 11'd0) //(&osc_counter)
     361                                        begin
     362                                                state1 <= 4'd11;
     363                                        end
     364                                        else
     365                                        begin
     366                                                tst_counter <= tst_counter + 11'd1;
     367                                        end
     368                                end
     369                        end
     370                        11:
     371                        begin
     372                                if (~usb_fifo_tx_full)
     373                                begin
     374                                        usb_fifo_tx_wrreq <= 1'b0;
     375                                        state1 <= 4'd1;
     376                                end
     377                        end
     378                                               
    351379                        default:
    352380                        begin
    353                                 // default state is the first one
    354                                 state1 <= 3'd1;
    355                         end
    356                 endcase
    357         end
    358 
    359 */
    360         always @(posedge CLK_50MHz)
    361         begin
    362                 case(state1)
    363                         1:
    364                         begin
    365                                 usb_fifo_rx_rdreq <= 1'b0;
    366                                 usb_fifo_tx_wrreq <= 1'b0;
    367                                 hst_reset <= 1'b0;
    368                                 osc_reset <= 1'b0;
    369                                 state1 <= 3'd2;
    370                         end
    371 
    372                         2:
    373                         begin
    374                                 usb_fifo_rx_rdreq <= ~usb_fifo_rx_empty;
    375                                 if (~usb_fifo_rx_empty)
    376                                 begin
    377                                         case (usb_fifo_rx_data)
    378                                                 8'h30:
    379                                                 begin
    380                                                         hst_reset <= 1'b1;
    381                                                         state1 <= 3'd1;
    382                                                 end
    383                                                 8'h31:
    384                                                 begin
    385                                                         hst_addr <= 12'd0;
    386                                                         hst_byte_num <= 2'd0;   
    387                                                         state1 <= 3'd3;
    388                                                 end
    389                                                 8'h32:
    390                                                 begin
    391                                                         led_reg <= 1'b1;
    392                                                         osc_reset <= 1'b1;
    393                                                         state1 <= 3'd1;
    394                                                 end
    395                                                 8'h33:
    396                                                 begin
    397                                                         led_reg <= 1'b0;
    398                                                         osc_addr <= osc_start_addr;
    399                                                         osc_counter <= 11'd0;
    400                                                         osc_byte_num <= 1'd0;   
    401                                                         state1 <= 3'd4;
    402                                                 end
    403 
    404                                         endcase
    405                                 end
    406                         end
    407                         4:
    408                         begin
    409                                 usb_fifo_tx_data <= osc_counter;
    410                                 usb_fifo_tx_wrreq <= 1'b1;
    411                                 osc_counter <= osc_counter + 11'd1;
    412                                 state1 <= 3'd5;
    413                         end
    414                         5:
    415                         begin
    416                                 if (~usb_fifo_tx_full)
    417                                 begin
    418                                         usb_fifo_tx_data <= osc_counter;
    419                                         if (osc_counter == 11'd0) //(&osc_counter)
    420                                         begin
    421                                                 state1 <= 3'd6;
    422                                         end
    423                                         else
    424                                         begin
    425                                                 osc_counter <= osc_counter + 11'd1;
    426                                         end
    427                                 end
    428                         end
    429                         6:
    430                         begin
    431                                 if (~usb_fifo_tx_full)
    432                                 begin
    433                                         usb_fifo_tx_wrreq <= 1'b0;
    434                                         state1 <= 3'd1;
    435                                 end
    436                         end
    437 
    438                                                                                
    439                         default: state1 <= 3'd1;
     381                                state1 <= 4'd1;
     382                        end
    440383                endcase
    441384        end
     
    447390                        begin
    448391                                adc_data <= 12'd0;
    449                                 state2 <= 3'd2;
     392                                state2 <= 4'd2;
    450393                        end
    451394                       
     
    453396                        begin
    454397                                adc_data <= 12'd1024;
    455                                 state2 <= 3'd3;
     398                                state2 <= 4'd3;
    456399                        end
    457400
     
    459402                        begin
    460403                                adc_data <= 12'd2048;
    461                                 state2 <= 3'd4;
     404                                state2 <= 4'd4;
    462405                        end
    463406
     
    465408                        begin
    466409                                adc_data <= 12'd3072;
    467                                 state2 <= 3'd5;
     410                                state2 <= 4'd5;
    468411                        end
    469412
     
    471414                        begin
    472415                                adc_data <= 12'd4095;
    473                                 state2 <= 3'd1;
     416                                state2 <= 4'd1;
    474417                        end
    475418
    476419                        default:
    477420                        begin
    478                                 state2 <= 3'd1;
     421                                state2 <= 4'd1;
    479422                        end
    480423                endcase
Note: See TracChangeset for help on using the changeset viewer.