Ignore:
Timestamp:
Sep 3, 2009, 2:34:23 PM (15 years ago)
Author:
demin
Message:

put all components in place

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/MultiChannelUSB/Paella.v

    r27 r30  
    2323                input   wire                    USB_FLAGB, // FULL flag for EP8
    2424                input   wire                    USB_FLAGC,
    25                 inout   wire    [7:0]   USB_PA,
     25                inout   wire                    USB_PA0,
     26                inout   wire                    USB_PA1,
     27                output  wire                    USB_PA2,
     28                inout   wire                    USB_PA3,
     29                output  wire                    USB_PA4,
     30                output  wire                    USB_PA5,
     31                output  wire                    USB_PA6,
     32                inout   wire                    USB_PA7,
    2633                inout   wire    [7:0]   USB_PB,
    2734
     
    4754        assign  CON_B           =       16'bz;
    4855        assign  CON_C           =       13'bz;
    49         assign  USB_PA          =       {1'bz, ~usb_pktend, usb_addr, 1'bz, ~usb_rden, 2'bz};
     56        assign  USB_PA0         =       1'bz;
     57        assign  USB_PA1         =       1'bz;
     58        assign  USB_PA3         =       1'bz;
     59        assign  USB_PA7         =       1'bz;
    5060        assign  RAM_DQAP        =       1'bz;
    5161        assign  RAM_DQA         =       8'bz;
     
    5363        assign  RAM_DQB         =       8'bz;
    5464
     65
     66        assign  USB_PA2         =       ~usb_rden;
     67        assign  USB_PA4         =       usb_addr[0];
     68        assign  USB_PA5         =       usb_addr[1];
     69        assign  USB_PA6         =       ~usb_pktend;
     70
    5571        reg             [31:0]  counter;       
    56         assign  LED                     =       counter[24];
    57 //      assign  LED                     =       usb_fifo_led;
     72//      assign  LED                     =       counter[24];
     73        assign  LED                     =       usb_fifo_rx_empty;
    5874
    5975        wire                    usb_wrreq, usb_rdreq, usb_rden, usb_pktend;
    6076        wire                    usb_fifo_aclr, usb_fifo_led;
    61         wire                    usb_fifo_tx_wrreq, usb_fifo_rx_rdreq;
     77        reg                             usb_fifo_tx_wrreq;
     78        reg                             usb_fifo_rx_rdreq;
    6279        wire                    usb_fifo_tx_full, usb_fifo_rx_empty;
    63         wire    [7:0]   usb_fifo_tx_data, usb_fifo_rx_data;
     80        reg             [7:0]   usb_fifo_tx_data;
     81        wire    [7:0]   usb_fifo_rx_data;
    6482        wire    [1:0]   usb_addr;
    6583
     
    91109        reg             [9:0]   osc_counter;   
    92110        reg                     osc_reset;
    93         reg                     osc_bit_num;
     111        reg                     osc_byte_num;
    94112        wire    [9:0]   osc_start_addr;
    95113        reg     [9:0]   osc_addr;
     
    97115
    98116        reg                     hst_reset;
    99         reg     [1:0]   hst_bit_num;
     117        reg     [1:0]   hst_byte_num;
    100118        reg     [11:0]  hst_addr;
    101119        wire    [31:0]  hst_q;
    102120
    103         reg             [3:0]   state0, state1, state2;
     121        reg             [2:0]   state0, state1, state2;
    104122        reg                             adc_fifo_rdreq;
    105123        wire                    adc_fifo_rdempty;
     
    149167        );
    150168
    151 
     169/*
    152170        always @ (posedge adc_clk)
    153171        begin
    154172                counter <= counter + 32'd1;
    155173        end
     174*/
    156175
    157176        always @ (posedge CLK_50MHz)
     
    162181                                if (~adc_fifo_rdempty)
    163182                                begin
    164                                         adc_counter <= adc_counter + 32'd1;
     183//                                      adc_counter <= adc_counter + 32'd1;
    165184                                        adc_fifo_rdreq <= 1'b1;
    166185                                        adc_data_ready <= 1'b1;
    167                                         state0 <= 4'd2;
     186                                        state0 <= 3'd2;
    168187                                end
    169188                        end
     
    173192                                adc_fifo_rdreq <= 1'b0;
    174193                                adc_data_ready <= 1'b0;
    175                                 state0 <= 4'd1;
     194                                state0 <= 3'd1;
    176195                        end
    177196
    178197                        default:
    179198                        begin
    180                                 state0 <= 4'd1;
     199                                state0 <= 3'd1;
    181200                        end
    182201                endcase
    183202        end
    184203
     204        always @(posedge CLK_50MHz)
     205        begin
     206                case (state1)
     207                        1:
     208                        begin
     209                                usb_fifo_rx_rdreq <= 1'b0;
     210                                usb_fifo_tx_wrreq <= 1'b0;
     211                                hst_reset <= 1'b0;
     212                                osc_reset <= 1'b0;
     213                                state1 <= 3'd2;
     214                        end
     215
     216                        2:
     217                        begin
     218                                if (~usb_fifo_rx_empty)
     219                                begin
     220                                        usb_fifo_rx_rdreq <= 1'b1;
     221                                        case (usb_fifo_rx_data)
     222                                                8'h30:
     223                                                begin
     224                                                        hst_reset <= 1'b1;
     225                                                        state1 <= 3'd1;
     226                                                end
     227                                                8'h31:
     228                                                begin
     229                                                        hst_addr <= 12'd0;
     230                                                        hst_byte_num <= 2'd0;   
     231                                                        state1 <= 3'd3;
     232                                                end
     233                                                8'h32:
     234                                                begin
     235                                                        osc_reset <= 1'b1;
     236                                                        state1 <= 3'd1;
     237                                                end
     238                                                8'h33:
     239                                                begin
     240                                                        osc_addr <= osc_start_addr;
     241                                                        osc_counter <= 10'd0;
     242                                                        osc_byte_num <= 1'd0;   
     243                                                        state1 <= 3'd4;
     244                                                end
     245                                        endcase
     246                                end
     247                                else
     248                                begin
     249                                        usb_fifo_rx_rdreq <= 1'b0;
     250                                end                             
     251                        end
     252
     253                        3:
     254                        begin
     255                                // hst transfer
     256                                if (~usb_fifo_tx_full)
     257                                begin
     258                                        usb_fifo_tx_wrreq <= 1'b1;
     259
     260                                        case (hst_byte_num)
     261                                                2'd0: usb_fifo_tx_data <= hst_q[7:0];
     262                                                2'd1: usb_fifo_tx_data <= hst_q[15:8];
     263                                                2'd2: usb_fifo_tx_data <= hst_q[23:16];
     264                                                2'd3: usb_fifo_tx_data <= hst_q[31:24];
     265                                        endcase
     266                                       
     267                                        if (&hst_byte_num)
     268                                        begin
     269                                                hst_byte_num <= 2'd0;                           
     270                                                if (&hst_addr)
     271                                                begin
     272                                                        state1 <= 3'd1;
     273                                                end
     274                                                else
     275                                                begin
     276                                                        hst_addr <= hst_addr + 12'd1;
     277                                                end
     278                                        end
     279                                        else
     280                                        begin
     281                                                hst_byte_num <= hst_byte_num + 2'd1;                           
     282                                        end                             
     283                                end
     284                                else
     285                                begin
     286                                        usb_fifo_tx_wrreq <= 1'b0;
     287                                end
     288                        end
     289
     290                        4:
     291                        begin
     292                                // osc transfer
     293                                if(~usb_fifo_tx_full)
     294                                begin
     295                                        usb_fifo_tx_wrreq <= 1'b1;
     296
     297                                        case (osc_byte_num)
     298                                                1'd0: usb_fifo_tx_data <= osc_q[7:0];
     299                                                1'd1: usb_fifo_tx_data <= osc_q[15:8];
     300                                        endcase
     301       
     302                                        if (osc_byte_num)
     303                                        begin
     304                                                osc_byte_num <= 1'd0;                           
     305                                                if (&osc_counter)
     306                                                begin
     307                                                        state1 <= 3'd1;
     308                                                end
     309                                                else
     310                                                begin
     311                                                        osc_addr <= osc_addr + 10'd1;
     312                                                        osc_counter <= osc_counter + 10'd1;
     313                                                end
     314                                        end
     315                                        else
     316                                        begin
     317                                                osc_byte_num <= 1'd1;                           
     318                                        end                                                                             
     319                                end
     320                                else
     321                                begin
     322                                        usb_fifo_tx_wrreq <= 1'b0;
     323                                end
     324                        end
     325
     326                        default:
     327                        begin
     328                                // default state is the first one
     329                                state1 <= 3'd1;
     330                        end
     331                endcase
     332        end
     333/*
     334        always @(posedge CLK_50MHz)
     335        begin
     336                case(state1)
     337                        0:
     338                        begin
     339                                usb_fifo_tx_wrreq <= 1'b0;
     340                                counter <= 32'd0;
     341                                state1 <= 3'd1;
     342                        end
     343                        1:
     344                        begin
     345                                if((~usb_fifo_tx_full) & (counter < 32'd512))
     346                                begin
     347                                        counter <= counter + 32'd1;
     348                                        state1 <= 3'd2;
     349                                        usb_fifo_tx_data <= 1;
     350                                        usb_fifo_tx_wrreq <= 1'b1;
     351                                end
     352                                else
     353                                begin
     354                                        usb_fifo_tx_wrreq <= 1'b0;
     355                                end
     356                        end
     357                               
     358                        2:
     359                        begin
     360                                if((~usb_fifo_tx_full) & (counter < 32'd512))
     361                                begin
     362                                        counter <= counter + 32'd1;
     363                                        state1 <= 3'd1;
     364                                        usb_fifo_tx_data <= 0;
     365                                        usb_fifo_tx_wrreq <= 1'b1;
     366                                end
     367                                else
     368                                begin
     369                                        usb_fifo_tx_wrreq <= 1'b0;
     370                                end
     371                        end
     372                                               
     373                        default: state1 <= 3'd0;
     374                endcase
     375        end
     376*/
    185377        always @ (posedge adc_clk)
    186378        begin
     
    189381                        begin
    190382                                adc_data <= 12'd0;
    191                                 state2 <= 4'd2;
     383                                state2 <= 3'd2;
    192384                        end
    193385                       
     
    195387                        begin
    196388                                adc_data <= 12'd1024;
    197                                 state2 <= 4'd3;
     389                                state2 <= 3'd3;
    198390                        end
    199391
     
    201393                        begin
    202394                                adc_data <= 12'd2048;
    203                                 state2 <= 4'd4;
     395                                state2 <= 3'd4;
    204396                        end
    205397
     
    207399                        begin
    208400                                adc_data <= 12'd3072;
    209                                 state2 <= 4'd5;
     401                                state2 <= 3'd5;
    210402                        end
    211403
     
    213405                        begin
    214406                                adc_data <= 12'd4095;
    215                                 state2 <= 4'd1;
     407                                state2 <= 3'd1;
    216408                        end
    217409
    218410                        default:
    219411                        begin
    220                                 state2 <= 4'd1;
     412                                state2 <= 3'd1;
    221413                        end
    222414                endcase
Note: See TracChangeset for help on using the changeset viewer.