LOGIN   :::   RECOVER PASS   :::   GET ACCOUNT    
Browse
  • Projects
  • Code (CVS)
  • Forums
  • News
  • Articles
  • Polls
  •  
    OpenCores
  • FAQ
  • CVS HowTo
  • Mission
  • Media
  • Tools
  • Sponsors
  • Mirrors
  • Logos
  • Contact us
  •  
    Tools
  • Search
      
  • Download Cores (CVSGet)
  •  
    More
  • Wishbone
  • Perlilog
  • EDA tools
  • OpenTech CD
  •  
    Navigation: All forums > Usb > Message List > Message Post

    Message

    Reply | Reply all
    Date Prev | Date Next | Thread Prev | Thread Next Date Index | Thread Index

    From: a.zaretsky@z...<a.zaretsky@z...>
    Date: Fri Nov 26 13:40:00 CET 2004
    Subject: [usb] Enumeration...
    Top
    ----- Original Message -----
    From: info@s...<info@s...>
    To:
    Date: Wed Nov 17 11:59:38 CET 2004
    Subject: [usb] Enumeration...

    > hello,
    > now i got the USB1.1 function core working with the SMSC GT3200
    PHY
    > chip. (little changings in usb1_utmi_if.v and usb_pa.v, because the
    > tx-
    > ready signals have different length)
    > but windows dont accepts the enumeration :-(
    > it asks for 64Byte device-descriptor, but since this is only 18Byte
    > long, i
    > am sending these 18 bytes (the original usb1_ctrl.v does so)
    > after PC had recieved these 18 bytes it sends again an IN-Token, to
    > wich the fpga replies with Zero-length-packet.
    > a lot of miliseconds later the PC sets an USB-RESET and asks again
    > for
    > 64 byte device-descriptor...
    > this repeats 3 times.. then it stops...
    > what do i have to do?
    > sending these 18 bytes only in packets a 8 byte?
    > sending 64 bytes? wich bytes?
    > or could it be, that my device-descriptor is wrong?
    > 7'h00: dout <= #1 8'd18; // this descriptor length
    > 7'h01: dout <= #1 8'h01; // descriptor type
    > 7'h02: dout <= #1 8'h10; // USB version low byte
    > 7'h03: dout <= #1 8'h01; // USB version high byte
    > 7'h04: dout <= #1 8'hff; // device class
    > 7'h05: dout <= #1 8'hff; // device sub class
    > 7'h06: dout <= #1 8'hff; // device protocol
    > 7'h07: dout <= #1 8'd64; // max packet size
    > 7'h08: dout <= #1 8'h34; // vendor ID low byte
    > 7'h09: dout <= #1 8'h12; // vendor ID high byte
    > 7'h0a: dout <= #1 8'h78; // product ID low byte
    > 7'h0b: dout <= #1 8'h56; // product ID high byte
    > 7'h0c: dout <= #1 8'h10; // device rel. number low byte
    > 7'h0d: dout <= #1 8'h00; // device rel. number high byte
    > 7'h0e: dout <= #1 8'h00; // Manufacturer String Index
    > 7'h0f: dout <= #1 8'h00; // Product Descr. String Index
    > 7'h10: dout <= #1 8'h00; // S/N String Index
    > 7'h11: dout <= #1 8'h01; // Number of possible config.
    > thank you very much!
    > best regards
    > Suheel
    >
    >

    I have got exactly the same problem.
    Do you send the 18 bytes device descriptor in chunks of 8 bytes
    packets?
    I realised that you also should transmit the zero len packet after each 8
    byte packet.
    How do you send the last 2 bytes?
    Do you receive the reset command from the host after sending the 1rst
    8 bytes? Do you receive the SET_ADDRESS request?

    Follow upAuthor
    [usb] Enumeration...S Georges

     
    Copyright (c) 1999 OPENCORES.ORG. All rights reserved.