با سلام. به درخواست یکی از دوستان و بنا به قول قبلی قصد دارم در این تاپیک نرم افزار System Generator را معرفی کنم. میتونید سوالات رو در همین تاپیک بپرسین و تا جایی که بلد باشم جواب میدم. چون خودم ورژن 14.7 نصب کردم. توضیحات بر اساس این ورژن خواهد بود.
System Generator یکی از برنامه های نرم افزار Xilinx ISE هست که با نصب نسخه های System Edition یا DSP Edition به همراه Project Navigator (همون محیط کدنویسی معمولی) و بقیه ابزارها (مثل ChipScope، ISim، PlanAhead و ...) نصب میشه.
System Generator یا به اختصار SysGen در محیط ******** نرم افزار Matlab اجرا میشه و به همون صورت که در سیمولینک به صورت بلوک دیاگرامی هست، میشه از این برنامه استفاده کرد و بلوک ها رو کنار هم چید و به هم وصل کرد تا به خواسته مورد نظر رسید. بنابراین لازمه کار با SysGen اینه که با متلب و مخصوصاً محیط سیمولینک آشنایی داشته باشید.
در این پست بیشتر در مورد کلیات صحبت میشه و در آینده در پست های بعدی که به تدریج اضافه میشه در مورد نحوه کار و نکات بحث میشه.
در ضمن سایت Xilinx هم منابع خوبی داره که در صورتی که با انگلیسی مشکلی ندارید توصیه میکنم از این منابع حتماً استفاده کنید.
یک مثال از محیط SysGen: (برای تصویر بزرگ روی عکس کلیک کنید)

هر چند میشه در هر زمینه در طراحی بر اساس FPGA از SysGen استفاده کرد ولی مهم ترین استفاده SysGen در کارهای پردازشی (DSP) است. SysGen با ساده کردن استفاده از بلوک های پردازشی و انواع داده Fixed Point و Floating Point و ساده شدن شبیه سازی با کمک گرفتن از امکانات سیمولینک گزینه ایده آل برای کارهای پردازشیه، طوری که کاری که با کدنویسی با سختی های زیادی از جمله کار با انواع داده و دردسر تبدیل نوع، سختی شبیه سازی و طولانی بودن کار کدنویسی همراهه در محیط SysGen به راحتی امکان پذیره.
تعدادی از مثالهایی که پیاده سازی اونها با استفاده از SysGen توصیه میشه:
- محاسبه فرمول که پیچیده تر از چند عمل اصلیه و مخصوصاً ضرب و تقسیم توی فرمول داره.
- محاسبات دارای مقادیر اعشاری مخصوصاً وقتی که دقت محاسبه مهمه یا تعداد بیت مورد نیاز در خروجی هر مرحله برای قسمت صحیح و اعشار نسبت به ورودی عوض میشه.
- محاسبات دارای اعداد مختلط
- FFT و معکوس FFT
- فیلترهای FIR
- محاسبات Multi-Rate که نیاز به Downsample یا Upsample دارند
- حافظه ای که نیاز به مقدار اولیه داره و محاسبه مقدار اولیه و تشکیل فایل ضرایب با استفاده از روش های معمول کدنویسی سخت و زمان گیره.
- وقتی ساختن کد تست (Test bench) سخت و زمان گیره مثلاً سیگنال ورودی میتونه شکل های مختلف داشته باشه که درست کردنش با کدنویسی مشکله ولی میشه به راحتی در متلب با یک کد ساده یا چند بلوک در سیمولینک ساخت.
- شبیه سازی های بزرگ و وقت گیر، شبیه سازی در SysGen خیلی سریع تر و راحت تره.
همین طور که در مثال های بالا میبینید استفاده از SysGen به چند صورت ممکنه:
1- کل برنامه در SysGen پیاده سازی بشه از جمله تخصیص پین ها و ساختن فایل bit.
2- قسمتی از برنامه در SysGen و قسمت دیگه با استفاده از کدنویسی انجام بشه و فایل SysGen به عنوان یک Component به صورت Black Box به کد اضافه بشه.
3- کل برنامه با استفاده از کدنویسی پیاده بشه ولی شبیه سازی با استفاده از SysGen انجام بشه.
تذکر: تا جایی که من با این نرم افزار کار کردم، بدون باگ نیست و بعضی مواقع در کامپایل با مشکل مواجه میشه، یا هنگ میکنه یا ارور میده و متلب بسته میشه که معمولاً پشت سر هم اتفاق میفته و باعث اعصاب خردی میشه ولی باعث نمیشه که برنامه درست کار نکنه. در این موارد خونسردی خودتون رو حفظ کنید و به راه حل هایی که در آینده میگم مراجعه کنید.
================================================== ========================================
پ. ن:
چون احتمالاً بعضی از دوستان قصد نصب برنامه رو دارن چند نکته لازم رو توی همین پست میگم:
برای اجرای SysGen لازمه هر دو نرم افزار ISE (نسخه هایی که ذکر شد) و Matlab روی سیستم نصب شده باشن. در این پست میتونید ببینید که چه ورژن هایی از این دو نرم افزار با هم سازگار هستند.
در هنگام نصب ISE اگه قبلاً متلب با ورژن سازگار نصب شده باشه پنجره ای به شکل زیر باز میشه که برای لینک کردن SysGen با Matlab هست، در صورتی که متلب بعد از ISE نصب بشه، در اولین اجرای SysGen، این پنجره ظاهر میشه که با انتخاب Matlab سازگار با ISE، ارتباط نرم افزارها برقرار میشه و در تولباکس سیمولینک چند کتابخانه مربوط به Xilinx اضافه میشه که بلوک های قابل پیاده سازی در FPGA با پس زمینه آیکن Xilinx مشخص شدن.

مهم: در صورتی که Vivado هم نصب شده لازمه که در اینجا گزینه IDS انتخاب بشه چون گزینه دیگه مربوط به Vivado هست و در صورتی که انتخاب بشه چاره ای جز حذف نرم افزار برای اصلاح اشتباه نیست (از این مورد کاملاً مطمئن نیستم).
System Generator یکی از برنامه های نرم افزار Xilinx ISE هست که با نصب نسخه های System Edition یا DSP Edition به همراه Project Navigator (همون محیط کدنویسی معمولی) و بقیه ابزارها (مثل ChipScope، ISim، PlanAhead و ...) نصب میشه.
System Generator یا به اختصار SysGen در محیط ******** نرم افزار Matlab اجرا میشه و به همون صورت که در سیمولینک به صورت بلوک دیاگرامی هست، میشه از این برنامه استفاده کرد و بلوک ها رو کنار هم چید و به هم وصل کرد تا به خواسته مورد نظر رسید. بنابراین لازمه کار با SysGen اینه که با متلب و مخصوصاً محیط سیمولینک آشنایی داشته باشید.
در این پست بیشتر در مورد کلیات صحبت میشه و در آینده در پست های بعدی که به تدریج اضافه میشه در مورد نحوه کار و نکات بحث میشه.
در ضمن سایت Xilinx هم منابع خوبی داره که در صورتی که با انگلیسی مشکلی ندارید توصیه میکنم از این منابع حتماً استفاده کنید.
یک مثال از محیط SysGen: (برای تصویر بزرگ روی عکس کلیک کنید)

هر چند میشه در هر زمینه در طراحی بر اساس FPGA از SysGen استفاده کرد ولی مهم ترین استفاده SysGen در کارهای پردازشی (DSP) است. SysGen با ساده کردن استفاده از بلوک های پردازشی و انواع داده Fixed Point و Floating Point و ساده شدن شبیه سازی با کمک گرفتن از امکانات سیمولینک گزینه ایده آل برای کارهای پردازشیه، طوری که کاری که با کدنویسی با سختی های زیادی از جمله کار با انواع داده و دردسر تبدیل نوع، سختی شبیه سازی و طولانی بودن کار کدنویسی همراهه در محیط SysGen به راحتی امکان پذیره.
تعدادی از مثالهایی که پیاده سازی اونها با استفاده از SysGen توصیه میشه:
- محاسبه فرمول که پیچیده تر از چند عمل اصلیه و مخصوصاً ضرب و تقسیم توی فرمول داره.
- محاسبات دارای مقادیر اعشاری مخصوصاً وقتی که دقت محاسبه مهمه یا تعداد بیت مورد نیاز در خروجی هر مرحله برای قسمت صحیح و اعشار نسبت به ورودی عوض میشه.
- محاسبات دارای اعداد مختلط
- FFT و معکوس FFT
- فیلترهای FIR
- محاسبات Multi-Rate که نیاز به Downsample یا Upsample دارند
- حافظه ای که نیاز به مقدار اولیه داره و محاسبه مقدار اولیه و تشکیل فایل ضرایب با استفاده از روش های معمول کدنویسی سخت و زمان گیره.
- وقتی ساختن کد تست (Test bench) سخت و زمان گیره مثلاً سیگنال ورودی میتونه شکل های مختلف داشته باشه که درست کردنش با کدنویسی مشکله ولی میشه به راحتی در متلب با یک کد ساده یا چند بلوک در سیمولینک ساخت.
- شبیه سازی های بزرگ و وقت گیر، شبیه سازی در SysGen خیلی سریع تر و راحت تره.
همین طور که در مثال های بالا میبینید استفاده از SysGen به چند صورت ممکنه:
1- کل برنامه در SysGen پیاده سازی بشه از جمله تخصیص پین ها و ساختن فایل bit.
2- قسمتی از برنامه در SysGen و قسمت دیگه با استفاده از کدنویسی انجام بشه و فایل SysGen به عنوان یک Component به صورت Black Box به کد اضافه بشه.
3- کل برنامه با استفاده از کدنویسی پیاده بشه ولی شبیه سازی با استفاده از SysGen انجام بشه.
تذکر: تا جایی که من با این نرم افزار کار کردم، بدون باگ نیست و بعضی مواقع در کامپایل با مشکل مواجه میشه، یا هنگ میکنه یا ارور میده و متلب بسته میشه که معمولاً پشت سر هم اتفاق میفته و باعث اعصاب خردی میشه ولی باعث نمیشه که برنامه درست کار نکنه. در این موارد خونسردی خودتون رو حفظ کنید و به راه حل هایی که در آینده میگم مراجعه کنید.
================================================== ========================================
پ. ن:
چون احتمالاً بعضی از دوستان قصد نصب برنامه رو دارن چند نکته لازم رو توی همین پست میگم:
برای اجرای SysGen لازمه هر دو نرم افزار ISE (نسخه هایی که ذکر شد) و Matlab روی سیستم نصب شده باشن. در این پست میتونید ببینید که چه ورژن هایی از این دو نرم افزار با هم سازگار هستند.
در هنگام نصب ISE اگه قبلاً متلب با ورژن سازگار نصب شده باشه پنجره ای به شکل زیر باز میشه که برای لینک کردن SysGen با Matlab هست، در صورتی که متلب بعد از ISE نصب بشه، در اولین اجرای SysGen، این پنجره ظاهر میشه که با انتخاب Matlab سازگار با ISE، ارتباط نرم افزارها برقرار میشه و در تولباکس سیمولینک چند کتابخانه مربوط به Xilinx اضافه میشه که بلوک های قابل پیاده سازی در FPGA با پس زمینه آیکن Xilinx مشخص شدن.

مهم: در صورتی که Vivado هم نصب شده لازمه که در اینجا گزینه IDS انتخاب بشه چون گزینه دیگه مربوط به Vivado هست و در صورتی که انتخاب بشه چاره ای جز حذف نرم افزار برای اصلاح اشتباه نیست (از این مورد کاملاً مطمئن نیستم).
دیدگاه