کنترلر 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 به هر میکروکنترلر خارجی ایجاد می کنند.
دانلود مقاله بافرهای داده USB