<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های fpgairan</title>
        <link>https://virgool.io/feed/@fpgairan</link>
        <description>اجرای پروژه های FPGA ، برگزاری دوره های آموزشی و معرفی بردهای پردازشی</description>
        <language>fa</language>
        <pubDate>2026-06-17 13:11:45</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/244301/avatar/REJxdP.png?height=120&amp;width=120</url>
            <title>fpgairan</title>
            <link>https://virgool.io/@fpgairan</link>
        </image>

                    <item>
                <title>فاکتور های مهم در خرید برد FPGA</title>
                <link>https://virgool.io/@fpgairan/%D9%81%D8%A7%DA%A9%D8%AA%D9%88%D8%B1-%D9%87%D8%A7%DB%8C-%D9%85%D9%87%D9%85-%D8%AF%D8%B1-%D8%AE%D8%B1%DB%8C%D8%AF-%D8%A8%D8%B1%D8%AF-fpga-jygvjbcrgyok</link>
                <description>قیمتقیمت یکی از گزینه هایی هست که توی خرید برد FPGA بهش باید توجه کرد البته ممکنه گزینه اول نباشه اما ما اول آوردیمش! البته قیمت به خیلی از عوامل دیگه وابسته خواهد بود مثلا اینکه شما در پروژه تون نیاز به چه حجمی و سرعتی از پردازش داشته باشید ممکنه FPGA از نوع Kintex7 رو انتخاب کنید یا Kintex Ultrascale+ که خودش تفاوت بسیار زیادی رو ایجاد خواهد کرد در قیمت.Interfaceمثلا اینکه آیا برد مورد نظر شما باس PCIe داشته باشه یا نه؟خود PCIe هم نمونه های مختلفی داره از نظر نسل PCIe و یا سرعت تبادل اطلاعات و اینکه 32 بیت باشه یا 64 بیت و همچنین Interface های دیگه مثل USB ، Ethernet، CAN و …میزان منابع سخت افزاری در FPGAمثلا توی طراحی شما به چه تعداد DSP نیاز خواهید داشت؟فرکانس کاری سیستممثلا آیا FPGA شما قراره با یک ادوات جانبی پرسرعت ارتباط برقرار کنه؟ و نیاز به پردازش فوق سریع داره؟میزان توان مصرفمثلا آیا با اینکه برد توان زیادی مصرف کنه مشکل ندارید و یا ادوات تغذیه، جریان مصرفی رو تامین میکنه؟منبعراهنمای خرید برد fpga - iranfpga</description>
                <category>fpgairan</category>
                <author>fpgairan</author>
                <pubDate>Mon, 21 Sep 2020 19:12:17 +0330</pubDate>
            </item>
                    <item>
                <title>راهنمای خرید برد داده برداری – هرآنچه باید درباره برد داده برداری بدانید!</title>
                <link>https://virgool.io/@fpgairan/%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C-%D8%AE%D8%B1%DB%8C%D8%AF-%D8%A8%D8%B1%D8%AF-%D8%AF%D8%A7%D8%AF%D9%87-%D8%A8%D8%B1%D8%AF%D8%A7%D8%B1%DB%8C-%D9%87%D8%B1%D8%A2%D9%86%DA%86%D9%87-%D8%A8%D8%A7%DB%8C%D8%AF-%D8%AF%D8%B1%D8%A8%D8%A7%D8%B1%D9%87-%D8%A8%D8%B1%D8%AF-%D8%AF%D8%A7%D8%AF%D9%87-%D8%A8%D8%B1%D8%AF%D8%A7%D8%B1%DB%8C-%D8%A8%D8%AF%D8%A7%D9%86%DB%8C%D8%AF-toiywyoikcl8</link>
                <description>سلام توی این مطلب میخایم کمک کنیم به انتخاب افرادی که قصد دارند برد داده برداری یا Data acquisition بخرند. خب مهمترین قسمت در خرید برد داده برداری ADC ها هستند که میخایم به بررسی خصوصیت اونها بپردازیم.1- معنای اصطلاحات ADC و DACADC : Analog to Digital ConvertersADC عمل تبدیل داده آنالوگ به دیجیتال را انجام میدهد و DAC برعکس کار ADC رو انجام میده یعنی تبدیل داده های دیجیتال به آنالوگ.2- بررسی تمام خصوصیات ADC برای خرید برد داده برداریجهت کمک به خرید یک برد داده برداری که مناسب داده پردازی باشد باید خصوصیات ADC رو مورد بررسی قرار دهیم.(SNR (Signal to Noise Ratioاصطلاحاً نسبت سیگنال به نویز است و به این صورت تعریف میشود که، نسبت توان سیگنال به توان نویز در آن سیگنال اندازه گیری شده.به بیان بهتر زمانی که از یک سیگنال به عنوان مثال صوتی نمونه برداری میکنیم اگر SNR ، 100 دسیبل باشد به این معناست که نسبت سطح سیگنال صوتی به سطح سیگنال نویز 100 برابر بیشتر است و این سیستم از یک سیستم دیگر که SNR 90 دارد بهتر خواهد بود، پس هرچه میزان SNR بیشتر باشد، به دقت بیشتری دست پیدا خواهیم کرد و یا هرچه به دقت بالاتری نیاز باشد باید به سمت ADC با SNR بالاتر رفت.SFDRیکی از نکاتی که در خرید برد داده برداری باید به آن دقت کرد میزان SFDR است که به اختلاف بالاترین توان قابل اندازه گیری در ADC از بالاترین سطح نویز SFDR گفته میشود، که مشخصا هرچه به دقت بالاتری نیاز داشته باشیم باید مقدار بیشتری باشد.این مقدار به عنوان مثال میتواند 80 دسیبل باشد. البته در مواردی به این صورت تعریف میشود که به اختلاف بالاترین توان سیگنال اندازه گیری شده در ADC از بالاترین سطح نویز SFDR گفته می شود.?INLاین پارامتر مخففی از Integral Non-Linearity است که میزان غیر خطی بودن ADC را نشان میدهد، غیر خطی بودن در واقع اختلافی بین مقدار واقعی و اندازه گیری شده است که نمونه آن را در تصویر مشاهده میکنید.?DNLاین ویژگی مخفف Differential Non-linearity است و میتوان آن را میزان رُند شدن ولتاژ ورودی جهت تبدیل به مقدار دیجیتال تفسیر کرد، در تصویر مقادیر DNL مشخص شده است که هرچه مقدار کمتری باشد ADC از دقت بالاتری برخوردار است. باید به این نکته توجه کرد که DNL با رزولوشن رابطه عکس دارد.?Powerمیزان توان مصرفی یکی دیگر از خصوصیاتی است که باید به آن توجه کرد، این خصوصیت مخصوصا در ADC هایی که سرعت بالایی دارند بیشتر مورد اهیمت قرار میگیرد چرا که توان بالاتری نیز مصرف میکنند.(Input range (FSRاین مشخصه که مخفف Full scale range است به معنای محدوده ی اندازه گیری ولتاژ است که باید قبل از خرید برد و یا ADC مربوطه به آن توجه کرد. در تصویر خط قرمز رنگ سیگنالی است که به دلیل عدم انتخاب درست ADC قسمت هایی از آن بریده شده است.توجه کنید که بهترین حالت این است که FSR اندکی (به عنوان مثال 5%) از بیشترین رنج ولتاژ ورودی شما بزرگتر باشد تا بتوان از همه ی دقت ADC در اندازه گیری استفاده کرد.?Resolutionاصطلاحا به عرض بیت ADC رزولوشن نیز گفته میشود که هرچه بیشتر باشد، در نهایت دقت بیشتری در اندازه گیری خواهیم داشت. معمولا این خصوصیت در ADC ها از 10 تا 24 بیت است که بسته به نوع اندازه گیری میتوان بهترین رزولوشن را در خرید برد داده برداری انتخاب کرد.به این نکته باید توجه کرد که قیمت ADC با ضرب رزولوشن در سرعت سمپل برداری، رابطه مستقیم دارد.(Bit rate (Sampling Frequencyبیت ریت در واقع سرعت ADC را مشخص میکند. یک رابطه مشهور به نام رابطه نایکوئیست وجود دارد که جهت بازسازی یک سیگنال آنالوگ، میزان داده برداری از آن سیگنال حداقل باید دوبرابر بالاترین فرکانس موجود در آن سیگنال آنالوگ باشد.معنای متفاوت این قانون به این شکل هست که جهت جلوگیری از پدیده ی Aliasing باید فرکانس های بالاتر از نصف سرعت اندازه گیری ADC را فیلتر کنیم. این فیلتر در بعضی از ADC ها وجود دارد اما در بعضی دیگر باید به صورت دیجیتال یا آنالوگ فیلتر شوند.ENOBاین خصوصیت مخفف effective number of bits  است که به معنای تعداد بیت های موثر است.در بیت های اندازه گیری شده ADC بیت های کم ارزشی وجود دارند که به طور کلی همیشه نویز هستند که معمولا در بهترین حالت یک بیت همیشه خطا خواهد بود.پس در واقع ENOB به تعداد بیت هایی اشاره دارد که بیانگر سیگنال باشند( نویز نباشند). البته این مقدار به صورت اعشاری بیان میشود نه صحیح به عنوان مثال در یک ADC با عرض بیت 12، ENOB میتواند 10.3 باشد.Bandwidthبه زبان ساده پهنای باند به معنای محدوده ی فرکانس هایی هست که ADC اندازه گیری میکند، بقیه فرکانس هایی که توان اندازه گیری شده از آنها کمتر از یک دوم بالاترین توان اندازه گیری شده باشد جز این محدوده به حساب نخواهند آمد.InterfaceInterface در واقع به این معناست که ADC با چه پروتوکلی داده های دیجیتال اندازه گیری شده را ارائه میدهد که معمولا ADC ها از اینترفیس SPI جهت ارسال داده ها استفاده میکنند.به این نکته در خرید برد داده برداری توجه بفرمایید که برخی بردها این مزیت را به شما ارائه میدهند که خواندن سیگنال از ADC را به صورت رایگان به شما ارائه میدهند.فیلتر ورودیطبق قانون نایکوئیست گفتیم که باید فرکانس های پایین تر از نصف سرعت سمپل برداری فیلتر شوند که بعضی از برد ها این قابلیت را ارائه میکنند که به صورت آنالوگ و یا دیجیتال فرکانس های بالا را فیلتر کنند.AC-coupler و DC-couplerدر خرید برد داده برداری حتما به این مشخصه توجه کنید چرا که کوپلاژ AC بیشتر اوقات به معنای قرار دهی یک فیلتر خازنی در مسیر سیگنال و حذف کردن مقدار DC سیگنال است.این مورد برای زمانی مناسب خواهد بود که اندازه گیری تغییرات سیگنال مد نظر است و تغییرات سیگنال در میزان DC سیگنال گم میشود و دقت نکردن به این موضوع میتواند دقت اندازه گیری را کاهش دهد. اما زمانی که میزان بایاس و یا DC سیگنال مد نظر باشد باید به وجود DC-coupler دقت کرد، در واقع در این حالت قسمت DC و AC سیگنال هر دو اندازه گیری خواهند شد.channelنکته دیگری که واضح است تعداد کانال های اندازه گیری است، که با توجه به تعداد داده هایی که نیاز به اندازه گیری باشد انتخاب میشود.دمای قابل تحملدر ADC ها استانداردهای دمایی وجود دارد که میزان دمای قابل تحمل آنها را بیان میکند که اگر هدف کار کردن برد در شرایط سخت باشد باید به سمت خرید بردهایی که استاندارد دمای نظامی دارند رفت.تامین کلاکتامین کلاک ADC میتواند به روش های مختلفی انجام شود، از روی برد، با اسیلاتور، از طریق کابل خارجی و … که اگر به این نکته توجه نکنید میتواند پس از خرید برد شما را درگیر جزییات کند.منبعخرید برد داده برداری</description>
                <category>fpgairan</category>
                <author>fpgairan</author>
                <pubDate>Wed, 16 Sep 2020 14:55:31 +0430</pubDate>
            </item>
                    <item>
                <title>ویدیوی آموزشی پاسخ به سوال : FPGA چیست ؟</title>
                <link>https://virgool.io/@fpgairan/%D9%88%DB%8C%D8%AF%DB%8C%D9%88%DB%8C-%D8%A2%D9%85%D9%88%D8%B2%D8%B4%DB%8C-%D9%BE%D8%A7%D8%B3%D8%AE-%D8%A8%D9%87-%D8%B3%D9%88%D8%A7%D9%84-fpga-%DA%86%DB%8C%D8%B3%D8%AA-jicxsobmkrbi</link>
                <description>1- زبان توصیف سخت افزار چیست؟برای اینکه بفهمیم FPGA چیست ، فرض می کنیم که شما با استفاده از کد ها یک برنامه را می نویسید.روشی که معمولاً این کد کار می کند این است که به دستورالعمل هایی کامپایل می شود که روی یک پردازنده اجرا می شوند.اما شما می توانید آن را کمی متفاوت بنویسید و آن سنتز می شود تا به طور موثر بر روی FPGA اجرا شود.این نوع کد ، یک زبان توصیف سخت افزار نامیده می شود.2- FPGA چیست ؟سنتز فرآیند نگاشت این کد در بلوک های فیزیکی سخت افزار است.این بلوک های سخت افزار، کاملاً از رجیسترها و بلوک های دیجیتال تشکیل شده است.ترفند این است که بلوک های دیجیتال را می توان با استفاده از جداول LUT پیاده سازی کرد.پس اگر یک دسته LUT را کنار هم قرار دهید و آنها را قابل برنامه نویسی کنید، سپس یک ساختار سوییچ به آن اضافه کنید که بتواند همه آنها را به هم متصل کند و بعد به کاربر اجازه دهید که LUT ها را دوباره طوری که خودش می خواهد برنامه نویسی کند، حالا یک دستگاه مستقل داریم که می تواند هر کدی که ما بخواهیم، اجرا کند که به این دستگاه FPGA گفته می شود. https://www.aparat.com/v/5cTo0 برای آشنایی بیشتر با مفهوم FPGA، ویدیوی بالا را مشاهده نمایید.FPGA چیست ؟ - IRANFPGA</description>
                <category>fpgairan</category>
                <author>fpgairan</author>
                <pubDate>Wed, 09 Sep 2020 11:23:09 +0430</pubDate>
            </item>
                    <item>
                <title>بلاک DMA چیست و چه کاری در FPGA ها انجام می دهد؟</title>
                <link>https://virgool.io/@fpgairan/%D8%A8%D9%84%D8%A7%DA%A9-dma-%DA%86%DB%8C%D8%B3%D8%AA-%D9%88-%DA%86%D9%87-%DA%A9%D8%A7%D8%B1%DB%8C-%D8%AF%D8%B1-fpga-%D9%87%D8%A7-%D8%A7%D9%86%D8%AC%D8%A7%D9%85-%D9%85%DB%8C-%D8%AF%D9%87%D8%AF-xgzxb5ppq0jq</link>
                <description>مروری بر ip block های VDMAهمون طور که در بخش axi توضیح دادیم هر تراشه از بلاک هایی تشکیل شده که اطلاعات رو بین هم منتقل می کنن. یکی از این بلاک ها، بلاک DMA هست .حالا ببینیم این بلاک چه کاری انجام می دهد؟(DMA (Direct Memory Accessاین بلاک برای دسترسی مستقیم به حافظه به کار می‌ره و این امکان رو میده که داده ها از یه بخش سیستم به بخش دیگه منتقل شن‌. ساده ترین کاربردش این هست که داده ها رو از یه قسمت حافظه به قسمت دیگه منتقل می کنه. هم چنین می تونن داده ها رو از هر تولید کننده داده (مثلا ADC) برای هر مصرف کننده داده بفرسته.(VDMA (Video Direct Memory Accessدر این بلاک axi قادر هست اطلاعاتی که در قالب memory mapped هستن رو به stream تبدیل کنه.(این قابلیت در DMA هم وجود داره)از این بلاک برای پردازش ویدیو در fpga استفاده میشه . در واقع axi این بلاک پهنای باند زیادی داره که می تونه پروتکل های ویدیو رو ساپورت کنه .خیلی از اپلیکیشن های ویدیو به بافر هایی نیاز دارن که بتونه تغییرات نرخ ارسال فریم ها و همین طور تغییر ابعاد تصاویر رو هندل کنه. و از نکات مثبت این بلاک اینه که این قابلیت رو داره.در واقع از نقاط قوت این بلاک این هست که میشه پیش پردازش های اولیه رو مثل تغییر رزولوشن , زوم کردن , cropping  و .. انجام داد.تفاوت های این دو چیست؟در axi VDMA قابلیت های جدیدی مثل سنکرون کردن فریم های دریافتی با استفاده از بافر های چرخشی ، تغییر دادن رزولوشن و .. وجود داره. ولی در axi DMA دسترسی به حافظه به صورت مرسوم و قدیمی انجام میشه و اطلاعاتی که به صورت stream دریافت میشن به همون ترتیب در DDR های حافظه ذخیره میشن و قابل تغییر نیستن.منبعvdma - iranfpga</description>
                <category>fpgairan</category>
                <author>fpgairan</author>
                <pubDate>Sun, 06 Sep 2020 11:08:46 +0430</pubDate>
            </item>
                    <item>
                <title>میکروبلیز چیست ؟ معرفی MicroBlaze و مقایسه آن با ZYNQ</title>
                <link>https://virgool.io/@fpgairan/%D9%85%DB%8C%DA%A9%D8%B1%D9%88%D8%A8%D9%84%DB%8C%D8%B2-%DA%86%DB%8C%D8%B3%D8%AA-%D9%85%D8%B9%D8%B1%D9%81%DB%8C-microblaze-%D9%88-%D9%85%D9%82%D8%A7%DB%8C%D8%B3%D9%87-%D8%A2%D9%86-%D8%A8%D8%A7-zynq-vpookxj0sprl</link>
                <description>معرفی MicroBlaze : میکروبلیز چیست ؟در این مقاله قرار است بفهمیم که میکروبلیز چیست و چه تفاوتی با ZYNQ دارد؟میکروبلیز MicroBlaze یک هسته نرم افزاری میکروپروسسور است که برای FPGA طراحی شده است.از این پردازنده می توان در حافظه های general purpose و قطعات منطقی fpga استفاده کرد.در گذشته برای میکروبلیز از اتصال هسته (core connect) به عنوان باس استفاده می شده است.ولی به دلیل سرعت کم آن، امروزه از AXI interconnect بدین منظور بهره می برند.برای دسترسی به حافظه محلی، میکروبلیز از یک باس اختصاصی LMB استفاده می کند که باعث سرعت بالای سیستم می شود.مهمترین ویژگی های میکروبلیز چیست ؟از مهمترین ویژگی های میکروبلیز می توان به تنظیم مشخصاتی مانند اندازه حافظه cache و پریفرال ها (peripherals) توسط کاربر اشاره کرد.در واقع همین ویژگی مهمترین برتری میکروبلیز MicroBlaze در برابر ZYNQ به شمار می رود.زیرا باعث انعطاف پذیری آن در طراحی نسبت به پردازنده های ARM در دستگاه ZYNQ می شود.همچنین با یک واحد مدیریت حافظه می توان از آن به عنوان میزبان برای سیستم عامل هایی مانند Linux kernel استفاده کرد.تفاوت ZYNQ و میکروبلیز چیست ؟قابل ذکر است که MicroBlaze در مقایسه با دیگر واحد های پردازش (مانند Zynq و ARM Cortex-A9) از توان عملیاتی کمتری برخوردار است.پیش از اختراع ZYNQ ، پردازنده ها شامل دو بخش Programmable Logic و Processing System بودند که بوسیله FPGA به هم متصل می شدند.با آمدن ZYNQ به عنوان آخرین نسل SOC شرکت Xilinx تغییرات زیادی در ساختار آن پدید آمد.معماری ZYNQ چگونه است؟معماری ZYNQ تلفیق دو هسته ARM Cortex-A9 با یک FPGA است.رابط (interface) مورد استفاده در این معماری AXI) Advanced eXtensible Interface) است که به دلیل پهنای باند زیاد و تاخیر کم متداول شده و به عنوان رابط استاندارد در سیستم های جدید باعث کاهش هزینه و اندازه فیزیک سیستم می شود.تصویر، طرحی کلی از ZYNQ را نشان می دهد.میکروبلیز - iranfpgaمنبع</description>
                <category>fpgairan</category>
                <author>fpgairan</author>
                <pubDate>Fri, 04 Sep 2020 23:32:25 +0430</pubDate>
            </item>
                    <item>
                <title>سنتز در FPGA ها به چه معناست و آیا اهمیتی دارد که جزئیات آن را یاد بگیریم؟</title>
                <link>https://virgool.io/@fpgairan/%D8%B3%D9%86%D8%AA%D8%B2-%D8%AF%D8%B1-fpga-%D9%87%D8%A7-%D8%A8%D9%87-%DA%86%D9%87-%D9%85%D8%B9%D9%86%D8%A7%D8%B3%D8%AA-%D9%88-%D8%A2%DB%8C%D8%A7-%D8%A7%D9%87%D9%85%DB%8C%D8%AA%DB%8C-%D8%AF%D8%A7%D8%B1%D8%AF-%DA%A9%D9%87-%D8%AC%D8%B2%D8%A6%DB%8C%D8%A7%D8%AA-%D8%A2%D9%86-%D8%B1%D8%A7-%DB%8C%D8%A7%D8%AF-%D8%A8%DA%AF%DB%8C%D8%B1%DB%8C%D9%85-ynu3vcccgf0k</link>
                <description>سنتز در FPGA هابیایید برای درک بهتر معنا و مفهوم سنتز در FPGA ها، با یک مثال ساده شروع کنیم.اگر در دوران مدرسه، خوب به حرفهای معلم علوم گوش کرده باشید، معنای سنتز را یاد گرفته اید! البته معلم علوم بنده، عموی من بود.به خاطر همین، برای اینکه به پدرم نگوید که من درس نمی خوانم، مجبور بودم حداقل درس علوم را خیلی خوب بخوانم.خلاصه اینکه در درس علوم خواندیم که گیاه ها فتوسنتز می کنند ( شاید گیاه ها FPGA را از ما بهتر بلدند ) فتوسنتز ینی تبدیل نور به یه چیز دیگه..، اینجا کلمه ی سنتز مورد نظر ما هست که ینی تبدیل..سنتز در FPGA ینی تبدیل کدی که ما مینویسیم به سخت افزاردرواقع نرم افزارهایی که کد رو سنتز میکنند دارن ساختار سخت افزار رو به زبان انسان نزدیکتر میکنن اما اگه واقعا قرار باشه برنامه رو به صورت حرفه ای و بهینه بنویسیم باید بدونیم پشت صحنه ی سنتز چه اتفاقی داره میوفتهدلایل ضرورت یادگیری نحوه ی سنتز مدار1- تغییر ساختار کد جهت پیاده سازی در سیستم های دیگرفرض کنید توی یکی از FPGA های شرکت Xilinx کد HDL نوشتید اما پروژه قراره توی یک FPGA دیگه مثلا شرکت (Intel Altera) پیاده سازی بشه2- بهینه سازی کد جهت دستیابی به توان پایینتر، عملکرد بالاتر و استفاده از منابع سخت افزاری کمترببینید رک بگم بهتون کد رو خیلیا مینویسن اما توی پروژه های بزرگ اگه بهینه نوشته نشه، همون که نوشته نشه سنگین تره3- پیدا کردن مسیر بحرانیتوی FPGA یه مفهوم مهم داریم به نام Critical Path ینی مسیر بحرانی، چه زمانی استفاده میشه؟وقتی که توی یک پروژه مخابراتی و یا نظامی کد HDL نوشته شده اما فرکانس کاری مدار پایینه، چه باید کرد؟ ببینید از من به شما نصیحت “توی یک سیستم، سرعت سیستم رو کندترین قسمت سیستم تعیین میکنه، اگه بخاید سیستم سریع بشه باید بگردید مسیربحرانی و یا همون قسمت کند رو پیدا کنید که راهش همون یادگیری نحوه ی سنتز هستش”4- تاثیر سنتز در FPGA بر مراحل بعدیبعضی اوقات سنتز مدار مشکلی نداره، فرکانس کاری مدار هم اصلا برامون مهم نیست و به نظر همه چیز عالی میاد،، بازهم نیاز به یادگیری نحوه ی سنتز مدار هست! چرا که برنامه نوشته شده جهت پیاده سازی بعد از سنتز FPGA باید یک سری مراحل دیگه رو هم طی بکنه مثل مکان یابی و مسیریابی … که اینجا سنتز در مراحل بعدی تاثیرگذار خواهد بود.5- استفاده صحیح از منابع جهت پیاده سازی حافظه هاتوی FPGA دو نوع حافظه داریم حافظه های Block RAM و حافظه های distributed RAMs که اولی حافظه های تعبیه شده در FPGA هست و فقط به عنوان حافظه استفاده میشه و دومی با استفاده از LUT ها ساخته میشه، اولی حجم بیشتری برای ذخیره سازی داره دومی کمتر، نحوه استفاده از این حافظه ها هم باید به صورت بهینه باشه مثلا برای جابجایی یک بار 9 تنی بصرفه نیست که از چندین وانت استفاده بشه به جای یک کامیون ده تن همونطوری که به صرفه نیست برای مسافرت چند نفر یک اتوبوس را اجاره کنیم!6- همون 5 مورد کافیه ولی …هرچند دلایل بازم هست اما همون دلایل کافیه که نحوه سنتز مدار رو یاد بگیریدیک نکته دیگه که باید بهش توجه کنید اینه که ابزار سنتز مداری که ما ازش استفاده میکنیم اسمش هست Vivado synthesis tool ابزارهای دیگه ای هم جهت سنتز مدار هستند که رفتارها و البته قابلیت های مشابهی دارند.مثال سنتز در FPGAبیاید یک نمونه برنامه نویسی HDL و بهینه سازی اون جهت سنتز بهتر رو بررسی کنیم.اول یه سیگنال تعریف میکنیم و بعد برنامه رو مینویسیم.Signal s:std_logic_vector(2 downto 0);قسمتی از برنامه به صورت زیر نوشته شدهIf(s&gt;=4)thenB&lt;=a;End if;اما اگه به سیگنال s که یه سیگنال سه بیتی هست توجه کنید متوجه میشید که میتونیم فقط یک بیتش رو معیار قرار بدیم، نه هر سه بیتش.برای اینکه هم سرعت مدار بالاتر بره هم از منابع کمتری استفاده کرده باشیم.If(s(2)=’1’)thenB&lt;=a;End if;نحوه پیاده سازی کد در سخت افزار رو در آینده بیشتر توضیح خواهیم داد.ولی خلاصه یادتون باشه که نحوه سنتز مدار بحث بزرگ و البته مهمیه!موفق باشید.منبع سنتز در FPGA ها - iranfpga</description>
                <category>fpgairan</category>
                <author>fpgairan</author>
                <pubDate>Sat, 29 Aug 2020 14:43:44 +0430</pubDate>
            </item>
                    <item>
                <title>VIVADO HLS نرم افزار قدرتمند برنامه نویسی برای طراحی سخت افزار</title>
                <link>https://virgool.io/coderlife/vivado-hls-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-%D9%82%D8%AF%D8%B1%D8%AA%D9%85%D9%86%D8%AF-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%B7%D8%B1%D8%A7%D8%AD%DB%8C-%D8%B3%D8%AE%D8%AA-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-lcc5icooar1c</link>
                <description>داستان از زمانی شروع شد که مهندسین نرم افزار شروع به غر زدن کردند! که طراحی سخت افزار با زبان های HDL (مانند زبانهای VHDL و Verilog ) بسیار زمان بر و طاقت فرساست.البته باید به مهندسین نرم افزار حق داد؛ افرادی که شیرینی زبان پایتون را چشیده اند، تن به برنامه نوشتن با زبانهای HDL نخواهند داد و این داستان به جایی رسید که امروز ما می توانیم بدون نوشتن حتی یک کلمه زبان HDL یک پروژه ی کامل FPGA را انجام دهیم.سوال : اگر در این نرم افزار، برنامه نویسی به زبان HDL نیست، پس با چه زبانی است؟جواب : زبان های برنامه نویسی سطح بالا، زبانهای SystemC و C++ , Cدر واقع برنامه هایی که با زبان سطح بالا نوشته می شود ابتدا با نرم افزار VIVADO HLS به سطح سخت افزار ترجمه میشوند سپس جهت پیاده سازی در سخت افزار در نرم افزار VIVADO سنتز می شوند.باز هم سوال : نرم افزار VIVADO HLS چه موضوعاتی را جهت طراحی، تحت الشعاع قرار می دهد؟جواب : در زبانهای سطح بالا یک نیروی کمکی وجود دارد که باعث گسترش این زبان ها شده است، این نیروی کمکی همان کتابخانه ها هستند، 7 نوع کتابخانه ی مختلف جهت طراحی سخت افزار نوشته شده است که در ادامه به آنها اشاره می کنیم.قبل از معرفی این 7 کتابخانه شاید برای شما سوال شود که اصلا کتابخانه چیست؟ مثلا وقتی در زبان C می نویسیم #include چه اتفاقی در پشت صحنه افتاده است؟ باید بگوییم که کتابخانه ها فقط کدهای آماده ای هستند که یک سری افراد که خداخیرشون بده از قبل نوشتن که کار ما رو راحت کنند.7 کتابخانه نرم افزار VIVADO HLSاما 7 کتابخانه ای که گفتیم که در واقع 7 خان رستم هستند کدامند؟۱_ کتابخانه ی پردازش سیگنال دیجیتال (DSP).۲_ کتابخانه ی پردازش تصویر (Opencv).۳_ کتابخانه هایی که عرض بیت متغیرها و ورودی خروجی ها را مشخص می کنند.۴_ کتابخانه هایی که داده ها را جهت پردازش و یا تبدیل به ماتریس در یک حافظهFIFO قرار می دهند.۵_ کتابخانه ی توابع ریاضی (Math.h)۶_ کتابخانه هایی که از ip های از پیش طراحی شده استفاده می کنند.۷_ کتابخانه ی توابع جبری و ماتریسی.منبعvivado hls - iranfpga</description>
                <category>fpgairan</category>
                <author>fpgairan</author>
                <pubDate>Thu, 27 Aug 2020 17:46:02 +0430</pubDate>
            </item>
                    <item>
                <title>پیاده سازی انواع شبکه عصبی در سخت افزار FPGA</title>
                <link>https://virgool.io/@fpgairan/%D9%BE%DB%8C%D8%A7%D8%AF%D9%87-%D8%B3%D8%A7%D8%B2%DB%8C-%D8%A7%D9%86%D9%88%D8%A7%D8%B9-%D8%B4%D8%A8%DA%A9%D9%87-%D8%B9%D8%B5%D8%A8%DB%8C-%D8%AF%D8%B1-%D8%B3%D8%AE%D8%AA-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-fpga-csm8wo2nas8e</link>
                <description>اهمیت و کاربردهای شبکه عصبیدر مهندسی برق، الکترونیک و کامپیوتر یکی از مسائلی که این روزها بسیار مورد اهمیت قرار گرفته، پیاده سازی شبکه عصبی است.کاربرد های زیادی نیز دارد:در مهندسی قدرت، میزان تولید توان در نیروگاه ها جهت کاهش تلفاتدر مهندسی کامپیوتر، تشخیص علاقه مندی افراد (چیزی که در اینستاگرام به خوبی دیده می شود)در مهندسی سیستم، تشخیص صدای افراد مختلف و …مثالبیایید ابتدا با یک مثال ساده ماهیت یک شبکه عصبی را بررسی کنیم.فرض کنید شخصی با سفر در زمان از هزار سال پیش به سال 2020 آمده است و می خواهیم دنیای جدید را به او آموزش دهیم. یکی از این آموزش ها می تواند انواع اتومبیل باشد.به عنوان مثال، اگر بخواهیم فرق بین اتوبوس و یک ماشین سبک را به وی آموزش دهیم، باید خصوصیاتی که در این دو اتومبیل متفاوت است را جهت آموزش انتخاب کنیم.مثلا اگر تعداد چرخ را معیار قرار دهیم، چون در هردو تعداد چرخ ها یکسان است، نمی تواند معیار خوبی جهت آموزش باشد.یکی از بهترین معیار ها اندازه ی اتومبیل است.با این تعریف که به وی بگوییم: اتومبیل هایی که طول حدود 7 و عرض 3 متر دارند، اتوبوس و اتومبیلی که طول حدود 4 و عرض حدود 2 متر داشته باشد، سواری خواهد بود (البته اگر بتوانید به وی واحد متر را آموزش دهید) .در حین آموزش، از بدشانسی ما به یک لیموزین می رسیم که طول آن بیشتر به اتوبوس می خورد و عرض آن به یک ماشین سبک!!و چون فقط دو نوع ماشین به شخص آموزش داده شده، ممکن است در تشخیص اشتباه کند.به همین خاطر باید تعداد معیارهای بیشتری جهت تشخیص نوع اتومبیل انتخاب کنیم.شبکه عصبی چیست - iranfpgaپیاده سازی شبکه های عصبی با FPGAدر سخت افزار نیز همان فلسفه مثال قبل را خواهیم داشت.با این تفاوت که اینجا FPGA آن شخصی است که از هزار سال پیش به زمان حال آمده است و مسئله آموزش هر چیزی می تواند باشد.مثالبه عنوان مثال، فرض کنید بخواهیم رنگ های مختلف را به سخت افزار آموزش دهیم و معیار سه رنگی اصلی (RGB) قرمز سبز آبی باشد.در مثال قبل، برای آموزش به شخص ابتدا واحد متر را آموزش دادیم و سپس معنای طول و عرض.در اینجا نیز یکی از واحد ها میتواند لومن باشد و مفهوم سه رنگ اصلی خواهند بود.ابتدا شبکه عصبی نیاز به آموزش دارد؛ به این معنا که باید برای شبکه تعداد زیادی مثال بزنیم.پس از آن شبکه آموزش داده شده می تواند نوع رنگ را تشخیص دهد.سخن پایانیشبکه های عصبی به این مثال ها محدود نمی شود.امروزه جهت مدل سازی مسائل کلان کشورها مانند اقتصاد، سهام، بورس، مدیریت بحران و … از شبکه عصبی استفاده می شود.شبکه عصبی - iranfpga</description>
                <category>fpgairan</category>
                <author>fpgairan</author>
                <pubDate>Tue, 25 Aug 2020 15:58:28 +0430</pubDate>
            </item>
                    <item>
                <title>کاربردها و نحوه اجرای پروژه پردازش سیگنال دیجیتال (DSP) با FPGA</title>
                <link>https://virgool.io/@fpgairan/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF%D9%87%D8%A7-%D9%88-%D9%86%D8%AD%D9%88%D9%87-%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%D9%BE%D8%B1%D8%AF%D8%A7%D8%B2%D8%B4-%D8%B3%DB%8C%DA%AF%D9%86%D8%A7%D9%84-%D8%AF%DB%8C%D8%AC%DB%8C%D8%AA%D8%A7%D9%84-dsp-%D8%A8%D8%A7-fpga-ioevz0nut2rc</link>
                <description>تشخیص صدای عبور انواع هواپیماها با کمک پردازش سیگنال دیجیتال با FPGAفرض کنید در یک پروژه پردازش سیگنال دیجیتال (DSP) قرار است عبور انواع هواپیماها (جت جنگنده و یا مسافربری و …) را با پردازش صدای محیط تشخیص دهید.اولین کاری که باید انجام دهیم این است که ورودی صدا را بگیریم.میکروفونی که ما در کارگاه و دوره های طراحی سخت افزار از آن استفاده می کنیم، یک نمونه از میکروفون های شرکت MEMS است که قابلیت سمپل برداری از صدا تا ریت 50 کیلوسمپ بر ثانیه را دارد.ریت 50 کیلوسمپل بر ثانیه، به معنای ضبط صدا تا فرکانس 25 کیلوهرتز می باشد (طبق قانون نایکوئیست).همان طور که می دانید فرکانس 25 کیلوهرتز خارج از محدوده ی شنوایی انسان و فراصوت است.پس همه صداهایی که با گوش شنیده می شود، با میکروفون ما نیز قابل ضبط خواهد بود.نکته قابل توجه آنکه در این میکروفون دونوع فیلتر آنالوگ و دیجیتال به کار رفته است که فیلتر آنالوگ صداهای بالاتر از 25 کیلوهرتز را دمپ می کند و فیلتر دیجیتال متغیر است!هارمونیک های اصلییکی از مباحث مهم در حوزه پردازش سیگنال دیجیتال، هارمونیک های اصلی است.هارمونیک های اصلی صدای موتورهای جت در فرکانس های 80 تا 460 هرتز می باشد که جهت تشخیص آنها باید به رفتار سیگنال در حوزه ی فرکانس در این محدوده توجه کرد.با توجه به بالاترین فرکانس مورد نیاز در پروژه (460 هرتز) سمپل برداری تا مقدار 2*460 که می شود 920 سمپل بر ثانیه است، کافیست.کاهش داده برداری با میکروفون نهایتا تا 16 کیلوسمپل بر ثانیه ممکن است اما جهت کاهش پهنای باند تا محدوده ی 80 تا460 چه باید کرد؟اشتباه رایجی که در اینجا رخ می دهد، کاهش ریت سمپل برداری بدون استفاده از فیلتر است که دلیل آن را در کارگاه FPGA به کارآموزان به صورت مفصل توضیح خواهیم داد.جهت کاهش پهنای باند در کارگاه فیلترهای دیجیتال FIR را طراحی خواهیم کرد و سپس به الگوریتم تشخیصی خاص این پروژه (به نام oxor) می پردازیم.جهت داده برداری از میکروفون نیز اینترفیس I2S را در FPGA پیاده سازی خواهیم کرد.میکروفون ها صدا را به صورت استریو (دو کانال چپ و راست) ضبط می کنند.هرچند میکروفون مورد نظر ما قابلیت ضبط صدا به صورت استریو را داراست و با 0 یا 1 شدن یکی از پایه ها میکروفون میتوان کانال چپ یا راست بودن را تعیین کرد، اما در این پروژه ما چون نیازی به ضبط صدا به صورت استریو نداریم، از این قابلیت صرف نظر می کنیم.ذخیره شدن سیگنال در حافظه ی FIFOپس از آنکه پردازش سیگنال دیجیتال در حوزه فرکانس انجام شد و پهنای باند خاصی از آن جدا شد، سیگنال دیجیتال در یک حافظه ی FIFO قرار می گیرد، همانطور که از اسم این حافظه مشخص است، اولین ورودی در آن اولین خروجی نیز خواهد بود که انتخاب خوبی جهت پردازش های بعدی خواهد بود.پس از آن که سیگنال در حافظه ی FIFO ذخیره شد، با هر لبه ی کلاک می توانیم یک سمپل از صدا را در خروجی این حافظه برداشته و به پردازش سیگنال دیجیتال مورد نظر در حوزه زمان بپردازیم، تا در نهایت تشخیص وجود و یا عدم وجود موتور جت در محیط بپردازیم.پیاده سازی پروژه ی پردازش سیگنال دیجیتال با FPGAجهت برآورده کردن پیش نیازها در این پروژه به اصول پردازش سیگنال دیجیتال می پردازیم و آنها را ابتدا در نرم افزار متلب پیاده سازی می کنیم.سپس به پیاده سازی در سخت افزار می پردازیم.همچنین جهت طراحی فیلتر های دیجیتال نیز ابتدا آن را در متلب پیاده سازی خواهیم کرد و سپس به پیاده سازی آن در سخت افزار خواهیم پرداخت.</description>
                <category>fpgairan</category>
                <author>fpgairan</author>
                <pubDate>Mon, 24 Aug 2020 17:46:35 +0430</pubDate>
            </item>
                    <item>
                <title>اترنت چیست؟ آشنایی با شبکه ی اترنت ethernet</title>
                <link>https://virgool.io/@fpgairan/%D8%A7%D8%AA%D8%B1%D9%86%D8%AA-%DA%86%DB%8C%D8%B3%D8%AA-%D8%A2%D8%B4%D9%86%D8%A7%DB%8C%DB%8C-%D8%A8%D8%A7-%D8%B4%D8%A8%DA%A9%D9%87-%DB%8C-%D8%A7%D8%AA%D8%B1%D9%86%D8%AA-ethernet-so3g1l4najat</link>
                <description>اترنت چیست؟ابتدا بیایید به منشأ نام شبکه ی اترنت بپردازیم.اتر در واقع به معنای ماده ای است که در فضای عالم وجود دارد و میتوان گفت 99 درصد دنیا را فراگرفته است و این اسم در واقع از آن ماده مشتق شده است.شبکه ها انواع مختلفی دارند.به عنوان مثال شبکه ای که بانک ها از آن استفاده می کنند، شبکه ی ATM است که ضریب امنیت بالایی دارد.و انواع شبکه های دیگر که در این مطلب نمیگنجد.لایه های مختلف شبکه هاهمه ی شبکه ها از لایه های مختلفی تشکیل شده اند که هر لایه پیچیدگی های خود را دارد.اما پایین ترین و بالاترین لایه در همه ی شبکه ها یکسان است،پایین ترین لایه که لایه ی فیزیکی است و بالاترین لایه که لایه ی اپلیکیشن است.لایه ی فیزیکی لایه ای است که در بستر آن پیام ها منتقل می شود که می تواند بسته به نیاز کابل، کابل نوری، امواج رادیویی و یا حتی در برخی شبکه ها مانند شبکه های زیر آبی، امواج صدا باشد.لایه اپلیکیشنبالاترین لایه که در دسترس مهندسین نرم افزار است لایه ی اپلیکیشن است، این لایه خود به بخش های مختلفی گسترش یافته است.اگر بخواهیم آنها را نام ببریم، می توان به موارد زیر اشاره کرد :HTTP ،FTTP ،PPP ،Mailمثالپروتوکل HTTP پروتوکلی است که در ارتباط وب سایت ها مورد استفاده قرار می گیرد و فایل های متنی را منتقل می کند.HTTP مخفف HyperText Transfer Protocol است.http - IRANFPGAپروتوکل FTTP نیز مخفف کلمات Hyper File Transfer Protocol است.همانطور که از نام آن مشخص است هدف آن انتقال فایل ها توسط یک پروتوکل تحت شبکه است.لایه های دیگر شبکه اترنتلایه های دیگری نیز در ارتباط شبکه وجود دارند که بد نیست به آنها پرداخته شود.به عنوان نمونه، لایه ی MAC. هر دستگاه دارای یک آدرس مک مخصوص به خود است.مثلاً همین گوشی و یا لپ تاپی که با آن در حال وب گردی هستید، دارای یک آدرس مک مخصوص است.به طوری که در شبکه منحصر به فرد است و از روی آن می توان دستگاه شما را تشخیص داد.شاید به این نکته پی برده باشید که اگر دستگاهتان گم شد، یکی از راههای یافتن آن چیست!یکی از لایه ها که مورد تدریس و پیاده سازی در کارگاه قرار خواهد گرفت لایه ی TCP است که از نظر سرعت و دقت بالاتر از لایه ها ی دیگر است.از دیگر خوبی های شبکه ی اترنت می توان کاملاً دوطرفه بودن آن را مثال زد.این در حالی است که ارتباطی مانند ارتباط USB یک طرفه است.اترنت - IRANFPGA</description>
                <category>fpgairan</category>
                <author>fpgairan</author>
                <pubDate>Sun, 23 Aug 2020 19:35:14 +0430</pubDate>
            </item>
                    <item>
                <title>نکات طلایی درباره شبیه سازی و عیب یابی در طراحی سخت افزار</title>
                <link>https://virgool.io/@fpgairan/%D9%86%DA%A9%D8%A7%D8%AA-%D8%B7%D9%84%D8%A7%DB%8C%DB%8C-%D8%AF%D8%B1%D8%A8%D8%A7%D8%B1%D9%87-%D8%B4%D8%A8%DB%8C%D9%87-%D8%B3%D8%A7%D8%B2%DB%8C-%D9%88-%D8%B9%DB%8C%D8%A8-%DB%8C%D8%A7%D8%A8%DB%8C-%D8%AF%D8%B1-%D8%B7%D8%B1%D8%A7%D8%AD%DB%8C-%D8%B3%D8%AE%D8%AA-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-esuxxr6f4bpq</link>
                <description>چگونه در طراحی سخت افزار، برنامه نوشته شده را عیب یابی کنیم؟قبل از اینکه درباره انواع شبیه سازی صحبت کنیم، فرض کنید قراره یک پروژه را با سخت افزار طراحی کنید و زمان هم محدود هست، جهت عیب یابی برنامه نوشته شده چه می کنید؟شاید پاسخ بعضی از مهندسان این باشه که پس از طراحی با اضافه کردن ip هایی (مثل ILA که میتواند سیگنال های درون FPGA را برامون رسم کنه) به عیب یابی برنامه می پردازیم.باید گفت پاسخ درسته اما اگه زمان پروژه سه برابر بشه! “با این روش پس از ساعتها طراحی و اجرای برنامه و مشاهده ی نتیجه در سخت افزار، متوجه یک خطا میشیم بعد دوباره تغییر طراحی و باز متوجه خطای بعدی میشیم و بالاخره قبل از رسیدن به نتیجه وقت تمام میشه..” اینجا چاره چیه ؟راهش اینه که بیاییم کدهای نوشته شده رو قبل از هر چیزی شبیه سازی کنیم و ببینیم پاسخ درستی دارن یا نه که خوشبختانه نرم افزار VIVADO واقعا در این قسمت قدرتمند عمل کرده. خود ویوادو یه شبیه ساز داره به نام XSIM که مخفف Xilinx Simulator هست علاوه بر اون از شبیه ساز هایی مثل Questa ، VCS ،Aldec  و… هم پشتیبانی میکنه.شبیه سازیِ برنامه ها هم دوحالت کلی داره که باید حتما بهش توجه کرد: زمانی و غیرزمانی (رفتاری)شبیه سازی غیر زمانی (رفتاری)در این نوع، فقط منطق برنامه مورد بررسی قرار میگیره که آیا درست نوشته شده یا نه. در این مورد فرض میکنیم که هیچ تاخیری در گیت ها و مسیرها نیست، اما شبیه سازیِ زمانی علاوه بر رفتار مدار، بررسی میکنه که تاخیر گیت ها و مسیرها تا چه فرکانس کاری را برای مدار جواب میده و آیا با فرکانسی که ما تعیین کردیم مدار درست کار میکنه یا خیر.ممکنه یک مدار با شبیه سازی رفتاری درست کار کنه اما توی شبیه سازی زمانی به خطا بخوره که باید به نحوه ی سنتز مدار دقت کرد و طراحی رو بهینه کرد که در پست های گذشته به بخش سنتز هم اشاره شده.شبیه سازی توانیکی دیگه از شبیه سازی هایی که انجام میگیره این هست که یک فایل SAIF طراحی میشه تا ببینیم میزان توان مصرفی چقدر هست که مخصوصا برای پروژه های مخابراتی که با باتری و به صورت بیسیم به مدت طولانی کار میکنند خیلی مهم هست.اگر بخواهیم به جزئیات شبیه سازی بپردازیم، باید گفت که سه بخش دارد:Compilationتفسیر کدهای نوشته شده به زبان های Verilog ، VHDL و  SystemVerilogElaborationتولید یک برنامه واحد از کدهای تفسیر شدهactual Simulationشبیه سازیِ سیگنال ها و خروجی مدار با استفاده از برنامه ی مرحله قبل و ورودی های شبیه سازیطراحی سخت افزار - IRANFPGA https://iranfpga.ir/vivado-simulator/ </description>
                <category>fpgairan</category>
                <author>fpgairan</author>
                <pubDate>Sat, 22 Aug 2020 07:34:53 +0430</pubDate>
            </item>
                    <item>
                <title>چرا و برای کدام پروژه ها باید به خرید برد FPGA اقدام کنیم؟</title>
                <link>https://virgool.io/@fpgairan/%DA%86%D8%B1%D8%A7-%D9%88-%D8%A8%D8%B1%D8%A7%DB%8C-%DA%A9%D8%AF%D8%A7%D9%85-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%D9%87%D8%A7-%D8%A8%D8%A7%DB%8C%D8%AF-%D8%A8%D9%87-%D8%AE%D8%B1%DB%8C%D8%AF-%D8%A8%D8%B1%D8%AF-fpga-%D8%A7%D9%82%D8%AF%D8%A7%D9%85-%DA%A9%D9%86%DB%8C%D9%85-kauzsxz1iutw</link>
                <description>چرا باید در پروژه ها به خرید برد FPGA اقدام کنیم؟ و سوال مهم تر آنکه برای چه پروژه هایی باید به خرید برد FPGA اقدام کنیم؟ در این مطلب میخواهیم به این سوال پاسخ دهیم و جهت پاسخ به بررسی خاصیت های FPGA و در برخی موارد به مقایسه آن با پردازنده های دیگر خواهیم پرداخت، با ما همراه باشید تا در آخر مطلب یک هدیه به شما تقدیم می کنیم.1- نکات مهم در خرید برد FPGAقابلیت پردازش موازیاولین و مهمترین دلیل برای خرید برد FPGA و کلا پردازش سیگنال با FPGA “قابلیت پردازش موازی” است به این معنا که یک هسته CPU در یک لحظه (در یک لبه بالا رونده کلاک) فقط یک پردازش میتواند انجام دهد (هر هسته CPU در هر لبه کلاک فقط یک دستور اسمبلی را انجام میدهد).یک مثال از نعمت پردازش موازی در زندگی روزمره، وقتی به دقت به اطرافمان نگاه میکنیم میبینیم زمانی که ما در حال صحبت تلفنی هستیم، افراد بیشمار دیگری هم در حال تماس تلفنی هستند، کامپیوتری که پردازش و انتقال بخشی از این سیگنهال های فوق سنگین را به عهده دارد، به راستی! باید چند هسته پردازنده داشته باشد؟ پس اینجا یک خلا به وجود میاید که پر نمیشود مگر با سیستمی که توانایی پردازش موازی را داشته باشد. در کل سیستمی که بتواند چندین پردازش را به صورت موازی و همزمان انجام دهد دوای خیلی از دردهای سیگنالی دنیای امروز را درمان خواهد شد.بهینه سازی سخت افزاربهینه سازی سخت افزار دلیل دیگری است که مهندسین را مصمم میکند تا برای انجام پروژه ها به خرید برد FPGA روی بیاورند. و اما بهینه سازی سخت افزار به چه معناست؟ به این معنا که در کامپیوترها، میکروکنترلرها و … یک سخت افزار از پیش ساخته شده، شما محکوم به استفاده از یک سیستم 8 بیت یا 32 بیت یا 64 بیت و … هستید.یا به عنوان مثال دیگر در ارتباط سریال جهت انتقال داده ها توانایی تعداد ارسال بیت به دلخواه را ندارید و بسیاری موارد دیگر که از پیش در سخت افزار طراحی شده است و شما توانایی تغییر در ساختار آنها را ندارید. اما در FPGA کاربر میتواند سیستم را با توجه به نیاز خود تغییر دهد و بهینه سازی کند تا به بهترین نقطه ی توان و عملکرد و بازدهی در سخت افزار دست یابد.پردازش در زمان واقعیهمچنین در خرید برد FPGA در واقع یک برد real time خریداری میکنیم به بیان دیگر تنها جایی که میتوان ادعای پردازش در زمان واقعی کرد، سخت افزار است. بیایید یک سوال را مطرح کنیم، فرض کنید شما پیامکی را به مخاطب خود ارسال میکنید و پس از 2 دقیقه او این پیام را دریافت میکند.خب این که مشکلی ندارد اما در یک مثال مشابه فرض کنید در حال صحبت تلفنی با یک شخص هستید، اگر صحبت کنونی شما پس از 2 دقیقه به گوش مخاطب شما برسد و همچنین صحبت مخاطب شما پس از 2 دقیقه به گوش شما برسد، آیا از این گفتگوی تلفنی راضی خواهید بود و به آن ادامه میدهید؟همچنین فرض کنید که قرار است در یک سیستم هواپیمایی به محض رسیدن هواپیما به ارتفاع کمتر از 20 متری و باز نبودن چرخ ها به خلبان هشدار دهد و یا خودکار چرخ ها را باز کند. آیا اگر این عمل چند دقیقه طول بکشد سیستم شما چند نفر را رهسپار دیار باقی میکند؟!در FPGA شما داده هایی که نیاز به پردازش آن دارید را به سیستم وارد میکنید نهایتا بعد از یک مدت تاخیر (در حد نانو تا میلی ثانیه) داده های پردازش شده را تحویل خواهید گرفت و این روند همیشه و تحت هر شرایطی ثابت خواهد بود مگر اینکه خودتان به هر دلیلی بخواهید پردازش در زمان واقعی متوقف شود.باید به این نکته توجه کرد که پردازش در زمان واقعی روز به روز اهمیت بیشتری پیدا کرده است. تا حدی که در کوچکترین مسائل روزمره ما ورود پیدا کرده است.به عنوان مثال فرض کنید شما در حال بازی اکشن (کانتر!) به صورت اینترنتی باشید آیا اگر فرایند بازی طوری باشد که شما دقیقا به سر حریف شلیک کرده باشید اما به دلیل سرعت پایین اینترنت رقیب شما 10 متر جلوتر بوده باشد! آیا به بازی ادامه خواهید داد؟ خب اینجا حجت پردازش زمان واقعی را بر شما و تمام کاربران IRANFPGA تمام کردیم، برویم سر قدرت های دیگری که با خرید برد FPGA به شما داده میشودقابلیت اطمینانفرض کنید موبایلتان را برای تعمیر پیش تعمیر کار برده اید، با توجه به اینکه امروزه موبایل یکی از اعضای بدن است! اگر تعمیرکار در مورد زمان تحویل به شما بگوید که ممکن است تعمیر، یک روز تا یک ماه طول بکشد.حال آنکه تعمیرگاه دیگری به شما میگوید که دو روز دیگر موبایل را به شما تحویل خواااهد داد. موبایلتان را به کدام تعمیرگاه خواهید سپرد؟ نرخ هر دو هم برابر است، موبایلتان را به کدام تعمیرگاه خواهید سپرد؟بله مطمعنا باید موبایلتان را به برد FPGA میسپارید! چرا که با اطمینان زمان تحویل را به شما میگوید، حال آنکه در میکروکنترلرها ممکن است به دلیل هر تاخیر (وقفه) این زمان به طول بیانجامد. و خلاصه مطلب آنکه به شما اطمینان خاصی در جهت زمان دقیق انجام نخواهد داد، ممکن است شما هم با این مشکل روبه رو شده باشید که میکرو به وقفه میرود و گاهی اوقات تا زمان بازگشت یک پردازش مهم را از دست میدهد.قابلیت تغییر برنامهقابلیت تغییر برنامه منجر به خرید برد FPGA خواهد شد اما میکروکنترلرها هم که این خاصیت را دارند! چرا باید آن را به عنوان یک قابلیت مطرح کرد؟! به دلیل اینکه اینجا هدف مقایسه FPGA با میکروکنترلرها نیست بلکه هدف مقایسه با پردازشگر دیگری است که اتفاقا زیاد با FPGA ها مقایسه میشود، به نام ASIC.فرض کنید یک اتوموبیل خریده اید و با این اتوموبیل شما هر روز میتوانید با بیشترین سرعت ممکن، سرکار بروید و از سرکار برگردید، اما با این اتوموبیل توانایی سفر به هیچ جای دیگری را نداشته باشید! یعنی این اتوموبیل فقط برای این ساخته شده است که مسیر خانه شما تا محل کارتان را با بهترین زمان ممکن طی کند اما قادر به انجام کار دیگری نیست! این داستان در مورد ASIC هم صادق است، هرچند در عملکرد بهتر ASIC ها شکی نیست اما فقط برای یک کار ساخته شده اند و درواقع ساختار آنها تغییر نمیکند، همین عامل باعث میشود که خرید برد FPGA در این مورد انتخاب بهتری از ASIC ها باشند.این مطلب ادامه دارد….منبع</description>
                <category>fpgairan</category>
                <author>fpgairan</author>
                <pubDate>Thu, 20 Aug 2020 23:53:10 +0430</pubDate>
            </item>
                    <item>
                <title>تفاوت FPGA و میکروکنترلرها ؛ مقدمه ی آموزش FPGA از صفر</title>
                <link>https://virgool.io/@fpgairan/%D8%AA%D9%81%D8%A7%D9%88%D8%AA-fpga-%D9%88-%D9%85%DB%8C%DA%A9%D8%B1%D9%88%DA%A9%D9%86%D8%AA%D8%B1%D9%84%D8%B1%D9%87%D8%A7-%D9%85%D9%82%D8%AF%D9%85%D9%87-%DB%8C-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-fpga-%D8%A7%D8%B2-%D8%B5%D9%81%D8%B1-vii7fmupmb2v</link>
                <description>تفاوت FPGA و میکروکنترلرها چیست؟ما در FPGA یک تفاوت بزرگ داریم با میکروکنترلرها!در میکروکنترولرها، شرکت هایی که CPU رو ایجاد می کنند، چه AVR باشد، چه ARM یا PIC یا DSP باشد، در واقع یک سری سخت افزار از پیش طراحی می کنند.سپس برنامه نویس با نوشتن کد، از آن سخت افزار استفاده می کند.اما در FPGA کلا قضیه فرق می کند.در FPGA ما سخت افزار را خودمان از صفر طراحی می کنیم.برای الگوریتم، هرطوری که ما بخواهیم است تا بهینه تر شود و سرعت بالاتر رود.این مهمترین و بزرگترین تفاوت FPGA و میکروکنترلرها است.سلام دوستای خوبم. از این به بعد براتون آموزش طراحی سخت افزار FPGA میذاریم. حتما بخونید و نظراتونو بگید بهمون. ممنون که همراهمون هستید.آموزش FPGA از صفر</description>
                <category>fpgairan</category>
                <author>fpgairan</author>
                <pubDate>Tue, 18 Aug 2020 14:40:14 +0430</pubDate>
            </item>
            </channel>
</rss>