اردیبهشت
آموزش ZYNQ- قسمت اول: ZYNQ چیست؟
سیر تکاملی دنیای دیجیتال با به وجود آمدن پردازشگرها تغییر اساسی پیدا کرد، در این روند تکامل، تمرکز اصلی در ساخت تراشهها بر دو بخش پردازندهها و میکروکنترلرها بودند. بخش پردازندهها متمرکز بر ساخت پردازنده ای با هدف دست یابی به سرعت بالا برای اجرای سیستم عامل بودند که این پردازنده ها معمولا به صورت عمومی طراحی میشوند، در بخش کنترلر نیز تمرکز اصلی بر کنترل و کاربرد در صنعت میباشد. که هدف، ساخت بلوک هایی به صورت ASIC برای کاربردهای خاص بود به گونه ای که یک کنترلر کوچک، ارزان و کم مصرف قابلیت راه اندازی و ارتباط با وسایل زیادی مانند شبکه، LCD و … را داشته باشد.
به مرور زمان با پیشرفت های اخیر و با محدود بودن حداکثر سرعت Clock، شاهد نزدیک شدن و ادغام این دو شاخه با یکدیگر هستیم. هم چنین نیاز دنیای دیجیتال به محصولات قابل حمل، به این روند رو به رشد، شتاب افزاینده ای داد. از این رو شرکت های مختلف سازنده تراشه، دست به ساخت سری جدیدی از آیسیها با نام SoC زدند. SoC به آیسیهایی گفته می شود که همه اجزای مورد نیاز برای اجرای یک سیستم عامل را روی تراشه دارند. علاوه بر آن دارای ادوات جانبی متعددی برای کنترل و ارتباط با دنیای بیرون هستند. برای مثال بلوک دیاگرام SoC از سری Snapdragon از محصولات شرکت Qualcomm در شکل ۱ نشان داده شده است.
شکل ۱ – Snapdragon 820
برخی از زیر سیستم های این SoC عبارتند از:
• پردازنده سفارشی سازی شده Kryo چهار هسته ای ۶۴ بیتی با فرکانس ۲٫۲GHz
• کنترلر حافظه DDR
• پردازنده DS با نام Hexagon 680
• پردازنده گرافیکی Adreno 530
• پردازنده تصویر با قدرت ۴K Ultra HD
• پردازنده ویدیویی ۴K برای پخش و دریافت تصویر و Codec
• امکانات ارتباطی مانند Ethernet, Wi-Fi, LTE, Bluetooth, NFC, USB, UART, …
تراشههای SoC عمدتا در ابعاد کوچک و مصرف پایین، قادر به اجرای سیستم عامل است و بسته به کاربردهای مختلف شامل قسمت های گرافیکی، DSP ، و … هستند.
۲-۲- پردازش ناهمگن و ناهمگن
سامانه¬های پردازشی به دو گونه همگن و ناهمگن تقسیم می شوند. در سیستم های همگن، همه پردازنده ها از یک جنس هستند و برای برنامه نویس تفاوتی نمی¬کند که هریک از Thread ها روی کدام پردازنده اجرا می¬شود. برای مثال یک کامپیوتر سرور ممکن است دارای ۱۶ پردازنده شرکت اینتل باشد که پردازش روی آن به صورت چند نخی است و همه دستورالعملها بر روی پردازندههای مشابه اجرا میشود. اما در سامانه¬های ناهمگن پردازندههای یک سیستم از یک جنس نیستند، برای مثال ممکن است بخشی از پردازش روی پردازنده مرکزی انجام شود و برخی دیگر در پردازنده گرافیکی پردازش شود. در این سبک برنامه نویسی متفاوت است هر سخت افزار برای کار خاصی بهینه شده است و برنامه نویس باید وظایف متناسب با هر سخت افزار را به آن سخت افزار محول کند.
در SoC ها پردازش معمولا به صورت ناهمگن انجام می¬شود. یعنی بخشی از پردازش روی CPU و بخشی در پردازشگر سیگنال دیجیتال و بخشی در GPU و …. انجام میشود. معمولا برای کارهای خاص، بخش های سخت افزاری (ASIC) روی پردازنده به عنوان یک زیر سیستم ساخته شده است. برای مثال اکثر پردازنده های موبایل که SoC هستند واحدی به نام ISP دارند که وظیفه آن پردازش تصویر است و یا ممکن است واحد DSP برای کاربردهای صدا و تصویر داشته باشند.
استفاده از سیستم پردازش ناهمگن باعث افزایش توان پردازشی نسبت به توان مصرفی میشود که این امر به معنی مصرف انرژی کمتر است. بنابراین SoC کوچک تر و ارزان تر از پردازندههای همگن است. در مجموع استفاده از SoC برای ابزار های قابل حمل مناسبتر است.
۲-۳- معرفی ZYNQ
در سال های اخیر، شاهد معرفی SoC های جدیدی از سوی شرکتهای مطرح تولید کننده FPGA بودیم. در این نسل از SoC ها شاهد ترکیب هستههای پردازنده ARM با FPGA هستیم. تفاوت عمده این SoC با دیگر تراشهها، انعطاف در پیادهسازی سختافزاری است. یکی از مهمترین کاربردهای ZYNQ، ساخت بلوکهایی به عنوان شتابدهنده سختافزاری در FPGA و اتصال آن به عنوان یک ابزار جانبی برای ARM است. همچنین وجودFPGA در این نوع SoC باعث انعطافپذیری بالایی در اتصال به لوازم جانبی و دیگر دستگاهها میشود و به راحتی می توان این مدل را به حسگرهای مختلف متصل کرد. به همین ترتیب، وجود یک پردازنده در کنار FPGA نیز میتواند کمک بسیار بزرگی برای طراح باشد که با حفظ منابع، FPGA بتواند الگوریتمهای ترتیبی را تحقق بخشد.
یک تراشه ZYNQ به دو قسمت تقسیم میشود:
۱٫ PS یا سیستم پردازش که بخش پردازنده ARM و ادوات های جانبی آن است که مانند ریزپزدازندهها عمل میکند.
۲٫ PL یا گیت¬های منطقی قابل برنامه ریزی، قسمت FPGA این SoC است که بسته به شماره تراشه، میتواند از خانواده ARTIX یا KINTEX یا سری Ultra Scale باشد.
حال این سوالات پیش می آیند :
• چرا ترکیب FPGA و پردازنده نیاز است؟
• چرا به صورت جداگانه یکFPGA و یک پردازنده را در بردهای مدار چاپی استفاده نکنیم؟
• چرا از ZYNQ استفاده کنیم؟
همانطور که میدانید، FPGA ها گیتهای قابل برنامهریزی هستند و میتوانند به صورت موازی کار کنند. اما بسیاری از الگوریتمها نیاز به برنامهنویسی خط به خط و ترتیبی دارند مانند الگوریتم های تطبیقی ، که شامل if و شرطهای زیادی هستند. اگر بخواهیم در FPGA این گونه برنامهها را پیادهسازی کنیم، بلوکهای زیادی برای این کار مصرف میشوند و از طرفی کارایی زیادی هم ندارند. معمولا if و else در FPGA منجر به ایجاد دو سخت افزار می شود یکی برای جواب درست شرط و یکی برای جواب غلط شرط استفاده می شود.
بطور مثال برای پیاده سازی سیستم مدیریت فایل FAT32 در FPGA نیاز به اجرای الگوریتمهای خط به خط و ترتیبی مانند دسترسی های مختلف و ترتیبی به نقاط مختلف حافظه و تصمیم گیری های زیاد بر اساس جداول FAT است. پیاده سازی این مدل الگوریتمها در FPGA دشوار است؛ زیرا علاوه بر این که زمانبر بوده منابع زیادی از FPGA را نیز برای این کار مصرف میکند. این دسته از مشکلات در استفاده از ابزارهای جانبی مانند http، دوربین یا راه اندازی USB و …. نیز وجود دارد.
یکی از کارهای معمول در این حوزه، استفاده از Soft Core ها است. به عبارت دیگر، قسمتی از بلوکهای داخلی FPGA را برای ساخت یک پردازنده اختصاص میدهند. این امر به معنی پیادهسازی یک میکروکنترلر کوچک در داخل FPGA است. از Soft Core ها برای پیادهسازی الگوریتمهای ترتیبی و خط به خط استفاده میشود. از معروف ترین این هسته ها در محصولات Xilinx، بلوک Micro Blaze می¬باشد که با زبان C کدنویسی می شود و مانند میکروکنترلر عمل میکند. شرکت Xilinx نسخه ای از لینوکس با نام پتالینوکس را برای آن ارائه کرده است.
همانطور که در شکل زیر مشخص است برای پیاده سازی بلوک Micro Blaze منابع زیادی از FPGA اشغال شده است؛ و این در مقایسه با واحد ARM دو هستهای که از منابع FPGA استفاده نمی¬کند بسیار زیاد است. باید به این نکته توجه داشت که حجم اشغال شده در تصویر زیر برای چیپ ZYNQ 7020 ی باشد و هسته Micro Blaze ممکن است در FPGA کوچکتر حتی تمام منابع را مصرف کنند.
شکل ۲ مقایسه Resource بین Soft Core و Hard Core
نمودار ۱- تفاوت سرعت Hard Core و Soft Core
از طرفی Soft core ها با وجود اشغال منابع زیاد، کارایی پایینی دارند. در ، مقایسه بین توانایی Soft core ، Power PC و ARM موجود روی پردازنده ZYNQ نشان داده شده است. Power PC ها در بعضی از مدل های Virtex FX وجود دارند. مشاهده میشود که توان پردازش هسته پردازندههای ARM بسیار بالاتر از دیگر پردازنده هاست. برای مقایسه بهتر، میکروکنترلر STM32F4 از شرکت ST توان پردازشی ۲۰۰ DMIPS را ارائه میدهد. درحالی که این عدد برای پردازنده ZYNQ حدود ۵۰۰۰ DMIPS است (۲۵ برابر سریعتر).
با توجه به اینکه Soft core ها بخش زیادی از منابع FPGA ها را مصرف میکنند، در پروژههای کوچک از ترکیب دو تراشه، یک میکروکنترلر مانند STM32F4 و یک FPGA مانند اسپارتان در یک PCB استفاده میشود. این ترکیب، قابلیت اجرای الگوریتمهای خط به خط، الگوریتم های کنترلی و بدون تاخیر را دارد و طراحی موفقی در سیستم های کوچک به شمار میرود. اما در طرحهای بزرگ که پردازش بالا یا نرخ تبادل اطلاعات بالایی بین PS و PL نیاز است این گونه طراحیها نمیتواند جوابگوی نیاز پروژه باشد. فرض کنید نیاز به جمعآوری اطلاعات فیلتر شده ۱۰ سنسور در کامپیوتر دارید که هریک با نرخ MSPS 1 و دقت ۱۶ بیت، داده برداری شده است. بعد از دریافت اطلاعات و فیلتر کردن آن در PL، نرخ داده ها حدود ۳۲۰ Mbps خواهد شد. اما این حجم اطلاعات را به سختی می توان بین دو تراشه روی PCB انتقال داد. به علاوه، پیادهسازی شبکه ۱G یا PCIe دشوار است. اما این حجم اطلاعات در ZYNQ به راحتی از PL به PSانتقال مییابد و با شبکه ۱G قسمت PS به راحتی میتوان آن را منتقل نمود. ارتباط PS و PL در ZYNQ به کمک باس AXI انجام میشود و قابلیت۱۲ Gbps را دارد.
شرکت Xilinx، ZYNQ را برای برطرف کردن این نیاز ارائه داد. این SoC ترکیب بسیار انعطافپذیری بین FPGA و ریزپزدازنده ARM است. میتوان الگوریتمهای دقیق سیگنال و کنترلی را در FPGA انجام داد یا از FPGA به عنوان یه واحد شتابدهنده سختافزاری-محاسباتی برای ARM ها استفاده کرد. همچنین می توان روی این ARM های نسبتا قدرتمند از سیستم عامل لینوکس استفاده کرد. لینوکسی که قابلیت لینک شدن با FPGA پر سرعتی را دارد که ادوات شتاب دهنده پردازشی یا کنترلی روی آن پیاده شده است.
اما این FPGA از نظر مقدار منابع در مقایسه با دیگر FPGA های شرکت زایلینکس در کجا قرار دارد؟
برای پاسخ دادن به این سوال، یکی از مدل های نسبتا پایین ZYNQ با شماره ۷z020 را با یکی از FPGA های معمول بازار داخلی یعنی Spartan 6 مدل LX9 مقایسه میکنیم. در جدولهای زیر مشخصات آنها ذکر شده است. همانطور که میبینید این SoC دهها برابر اسپارتان ۶ منبع در اختیار شما میگذارد.
جدول ۱- مشخصات فنی SPARTAN-6
جدول ۲ – مشخصات قسمت PL از ZYNQ 7020
در قسمت PS ، پردازنده ARM استفاده شده نیز نسبت به دیگر پردازندههای ARM توان متوسطی دارد. پردازنده دو هسته ای ARM cortex A9 با کلاک حدود ۷۰۰ MHz به همراه شتاب دهنده DSP NEON. شکل زیر نمایی تصویری از لینوکس توزیع Ubuntu است که بر روی ZYNQ 7020 اجرا شده است. نقطه ضعف این SoC نبود کارت گرافیک است و همچنین برای راه اندازی تصویر باید در قسمت PL یک شتاب دهنده گرافیکی پیاده سازی شود.
شکل ۳ – تصویری از لینوکس برد ZB-ZYNQ
ترکیب ARM و FPGA در یک SoC ترکیب بسیار قدرتمندی است. استفاده از RAM DDR3 به مقدار ۱گیگا بایت در کنار FPGA، قدرت پیادهسازی و انعطافپذیری ویژهای به طراح میدهد. همچنین استفاده از این SoC باعث کوچک شدن مدارات الکترونیکی میشود. سیستم عامل لینوکس نیز امکان استفاده از کتابخانههای سطح بالا را در سیستم فراهم میکند.
نکته مهم دیگر این SoC، قیمت آن است. این SoC ها به نسبت FPGA و ARM مشابه در همین سطح قیمت پایینتری دارند که دلیل دیگری برای استفاده در تجهیزات است.
اما استفاده از ZYNQ معایبی هم دارد که از آنها میتوان به موارد زیر اشاره نمود:
• پیچیدگی بالا: به دلیل وجود ARM Cortex A9 و FPGA و … در ابتدای کار ممکن است کاربر کمی در استفاده از آن دچار سردرگمی شود، که در این مرجع سعی بر آموزش استفاده و شروع به کار سریع با این تراشه را داریم. هم چنین کتابخانه و پلتفرمهای Xilinx به گونهای نوشته شده است تا کاربر کمترین درگیری با سختافزار را داشته باشد.
• فرم قالب قطعه BGA: متاسفانه در این سری و همه سریهای جدید، تقریبا همه تراشهها در فرم های پایه بندی BGA عرضه میشوند. این کار به دلیل وجود پایههای زیاد تراشهها است. برای مثال یکی از کوچکترین تراشههای ZYNQ که در این برد نیز به کار رفته ۴۰۰ پایه دارد.
در مجموع، تراشههای جدید به به سمت BGA و بردهای چندلایه پیش میروند، بهترین راه، برای استفاده از این نوع تراشهها، به کارگیری SoM است. SOM به ماژولهایی گفته میشود که تمامی لوازم جانبی برای استفاده از یک SoC را داراست. معمولا در SOM فرم پایه همه قطعات به صورت BGA است و سرعت بالا نظیر DDR3 و لایه فیزیکی شبکههای ۱G، حافظه های NAND و …، همچنین تغذیهها و لوازم جانبی دیگر نیز قرار دارند تا کاربر نیازی به طراحی بردهای مدار چاپی در فرکانس بالا و چندلایه نداشته باشد و فقط لوازم جانبی مورد نیاز پروژه را در یک برد دو لایه طراحی نماید.
بدون ديدگاه