دوستان پازجی سلام،

پس از تولید و عرضه‌ی بال ADC پازج، نحوه‌ی راه‌اندازی و استفاده از این بال برای بسیاری از کاربران جای سوال و ابهام بود. لذا بر آن شدیم تا آموزش صفر تا صد این موضوع را طی یک یا چند مقاله‌ی آموزشی در قالب یک پروژه عملی در اختیار علاقمندان قرار دهیم.

معرفی بال ADC پازج

بال ADC، افزونه‌ای است که یک مبدل آنالوگ به دیجیتال ۱۲ بیتی با سرعت حداکثر ۱MSPS را به برد پازج اضافه میکند. با کمک این بال میتوانید ۸ سیگنال آنالوگ را (بصورت مالتی پلکس شده) خوانده و مقدار دیجیتال آن را از طریق باس SPI به FPGA منتقل نمایید. تراشه‌ی بکار رفته در ساخت این بال، تراشه‌ی ADC128S102 محصول شرکت Ti است.

نکته‌ی قابل ذکر در مورد این تراشه ولتاژ رفرنس آن است که برابر با مقدار تغذیه‌ی اعمال شده به بخش آنالوگ (VA) است که میتواند مقداری در بازه‌ی 2.7V~5.25V باشد. به دلیل یکی بودن ولتاژ رفرنس و ولتاژ تغذیه‌ی آنالوگ، لازم است که کیفیت ولتاژ اعمالی به بخش آنالوگ در حد مطلوب و عاری از نویز باشد.

در شکل زیر شماتیک بال ADC پازج نمایش داده شده است. همانگونه که ملاحظه میکنید، ولتاژ بخش دیجیتال (VD) برابر 3.3 ولت است که از طریق کانکتور بال (wing) از روی برد پازج تامین می‌شود. ولتاژ بخش آنالوگ (VA) نیز برابر 5 ولت در نظر گرفته شده است که آن هم از طریق پین مخصوص تغذیه‌ی 5 ولت  موجود روی کانکتور برد پازج تامین میشود. همانگونه که اشاره شد، در تراشه‌ی ADC بکار رفته در این بال، ولتاژ VA همزمان بعنوان ولتاژ رفرنس تبدیل نیز بکار رفته است؛ با این احتساب این بال امکان خواندن سیگنال‌های آنالوگ در محدوده‌ی 0 تا 5 ولت را دارا می‌باشد*.

نکته‌ی قابل توجه در این میان، دقت و کیفیت ولتاژ تغذیه‌ی 5 ولت اعمالی به برد است. همانگونه که در صفحه‌ی راهنمای سخت‌افزاری برد پازج-1 عنوان شده است، تغذیه‌ی پیش فرض برد پازج، ولتاژ 5 ولت تامین شده از سمت پورت USB است که غالبا از دقت و کیفیت کافی برخوردار نیست. لذا به منظور برخورداری از دقت کافی در تبدیل سیگنالهای آنالوگ به دیجیتال به هنگام استفاده از این بال توصیه میشود تغذیه‌ی برد بصورت خارجی توسط یک منبع تغذیه‌ی 5 ولت با کیفیت تامین شود. فراموش نکنید که در این حالت لازم است تا جامپر انتخاب نوع تغذیه موجود روی برد پازج-1، بر روی حالت EXT قرار داده شود.

posedge_fpga_adc

شماتیک بال ADC پازج

*در صورت نیاز به تغییر ولتاژ رفرنس، میتوانید با جدا کردن بال از روی برد، ولتاژ مورد نظر را به پین مخصوص تغذیه‌ی 5 ولت (به تصویر شماتیک بال در ادامه توجه شود) اعمال کرده و سایر سیگنالها (سیگنالهای GND، 3.3V، DIN, DOUT, SCK, CS) را توسط جامپر وایر نری به مادگی به برد پازج متصل نمایید.

 

ارتباط با تراشه‌ی ADC128S102

با توجه به دیتاشیت تراشه‌ی ADC128S102، این تراشه از پروتکل‌های ارتباطی مختلفی نظیر SPI, QSPI, MICROWIRE پشتیبانی میکند. در این بین پروتکل SPI به دلیل محبوبیت بیشتر و فراگیرتر بودن، گزینه‌ی انتخابی ما برای اتصال به برد پازج می‌باشد.

نحوه‌ی ارتباط با این تراشه، پیکره بندی و دریافت دیتا از آن در بخش 7.5 دیتاشیت این تراشه به طور کامل تشریح شده است. این تراشه تنها یک رجیستر کنترلی دارد که حاوی شماره کانال آنالوگ مورد نظر است. این رجیستر یک رجیستر 8 بیتی است که بیت های شماره 3 و 4 و 5 مطابق جدول زیر حاوی آدرس کانال آنالوگ مورد نظر هستند و مابقی بیت‌های آن DONTCARE (بی اهمیت) هستند. داده‌های ارسالی از سمت کاربر به طور مستقیم درون این رجیستر نوشته میشوند. مطابق استاندارد SPI، با هر پالس کلاک (SCLK)، یک بیت داده از طریق پورت ورودی (DIN) به تراشه وارد، و همزمان یک بیت داده در پورت خروجی آن (DOUT) ظاهر میشود. نتیجه‌ی حاصل از تبدیل که یک عدد 12 بیتی است به ترتیب از پرارزش‌ترین بیت (MSB) به کم‌ارزش‌ترین بیت (LSB) در خروجی (پین DOUT) ظاهر میشود.

رجیستر کنترلی ADC

رجیستر کنترلی ADC

پیاده‌سازی

به منظور پیاده‌سازی یک ارتباط ساده با این تراشه با استفاده از بال ADC پازج، در گام اول نیاز به یک SPI IPCORE در مد Slave داریم. متاسفانه در مجموعه IP CORE های نرم‌افزار ISE، چنین CORE ی برای تراشه‌ی SPARTAN-6 وجود ندارد. اما در صورتی که به سمت استفاده از سافت کور Microblaze در طراحی‌مان برویم، در بین PCORE های موجود در نرم افزار Xilinx Platform Studio (XPS) چنین core ی وجود دارد. بنابراین دو دیدگاه کلی برای پیاده سازی این طرح وجود دارد:

1- استفاده از سافت کور Microblaze و PCORE ارتباط SPI

2- پیاده‌سازی مستیم ارتباط SPI، توسط یک SPI IPCORE غیرپولی

هر کدام از این روش‌ها، مزایا و معایب و طرفداران خاص خود را دارد. در ادامه‌ی این نوشته جزئیات پیاده‌سازی با استفاده از هر یک از این روش‌ها بصورت گام به گام تشریح خواهد شد.

آموزش ارتباط ADC با FPGA – قسمت دوم