کنترلر 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 به هر میکروکنترلر خارجی ایجاد می کنند.
حافظه برنامه
حافظه برنامه کدهایی را که CPU اجرا میکند نگهداری میکند. این حافظه ممکن است روی تراشه CPU یا تراشهای مجزا باشد.
حافظه برنامه ممکن است از هر نوع حافظهای استفاده کند: Flash EPRON, EEROM, EPOM, ROM یا RAM. همه این حافظهها بجز RAM (بدون باتری)، همیشگی هستند. آنها داده های نوشته شده را به صورت دائم نگهداری می کنند. مقداری این حافظههای برنامه ممکن است حدود کیکلوبایت یا بیشتر باشد. اما تراشههایی که از حافظههای خارجی استفاده میکنند امکان دارد محدودهای در حد مگا بایت را نیز پشتیبانی کنند.
نام دیگر کدهای ذخیره شده در حافظه برنامه، برنامه تراشه است، که مشخص میکند حافظه از نوع همیشگی بوده و مانند ram نمیتوان به راحتی آنها را ویرایش کرد و دوباره بر روی دیسک ذخیره نمود. در این کتاب، از عبارت برنامه تراشه در مورد کدهای برنامه کنترلر استفاده می شود، با وجود اینکه این کدهای ممکن است بر روی انواع حافظههای همیشگی و یا غیر همیشگی ذخیره شوند
ROM (حافظه فقط خواندنی) باید در کارخانه برنامهنویسی شود و قابل پاک کردن نبست. این حافظه فقط برای تولید انبوه کاربرد دارد.
EPROM ( ROM قابل برنامهریزی و پاک شدن) قابل برنامهریزی توسط کاربر است. بسیاری از تراشهها سختافزار و نرم افزار برنامهنویسی ارزان دارند. برای پاک کردن EPROM، تراشه را در پاک کننده EPROM قرار میدهید، در این دستگاه مدارهای تراشه زیر تابش اشعه ماورای بنفش قرار میگیرند. پاک شدن حدود 10 تا 30 دقیقه طول خواهد کشید. سپس تراشه آماده خواهد بود تا دوباره برنامهریزی شود. در اطلاعات فنی این تراشه ها به ندرت به تعداد دفعات ممکن پاک شده اشاره میشود. اما این مقدار حدوداً 100 میباشد.
OTP PROM ها ارزانتر هستند . ساختار آنها شبیه به EPROM ها میباشد و مانند آنها برنامهریزی میشوند. تفاوتشان این است که این تراشهها پنجرههای کوارتز برای پاک کردن ندارند. این حافظه بیشتر در محصولات نهایی استفاده می شوند. بسیاری از CPU ها هر دو نوع حافظه EPROM و OTP PROM را دارا هستند.
Flash EPROM ها حافظههایی با تکنولوژی جدید هستند که قابل پاک شدن به طریقه الکتریکی می باشند و احتیاج به اشعه ماورای بنفش ندارند و معمولاً به ولتاژ برنامهریزی خاص مورد نیاز برخی از EPROM ها احتیاج ندارند. Flash EPROM های موجود قادرند حدود 000/100 بار پاک شده و دوباره برنامهریزی شوند.
EEPROM (PROM های قابل پاک شدن به طریقه الکتریکی) نیز به ماورای بنفش و ولتاژ ویژه برنامهریزی که EPROM ها نیاز دارند. احتیاج ندارد. EEPROM ها زمان دسترسی طولانیتری نسبت به Flash EPROM دارند. EEPROM ها با هر دو مدار واسط موازی که توسط EPROMها و Flsh EPROM ها استفاده میشود و واسط سریال که در میکرووایر، c 2 I و spi کاربرد دارد، مورد استفاده قرار میگیرد. EEPROMهای سریال برای ذخیره مقدار داده کمی که گهگاه تغییر مییابند از جمله دادههای پیکربندی، شماره مشخصههای محصول و فروشنده مناسب است. EEPROM های موجود حدود 10 میلیون بار می توانند پاک شده و دوباره برنامهریزی شوند.
RAM (حافظه با دسترسی تصادفی) میتوانند به صورت نامحدود پاک و نوشته شود، اما دادهها پس از خاموش شدن تراشه از دست میروند. براین اساس برای استفاده از RAM باید در هر بار بالا آمدن، کدها از کامپیوتر به تراشه بارگذاری شود. EZ-USB شرکت سیپرس برای ذخیره کدهای برنامه از RAM استفاده می کند و سختافزار ویژه و راهاندازی دارد که در هنگام اتصال تراشه، برنامه را در آن بارگذاری مینماید. همه CPUها می توانند از حافظه برنامه RAM با پشتیبانی باتری به منظور ذخیره کدهای برنامه خود استفاده کنند. زمان دسترسی به RAM زیاد است.
حافظه داده
حافظه داده در طول اجرای برنامه، محل ذخیره موقت ایجاد می کند. محتویات حافظه داده ممکن است شامل دادههای رسیده از پورت USB، دادههایی که میخواهد روی پورت USB فرستاده شود، مقادیری که در محاسبات استفاده میشوند یا هر چیز دیگری باشد که تراشه احتیاج دارد که به خاطر داشته باشد. حافظه داده عموماً از نوع RAM است. حجم معمولی این حافظه بین 128 تا 1024 بایت میباشد.
رجیسترها
رجیسترها میتوانند انتخاب دیگری از حافظههای موقتی باشند. رجیسترها مکانهای حافظهای هستند که CPU در دستورات مختلف خود از آنها به جای استفاده از حافظههای داده دیگر، بهره میبرد. بسیاری از رجیسترها کاربرد تعریف شدهای دارند. بسیاری از CPUها می توانند بسیار سریعتر از حافظه داده به رجیسترها دسترسی داشته باشند.
تراشه کنترلی USB معمولاً دارای رجیسترهایی است که اطلاعاتی کنترلی و وضعیتی را نگهداری میکنند از جمله اندپوینتهای فعال، تعداد بایتهای رسیده، تعداد بایتهای آماده ارسال ، وضعیتهای جاری و دادههای رسیده یا منقل شده. مثلاً یک کردن بیتی در رجستر ممکن است اندپوینتی را فعال کند. تعداد رجیسترها و محتویات آنها بر اساس خانواده تراشهها متفاوت میباشد.