كنترلر USB ، بايد بافرهايي براي ذخيره دادههايي كه دريافت ميكند يا دادههايي كه آماده فرستادن روي باس هستند، داشته باشد. بعضي از تراشهها مانند NET2888 محصول NetChip ، از رجيسترهاي به عنوان بافر استفاده ميشكند. در حالي كه برخي ديگر ، از جمله EZ-USB شركت سيپرس [1] از بخشي از حافظه داده به عنوان بافر بهره ميبرند.
رجيسترهايي كه دادههاي رسيده يا منتقل شده را نگهداري ميكنند، عموماً داراي ساختار FIFO (اولين ورودي، اولين خروجي) هستند. در هر خواندن از يك FIFO ، بايتي كه بيشتر از همه در حافظه بوده است بازگردانده ميشود. با هر نوشتن به روي FIFO ، بايت بعد از همه بايتهايي كه در FIFO، محلي را كه داده بعدي در ن قرار دارد نشان ميدهد.
در تراشههاي ديگر، مثل سري enCore شركت سيپرس، بافرهاي USB در حافظه داده جاسازي شدهاند و برنامه تراشه هر موقعيت را براي نوشتن يا خواندن از آن انتخاب ميكند و اشارهگري كه به طور خودكار افزايش يابد تا محل دادة بعدي را مشخص كند. وجود ندارد. بايتهاي درون بافر فرستنده USB از پايينترين آدرس به بالاترين آدرس نوشته ميشوند و بايتهاي بافر دريافت به ترتيب رسيدن، از پايينترين آدرس به بالاترين آدرس ذخيره ميگردند. اين بافرها ساختار FIFO ندارند ولي گاهي با اين نام خوانده ميشوند.
براي ايجاد انتقالهاي سريعتر، بعضي از تراشهها دو بافر دارند و قادرند دو مجموعه كامل داده در هر جهت را ذخيره كنند. در حالي كه يك بلاك داده انتقال مي يابد، برنامه تراشه ميتواند بلاك داده بعدي را به بافر ديگر بنويسد. به طوري كه اين بلاك تا وقتي كه بلاك اول فرستاده ميشود آماده انتقال ميگردد. در جهت دريافت نيز. بافر اضافي ما را قادر ميسازد قبل از كامل شدن پردازش داده بر روي ترنزكشن قبلي توسط برنامه تراشه، ترنزكشن بعدي دريافت شود. سختافزار به صورت خودكار بين اين دو بافر سئويچ ميكند.
CPU
واحد پردازش مركزي (CPU) يك تراشه كنترلي USB ، با اجراي دستورات كدهايي كه در تراشه ذخيره شده است، فعاليتهايي تراشه را كنترل ميكند. هر CPU از مجموعه دستوراتي پشتيباني ميكند كه شامل دستورات زبان ماشين براي انتقال داده، انجام عملوندهاي منطقي، و پرشهاي برنامه مي باشند. اين مجموعه دستورات همچنين CPU را قادر ميسازد كه با SIE ارتباط برقرار كند. CPU ممكن است ساختاري بر اساس يك ميكروكنترلر عمومي مانند 8051 داشته باشد يا اينكه فقط به صورت ويژه براي استفاده در دستگاههاي USB طراحي شده باشد.
تراشههايي كه cpu ندارند ممكن است مجموعه دستوراتي وابسته به ارتباطهاي USB داشته باشند يا فقط از يك سري رجيستر براي ذخيره دادههاي USB و اطلاعات پيكربندي استفاده كنند. اين تراشهها مسيري را براي اضافه كردن قابليتهاي USB به هر ميكروكنترلر خارجي ايجاد مي كنند.