توسط احمد ثقفی 

27 اردیبهشت, 1395

مراحل طراحی سخت‌افزار دیجیتال

روند طراحی یک سخت‌افزار دیجیتال در پروژه‌های حرفه‌ای چگونه است؟

به کمک چه ابزاری می‌توان عیوب سخت‌افزار را تشخیص داد و آنها را برطرف کرد؟

چطور به مشتری ثابت کنیم که مدار، آنگونه که او می‌خواهد عمل می‌کند؟

More...

در این مقاله، سه مرحله اساسی برای ساخت و ارائه یک سخت‌افزار دیجیتال را به شما معرفی خواهم کرد. این سه مرحله، طراحی سخت‌افزار دیجیتال، نحوه عیب‌زدایی از آن، و نهایتا روش درستی‌آزمایی آن است.

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

درستی‌آزمایی که مرحله نهایی پیاده‌سازی است، فرآیندی است که به طراحان سطح سیستم و در صورت لزوم، مجری و یا کارفرمای پروژه، صحت عملکرد سیستم پیاده‌سازی شده را اثبات می‌کند.

برای دانلود فایل PDF این مقاله، روی دکمه زیر کلیک کنید:

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

سخت‌افزار

طراحی سخت‌افزار دیجیتال

طراحی یک سیستم پردازش سیگنال دیجیتال، با تعریف الگوریتم‌های پردازشی توسط طراحان سطح سیستم آغاز می‌شود. این الگوریتم‌ها معمولا توسط نرم‌افزارهای سطح بالا مثل نرم‌افزار MATLAB یا به زبان C مورد ارزیابی قرار گرفته و پس از کسب نتیجه مورد نظر به عنوان پایه طراحی و درستی‌یابی در اختیار شما به عنوان طراح بخش سخت‌افزار دیجیتال قرار می‌گیرند. 

مدل سطح سیستم

اولین مرحله برای پیاده‌سازی، ارزیابی الگوریتم‌ها توسط پیاده‌ساز به منظور تخمین مقدار منابع سخت‌افزاری لازم برای پیاده‌سازی است. در این مرحله، فقط می‌توانید به وسیله روابط تجربی و تحلیلی موجود، مقدار منابع سخت‌افزاری لازم را تخمین بزنید.

در همین مرحله باید یک تصمیم‌گیری اولیه در مورد استفاده از سخت‌افزار و نرم‌افزار برای تقسیم وظایف پردازشی انجام دهید. بنابراین، بخشی از پردازش‌ها بصورت سخت‌افزاری، مثلا توسط FPGA، و بخش دیگر بصورت نرم‌افزاری، مثلا توسط DSP انجام می‌شود.

پس از اینکه مدل در سطح سیستم طراحی شد، باید از آن به عنوان پایه طراحی استفاده کنید. در پیاده‌سازی‌های سخت‌افزاری، معمولا دقت نمایش اعداد و محاسبات محدود است. بر خلاف آن، یک مدل سطح سیستم که مثلا توسط نرم‌افزار MATLAB طراحی شده است، دارای دقت نمایش اعداد به صورت ممیز شناور (floating point) است.

بنابراین اولین مرحله در استفاده از مدل MATLAB تبدیل آن به مدلی با دقت محدود است که آن مدل ممیز ثابت (fixed point) یا bit-true گفته می‌شود. برای انجام این تبدیل، باید نتیجه خروجی هر دو مدل را با هم مقایسه کنید و دقت نمایش (عرض بیت‌ها) در مدل ممیز ثابت را طوری انتخاب کنید که نسبت به مدل ممیز شناور دارای خطای قابل قبولی باشند.

پس از تولید مدل ممیز ثابت، می‌توانید از آن برای تولید بردارهای تست ورودی استفاده کنید و نتایج خروجی سیستم را نیز با نتایج خروجی آن به منظور درستی‌یابی سیستم مقایسه کنید. توجه کنید که ایجاد مدل ممیز ثابت در سطوح مختلف سیستم امکان‌پذیر است. مثلا می‌توانید برای زیرسیستم‌های کوچک طرح مثل یک فیلتر، این مدل را ایجاد کنید. در مرحله بعد، می-توانید یک مدل سطح بالاتر ممیز ثابت ایجاد کنید و بخش بزرگتری از سیستم را با آن تست کنید. 

مدل سخت‌افزاری سیستم

بعد از تولید مدل ممیز ثابت از بخش‌های مختلف سیستم، پیاده‌سازی سخت‌افزاری سیستم شروع می‌شود. قبل از آن باید سیستم را به بخش‌های کوچک‌تری تقسیم کنید. این کار باعث می‌شود که پیاده‌سازی و عیب‌زدایی سیستم آسان‌تر شود و از طرف دیگر، اختصاص وظایف پیاده-سازی را به نیرو‌های پیاده‌ساز آسان‌تر می‌کند. بخش‌های کوچک طرح بعد از پیاده‌سازی، یکی یکی به یکدیگر متصل می‌شوند تا طرح نهایی پیاده شود.

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

برای آشنایی با زبان VHDL، این برنامه ویدئویی را ببینید…

بعد از توصیف یک بخش سخت‌افزاری، باید درستی آن بخش را با انجام شبیه‌سازی عملکرد (functional simulation) بررسی کنید. این کار معمولا توسط یکی از نرم‌افزارهای موجود در این زمینه انجام می‌شود. یکی از این نرم‌افزارها، نرم‌افزار ISim از مجموعه نرم‌افزار ISE است که شرکت Xilinx آن را تولید کرده است.

برای آشنایی با نرم‌افزار ISim، این برنامه ویدئویی را ببینید…

نرم‌افزار دیگری که بسیاری از کاربران حرفه‌ای از آن استفاده می‌کنند، نرم‌افزار ModelSim محصول شرکت Mentor Graphics است. در این مرحله، اینکه طرح سخت‌افزاری نهایتا با چه تکنولوژی پیاده‌سازی خواهد شده اهمیتی ندارد. تنها عملکرد طرح از لحاظ الگوریتمی مورد بررسی قرار می-گیرد.

در صورتی که عملکرد زیرسیستم مورد تایید طراح باشد، می‌توان توصیف سخت‌افزاری را سنتز کرد. منظور از سنتز توصیف سخت‌افزاری، تولید مجموعه‌ای از توصیفات جدید است که بیانگر نحوه پیاده‌سازی سیستم بر روی یک تکنولوژی خاص، مثلا یک مدل از FPGA است. این مرحله توسط نرم‌افزارهای ویژه‌ای که معمولا توسط خود شرکت سازنده تکنولوژی هدف ارائه می‌شود انجام می‌گیرد.

در مورد شرکت Xilinx، نرم‌افزاری که برای پیاده‌سازی بخش سخت‌افزار دیجیتال استفاده می‌شود، نرم‌افزار ISE نام دارد. این نرم‌افزار قادر به مدیریت تمامی مراحل پیاده‌سازی از ورود توصیف سخت‌افزاری و شبیه‌سازی تا مرحله سنتز و پیاده‌سازی است.

برای آشنایی با نرم‌افزار ISE، این برنامه ویدئویی را ببینید…

بعد از سنتر طرح، می‌توانید مجددا آن را شبیه‌سازی کنید. در این مرحله، محدودیت‌های واقعی پیاده‌سازی مثل تاخیر انتشار سیگنال در بلوک‌های سخت‌افزاری نیز در شبیه‌سازی شما دخیل می‌شوند. در آخر، وقتی که تمام شبیه‌سازی‌ها بیان‌کننده صحت عملکرد سیستم بود، می‌توانید مراحل پیاده‌سازی آن را توسط نرم‌افزار ISE انجام دهید و طرح را به FPGA منتقل کنید.

عیب‌یابی

عیب‌زدایی سخت‌افزار دیجیتال

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

عیب‌زدایی در چند سطح می‌تواند انجام شود. در مرحله اول، پس از توصیف سخت‌افزاری یک زیر بخش توسط یکی از زبان‌های توصیف سخت‌افزاری (VHDL یا Verilog)، باید عیب‌های احتمالی موجود در طرح را برطرف کنید. برای این کار می‌توانید از شبیه‌سازی عملکرد به همراه اطلاعاتی که مدل ممیز ثابت در اختیار شما قرار می‌دهد استفاده کنید.

توسط مدل ممیز ثابت می‌توانید بردارهای تستی برای ورودی به سیستم ایجاد کنید. این بردارهای ورودی را یکبار به مدل ممیز ثابت اعمال کنید و خروجی سیستم را دخیره کنید. در مرحله بعد، همین بردار ورودی را توسط نرم‌افزار شبیه‌ساز (مثلا ModelSim) به زیرسیستم تحت تست اعمال نموده و خروجی آن را نیز ذخیره کنید. سپس در محیط نرم‌افزاری مثل MATLAB، این دو خروجی را رسم و با هم مقایسه کنید. در صورتی که طرح به درستی پیاده‌سازی شده باشد، باید خروجی‌ها کاملا بر هم منطبق باشند.

در صورتی که ایرادی در توصیف سخت‌افزاری وجود داشته باشد، می‌توانید به کمک امکاناتی که ابزار شبیه‌سازی در اختیار شما قرار می‌دهد، مقادیر داخلی مورد نیاز در طرح را در هنگام شبیه-سازی مشاهده و از آن برای بررسی صحت عملکرد سیستم و یافتن خطا استفاده کنید. مشابه همین مراحل را می‌توانید بعد از سنتز توصیف سخت‌افزاری، برای طرح سنتز شده انجام دهید.

پس از اطمینان از صحت عملکرد سیستم و عدم وجود خطا در آن می‌توانید آن را بر روی تکنولوژی هدف پیاده‌سازی کنید. باید توجه کنید که هنوز ممکن است ایراداتی در سیستم وجود داشته باشد که فقط هنگام اجرای عملی بر روی FPGA رخ دهد. برای تست و عیب‌زدایی از سیستم به صورت run-time، روش‌های مختلفی وجود دارد.

یک روش، ذخیره‌سازی مقادیر رجیسترها و خروجی‌های مورد نظر در یک حافظه درون با بیرون FPGA و انتقال آنها از طریق یکی از پروتکل‌های انتقال دیتا مثل پروتکل RS232 یا USB به کامپیوتر و بررسی آنها در یک نرم‌افزار مناسب مثل MATLAB است. این کار نیاز به صرف وقت زیاد توسط طراح برای ایجاد بستر مناسب ذخیره‌سازی و انتقال داده‌ها به کامپیوتر دارد.

برای آشنایی با پروتکل RS232 و نحوه پیاده‌سازی آن، این مقاله را بخوانید…

خوشبختانه انجام مراحل فوق از طریق ابزاری که توسط شرکت Xilinx در اختیار شما قرار گرفته به صورت خودکار قابل انجام است و در زمان لازم برای طراحی به مقدار قابل ملاحظه‌ای صرفه‌جویی می‌شود. نرم‌افزار ChipScope که به همراه نرم‌افزار ISE ارائه می‌شود، امکان ذخیره‌سازی داده‌های هر بخشی از سیستم را به هنگام وقوع شرایط خاصی که شما تعیین می‌کند دارد.

این داده‌های ذخیره شده، به محض آماده شدن از حافظه اختصاص داده شده به آن از طریق رابط JTAG روی برد به کامپیوتر منتقل می‌شود و سپس بر روی صفحه مخصوص نرم‌افزار ChipScope نمایش داده می‌شود. در صورتیکه نیاز به تحلیل بیشتری داشته باشید، می‌توانید داده‌های بدست آمده را در یک فایل ذخیره نمود و آن را در یک نرم‌افزار قدرتمندتر مثل MATLAB تحلیل کنید.

درستی‌آزمایی

درستی‌آزمایی سخت‌افزار دیجیتال

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

درستی‌آزمایی سیستم را می‌توانید در سطوح مختلف طراحی انجام رهید. در هر سطح از طراحی، برای انجام درستی‌آزمایی، ابزار و روش‌های مختلفی مورد نیاز است. در پایین‌ترین سطح، بعد از پیاده‌سازی هر زیرسیستم، می‌توان برای آن درستی‌آزمایی انجام داد.

به عنوان مثال، طراحی یک فیلتر را در نظر بگیرید. طراحی از یک مدل ممیز شناور که در نرم-افزاری مثل MATLAB طراحی شده آغاز می‌شود. سپس مدل ممیز ثابت آن توسط پیاده‌ساز تهیه می‌شود. در مرحله بعد، باید بردارهای مناسبی به عنوان ورودی تست برای آن طراحی کنید. این بردارها باید طوری باشند که تمام حالت‌های ممکن عملی را برای سیستم مورد نظر بوجود بیاورند؛ در غیر این صورت، درستی‌آزمایی جامعی انجام نخواهد شد. پس از اعمال بردارها به مدل ممیز ثابت، خروجی‌های متناظر را باید ذخیره کنید تا به عنوان معیار مقایسه در مرحله درستی‌آزمایی مورد استفاده قرار دهید.

پس از پیاده‌سازی سیستم بر روی تکنولوژی هدف، باید بردارهای تست ورودی تهیه شده را به زیرسیستم اعمال کنید و خروجی‌های متناظر را ذخیره کنید. برای ذخیره‌سازی خروجی‌ها و انتقال آنها به کامپیوتر، همان طور که در بخش قبل گفته شد، می‌توان از ابزار ChipScope که به همراه نرم‌افزار ISE ارائه می‌شود استفاده کنید.

بدین ترتیب خروجی‌ها به کامپیوتر منتقل شده و به شما این امکان داده می‌شود که در محیطی مثل نرم‌افزار MATLAB به تحلیل داده‌ها و مقایسه آن با خروجی‌های مدل ممیز ثابت بپردازید. تمام زیرسیستم‌های پردازشی سیستم را می‌توان به این ترتیب درستی‌آزمایی نمود. پس از اطمینان از صحت عملکرد زیرسیستم‌ها، می‌توانید آنها را یکی یکی به سیستم اصلی اضافه کنید و در هر مرحله نیز، فرآیند درستی‌آزمایی را مجددا انجام دهید.

بعد از اینکه سیستم نهایی پیاده‌سازی شد، نیاز به نوع دیگری از درستی‌آزمایی است که با روش‌هایی که تا اینجا اشاره کردم قابل انجام نیستند. از آنجا که معمولا سیستم‌های مورد نظر برای تست، یک مجموعه پردازشی با عملکرد زمان-واقعی یا real-time است، باید تست و درستی-آزمایی زمان-واقعی در مورد آن انجام شود تا از صحت عملکرد آن اطمینان حاصل شود. 

شبیه‌سازی زمان-واقعی

یک روش برای انجام درستی‌آزمایی زمان-واقعی، تست سیستم در شرایط و محیط عملی است. در این حالت، سیستم به محیطی مشابه آنچه در شرایط واقعی در آن قرار خواهد گرفت منتقل شده و با سناریوهای از پیش طراحی شده‌ای مورد آزمایش قرار می‌گیرد.

روش درستی‌آزمایی در محیط واقعی گرچه می‌تواند به عنوان درستی‌آزمایی زمان‌واقعی انجام شود، ولی دارای معایب بسیاری است. از جمله معایب آن می‌توان به هزینه بالای هر تست، زمان‌بر بودن آن و محدودیت انجام آن اشاره کرد. در فرایند طراحی سیستم، در بسیاری از موارد، نیاز به تست‌های زمان-واقعی دارید. واضح است که امکان انجام تست‌های میدانی بسیار محدود است. بنابراین، باید برای این منظور از روش دیگری استفاده کرد. روش متداول برای انجام تست‌های زمان-واقعی در محیط‌های آزمایشگاهی، استفاده از شبیه‌ساز است.

 در مقاله دیگری، در مورد شبیه‌سازهای زمان-واقعی و کاربردهای آن توضیح خواهم داد.

آیا مقاله ۳ مرحله اساسی در ساخت و ارائه یک سخت‌افزار دیجیتال برای شما مفید بود؟

لطفا نظرتان را در مورد این برنامه در پایین همین پست با دیگران به اشتراک بگذارید. همچنین با کلیک روی هر کدام از دکمه‌های اشتراک گذاری ابتدای این مطلب و به اشتراک‌گذاری آن در شبکه‌های اجتماعی می‌توانید افراد بیشتری را در یادگیری این مطالب سهیم کنید.

کانال تلگرام آموزش FPGA از صفر

برای عضویت در کانال تلگرام و دسترسی به آموزش‌های بیشتر و اطلاع سریع از زمان انتشار آموزش‌ها و تخفیف‌های ویژه، روی دکمه زیر کلیک کنید:

شاید به این موضوعات نیز علاقه داشته باشید:

  • با سپاس از استاد عزیزم جناب ثقفی عزیز مقاله بسیار خوبی بود و دید جامع و خوبی به آدم میداد در مورد کلیت مساله پیاده سازی ، لطفا این مراحل رو به ترتیب اولویت بررسی بفرمایید و بشکافیدشان و در صورت زیق وقت بهترین منابع را در هر زمینه مربوطه معرفی بفرمایید…

    • از لطف و توجه شما ممنونم.

      برنامه‌های ویدئویی و مقالاتی که تا به این لحظه در سایت منتشر شدند، همگی تشریح کننده بخش‌های سه‌گانه همین مقاله هستند که به تدریج با ارائه مقالات و برنامه‌های ویدئویی بیشتر، این سه مرحله بیشتر توضیح داده خواهد شد.

  • به نکات مهمی در مراحل مختلف طراحی اشاره شده ولی بر خلاف مقاله های قبلی بیشتر جنبه ی تئوری دارد ! شاید بهتر باشد در یک مثال کوچک عملی این مراحل مختلف طراحی را عملا به کارآموزان نشان داد.
    یک نکته ی دیگر اینکه متاسفانه نمیشه این مقاله را دانلود کرد تا بدون اینترنت هم در زمان های دیگر از آن استفاده کرد.
    و بلاخره متاسفانه، بزرگی نوشته ها مناسب نیست و نمی توان آنرا بزرگ نمایش داد که این باعث خستگی زود هنگام چشم می شود.

    • مقاله ای عالی بود کسی در صنعت و حتی مراکز اکادمی حتی که هدفش نشر مطالب خود به تمام افراد است حاضر نیستند به همین راحتی این مطالب را در اخیار دیگران قرار دهند و کسی اگر شرکت های بزرگ و غول های فناوری را از درونش اطلاعات داشته باشد این را می دانند ک این مراکز سیستمی پیچیده و فوق العاده خوبی دارند کسی که واردش می شود یک مقدار که برای نیاز دانش از این شرکت ها میگرد و آن ها حاضر به افشای همه اطلاعاتشان به دیگران نیستند
      آقای ثقفی به خاطر اطلاعات مفیدتا از شما متشکریم

      • اتفاقا در کشور های خارجی خیلی خیلی بیشتر از ما به مسأله توسعه علم توجه میشود حتی علوم بسیار هایتک و پیچیده و سایت های زیادی هم با همین هدف وجود دارند مانند https://iversity.org و خیلی سایت های دیگر که کاملا رایگان هم هستند … و بطور کل در کشورهای پیشرفته توسعه علوم یک ارزش و افتخار محسوب میشود … من خودم دریکی از همین سایت های آموزشی رایگان خارجی مشغول به گذراندن یک دوره ای بودم که خود مدرس گفت : دوستان این مطالب را که آموزش میبینید با دوستان خود به اشتراک بگذارید چرا که همونطور که خودتان بهتر میدانید به اشتراک گذاشتن مطالب باعث ارتقاء سطح علمیتان میشود ….
        ولی متاسفانه در کشور ما به قدری خساست وجود دارد که حتی ساده ترین مطالب رو هم حاظر نیستیم با هم در میان بگذاریم مبادا که کسی ۲ زار پول بتواند در بیاورد از مطلب ما و ما نتوانیم … همش تنگ نظری و چه بسا همین تنگ نظری های کهنه است که مارا از عالم و آدم عقب انداخته…
        ببخشید که مطلبم طولانی شد و سپاس مجدد از حوصله ای که در خواندن این مطلب به خرج دادید.

        • خیلی خیلی عالی بود خوبه همه فعال بشن و یک چیزی به هم یاد بدن علم و فن آوری دو چیز متفاوت است منظور من فن آوری بود هروقت بتونی درک کنی چرا تو امریکا نخبگان امریکا علوم انسانی میخونن و ما را تشویق به مهندسی میکنن حرف من را درک خواهی کرد … اگه منظورم علم میبود از این سایت ها بهتر یک کتاب جامعه است که بهتر از هر استادی است…

    • ممنون از توجه شما و پیشنهاداتی که ارائه دادید.

      همانطور که در کامنت قبلی اشاره کردم، تشریح مطالبی که در این مقاله بحث شدند در مقالات و برنامه‌های دیگر تا حدی انجام شده و به طور کامل‌تر در مقاله‌ها و برنامه‌های دیگر خواهد شد.

      حتما در اسرع وقت امکان دانلود مقالات به صورت PDF رو هم در سایت قرار خواهیم داد.

  • سلام جناب ثقفی ، من یه سوالی داشتم اگر اجازه دارم بدونم میخواستم بپرسم کل دوره های آموزش ویدئویی زبان VHDL شما در تلگرام چند قسمت میشه ؟ یا آخرین ویدئو چه زمانی رو کانال میره ؟

    • سلام، ممنون از توجه شما به آموزش‌های سایت و کانال.

      این آموزش‌ها هر هفته تولید و منتشر می‌شوند و در حال حاضر مشخص نیست که تعداد آنها چقدر خواهد بود. اما آنچه مشخص است این است که آموزش‌ها تا مرحله پیاده‌سازی مدارات ساده روی FPGA پیش خواهند رفت.

      موفق باشید.

  • خیلی بابت زحمات شما تشکر می کنم

    لطفا دوره های مجازی برای افرادی که دسترسی به تهران ندارند تشکیل دهید. قبلا با شما در این موردصحبت کرده بودم. اما متاسفانه تاکنون اقدامی در این زمینه انجام نداده اید. امیدوارم هر چه زودتر شاهد برگزاری دورهای کامل FPGA به روش مجازی در آموزشگاه شما باشم.
    با تشکر مجدد

  • {"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}

    ۷ تکنیک پیشرفته کدنویسی برای FPGA

    >