اطلاعیه

Collapse
No announcement yet.

FPGA و کاربرد آن در واحدهای پردازش و کنترل سیستم های مخابراتی

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    FPGA و کاربرد آن در واحدهای پردازش و کنترل سیستم های مخابراتی

    دوستان عزیز من سعی کردم مختصری از تجارب خودم رو شرح بدم و میدونم که این مطالب کم، ناقص و خیلی کلی هستن. سعی خواهم کرد در پستهای بعدی مطالب رو تکمیل کنم. بسیار مشتاق شنیدن نظرات سایر کاربران هم هستم.


    FPGA و کاربرد آن در واحدهای پردازش و کنترل سیستم های مخابراتی
    در این نوشتار یکی از حوزه های کاربردی FPGA که بخش های پردازش و کنترلی سیستم های مخابراتی می باشد توضیح داده شده است. علت انتخاب این حوزه آشنایی من به عنوان نویسنده با این حوزه می باشد. امید است که این مطالب باعث آشنایی مهندسین عزیز با قابلیتهای FPGA در این حوزه باشد تا بتوانند در طراحی چنین سیستم هایی مد نظر داشته باشند.
    با توجه به وضعیت کنونی کشور و وجود انواع تحریم ها مخصوصا در حوزه های مخابراتی و نظامی تسلط بر استفاده از FPGAها مار را قادر خواهد ساخت تا سیستم های مورد نیاز خود را خود طراحی کرده و توسط FPGAها به مرحله اجرا برسانیم.
    معمولا برای پیاده سازی یک پروژه مخابراتی(یا کارهای مشابه) مراحل زیر انجام می گیرد.
    1. طراحی مفهومی
    2. طراحی سیستمی
    3. شبیه سازی سیستمی
    4. طراحی سخت افزاری
    5. شبیه سازی طرح سخت افزار
    6. پیاده سازی سخت افزار
    7. تست سخت افزاری و رفع معایب
    8. تستهای EMI, EMC و ...
    در ادامه هر کدام از این بخش ها به صورت مختصر توضیح داده می شود. تمرکز این توضیحات بر بخش های پردازشی و دیجیتالی متمرکز است و توضیحات آن در مورد سایر بخش ها چندان کافی نمی باشد.
    طراحی مفهومی: این بخش از کار طراحی های ابتدایی پروژه را شامل می شود. در این مرحله طرح معمولا به صورت بلوک دیاگرامی پباده می شود. گروه طراح این بخش بایستی با قابلیتهای مختلف بخش هایی از سازمان که قرار است کار را انجام دهند آشنایی داشته باشد و پروژه را به قسمتهای مناسبی تقسیم بندی کرده و هر قسمت را با استفاده از گروه های موجود با جزئیات بیشتر طراحی کند. در شرکتهایی که پروژه های مخابراتی را انجام میدهند عمدتا گروه های آنتن، RF، سیستم، دیجیتال و نرم افزار بخش های مختلف پروژه را انجام می دهند.
    طراحی سیستمی: پس از اینکه طرح اولیه مشخص شد طراحی های سیستمی با جزئیات بیشتر شروع می شود. با توجه به تجربه ای که من دارم در این مرحله معمولا از نرم افزار MATLAB برای طراحی و شبیه سازی استفاده می شود. این نرم افزار به دلیل داشتن امکانات و بلوکهای پردازشی متنوع و قوی کمک زیادی به طراحان می کند. طرح در این مرحله از نظر سیستمی یا الگریتمی مورد تست و شبیه سازی قرار می گیرد تا رفته رفته با بررسی عملکردهای قسمتهای مختلف طرح و ایجاد ارتباط بین آنها و مرتفع سازی معایب طرح تکمیل شود.
    شبیه سازی سیستمی: طراحی انجام شده در بخش قبل امکان شبیه سازی را به طراح می دهد. با این کار او از عیب و ایراد طرح خود مطلع شده و با رفع آنها طرح سیستمی نهایی را آماده می کند.
    طراحی سخت افزاری: مفهوم این طراحی در واقع تبدیل طراحی انجام گرفته در مرحله قبل به طرحی قابل پیاده سازی در بخش دیجیتال (در اینجا هدف FPGA) می باشد. برای انجام هر چه بهتر این بخش بهتر است در مراحل طراحی سیستمی مشاوره گروه دیجیتال نیز مورد استفاده قرار گیرد تا در این مرحله، تبدیل از طراحی سیستمی به طراحی دیجیتال با بیشترین سرعت انجام گیرد. لازم است گروه دیجیتال برای تبدیل بهتر و سریعتر طرح علاوه بر آشنایی با بلوک دیاگرام سیستمی طرح با عملکرد و ارتباطات بخش های مختلف نیز به خوبی آشنا شود زیرا این آشنایی این امکان را به طراحان دیجیتال خواهد داد تا از قید و بند طراحی دقیقا برابر با طرح بخش سیستمی رهایی یابند. در ادامه توضیحات این بخش با توضیحات بیشتری ارائه خواهد گردید. این طراحی در واقع با تبدیل بلوک دیاگرام های طراحی شده در نرم افزار MATLAB به کدهای HDL انجام می گیرد. در کشور ما معمولا این طراحی ها با هدف پیاده سازی بر روی FPGAهای شرکت های Xilinx یا Altera انجام می گیرد. و به طور معمول از نرم افزارهای خود این شرکتها استفاده می شود.
    شبیه سازی طرح سخت افزاری: طراحی انجام گرفته در مرحله قبل بایستی قبل از اجرا بر روی سخت افزار مورد شبیه سازی قرار گیرد. بهترین نرم افزاری که در حال حاضر برای این کار وجود دارد Modelsim می باشد. شاید در برخی مواقع افراد در این مرحله ترجیح دهند که مستقیم طرح خود را بر روی سخت افزار مورد تست قرار دهند ولی تجربه ای که من داشته ام همیشه مرا تشویق می کند که سختی Test Bench نویسی را بپذیرمو قبل از هر تست سخت افزاری ابتدا از صحت کدهای توشته شده اطمینان حاصل کنم.
    پیاده سازی سخت افزاری: این مرحله انتقال طراحی های انجام گرفته بر روی سخت افزار می باشد. شاید برخی از افراد در این مرحله شک کنند که آیا طرحی که در شبیه سازی جواب گرفته ایم ممکن است در عمل هم درست کار کند. نکته بسیار مهمی که من به آن رسیده ام این است که اگر مراحل ط ادوراحی های ذکر شده در قبل به درستی و با دقت انجام گرفته باشد این مرحله به سهولت انجام گرفته و به هیچ مشکلی نخواهیم خورد. معمولا هر وقت هم مشکلی باشد در طرح ما خواهد بود. به عبارتی FPGAها بسیار دقیق عمل کرده و هیچ تفاوتی بین شبیه سازی و عملکر واقعی در آن ها نمی توان دید مگر در مواردی که برخی نکات مربوط به Timingها رعایت نشده باشد.
    تست سخت افزاری و رفع معایب: در این مرحله کارکرد سخت افزار مورد تست قرار میگیرد تا از نظر طراحی اگر لازم به تغییراتی در طرح هستیم، تغییرات را انجام دهیم.
    متاسفانه این بخش از کار همان 5 درصد معروف از کار است به اندازه بقیه 95 درصد زمان گیر می شود و علت اصلی آن نیز نادرست یا ناقص انجام شدن مراحل قبل است. نکته خیلی تاسف برانگیز کار نیز این است که معمولا وقتی کار به اینجا میرسد تازه کارفرما هوس تغییر در برخی خواسته های خود را میکند.
    تست های EMI, EMC: این مراحل جزو تستهای نهایی سیستم می باشد و بسیار مورد تاکید کارفرمایان. لذا بهتر است از همان ابتدای کار که به طراحی سیستم اندیشیده می شوذ به این تستها نیز توجه شود. تجربه ای که خود من دارم این است که معمولا با توجه به علاق ما به کارهای R&D بیشتر در بخشهای طراحی زمان و هزینه صرف میکنیم و با هزاران امید سیستمی را آماده میکنیم که از نظر عملکردی به درستی کار می کند ولی به دلیل برآورده نشدن این تست ها مجبور به دوباره کاری و صرف هزینه های اضافه میکنیم.


    یا علی.

    #2
    پاسخ : FPGA و کاربرد آن در واحدهای پردازش و کنترل سیستم های مخابراتی

    سلام

    من درست متوجه قسمت طراحی سخت افزاری نشدم. منظورم اون قسمتی هست که گفتین که "ا تبدیل بلوک دیاگرام های طراحی شده در نرم افزار MATLAB به کدهای HDL". میخواستم بدونم که شما در نهایت از کدهایی که توسط متلب به HDL تبدیل شده استفاده میکنین؟
    طبق تجربه ای که شما دارین، توی قسمت مدل سازی سیستم، چقدر از SystemC دیدین که استفاده بشه؟

    دیدگاه


      #3
      پاسخ : FPGA و کاربرد آن در واحدهای پردازش و کنترل سیستم های مخابراتی

      نوشته اصلی توسط mohammadh1387
      سلام

      من درست متوجه قسمت طراحی سخت افزاری نشدم. منظورم اون قسمتی هست که گفتین که "ا تبدیل بلوک دیاگرام های طراحی شده در نرم افزار MATLAB به کدهای HDL". میخواستم بدونم که شما در نهایت از کدهایی که توسط متلب به HDL تبدیل شده استفاده میکنین؟
      طبق تجربه ای که شما دارین، توی قسمت مدل سازی سیستم، چقدر از SystemC دیدین که استفاده بشه؟
      این تبدیل اکثرا توسط تیم فنی انجام می گیره نه توسط نرم افزار چون کدهای تولید شده با MATLAB معمولا قابل استفاده نیستند.
      من تا بحال ندیدم جایی رو که از SystemC استفاده کنن!

      یا علی.

      دیدگاه


        #4
        پاسخ : FPGA و کاربرد آن در واحدهای پردازش و کنترل سیستم های مخابراتی

        طراحی سخت افزاری:
        در این قسمت میخواهم اندکی بیشتر راجع به طراحی سخت افزاری توضیح بدهم. گفته شد که طراحی سیستمی توسط گروه سیستم و معمولا توسط نرم افزار MATLAB انجام می گیرد. در قسمت طراحی سخت افزاری هدف پیاده سازی بلوک دیاگرام طراحی شده سیستمی به صورت طرحی بر روی FPGA می باشد. چون بلوک دیاگرام طرح سیستمی مشخص شده و نقایص و معایب طرح تا حدود زیادی مرتفع گردیده پس کافی است تا همین طرح در سخت افزار نیز به درستی پیاده گردد تا از عملکرد درست سیستم مطمئن بود.
        شکل زیر نمونه ای از یک سیستم مخابراتی را نشان می دهد. این شکل مربوط به یک فرستنده QAM که در اکثر منابع مربوط به سیستم های مخابراتی میتوان مشابه آنرا مشاهده نمود می باشد و در اینجا برای مثال ارائه شده است.

        برای تبدیل این بلوک دیاگرام به سخت افزار گروه دیجیتال مراحل زیر را انجام می دهد.
        1. تقسیم بندی طرح به قسمت های نرم افزاری و سخت افزاری
        2. پیاده سازی زیر بلوکها و شبیه سازی کامل آن
        3. اتصال بلوکها به هم و شبیه سازی کلی مجموعه
        4. مقایسه عملکرد سیستم برای یک ورودی مشخص بین نتایج طراحی سیستمی و طراحی سخت افزاری
        تقسیم بندی طرح به قسمت های نرم افزاری و سخت افزاری
        ممکن است در برخی سیستمهای مخابراتی سیستم های کامپیوتری نیز موجود باشد مثلا داده ها برای انتقال از یک کامپیوتر به سیستم مخابراتی داده شود در این صورت اگر امکان استفاده از قابلیتهای نرم افزاری کامپیوتر وجود داشته باشد بهتر است بخشی از کار در آن انجام گیرد. مشخص سازی اینکه تا چه قسمتی از کار باید در کامپیوتر انجام گیرد به عهده طراح است و معمولا عواملی مانند حجم پردازش قابل انجام در کامپیوتر، حداکثر سرعت انتقال داده بین کامپیوتر و سخت افزار ، سختی انجام کار در سخت افزار تاثیر گذار هستند. با در نظر گرفتن این مباحث ممکن است بخشی از کار در کامپیوتر و به صورت نرم افزاری انجام گیرد. مثلا در بلوک دیاگرام شکل بالا بهتر است قسمتهایی که مربوط به تعیین مقادیر دیتا، اعمال کدینگها و شکل دهی به فریم های داده در بخش کامپیوتر انجام گیرد.
        پیاده سازی زیر بلوکها و شبیه سازی کامل آن
        بحث اصلی و هدف اصلی من از این نوشته ارائه توضیحات و مثالهایی در این زمینه می باشد تا خوانندگان محترم بتوانند آشنایی مناسبی در این مورد به دست آورند. اگر مقدور باشد سعی خواهم کرد تا رفته رفته مطالب را تکمیل کنم و مثالهایی بیشتر ارائه کنم.
        در سیستم های مخابراتی معمولا ما با یک مسیر سیگنال مواجه هستیم. سیگنالی که توسط مبدل های آنالوگ به دیجیتال به یک سری مقادیر دیجیتال تبدیل شده است. در این مسیر سیگنال معمولا از چند بلوک یا به اصطلاح از چند سیستم خطی عبور می کند. مثلا انواع فیلترها، میکسرها، AGCها، بلوک های تشخیص فاز یا فرکانس، سینتی سایزرها و ... سیستمهایی هستند که ما اکثرا در یک طرح مخابراتی با آنها سرو کار داریم.
        خوشبختانه اکثر سیستم ها یا بلوکهای اشاره شده در بالا در نرم افزارهای مربوط به کار با FPGA به صورت Core موجود می باشد در بیشتر پروژه ها می توان بخش قابل توجهی از بلوک دیاگرام را توسط آنها پیاده سازی کرد. در این بین وظیقه طراح آشنایی مناسب با این Coreها و استفاده صحیح از آنها می باشد. برای این منظور نیز استفاده از اطلاعات خود نرم افزار و مطالعه دیتاشیت Coreها بسیار مناسب می باشد. مثلا اگر بلوک دیاگرام شکل بالا را در نظر بگیرید بخش های سینتی سایزر و فیلترها و ضرب کننده ها یا جمع کننده ها و گین مسیر بلوک هایی هستند که هم در نرم افزارهای شرکت Xilinx و هم Altera وجود دارند. در نهایت پس از Customize کردن coreها برای آشنایی بهتر با کارکرد آنها و اطمینان از پاسخ بودن برای نیاز خود بهتر است شبیه سازی مناسبی رو آنها انجام گیرد.
        همچنین علاوه بر این coreها بلوکهای بسیار دیگری به صورت آماده در اینترنت وجود دارد که با یک جستجوی ساده می توان آن ها را پیدا کرد. مثلا اگر به سایت www.opencores.com سری زده باشید می توانید مثالهای متعددی از پروژه های آماده در آن پیدا کنید.
        در برخی موارد نیز که امکان استفاده از کدها یا coreهای آماده نباشد می توان با بررسی کارکرد بلوک و تقسیم بندی آن به بلوکهای کوچکتر(در صورت لزوم) آنرا پیاده سازی کرد. نکته مهمی که وجود دارد ایت است که باید از کارکرد هر بلوک پیاده شده در شرایط متنوع اطمینان حاصل کرد و یک توصیه مهم دیگر این که تمامی بلوکهای خود را باید سعی کنید به صورت generic تعریف کنید. این کار کمک خواهد کرد تا در آینده از بلوکهای پیاده سازی شده خود در پروژه های دیگر استفاده کنید و یا اگر نیاز به تغییراتی در برخی پارامترها داشتید لازم نباشد کل بلوک را دوباره مورد بررسی قرار دهید.
        مرحله پس از این کار شبیه سازی بلوک ها می باشد که انشالله توضیح خواهم داد.
        یا علی.

        دیدگاه


          #5
          پاسخ : FPGA و کاربرد آن در واحدهای پردازش و کنترل سیستم های مخابراتی

          سلام منتظریم مهندس :applause:
          انما الحیوة عقیدة و جهاد

          دیدگاه


            #6
            پاسخ : FPGA و کاربرد آن در واحدهای پردازش و کنترل سیستم های مخابراتی

            با تشکر فراوان...
            همچنان از مطالب شما استقبال می کنیم...

            دیدگاه


              #7
              پاسخ : FPGA و کاربرد آن در واحدهای پردازش و کنترل سیستم های مخابراتی

              سلام مهندس
              تشکر بسیار بابت مطالب مفیدی که ارائه کردید.
              ما همچنان منتطریم

              دیدگاه


                #8
                پاسخ : FPGA و کاربرد آن در واحدهای پردازش و کنترل سیستم های مخابراتی

                چرا عکسا رو نشون ندادید؟
                حداقل من که نمیبینم
                مردود شدن بهتر از با تقلب قبول شدن است

                دیدگاه


                  #9
                  پاسخ : FPGA و کاربرد آن در واحدهای پردازش و کنترل سیستم های مخابراتی

                  مثل شما تو این فروم کم نیست :applause:
                  ازینکه تجربیاتتونو که با زحمت بدست اومده میخواهید با ما درمیان بذارید تشکر میکنم.
                  منتظر یـــــــــــــــــــــــــــــــــــــــــــــــــ ــــــــــــــــــــــــــــــــــــــــــــــــــ ـــــــــــــــــــــــــــــم.

                  دیدگاه


                    #10
                    پاسخ : FPGA و کاربرد آن در واحدهای پردازش و کنترل سیستم های مخابراتی

                    سلام،من FPGA کار کردم اگر امکانش هست یک پروژه که انجام دادید و مخابراتی کدهای VHDL رو بزارید ممنون میشم.با تشکر

                    دیدگاه

                    لطفا صبر کنید...
                    X