در این سری آموزشهای ویدئوی که توسط مهندس “سیاوش ادیب” از گروه MicroLab تهیه شده است، تلاش شده است از صفر تا صد راهاندازی و استفاده از مبدل آنالوگ به دیجیتال ACD128S102 توسط تراشهی Xilinx SPARTAN-6 FPGA آموزش داده شود. بدین منظور ابتدا دیتاشیت تراشهی ADC128S102 بطور کامل بررسی شده و به نکاتی که به منظور استفادهی بهینه از این تراشه در فاز طراحی بایستی مورد توجه قرار گیرند اشاره شده است.
در ادامه به صورت گام به گام به توسعهی ماژولهای لازم جهت راهاندازی و ارتباط با ADC پرداخته شده است. ماژولهایی از جمله Clock Manager، ADC Data Multiplexer، Startup Handler و ADC128S102_driver.
سخت افزار مورد نیاز:
بخش اول: مقدمه
در این بخش ابتدا هدف و نقشه راه پروژه توضیح داده شده و در ادامه به طور خلاصه دیتاشیت ADC128S102 مورد بررسی قرار گرفته و ویژگیهای اساسی از جمله تعداد کانالها، رزولیشن و نرخ نمونه برداری آن بررسی میشود. در این پروژه از همه کانالهای ADC استفاده میشود.
بخش دوم : پیادهسازی ماژولهای Clock Manager و Startup Handler
ماژول بعدی که در این بخش پیاده سازی میشود Startup Handler میباشد. وظیفهی این ماژول این است که پس از پایان پیکرهبندی اولیه FPGA و زمانیکه FPGA شروع به کار میکند، این ماژول بقیهی ماژولها را تا مدتی در حالت ریست نگه میدارد.
همچنین یک ویرایشگر متن جذاب برای برنامهنویسی راحتتر (و البته در محیطی زیباتر!) به نام Sublime معرفی میشود که در طول پروژه به جای ویرایشگر متن نرم افزار ise از آن استفاده میشود. شما می توانید نحوه اضافه کردن Package VHDL به ویرایشگر Sublime را در بخش نهم مشاهده کنید.
بخش سوم: بررسی دقیقتر دیتا شیت ADC128S102
در این بخش، دیتا شیت ADC128S102 دقیقتر مورد بررسی قرار میگیرد . نحوه خواندن دادههای ADC ، باید به صورتی باشد که دادهها ثابت (Hold) شده باشند. بنابراین در این بخش، در مورد نحوه زمانبندی خواندن دادههای ADC توضیحاتی داده میشود. همچنین در این بخش دلیل انتخاب کلاک 32 مگاهرتز، توضیح داده میشود.
بخش چهارم: پیادهسازی ماژول ADC128S102
در این بخش ماژولی پیاده سازی شده است که بتواند با ADC128S102 ارتباط برقرار کند و آن را کنترل نماید. حالتیکه در این بخش، برای راهاندازی ADC در نظر گرفته شده است حالت Free running میباشد. در حالت Free running، کانالها به صورت مداوم بررسی و مانیتور میشوند. البته حالت دیگری برای راهاندازی ADC نیز وجود دارد و آن حالت Trigger میباشد، که در این حالت، نمونه برداری یکبار انجام شده و سپس ADC متوقف میشود.
بخش پنجم: ادامه پیاده سازی ماژول ADC128S102
این بخش ادامه بخش قبل است و در قسمتی از برنامه از ساختار record به منظور خوانایی و زیبایی کد استفاده شدهاست. این ساختار، شبیه structure ها در زبان c هست.
بخش ششم: ADC Data Multiplexer
این ماژول وظیفه دارد که، دادههای کانالی که توسط دیپسوئیچها، انتخاب میشوند را بر روی خروجی خود قرار دهد تا ماژول بعدی بتواند از آن استفاده کند و آنها را بر روی سون سگمنت نمایش دهد.
در این بخش دادههایی که از ADC دریافت میشود در یک آرایه دو بعدی (با طول 12 بیت و با عمقی برابر با 8 ) ذخیره میشود. سپس بر اساس دیپسوئیچها ، دادههای یک کانال انتخاب میشوند که در خروجی قرار بگیرند. در واقع طبق مقادیر دیپسوئیچها، به خانههای آرایه دو بعدی رجوع میشود و داده آن خانه، که همان کانال مورد نظر است، در خروجی قرار داده میشود سپس این خروجی به ماژول سون سگمت برای نمایش ارسال میشود.
بخش هفتم: Top Module
در این بخش تک تک ماژولهای نوشته شده به ماژول اصلی، اضافه میشوند و در پایان فایل ucf نیز به پروژه اضافه میشود، سپس پروژه سنتز و implement میشود.
بخش هشتم: مشاهده نتایج روی سون سگمنتها
در این بخش نتایج روی سون سگمنتهای موجود روی مگاوینگ LogiX1 نمایش داده میشوند. از آنجایی که در این پروژه از 8 کانال ADC استفاده شده است و طبیعتا نمایش هر 8 کانال بطور همزمان از طریق سونسگمنتها امکانپذیر نمیباشد، شماره کانال مورد نظر جهت نمایش از طریق دیپسوئیچهای روی مگاوینگ انتخاب میشود. اعدادی که روی سون سگمنتها نمایش داده میشوند بصورت Hexadecimal است و برای تبدیل آن به مقدار آنالوگ بایستی معادل decimal آن را بر عدد 4095 (که معادل1-212 است) تقسیم و نتیجه را در ولتاژ رفرنس که برابر 2/874 است ضرب کنیم. ملاحظه میشود که نتیجهی نمایش داده شده همراه با درصدی خطا است که به بررسی دلایل و رفع آن پرداخته میشود. یکی از دلایل اصلی ایجاد خطا، تنظیم نبودن امپدانس ورودی ADC است که میتوان از تقویت کنندهها برای تنظیم آن استفاده کرد اما در این بخش بدون استفاده از تقویت کنندهها و بصورت نرم افزاری و از طریق تغییر در برنامه، این مشکل حل شده است.
بخش نهم: اضافه کردن Package VHDL به ویرایشگر Sublime
در این ویدئو نحوه ی اضافه کردن VHDL packge به ویرایشگر Sublime Text آموزش داده می شود.
به همین روش می توانید Package های دیگه مثل Verilog و Python و . . . رو هم اضافه کنید.
دانلود فایل های پروژه:
عالی. بسیار مسلط و دقیق. ممنون
با سلام
ممنون بابت آموزش خوبتون. میخواستم بدونم ما برای خوندن پایه آنالوگ حتما باید از مبدل استفاده کنیم؟
یا اینکه میتونیم از پایه ورودی آنالوگ برد FPGA استفاده کنیم و توی برنامه مقدار آنالوگ تبدیل کنیم به دیجیتال
سلام.
بجز در موارد معدود، FPGA ها عموما مبدل ADC داخلی ندارند و الزاما بایستی از مبدل آنالوگ به دیجیتال خارجی استفاده کنید.
سلام.ممنون از زحماتتون. ممکن هست لینک ویدیوهای نحوه ارتباط ADC با FPGA را قرار بدید.
سلام. موقع پخش ویدئو روی آیکن شبیه چرخدنده کلیک کنید و گزینه ی دانلود را انتخاب کنید.
با سلام و احترام
فقط میتونم بگم واقعا عالی بود ، دمتون گرم
مسلط و دقیق و عالی، نه چیزی کم و نه چیزی زیاد، درود بر شما
سپاس فراوان
عالی بود
فقط یه سوال داشتم نحوه اتصال پایه های پین ها به FPGA را در این پروژه اموزش ندادید؟