

شرح کار:
اکثر پروژههای ما در نهایت به طراحی و ساخت یک سیستم الکترونیکی کامل و یکپارچه منتهی میشود که از بخشهای مختلفی از جمله front-end الکترونیکی آنالوگ و دیجیتال و هسته پردازشگر FPGA تشکیل میگردد. بنابراین، از مهندس FPGA انتظار میرود، علاوه بر داشتن مهارت کافی در زمینه طراحی سیستم دیجیتال به کمک FPGA، دارای آشنایی حداقلی نسبت به مفاهیم اولیه الکترونیک، اصول طراحی برد، تشخیص عیب، تعیین پارامترها و انتخاب قطعات مورد نیاز باشد.
تقریبا در تمامی پروژههای ما بخش داده برداری یا Data Acquisition جزو جدایی ناپذیر است؛ بنابراین، داشتن دانش کافی نسبت به مفاهیم تبدیل سیگنال آنالوگ و دیجیتال به یکدیگر ضروری است.
در اکثر طراحیهای ما، قطعات جانبی پرکاربرد از جمله مبدلهای آنالوگ-دیجیتال، سنسورها، موقعیتیاب و عموما هر ماژولی که دارای اینترفیس دیجیتالی باشد، به تراشه FPGA متصل میگردد. بنابراین داشتن تسلط نسبت به پروتکلهای رایج جهت راهاندازی و کار با این نوع قطعات، از جمله UART, SPI, I2C, CAN و غیره ضروری است. در برخی موارد از پروتکلهای پیشرفتهتر مانند Ethernet جهت ارتباط بین چند برد FPGA و یا ارتباط آن با کامپیوتر بهره میبریم؛ بنابراین برخورداری از اطلاعات کافی در این زمینه دارای اهمیت است.
در برخی از موارد مشابه میتوان از قابلیتهای فراوان تراشه Zynq که شامل FPGA (PL) و ARM (PS) است بهره برد. برای مثال، ایجاد ارتباط شبکه UDP Ethernet به کمک SDK های موجود برای PS احتمالا بهینهتر و منطقیتر باشد؛ به طور کلی، داشتن اطلاعات کافی نسبت به معماری Zynq و باس AXI، برنامه نویسی به زبان C/CPP، و نیز توانایی تعریف و تفکیک طراحی سیستم بین PL و PS دارای اهمیت است.
معمولا نیاز است علاوه بر حافظههای موجود در تراشه FPGA، از سایر حافظههای رایج از جمله SRAM و DDR و یا حافظههای NVM مانند SD Card و Flash نیز استفاده نمود. بدین منظور، دانستن انواع ارتباطات حافظه و توانایی استفاده از IP Core های مربوطه بسیار ضروری است.
همچنین با توجه به ماهیت پروژههای ما که اکثرا پردازشی است، ضروری است علاوه بر IP Core های ارتباطی و حافظه، در زمینه IP Core های ریاضیاتی از جمله FIR, FFT, CORDIC, DDS و سایر ابزارهای موجود، دانش کافی وجود داشته باشد.
در تمامی پروژههای ما، علاوه بر راهاندازی و کار با Peripheral های مختلف، پیاده سازی الگوریتمهای پردازش سیگنال دیجیتال نیز بر عهده مهندس FPGA است. طراحی، اجرا و تست عملکرد الگوریتم معمولا توسط یک مهندس DSP یا مخابرات انجام میشود. این مرحله، درنرمافزار Matlab از طریق برنامهنویسی m-file و یا مدل Simulink انجام شده و سپس جهت پیادهسازی به مهندس FPGA تحویل میگردد. بنابراین، تعامل با طراح الگوریتم و توانایی فهم کد و یا مدل جهت طراحی سختافزار مربوطه در FPGA بسیار مهم است.
محاسبات ریاضی مربوط به پردازش سیگنال به صورت ممیز ثابت با نمایش two's complement انجام میشود. تبدیل الگوریتم از ریاضیات ممیز شناور (floating-point) به ممیز ثابت (fixed-point) توسط طراح الگوریتم انجام میشود؛ اما به طور کلی، داشتن اطلاعات کافی در زمینه محاسبات و ریاضیات کامپیوتری ضروری است.
در اکثر مواقع، طراحی سختافزار به روش RTL انجام شده و برنامه آن به زبانهای VHDL و Verilog بر روی FPGA پیادهسازی میگردد. طراح FPGA این اختیار را دارد که بسته به نوع الگوریتم و سایر المانهای سیستم الکترونیکی مربوطه، و با تشخیص خود، بخشی از پیادهسازی را بر روی ARM یا PS در تراشه Zynq انجام دهد (برای مثال، پیادهسازی پروتکلهای ارتباطی). همچنین، استفاده از سایر نرمافزارها و ابزارهای کمکی در طراحی از جمله HLS, System Gen, HDL Coder و غیره اختیاری است.
یکی از کارهای مهم در تمامی مراحل پیادهسازی تا اجرا، شبیه سازی است. شبیهسازی میتواند به کمک یک برنامه HDL به عنوان Testbench انجام و یا مستقیما به کمک ابزارهای آنالیز منطقی در FPGA، برای مثال Chipscope و ILA انجام شود. انتخاب روش و ایجاد سناریو تست و درستیسنجی یکی از وظایف مهم در طراحی با FPGA است.
تحصیلات و سابقه کار مورد نیاز:
ترجیحا، مدرک دانشگاهی حداقل کارشناسی ارشد مهندسی برق/کامپیوتر گرایش الکترونیک/سخت افزار باشد.
دارای حداقل 2 سال سابقه کاری در زمینههای مرتبط
پیادهسازی الگوریتمهای پردازش سیگنال دیجیتال بر روی FPGA
پیادهسازی اینترفیس بر روی FPGA
مهارتهای مورد نیاز:
تسلط به طراحی سختافزار به روش RTL به زبانهای VHDL و Verilog:
_تسلط به تکنیکهای طراحی سیستمهای دیجیتال از جمله Pipelining, Resource-sharing, Time-multiplexing, Retiming و غیره.
_دانش کافی در بهینهسازی و افزودن Constraint های زمانی و فیزیکی.
شناخت محصولات و نرمافزارهای طراحی و پیاده سازی FPGA های شرکت Xilinx و تسلط به نرمافزارهای Vivado و ISE. شناخت تراشههای FPGA به ویژه Spartan, Virtex و Zynq.
دانش کافی نسبت به معماری Zynq و تقسیم طراحی سیستم بین PL و PS.
دانش کافی در برنامه نویسی به زبان C/CPP در SDK.
توانایی کار با انواع IP Core های ریاضیاتی، ارتباطی و حافظه شرکت Xilinx از جمله FFT, FIR, DDS, CORDIC, Memory Gen, AXI و غیره.
تسلط به پیادهسازی الگوریتمهای پردازش سیگنال (DSP) بر روی FPGA:
_دانش کافی در زمینه محاسبات و ریاضیات کامپیوتری ممیز ثابت (fixed-point) و ممیز شناور (floating-point).
_تسلط به فهم برنامه m-file نرمافزار Maltab جهت پیادهسازی سختافزار مربوطه.
_آشنایی با محیط Simulink نرمافزار matlab جهت پیادهسازی سختافزار مربوطه.
_آشنایی با مفاهیم پردازش سینگال دیجیتال.
آشنایی با مفاهیم اولیه الکترونیک:
_انگیزه بالا در عیبیابی و رفع عیب احتمالی بردهای الکترونیکی مورد استفاده.
_تعیین پارامترها و انتخاب قطعات جانبی مورد استفاده.
شناخت، راهاندازی و کار با مبدلهای آنالوگ-دیجیتال:
_دانش کافی نسبت به مفاهیم دادهبرداری.
دانش کافی نسبت به اینترفیسها و پروتکلهای ارتباطی رایج در بین پردازندهها و میکروکنترلرها از جمله UART RS232/485, SPI, IIC, CAN, Ethernet و غیره:
_راهاندازی و کار با peripheral ها و ماژولهای جانبی از جمله ADC، سنسور و غیره.
_برقراری ارتباط بین چند برد FPGA و یا با کامپیوتر.
انگیزه بالا در یادگیری موضوعات جدید و حل مشکلات احتمالی:
_مهارت در خواندن و فهم دیتاشیت.
_علاقه مند به مستندسازی.
ثبت مشکل و تخلف آگهی
ارسال رزومه برای تراشه مدار سامانه