کنترلر 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 معمولاً دارای رجیسترهایی است که اطلاعاتی کنترلی و وضعیتی را نگهداری میکنند از جمله اندپوینتهای فعال، تعداد بایتهای رسیده، تعداد بایتهای آماده ارسال ، وضعیتهای جاری و دادههای رسیده یا منقل شده.
مثلاً یک کردن بیتی در رجستر ممکن است اندپوینتی را فعال کند.
تعداد رجیسترها و محتویات آنها بر اساس خانواده تراشهها متفاوت میباشد.
I/O های دیگر بیشتر کنترلرها همچنین دارای واسطی برای ارتباط با دنیای خارج از خود به غیر از پورت USB هستند.
معمولاً به این منظور یک مجموعه از پایههای ورودی – خروجی وجود دارند که قادرند به مدار های دیگر متصل شوند.
تراشه ممکن است از مدارهای واسط دیگر نیز پشتیبانی کند، از جمله واسطهای همزمان برای RS-232 یا واسطهای سنکرون از قبیل c – 2 I ، میکرو وایر، و SPI بعضی از تراشهها نیز واسطهای ویژهای دارند.
مثلاً USA/321 شرکت فیلیپس دارای مبدل دیجیتال به آنالوگ (DAC) برای استفاده در بلندگوهای USB را به سیگنالهای آنالوگ با فرکانس نمونهبرداری 55 کیلوهرتز تبدیل می کند.
FT8U232AM محصول FTDI یک USB UART است که به روز رسانی طراحیهای RS-232 به USB را به راحتی ممکن میسازد.
ویژگیهای دیگر تراشه ممکن است خصوصیات دیگری از جمله تایمرهای سختافزاری یا شمارنده داشته باشد.
همه ویژگیهایی که ممکن است در یک میکروکنترلر عمومی بیابید ممکن است در کنترلر USB نیز وجود داشته باشد.
تراشههایی که از ابتدا برای USB طراحی شدهاند بعضی از کنترلرها مخصوص تجهیزات USB ساخته شدهاند.
به جای اضافه کردن قابلیتهای USB به معماریهای موجود.
این طراحیها از ابتدا برای USB انجام شده است.
دو سازنده این تراشهها شرکتهای سیپرس و Scanogic میباشند.
جدول 1-7 ویژگیهای این تراشهها را مقایسه میکند.
جدول 1-7: شرکتهای سیپروس و Scanlogic میکروکنترلرهایی دارند که مخصوص USB طراحی شدهاند.
خانواده MS سیپرس، تراشههای ارزانقیمت زیادی دارد که در مجموعه دستورات بهینه شده برای USB مشترک هستند.
سری ENORE سرعت پایین می باشند، که هر کدام برای پورت USB و 8 تا 16 خط I/O کاربرد عمومی دارند.
تراشههای سری های MS دیگر، I/O های بیشتری دارند و از انتقالهای سرعت بالا نیز پشتیبانی می کند.
SL11R شرکت SCANLOGIC دارای BIOS ROM است که از هر چهار انتقال پشتیبانی می کند.
همچنین ROM دارای کدهایی است که اجرای برنامه تراشه کاربر را از حافظه موازی خارجی یا بارگذاری کد از EEPROM سریال به RAM ممکن میسازد.
تراشههایی بر اساس خانوادههای آشنا بعضی از کنترلهای USB سازگار با خانوادههای موجود میباشند.
این تراشهها دو مزیت دارند.
یکی اینکه بسیاری از ارتقادهندگان با معماری و مجموعه دستورات تراشه آشنا میباشند.
مطمئناً اگر طراحی شما با تراشهای که سازگار با 8051 است باشد، آشنایی با 8051 به شما بسیار کمک خواهد کرد.
حتی اگر شما با آن معماری آشنا نباشید، انتخاب آن خانواده عمومی به معنای آن است که ابزارهای برنامهریزی و اشکالزدایی آن در دسترس است و کدهای نمونه و دستگاههای دیگر آن تراشه در دسترس شماست.
در صورتی که میکروکنترلر انتخابی شما 8051 است، بسیار خوش شانس هستید.
سیپرس ، INFINEON و Standard Microsysem تراشههای سازگار با 8051 با قابلیت usb دارند.
سری fx2 سیپرس در خانواده EZ-USB سازگار با 8051 از سرعت خیلی بالا پشتیبانی میکند.
تراشههایی که با خانواده های دیگر سازگارند نیز در دسترس میباشند.
از جمله AVR شرکت PIC, Atmel شرکت میکرو چیپ، 68 Hco5/8 شرکت موتورلا.
جدول 2-7 فهرست این تراشه و بقیه تراشه ها را ارائه می کند.
جدول 2-7: بسیاری از کارخانهها کنترلرهای USB را تولید کردهاند که سازگار با خانواده میکروکنترلرهای موجود میباشند.
تراشههایی که به میکروکنترلرهای خارجی متصل میگردند.
بعضی از تراشههای USB فقط ارتباطات مربوط USB را انجام می دهند و باید به یک میکروکنترلر خارجی وصل گردند.
این موضوع شما را قادر می سازد که پورت USB تان را به هر مدار میکروکنترلر دلخواه متصل کنید.
در اینجا به دو تراشه احتیاج خواهیم داشت در حال یکه کنترلرهای دیگر هم CPU و هم هسته USB را بر روی یک تراشه دارند.
جدول 3-7 انتخابهایی از این گونه تراشهها را نشان میدهد.
این تراشهها دارای یک باس داده محلی و خارجی هستند که از یک مدار واسط سنکرون سریال یا موازی برای ارتباط با CPU استفاده می کنند.
هنگامی که کنترلر دادههای یک USB را دریافت کند یا آماده ارسال دادههای جدید باشد پایههای وقفه فعال شده و CPU را آگاه میسازند.
جدول 3-7: انتخابهایی از کنترلرهای USB که با یک میکروکنترلر عمومی مرتبط می شوند.
در بعضی از تراشهها، واسط باس محلی باس محلی آهستهتر از نرخ انتقال ماکزیمم usb است.
لذ این تراشهها فقط برای دادههای تناوبی مفید می باشند.
NDT 2888 از یک باس داده موازی با 8 خط داده و 5 خط آدرس استفاده می کند.
این باس قادر است با سرعت 10 مگابایت در هر ثانیه بخواند و بنویسد در مد DMA این سرعت حتی میتواند بیشتر شود.
USBN9603 محصول Nationqal Semiconductor انتخابهای بیشتری را ارائه میدهد.
این تراشه باس دادهای سریال سنکرون میکرووایر را بفرستد.
میکرووایر فقط احتیاج به چهار خط دارد و میتواند از طریق چهار خط I/O با هر میکروکنترلری مرتبط شود.
شرکت فیلیپس دو تراشه PDIUBD11 با واسط C I2 و PCIUSBD12 با واسط موازی را ارائه میدهد.
USS820C محصول Lucent دارای واسط موازی است و از حداکثر تعداد اندپیوینت ممکن پشتیبانی میکند.
مرجع خصوصیات تراشه مهمترین مدرک در مورد قابلیتهای تراشه، مرجع خصوصیات تراشه آن است .
در تراشههایی که CPU دارند، مرجعهایی در مورد مجموعه دستورات آن پردازشگر مفید می باشد.
در برگه داده در مورد سختافزار که شامل نحوه کار رجیسترها و ولتاژها و زمانبدی تمام پایهها می باشد توضیح داده میشود.
علاوه بر این متنهای اولیه و اساسی، بسیار از فروشندگان راهنمای مخصوص کاربران تهیه می کنند که جزئیات بیشتری را در مورد چگونگی استفاده از تراشه در بر دارد.
راهانداز جنبه دیگر برنامهریزی یک دستگاه USB ، راهانداز و نرم افزارهای کاربردی سمت میزبان است.
در اینجا نیز نمونهها می توانند مفید باشند.
در صورتی که دستگاه شما سازگار با یکی از کلاسهایی است که ویندوز از آن پشتیبانی میکند، دیگر نگرانی در مورد نوشتن یا پیدا کردن راهانداز دستگاهتان ندارید.
مثلاً برنامه کاربردی که می تواند به یک دستگاه کلاس HID دسترسی