کنترلر 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 دسترسی داشته باشد از تابعهای استاندارد API که با راهاندازهای HID ویندوز ارتباط برقرار میکنند.
بهره میبرد.
فروشندگان تراشه ممکن است یک برنامه نمونه را پیشنهاد کنند، از جمله NATIONAL Semicon ductor برنامه HID نمونهای برای 9603 خود ارائه میدهد.
بعضی از فروشندگان، بک راه انداز عمومی را ارائه میدهند که شما می توانید از آن برای تبادل دادهبا دستگاه استفاده کنید.
EZ-USB شرکت سیپرس نمونهای از آنها می باشد.
تراشه دارای معماری منحصر به فردی است که کامپیوتر را قادر می سازد در هنگام اتصال برنامه تراشه را بارگذاری کند.
برای استفاده از این ویژگی، تراشه احتیاج به یک راهانداز خاص دارد.
این راهانداز عمومی سیپرس می تواند کدها را به درون تراشه بارگذاری کند و همچنین می تواند با استفاده از هر چهار نوع انتقال به تبادل داده بپردازد.
نگاهی به بعضی از تراشهها enCoRe محصول شرکت سیپرس تراشههای سری enCoRe شرکت سیپرس، ارزان و با طراحی آسان میباشند.
هدف از ساخت این تراشه، انتقال بلاکهای کوچک اطلاعات در سرعت پایین است.
از وسایل جانبی که این تراشه میتواند در آنها به کار رود می توان از ماوس و دسته بازی نام برد.
معماری CPU برخلاف بیشتر تراشههای USB ، سری enCoRe بر اساس خانواده خاصی نیست.
استفاده از این تراشه به معنای نیاز به یادگیری مجموعه دستورات جدید می باشد.
هر چند که این دستورات کم هستند و مشابه با دستورات دیگر میکرو کنترلرها میباشند و اگر با برنامههای کد اسمبلی کار کرده باشید، یادگیری این عبارات راحت است.
یک مفسر C نیز برای این تراشه وجود دارد.
این تراشه از 37 دستور پشتیبانی می کند که کارهای اصلی مثل انتقال داده، انجام عملیات ریاضی و پرشهای برنامه را پوشش میدهند.
چون مجموعه دستورات کوتاه هستند یادگیری آنها چندان سخت نیست.
هر چند این مسأله به معنای آن است که شما نمیتوانید دستوراتی برای انجام همه کارهای مورد نظرتان بیابید.
از جمله، دستوری برای ضرب یا تقسیم وجود ندارد و همهمحاسبات باید توسط عمل جمع، تفریق و انتقال بیتها انجام شود.
(مفسر C دارای توابع ریاضی دیگری نیز هست.) معماری هستند.
63743 همچنین می تواند برای ارتباطات ps/2 (سریال سنکرون) پیکربندی شود، که دستگاههای مکانیابی را قادر می سازد از هر دو واسط پشتیبانی کنند.
کنترلر usb سادگی طراحی enCoRe میتواند یک مزیت باشد اما محدودیتهایی نیز دارد.
این تراشه از تمام قابلیتهای USB پشتیبانی نمیکند.
محدودیت سرعت پایین به معنای آن است که آنها نمیتوانند از اتصالهای همزمان و تودهای پشتیبانی نمی کند.
محدودیت سرعت پایین به معنای آن است که آنها نمی توانند از اتصالهای همزمان و تودهای پشتیبانی کنند، 63743 سه اندپوینت دارد.
یک اندپوینت صفر برای انتقال کنترلی به علاوه اندپوینت های 1 و 2 برای انتقال وقفهای .
تراشه می تواند یک اندپوینت ورودی وقفه و یک اندپوینت وقفه خروجی داشته باشد یا اینکه از دو اندپوینت در یک جهت پشتیبانی کند بعضی دیگر از تراشههای سرعت پایین، در نسخههای اولیه خود از اندپوینت وقفه خروجی پشتیبانی نمی کردند تا وقتی که این ویژگی به USB به USB نسخه 1/1 اضافه شد.
هر اندپوینت یک بافر هشت بایتی در RAM دارد.
برای ارتقای پروژه، سیپرس یک کیت ارتقا ارائه می دهد که شامل برد مدار چاپی به همراه برنامه نمایش دهنده برای بارگذاری و تست کدها می باشد.
تنها حافظه ممکن برای تراشه OTP PROM می باشد.
برای برنامهریزی کردن PROM شما احتیاج به یک دستگاه برنامهریز دارید.
سیپرس یک برنامه ریز ارزان از Hi-Lo پیشنهاد میکند.
ارتباطات usb احتیاج به مقدار زیادی برنامه تراشه دارد، اما سیپرس کدهای نمونهای برای برنامههای عمومی ارائه داده است.
اگر به این تراشه علاقه مندید اما احتیاج به I/O های بیشتر یا سرعت بالا دارید CY7C64013 و CY7C64113 را پیشنهاد می کنم.
EZ-USB شرکت سیپرس خانواده EZ-USB سیپرس به دو دلیل مورد توجه هستند: اول اینکه سازگار با 8051 میباشند و دیگر اینکه تراشه راه قابل انعطاف تر و متفاوتی را برای ذخیره برنامه تراشه ارائه می کند.
به جای اینکه کدها بر روی تراشه ذخیره شود، EZ-USB می تواند آنها را بر روی میزبان ذخیره کند و در هنگام اتصال به درون تراشه بارگذاری شود.
ذخیره برنامه تراشه بر روی میزبان مزایا و معایبی دارد.
مهمترین مزیت راحت به رزو رسانی کدهاست و شما برای به روز رسانی برنامه تراشه، فقط نسخه جدیدی از آن را بر روی میزبان ذخیره میکنید و راه اندازی آن را در اتصال بعدی درون تراشه بارگذاری خواهد کرد و احتیاجی نیست که تراشه را عوض کنید و از دستگاه برنامهریز خاصی استفاده کنید.
اما معایب آن پیچیده شدن راهانداز و سختافزار میزبان و طولانیتر شدن مرحله سرشماری میباشد.
سیپرس راهاندازی با کد اصلی کامل ارائه می دهد که برنامه تراشه را بارگذاری می نماید.
شما می توانید از این راهانداز استفاده کنید.
و یا اینکه از کد اصلی آن برای نوشتن یک راهانداز شخصی بهره برید.
EZ-USB همچنین امکان ذخیره برنامه تراشه را در یک EEPROM سریال یا EPROM موازی یا انواع دیگر حافظههای همیشگی خارجی، می دهد.
معماری CPU معماری EZ-USB شبیه به DS80C320 شرکت دالاس است که هسته مرکزی آن 8051 میباشد که به منظور بالا بردن کارآیی دوباره طراحی شده است.
این تراشه برای هر سیکل دستور از چهار پالس ساعت استفاده می کند در حالی که 8051، 12 پالس ساعت لازم دارد.
هر دستenCoRe و بین یک تا 5 سیکل دستور را میگیرد.
کلاک CPU به صورت 24 مگاهرتز است.
در یک میانگین گیری EZ-USB نسبت به 8051 در سرعت کلاک مشابه 5/2 برابر سریعتر است.
مجموعه دستورات این تراشه سازگار با 8051 هستند.
هر 8 کیلوبایت حافظههای داده و برنامه به صورت RAM می باشند و درون تراشه حافظه همیشگی موجود نیست.
هر چند که تراشه قادر است از روی EEPROM سریال از طریق واسط C – I2 بخواند و بنویسد.
خانواده EZ-USB شامل سه سری می شود: EZ-USB های اولیه (AN21XX) و سری FX (CY7C646XX) و سری FX2(CY7C68013) .
هر سری دارای تراشههایی با ویژگیهای متفاوت میباشد.
جدول 4-7 خلاصهای از ویژگیهای هر ری لیست شده است.
در سری FX ورودی و خروجی (I/O) های سریعتر و واسط قابل برنامه ریزی با تأیید متقابل و پیکربندی خودکار قرار گرفته است.
در سری FX2 نیز سرعت خیلی بالا پشتیبانی شده است.
این مفسر نسخه رایگان اما محدود نیز دارد.
اگر نسخه کامل این مفسر را دارید، میتوانید اساس کدهایتان را بر برنامه سیپرس، که بسیاری از ارتباطات USB را انجام می دهد، پایهگذاری کنید.
شرکت Keil یک مفسر c برای EZ-USB دارد، و یا اینکه شما میتوانید از کدهای اسمبلی استفاده کنید.
کنترلر USB بیشتر EZ-USB ها از حداکثر اندپوینت ممکن پشتیبانی میکنند: یک اندپوینت کنترلی به علاوه 30 اندپوینت دیگر که میتوانند هر چهار نوع انتقال را داشته باشند.
در طراحیهای سادهتر، تراشههایی با قابلیتهای کمتر موجود میباشند.
بسیاری از خصوصیات EZ-USB در ذخیره برنامه تراشه، معماری آن را نسبت به تراشههای دیگر پیچیده تر کرده است.
این خصوصیات از این جهت که تراشه را بسیار انعطاف پذیر میکند مورد توجه است.
اینجا جزئیات بیشتری درباره آنها توضیح داده میشود.
جدول 4-7: خانواده EZ-USB سیپرس سازگار با 8051 میباشد.
وقتی که EZ-USB می خواهد از برنامه تراشه درون میزبان ذخیره شده است استفاده کند، باید دوبار سرشماری شود.
مانند بقیه دستگاهها وقتی که EZ-USB به باس متصل میشود، میزبان سعی می کند که آن را سرشماری کند.
اما چگونه می توان این دستگاه را بدون کدهای تراشه سرشماری کرد؟
پاسخ آن است که تراشه هستهای دارد که میداند چگونه به خواستههای سرشماری پاسخ دهد.
این هسته در اتصال اولیه دستگاه به باس ارتباطات را کنترل میکند.
هسته EZ-USB مستقل از هسته 8051 است.
هسته EZ-USB در حالی که مدارهای 8051 در حالت ریست هستند ارتباط با میزبان را به دست میگیرد.
همچنین هسته EZ-USB به خواستههای ویژه فروشنده که تراشه را قادر می سازد که برنامه تراشه را از میزبان، دریافت، ذخیره و اجرا کند نیز پاسخ میدهد.
برای تستهای اولیه، این هسته همچنین میتواند دستگاه را قادر سازد که با استفاده از هر چهار نوع انتقال دادههایی را منتقل کند.
بیت رجیستری ReNum مشخص میکند که کدامیک از هسته 8051 یا هسته EZ-USB از طریق اندپوینت صفر به خواستهها پاسخ می دهند.
در هنگام روشن شدن، ReNum صفر است و هسته EZ-USB کنترل اندپوینت صفر را در دست دارد.
وقتی که ReNum به یک تنظیم شود هسته 8051، اندپوینت صفر را کنترل می کند.
منبع برنامه تراشه EZ-USB به دو مسأله وابسته است: محتویات بایتهای اولیه EEPROM خارجی و حالت ورودی EA در هنگام روشن شدن و قبل و سرشماری، هسته EZ-USB تلاش میکند که از طریق وسط I2C بایتهایی را از EEPROM سری خارجی بخواند .
نتیجه، در کنار حالت ورودی EA ، مشخص میکند که تراشه چه باشد بکند: از مد پیش فرض خود استفاده کند و کدها را از میزبان بارگذاری نماید، یا برنامه تراشه را از EEPROM بارگذاری کند یا از حافظه کد باس داده موازی خارجی بوت شود.
مد پیش فرض – مد پیش فرض ابتدایی ترین مد کارکرد تراشه است.
در این حالت از EEPROM سریال یا حافظههای خارجی دیگر استفاده نمی شود.
اگر EA از نظر منطقی صفر باشد و هسته EEPROM را نیابد یا بابت اولیه EEPROM به صورت BOH B2H نباشد، هسته EZ-USB وارد ین مد میشود.
وقتی میزبان دستگاه را سرشماری می کند.
هسته EZ-USB به خواستهها پاسخ می دهد.
در طول این زمان هسته 8051 در حالیت ریست باقی می ماند.
این حالت ریست توسط بیت رجیستری کنترل می شود.
میزبان می تواند مستقیماً بر روی این بیت بنویسد و تراشه را از ریست خارج نماید.
این ریست بر روی هسته 8051 اثر میگذارد و ربطی به سیگنال ریست USB ندارد.
توضیح دهندههایی که میزبان بازیابی میکند، دستگاه را به عنوان دستگاه USB پیش فرض معرفی میکند.
میزبان شماره مشخصههای فروشنده و محصول را با فایل INT تهیه شده توسط سیپرس مقایسه میکند و باعث می شود میزبان راهاندازی عمومی سیپرس را برای ارتباط با تراشه بارگذاری نماید.
بیت ReNUM در حالت صفر باقی میماند.
مد پیشفرض به منظور استفاده در اشکال زدایی مفید است.
شما میتواند از این مد برای ارتقا مدار واسط USB و تبادل داده استفاده کنید.
علاوه بر پشتیبانی از اندپوینت صفر، دستگاه USB پیش فرض می تواند از سه انتقال دیگر در بقیه اندپوینت ها نیز استفاده کند.
همه این کارها بدون نوشتن برنامه تراشه و راهانداز دستگاه امکانپذیر است.
معرفی دستگاه از طریق بایتهای EEPROM – هسته همچنین می تواند بایتهای معرفی را از EEPROM در هنگام روشن شدن بخواند و سپس این اطلاعات را در طول دوره سرشماری به میزبان بفرستد.
اگر اولین مقدار خوانده شده از EEPROM ، Boh هسته شماره مشخصهای محصول و فروشنده را از روی EEPROM می خواند و وقتی که میزبان آن را برای اولین بار سرشماری می کند، از این بایتها برای پیدا کردن فایل INF مربوط به دستگاه استفاده می کند و راهانداز را تشخیص میدهد.
راهانداز حاوی برنامه تراشهای است که باید قبل از سرشماری، دوباره منتقل گردد.
سیپرس دستوراتی را ارائه کرده است که برای طراحی راهاندازی با این قابلیتها استفاده میشوند.
راهانداز از درخواست، بارگذاری برنامه تراشه خاص، به منظور انتقال کدها به دستگاه استفاده میکند.
برنامه تراشه حاوی توضیح دهندههای جدید و کدهایی است که دستگاه برای انجام وظایفش نیاز دارد.
مثلاً یک دستگاه کلاس HID حتماً توضیح دهنههای گزارش و کدهایی برای انتقال گزارشهای HID دارد.
پس از کامل شدن بارگذاری برنامه تراشه.
راهندازی باعث می شود که تراشه از حالت برنامه تراشه به صورت الکتریکی وضعیت جداشدن دستگاه را شبیهسازی میکند، سپس به وسیله نوشتن بر روی رجیسترهای که پایه DISCON# را کنترل میکند.
دوباره دستگاه به باس متصل میگردد.
این پایه به مقاومتی وصل شده است که انتهای دیگر آن متصل به خط D+ میباشد.
به این ترتیب اگر این پایه دارای ولتاژ باشد نشان دهنده اتصال دستگاه به باس و در غیر این صورت به معنای جدا شدن دستگاه است.
در این وضعیت برنامه تراشه همچنین بیت ReNum را 1 میکند که باعث می شود هسته 8051 به جای هسته EZ-USB کنترل را به دست گیرد و به اندپوینت صفر پاسخ دهد.
وقتی که میزبان این اتصال دوباره را تشخیص داد، دوباره دستگاه را سرشماری میکند، این بار توضیح دهنده های جدید را بازیابی کرده و از اطلاعات آنها برای بارگذاری استفاده میکند.
سیپرس این مرحله را با عبارت سرشماری دوباره خطاب میکند.
بارگذاری برنامه تراشه از EEPROM – سومین مدکاری تراشه، راهی را برای ذخیره برنامه تراشه ایجاد می کند.
اگر اولین بایت خوانده شده از EEPROM ، B2h باشد، در هنگام روشن شدن، هسته همه محتویات EEPROM را به روی RAM بارگذاری مینماید.
EEPROM باید حاوی شماره مشخصه فروشنده ، شماره مشخصه محصول و شماره نسخه دستگاه و توضیح دهندهها برای سرشماری و کدهای دیگری باشد که دستگاه را سرشماری مینماید، توضیح دهندههای ذخیره شده را میخواند و راهانداز مناسب را بارگذاری مینماید.
و دیگر مرحله سرشماری دوباره نخواهیم داشت.
راهانداز کد از طریق حافظه موازی خارجی – اگر EEPROM یافته نشود و یا اینکه بایت اولش BO یا B6h نباشد، و اگر EA از نظر منطقی یک باشد، تراشه از طریق حافظه کد باس داده موازی خارجی، بوت میشود .
این حافظه می تواند Flash EEPROM, EPROM یا RAM با پشتیبانی باتری باشد.
حافظه حاوی توضیح دهندهها و دیگر برنامه تراشه است.
ReNum یه یک تنظیم می شود.
میزبان دستگاه را سرشماری میکند و راه انداز مناسب آن را بارگذاری می نماید و دیگر احتیاجی به سرشماری دوباره نیست.
PIC 16C75 شرکت میکروچیپ میکروکنترلرهای PIC میکروچیپ به خاطر قیمت پایین، دسترسی وسیع، متغیرهای گوناگون، سرعت، مصرف توان کم و مجموعه دستورات راحت، علاقهمندان زیادی دارد.
16C745 و 16C765 ، PIC هایی هستند که از سرعت پایین پورتهای IBS پشتیبانی میکنند.
معماری این تراشهها اعضای ارتقاء یافته سری 16C5x میکروچیپ میباشند.
کدهایی که برای 16C5x نوشته شدهاند قابل انتقال به 16C7x5 میباشند.
این تراشهها از 35 دستور پشتیبانی میکنند.
علاوه بر واسط USB، این تراشهها 19 پایه I/O دیگر نیز دارند و به علاوه تراشه 65 آنها بیت 8 بیت موازی برای ارتباط با یک میکروکنترلر با باس داده خارجی دارد.
8 پایه I/O قادرند به عنوان یک تبدیل کننده آنالوگ به دیجیتال عمل کنند.
یک USART ارتباطهای سنکرون و همزمان سریال را پشتیبانی میکند.
تراشه سه تایمر نیز داراست.
یک کریستال یا رزوناتور سرامیکی میتواند کلاک تراشه را تأمین کند.
حافظه برنامه نیز EPROM یا OTP PROM است.
کنترلر USB تراشه علاوه بر اندپوینت صفر از اندپوینتهای 1 و 2 با هر ترکیبی از ورودی و خروجی پشتیبانی میکند.
برای رهبری ارتباطات، تراشه دارای 7 رجیستر وضعیت و کنترلی است، و هر اندپوینت یک رجیستر کنترل و 4 بایت بافر توضیح دهنده دارد.
که حاوی اطاعاتی چون حالت data-toggle و تعداد بایتهای دریافتی یا ارسالی، است.
همچنین تراشه از تشخیص خودکار اتصال و یا جدا شدن از باس پشتیبانی میکند.
همانند تراشه enCoRes، این سری نیز نیاز به برنامه نسبتاً زیادی دارند.
میکروچیپ برنامههایی به زبان اسمبلی و C که به منظور انجام سرشماری و کارهای استاندارد USB نوشته شدهاند، نیز ارائه میدهد.
در مورد HIDها، این شرکت مثالی از کدهای نوشته شده برای ماوس دارد که میتوان برای HIDهای دیگر نیز از آن استفاده کرد.
NET2888 شرکت نت چیپ NET2888 هیچ حافظه برنامه یا دادهای علاوه بر بافرهای USBاش ندارد.
باس محلی آن دارای 5 بیت آدرس (A0-A4) و هشت بیت داده (D0-D7) است که امکان خواندن و نوشتن از 22 بایت آدرس را ایجاد میکند.
انتقال داده بر روی این باس از طریق خط ChipSelect برای انتخاب تراشه و سیگنالهای مجزای IOR و IOW برای خواندن و نوشتن ممکن میشود.
بیشتر میکروکنترلرها که از باس داده خارجی پشتیبانی میکنند میتوانند از این واسط استفاده کنند.
تراشه همچنین برای امکان انتقال سریعتر بلاکهای داده، از انتقالهای DMA نیز پشتیبانی میکند.
CPUای که NET2888 به آن متصل میشود نیز باید از DMA پشتیبانی کند.
در انتقالها DMA تراشه کنترل باس محلی را به عهده میگیرد.
در این نحوه انتقال، خواندن و یا نوشتن بلاک داده از و یا حافظه بدون نیاز به CPU خارجی انجام میشود و به این ترتیب نرخ انتقال افزایش مییابد.
در این روش تراشه مقداری از حافظه خود را برای ذخیره داده انتقالی اختصاص میدهد.
شمارنده آدرس DMA، آدرس بلوک داده را ذخیره میکند و رجیستر شمارنده بایت DMA، تعداد بایتهای مانده از بلاک را نگه میدارد.
در انتقالهای میزبان به دستگاه، پس از رسیدن داده، دستگاه دادهها را به حافظه اختصاصی کپی میکند و در انتقالهای دستگاه به میزبان، دستگاه داده را به بافر انتقال دهنده میفرستد و تا ارسال آنها صبر میکند.
تراشه بدون احتیاج به هیچ برنامه تراشه به غیر از اطلاعات ضروری (مانند شماره مشخصههای محصول و فروشنده) قادر است به خواستههای استاندارد پاسخ دهد.
کنترلر USB NET2888 از پنج اندپوینت و هر چهار نوع انتقال پشتبانی میکند.
32 بایتی که CPU میتواند با استفاده از باسهای آدرس و داده به آنها دسترسی داشته باشد وابسته به رجیسترهای درون تراشه است.
برای اندپوینت 1 و 2، CPU جانبی میتواند برای فرستادن و گرفتن دادههای USB از دو رجیستر میل باکس 8 بایتی استفاده کند.
اما در اندپوینتهای 3 و 4: CPU جانبی میتواند دادههای USB را از طریق دو بافر 64 بایتی بفرستد و بگیرد.
هر بافر از یک آدرس مجزا و یک رجیستر شمارنده که تعداد بایتهای درون بافر را مشخص میکند، استفاده مینماید.
دستگاه داده را به بافر انتقال دهنده میفرستد و تا ارسال آنها صبر میکند.
NET2888 به صورت خودکار دادههایی را که از میزبان میرسد ذخیره مینماید.
برای تشخیص دادههای رسیده از میزبان به اندپوینت 1، CPU جانبی میتواند یک بیت را که نشانه رسیدن داده است تغییر دهد یا اینکه به وقفهای که هنگام تنظیم این بیت رخ میدهد پاسخ دهد.
برای فرستادن داده از طریق اندپوینت 2 به سمت میزبان، CPU جانبی دادهها را در میل باکس انتقال مینویسد و بیت ذکر شده را ست میکند.
سپس NET2888 جزئیات مربوط به فرستادن دادههای USB را انجام میدهد.