Professional Documents
Culture Documents
FPGA
تن
تهیه و ظیم :سارا السادات زمانی
9911
1
فهرست مطالب
مقدمه 3 ...................................................................................................................
-1-1مقدمه 5 ..........................................................................................................
-2-1مفاهیم اولیه 5 ....................................................................................................
-3-1قراردادهای نحوی 6 ............................................................................................
-4-1ماجول9 ..........................................................................................................
-5-1پورت 9 ..........................................................................................................
-6-1مدلسازی در سطح گیت 11 ..................................................................................
-7-1مدلسازی در سطح جریان داده 12 ...........................................................................
-8-1مدلسازی در سطح رفتاری 15 ................................................................................
2
مقدمه
تراشههای Field Programmable Gate Arraysیا همان FPGAبرای توسعه سختافزارهای دیجیتالی پیچیده و
اجتناب از ساخت بردهایی با تراشههای گسسته به وجود آمدهاند .با استفاده از تراشههای ،FPGAبردهایی که قبال با
تعداد زیادی از تراشههای دیجیتال ساخته میشدند ،در یک تراشه FPGAبا سرعت باالتر و از همه مهمتر با امکان
بهروز رسانی سختافزار ،پیادهسازی میشوند.
استفاده از FPGAاین امکان را میدهد تا طرحهای سختافزاری در ابعاد کوچکتر و با قیمت پایینتر ساخته شوند.
عیبیابی طرح دیجیتالی که در داخل FPGAپیادهسازی شده به دلیل وجود نرمافزارهای شبیهسازی قدرتمند ،بسیار
سادهتر است .بسیاری از قطعاتی که در پروژههای دیجیتال مورد استفاده قرار میگیرند (مانند DSP ،Dual port ram
FIFO ،Digital Synthesizer،Moduleو انواع کدرها و دیکدرها FFT Module ،Ethernet Core ،و …) به
صورت Soft Coreدر داخل FPGAبه راحتی قابل پیادهسازی بوده و در داخل کتابخانه استاندارد نرمافزار ISE
وجود دارند .استفاده از Soft Coreپردازندههایی نظیر ARMدر داخل ،FPGAاین تراشه را به ابزاری قدرتمند برای
پیادهسازی انواع طرحهای پردازش سیگنال (که نیاز به پردازش سریال دارند) تبدیل کردهاست .امروزه بسیاری از
شرکتهای بزرگ سازنده تراشه ،ASICطرحهای خود را بر روی FPGAتست و Verifyمیکنند زیرا امکان سنتز
مدار تا سطح ترانزیستور در تراشههای FPGAوجود دارد.
با استفاده از زبان توصیف سختافزار ( Verilogیا ) VHDLمیتوان طرح وایده سختافزاری خود را بسته به نیاز و
تبحر در سختافزار ،در یکی از سطوح توصیف رفتاری (توصیف سیستمیبا ساختاری شبیه زبان ،) Cسطح
Register Transfer Levelیا همان RTLبا استفاده از گیتها و فیلیپفالپها و یا حتی در سطح ترانزیستور
پیادهسازی نمود و یااینکه در محیط شماتیکی مدار مورد نظر را ترسیم و سنتز کرد.
میکروکنترلرها دارای CPUو حافظههای جانبی و … هستند ،میکروکنترلرها برای کاربرد مشخصی ساخته نشدهاند
و هر طراح میتواند برنامه دلخواه خود را درون آنها برنامهریزی کند .منابع و دستورالعملهای اجرایی یک
میکروکنترلر مشخص ،همواره ثابت است درحالی که میتواند هزاران برنامه مختلف را روی خود جای دهد .اما در
3
مورد FPGAها چنین نیست ،در یک FPGAهیچ CPUپیشفرضی وجود ندارد ،بلکه باید بلوکهای مختلف را در
داخل FPGAپیادهسازی کرد و در نهایت از آنها برای رسیدن به نتیجه دلخواه استفاده نمود .به عنوان مثال برایاینکه
بتوان در FPGAچند عدد را جمع کرد باید بوسیلهی گیتها یک بلوک جمعکننده طراحی نمود ،سپس میتوان در
سایر بلوکها از آن استفاده نمود.
FPGAها به دلیل داشتن بلوکهای منطقی خاص برای انجام هر عملیات و انجام پردازشهای موازی ،با سرعت بسیار
باال عملیاتهای مورد نظر را انجام میدهند .از نظر سرعت و دقت نمیتوان FPGAرا با میکروکنترلرها مقایسه کرد.
از نظر هزینه اجرا نیز اغلب پروژههای FPGAگرانتر از پروژههای میکروکنترلر هستند .در صورتی که بخواهید
کارهایی را که با یک میکروکنترلر انجام میدادید با FPGAانجام دهید ،باید وقت و هزینه بیشتری صرف اجرا کنید.
ازاین رو معموال FPGAو میکروکنترلر هر کدام کاربردهای خاص خود را دارند و به جای یکدیگر استفاده نمیشوند.
از FPGAاغلب برای ساخت دستگاههای مخابراتی پرسرعت ،دستگاههای صنعتی و تجاری خیلی حساس و سریع،
دستگاههای نظامیو مصارفاین چنین بهره میبرندFPGA .ها دارای چند هزار تا چند میلیون گیت در داخل خود
هستند ،که تعداد گیتهای یک FPGAبر قیمت آن تاثیر اساسی میگذارد .در هر پروژهای شما باید بدانید از چه
تراشهای و با چه تعداد گیت استفاده کنید تا بهینهترین حالت ممکن را بوجود آورید .شرکتهای مختلفی تراشههای
FPGAرا تولید میکنند که شرکت Xilinxو Alteraدرایران بیشتر شناخته شدهاند.
آرایه گیتهای برنامهپذیر براساس معماری داخلی ،پیچیدگی و تعداد گیتها به دستههای مختلفی مانند
PAL,PLA,CPLD,FPGAو … تقسیم میشوند که هرکدام ازاین دستهها برای مصارف خاصی مورد استفاده قرار
میگیرد .برخی از FPGAهای پیشرفته امروزی عالوه بر گیتهای منطقی دارای منابع داخلی دیگری مانند ،RAM
مبدل آنالوگ به دیجیتال ADCو مبدل دیجیتال به آنالوگ DACنیز هستند که به کاربر کمک میکند تا در
پروژههایی که بهاین امکانات نیاز دارد ،ازاین منابع داخلی استفاده نماید و یک سیستم کامل را در داخل تراشه
پیادهسازی نماید که به افزایش کارایی ،سرعت و دقت FPGAها کمک میکند.
4
فصل اول
-1-1مقدمه
Verilogیکی از زبانهای برنامه نویسی سختافزاری است که در آن گیتها و مدارات منطقی سختافزاری را توسط
برنامهنویسی تعریف میکنیم و بعد از شبیهسازی و تست ماژول ،میتوانیم آن را پیادهسازی کنیم.
برای این زبان برنامههای نرمافزاری مختلفی وجود دارد مانند ،ISE ،SynaptiCad ،Quartus II ،Model Sim
Active-HDL ،Vivadoو ...
-2-1مفاهیم اولیه
ماجول :ماجول بلوک پایه Verilogاست .یک ماجول میتواند یک عنصر یا مجموعهای از بلوکهای سطح پایینتر
باشد .بنابرین ماجول عملکرد مورد نظر را برای بلوکهای سطح باالتر فراهم میکند .اما پیادهسازی داخل آن را پنهان میکند.
شکل 1-1نحوه تعریف ماجول را با یک مثال نشان میدهد .در زبان Verilogمیتوانیم یک ماجول را در چهار سطح مختلف
تجرید بیان کنیم:
سطح گیت :دراین سطح ماجول به صورت گیتهای منطقی واتصاالت بین آنها بیان میشود.
سطح جریان داده ) : (Dataflowدرای ن سطح ماجول بوسیله مشخص کردن نحوه جریان اطالعات بین رجیسترها
ونوع پردازشی که روی آنها صورت میگیرد ،بیان میشود.
سطح رفتاری ) : (Behavioralدراین سطح ماجول بر حسب الگوریتم طراحی میشود ،بدوناینکه جزئیات طراحی
پیادهسازی سختافزاری در نظر گرفته شود.
سطح سوئیچ :دراین سطح ماجول به صورت سوئچها و اتصاالت بین آنها بیان میشود.
5
شکل 1-1نحوه تعریف ماجول
نمونه :یک ماجول الگویی ازیک عنصر واقعی میسازد ،هنگامیکه ازاین ماجول استفاده میشود Verilog ،یک نمونه
ازاین الگو میسازد .هر عنصر دارای نام ،متغیرها و پارامترهای خاص خود است .پروسهایجاد یک نمونه از الگوی یک ماجول
را اصطالحاً Instantiationیا نمونه سازی واین عنصر را Instanceیا نمونه مینامند .بعنوان مثال در شکل 2-1نحوه ساخت
یک نمونه از ماجول دیکدر را میبینیم.
شکل 2-1
-3-1قراردادهای نحوی
قراردادهای نحوی که بوسیله Verilogاستفاده میشود ،بسیار شبیه زبان برنامه نویسی Cاست .هر توکن میتواند توضیح،
جدا کننده ،عدد ،رشته ،شناسه ویا کلمه کلیدی باشد Verilog .یک زبان حساس به متن است وتمام کلمات کلیدی آن با
حروف کوچک نوشته میشوند.
6
حروف فاصله :حروف فاصله در Verilogعبارتند از :فاصله ) (\t) tab ،(\bو ). (\nاین حروف توسط Verilogنادیده
گرفته میشوند ،مگراینکه بعنوان جداکننده توکنها استفاده شوند ویا در یک رشته استفاده شوند.
اپراتورها :اپراتورها به سه دسته یگانی ،دوتایی وسه تایی تقسیم میشوند وبه ترتیب دارای یک ،دو و سه اپرند هستند.
اعداداندازه دار :دراین حالت Verilogرا مقید میکنیم یک عدد را با هماناندازه مورد نظر ما بکار ببرد .شکل
اعداداندازه دار بصورت< < size ><radix<<numberاست < size > .به دسیمال نوشته شده و تعداد
بیتهای عدد را مشخص میکند < radix > .مبنای عدد را مشخص میکند.
اعداد بیاندازه :شکل کلی عدد بدوناندازه بصورت < <radix<<numberاست .دراین حالت طول عدد به نوع
پیادهسازی بستگی دارد ولی حداقل 32بیت است.
شناسه وکلمه کلیدی :کلمات کلیدی شناسههایی هستند که از پیش برای تعریف ساختار زبان استفاده شدهاندو کلمات کلیدی
با حروف کوچک نوشته میشوند .شناسه میتواند از کاراکترهای حرفی _ ،و $تشکیل شود وحتماً باید با یک کاراکتر حرفی
شروع شود .شناسهها حساس به متن هستند.
انواع دادهها:
مجموعه مقادیر Verilog :برای مدلسازی عملکرد سختافزارهای واقعی از 4مقدار و 8سطح قدرت استفاده
میکند .مجموعه مقادیر در جدول 1-1و سطوح قدرت در جدول 2-1آمده است.
جدول 1-1مجموعه مقادیر
7
جدول 2-1سطوح قدرت
:Net برای برقرار کردن ارتباط بین اجزا سختافزاری بکار میرود .درست مانند مدارهای واقعی net ،در Verilog
توسط کلمه کلیدی wireتعریف میشود و مقدار پیش فرض آن zاست.
:Register برای ذخیره اطالعات بکار میرود .رجیستر تا وقتی مقدار جدیدی روی آن نوشته نشده مقدار خود را
نگه میدارد .برخالف register ،netبه درایور نیاز ندارد Register .در Verilogتوسط کلمه کلیدی reg
تعریف میشود ومقدار پیش فرض آن xاست.
:Vector انواع دادهای regو wireمیتوانند بصورت بردار تعریف شوند .شکل کلی تعریف بردار بصورت زیر
است:
><vector_type> [MSB: LSB] <vector_name
داده صحیح :نوع دادهای صحیح توسط کلمه کلیدی integerتعریف میشود وطول آن بستگی به پیادهسازی دارد
ولی حداقل 32بیت در نظر گرفته میشود.
زمان :در Verilogیک نوع دادهای خاص برای ذخیره کردن زمان شبیهسازی استفاده میشود .نوع دادهای زمان
بوسیله کلمه کلیدی timeتعریف میشود.
آرایه :در Verilogمیتوان آرایهای از نوعهای دادهای time ،integer ،regویا آرایهای از بردارهایی ازاین نوعها
تعریف کرد .شکل کلی تعریف آرایه عبارتست از :
پارامتر :میتوان در یک ماجول اعداد ثابتی را به صورت پارامتر تعریف نمود و از آنها استفاده کرد.این امر توسط کلمه کلیدی
parameterانجام میشود.
راهنمای کامپایلر :در Verilogراهنمای کامپایلر دارای شکل کلی > <key wordاست .دو نوع راهنمای کامپایلر که مورد
استفاده بیشتری دارند ،عبارتند از :
8
‘defineکه برای تعریف ماکرو بکار میرود.
'include که برای الحاق یک فایل Verilogبه فایل جاری بکار میرود.
-4-1ماجول
قبالً نحوه تعریف ونمونه سازی ماجول را دیدیم ،دراینجا بصورت دقیقتر اجزا ماجول را مورد بررسی قرار میدهیم .در شکل
3-1اجزا ماجول مشخص شده است.قسمتهایی که بصورت زیر خط دار نوشته شدهاند ،در تعریف ماجول ضروری وسایر
قسمتها اختیاری است .قسمتهایی که بدنه ماجول را تشکیل میدهند ،میتوانند با هر ترتیبی در تعریف ماجول استفاده شوند.
شکل3-1
-5-1پورت
لیست پورتها :به هنگام تعریف ماجول دیدیم که لیست پورتها (در صورت وجود) در جلوی نام ماجول معرفی شوند.
بعنوان مثال در شکل 4-1یک جمع کننده 4بیتی ونحوه تعریف پورتهای آن نشان داده شده است.
9
شکل4-1
تمام پورتهای یک ماجول باید تعریف شوند.این تعریف طبق جدول 3-1صورت میگیرد.
جدول 3-1
بعنوان مثال تعریف پورتها در مورد جمع کننده شکل 4-1بصورت زیر است :
به هنگام اتصال پورتهای یک ماجول به جهان خارج باید به نکاتی توجه داشت :
پورتهای ورودی ماجول باید از نوع netباشند واین پورتها میتوانند به متغیرهایی از نوع regو یا netدر
جهان خارج متصل شوند.
پورتهای خروجی ماجول میتوانند از نوع regویا netباشند واین پورتها باید به متغیرهایی از نوع netدرجهان
خارج متصل شوند.
11
پورتهای دو سویه ماجول باید از نوع netباشند واین پورتها میتوانند به متغیرهایی از نوع netویا regدر جهان
خارج متصل شوند.
پورتهای ماجول ومتغیرهای خارجی متصل به آنها باید از نظر طول منطبق باشند.
در Verilogبه دو صورت میتوان ارتباط پورتها را با جهان خارج برقرار نمود :
.1اتصال ترتیبی :دراین روش به هنگام نمونه سازی از یک ماجول ،متغییرهای متصل به پورتها را دقیقاً به همان ترتیبی
که در تعریف ماجول آمدهاند ،بیاوریم .دراین روش اگر بخواهیم یک پورت خروجی به جایی متصل نباشد کافیست
جای آن را در لیست خالی بگذاریم.
.2اتصال از طریق نام :دراین روش برای اتصال هر پورت از قالب زیر استفاده میکنیم :
)Port_name (external_signal_name
ازاین روش وقتی استفاده میکنیم که تعداد پورتها زیاد باشد وبخاطر سپردن ترتیب آنها دشوار باشد .دراین روش
اگر بخواهیم یک پورت خروجی به جایی متصل نباشد کافیست نام آن رانیاوریم.
در شکل 5-1قوانین اتصال پورتها نمایش داده شده است.
در مدلسازی در سطح گیت مدار را به صورت مجموعهای از گیتهای پایه که به یکدیگر متصل شدهاند بیان میکنیم .برای
طراحی مدار در سطح گیت ،ابتدا باید آن را بصورت مجموعهایی از گیتهای پایه درآورد ،سپس با تعریف netهای مورد
نیازاین گیتهای پایه را به یکدیگر متصل نمود ،بهاین عمل اصطالحاً Wiringیا سیم بندی گفته میشود.
بعنوان مثال طرح شماتیک مدار یک مالتی پلکسر 4به 1و کد Verilogمربوط به آن در شکل 6-1آمده است.
11
شکل 6-1
تاخیر گیتها :تاکنون گیتهایی که در نظر گرفتیم حالتایده آل داشتهاند ،یعنی به محض تغییر ورودی بدون هیچ
تاخیری خروجی تغییر پیدا میکرد .ولی در مدارهای عملی وضعیت بهاین صورت نیست .تعیین تاخیر برای گیتها اجازه
میدهد شبیهسازی مدارها حالت واقعی تری به خود بگیرد .مقادیر تاخیر در Verilogبا عالمت #شروع میشود.
توجه کنید که تاخیر گیتها فقط به هنگام شبیهسازی مدارها مفید هستند ،و وقتی هدف سنتز مدار میباشد به هیچ وجه نباید
از تاخیر د ر توصیف مدار استفاده شود.
در مدلسازی در سطح جریان داده به نحوه انتقال ازاطالعات بین ثباتها و پردازش اطالعات اهمیت میدهیم .دراین قسمت
به چگونگی مدلسازی در سطح جریان داده در زبان Verilogو مزایای آن میپردازیم.
:Continuous Assignmentتوسطاین دستور میتوان یک مقدار را روی یک netدرایو کرد .شکل کلیاین دستور
به صورت زیر است:
12
;Assign<signal_strength> <delay> assignment_lists
: Implicit Continuous Assignmentدراین روش بجایاینکه یک متغیر را از جنس netتعریف کنیم و سپس
توسط دستور assignیک مقدار را روی آن درایو کنیم ،میتوانیماین عمل را در هنگام تعریف متغیر netانجام دهیم.
تاخیر :همانطور که در سطح گیت دیدیم تاخیرها برایاین استفاده میشوند که عملکرد مدار به واقعیت نزدیکتر باشد .در
سطح جریان داده نیز میتوان برای assignmentها تاخیر مشخص نمود.
تاخیر با قاعده :دراین حالت یک تاخیر را پس از assignو قبل از netمیآوریم .هر تغییری که در یکی از سیگنالهای
سمت راست رخ دهد ،باعث می شود پس از گذشت زمان تاخیر ،عبارت سمت راست مجدداً ارزیابی شود وسپس در متغیر
سمت چپ قرار گیرد .بهاین ترتیب تاخیری که دراینجا داریم ،از نوع Inertialاست واین امر باعث میشود که پالسهایی
با عرض کمتر از مقدار تاخیر مشخص شده به خروجی منتشر نشود.این تاخیر در شکل 7-1نشان داده شده است.
شکل7-1
تاخیر ضمنی :دراین حالت تاخیر و assignmentروی یک netبه هنگام تعریف آن netمشخص میشود.
13
تاخیر به هنگام تعریف : netدراین حالت به هنگام تعریف netتاخیر مورد نظر را برای آن مشخص میکنیم .ازاین پس
هر تغییری که رویاین netانجام شود ،با تاخیر مشخص شده اعمال میشود .باید توجه داشت کهاین امر در مورد مدلسازی
در سطح گیت نیز قابل استفاده است.
جدول4-1
14
-8-1مدلسازی در سطح رفتاری
بلوکهای ساخت یافته :در Verilogدو بلوک ساخت یافته وجود دارند initial ،و .alwaysاین دستورات ،پایه
مدلسازی در سطح رفتاری هستند وتمام قسمتهای توصیف رفتاری مدار دراین بلوکهای ساخت یافته قرار میگیرند.این
بلوکها دارای ساختار ترتیبی هستند.
بلوک :initialاین بلوک در زمان 0شروع شده وفقط یکبار در شروع شبیهسازی اجرا میشود .چنانچه بخواهیم درون
بلوک initialچندین دستور داشته باشیم ،باید بوسیله begin endآنها را بلوک کنیم .چنانچه چندین بلوک initialداشته
باشیم ،تمام بلوکها در زمان 0بصورت همزمان اجرا میشوند وهر بلوک مستقل از سایر بلوکها خاتمه مییابد .اگر قبل از
یک دستور تاخیری مشخص شود ،آن دستور پس از تاخیر مشخص شده از زمان فعلی شبیهسازی اجرا میشود.
بلوک : alwaysاین بلوک در زمان 0شروع میشود وتمام دستورات درون آن بطور پیوسته اجرا میشوند (مانند یک
حلقه).این دستورات برای مدلسازی یک بلوک از اعمال که متوالیاً در یک مدار انجام میشوند ،بکار میرود.
15
:Procedural Assignmentاین دستور مقدار یک متغیر ،regصحیح ،حقیقی ویا زمان راتغییر میدهد .مقدار جدید
در متغیر باقی میماند تا هنگامیکه یک دستور دیگر مقدار آن راتغیر دهد .سمت چپاین عبارت میتواند یکی از موارد زیر
باشد :
:Blocking Assignmentاین دستورات به همان ترتیبی که مشخص شدهاند اجرا میشوند ،یعنی بدون کامل شدن اجرای
یک دستور ،دستور بعدی اجرا نمیشود .اپراتوری که برایاین امر بکار میرود = است.
:Nonblocking Assignmentدراین روش کلیه دستورات برای اجرا زمانبندی میشوند ،بدوناینکه منتظر کامل شدن
اجرای یک دستور باشیم .اپراتوری که برایاین امر بکار میرود =< است.
16
کنترل زمان :در Verilogچنانچه دستورات کنترل زمان موجود نباشد ،شبیهسازی انجام نمیشود .در Verilogسه نوع
کنترل زمان وجود دارد :
کنترل زمان مبتنی بر تاخیر :دراین روش یک عبارت ،فاصله زمانی بین رسیدن به یک دستور تا اجرای آن را مشخص
میکند .دو نوع کنترل زمان مبتنی بر تاخیر موجود است:
.1کنترل تاخیر با قاعده :یک تاخیر غیر صفر در سمت چپ دستور آورده میشود .دراین حالت عبارت
سمت راست پس از گذشت زمان تاخیر ،محاسبه شده درون عبارت سمت چپ قرار میگیرد.
.2کنترل تاخیر درون دستور :یک تاخیر غیر صفر در سمت راست اپراتور assignmentآورده میشود.
دراین حالت عبارت سمت راست در زمان فعلی محاسبه شده ،پس از گذشت زمان تاخیر ،درون عبارت
سمت چپ قرار میگیرد.
کنترل زمان مبتنی بر رویداد :یک رویداد به معنای تغییر مقدار یک regیا netاست .سه نوع کنترل زمان مبتنی بر
رویداد وجود دارد.
.1کنترل رویداد با قاعده :عالمت @ برای مشخص کردن کنترل رویداد استفاده میشود .دستورات میتوانند
با تغییر مقدار یک سیگنال ،با لبة باالرونده یا پایین روندة یک سیگنال اجرا شوند.
.2کنترل رویداد با نام Verilog :این امکان را برای ما فراهم ساخته است که یک رویداد را تعریف
کنیم و در موقع لزوم آنرا تریگر کنیم .تعریف رویداد با کلمة کلیدی eventوتریگر کردن آن با >-
انجام میشود.
17
.3کنترل چند رویداد :گاهی اوقات چند سیگنال داریم که تغییر در یکی از آنها سبب تریگر شدن اجرای
یک مجموعه از دستورات می شود.این امر توسط orکردن رویدادها یا سیگنالها انجام میشود .لیست
رویدادا یا سیگنالها به Sensitivity Listمشهور است.
کنترل حساس به سطح Verilog :دارایای ن قابلیت است که اجرای یک دستور را تا تحقق یک شرط خاص به
تعویق بیاندازیم،این امر توسط دستور waitانجام میشود.
دستور شرطی
دستور case
حلقهها
18
Tasks and Functions
Taskو توابع دارای تفاوتهایی هستند که در جدول 5-4نشان داده شده است.
جدول 5-4
Task
بوسیله task … endtaskمشخص میشود .معموال در موارد زیر استفاده میشود.
در پروسیجر تاخیر ،زمانبندی و یا کنترل زمان وجود داشته باشد.
پروسیجر پارامتر خروجی نداشته باشد و یا بیش از یک پارامتر خروجی داشته باشد.
پروسیجر هیچ پارامتر ورودی نداشته باشد.
19
Function
بوسیله function … endfunctionمشخص میشود .معموال در موارد زیر استفاده میشود.
برای طراحی مدارهای ترکیبی در سطح رفتاری ،باید تمام ورودیهای مدار را در لیست حساس بدنه ی alwaysذکر کرد.
به هنگام توصیف مدار باید توجه داشت که تمام شرطهای ifباید دارای elseباشند تا ازایجاد مدار ترتیبی جلوگیری شود.
21
طراحی مدارهای ترتیبی در سطح رفتاری
21
فصل دوم
-1-2مقدمه
)1گسسته ) : (discreteدراین روش ،ابتدا مدارتوسط ICهای تجاری موجود طرح می شود .سپس فیبرمدارچاپی
مربوطه تهیه می گردد و پس از نصب قطعات بر روی آن ،عملیات تست و نهایت ًا بسته بندی انجام می شود.
برخی معایب این روش عبارت است از :مساحت و فضای زیاد ،وزن زیاد ،توان مصرفی باال ،قابلیت کم گسترش
طرح ،محدود شدن طرح به ICهای موجود... ،
)2مجتمع ) : (integratedدراین روش کل طرح بصورت یکپارچه درون یک ICپیاده میشود.این کار با دو
روش قابل انجام است:
: Full custom .1که درآن،کلیة مراحل ساخت ICدر کارخانة سازنده به سفارش مشتری انجام می
شود.هزینة باال بویژه در تولید غیر انبوه از معایب این روش بشمار می آید.
: Semi custom .2که درآن ،مدار طرح شده توسط کاربر روی ادوات منطقی قابل برنامه ریزی
) (PLD:Programmable Logic Deviceپیاده می شود .این کار ،توسط سختافزار برنامه ریز
) (programmerبه کمک یک نرمافزار از طریق کامپیوتر اجرا می گردد .برخی ادوات منطقی قابل
برنامه ریزی عبارتاند از... ،ROM،FPGA،PLA،PAL :
22
تمامی مراحل فوق را می توان با نرمافزار QuartusIIانجام داد.
23
New Project Wizard .2را از گزینة Fileانتخاب کنید.
.3با کلیک کردن Nextصفحة 1از 5باز می شود .در پنجرة اول آن ،آدرس مورد نظر را جهت ذخیره
کردن پروژه وارد نمایید مثال .d:\alter\quartus60\testدر پنجرة دوم ،نام پروژه را تایپ کنید
مثال .adderدر پنجرة سوم ،نام طرح را تایپ کنید .برای مثال .fulladderبطور پیش فرض هنگام
تایپ نام پروژه ،همین نام برای طرح انتخاب می شود .ولی در صورت نیاز می توان آن را تغییر داد.
24
.4پس از کلیک کردن Nextدر صورت موجود نبودن آدرس تایپ شدة قبل ،پیغامی جهتایجاد
Folderیاد شده داده می شود که با کلیک کردن Yesصفحه 2از 5باز میگردد.
25
.5در این صفحه در صورت نیاز ،فایلهای طراحی اضافی دیگر را وارد کنید .در غیر این صورت ،روی
Nextکلیک نمایید تا صفحة 3از 5باز گردد.
26
.6در این صفحه ،نوع قطعة قابل برنامه ریزی را مشخص میکنیم .برای این منظور ،ابتدا در پنجرة اول
خانواده ICقابل برنامه ریزی را مشخص میکنیم .سپس در صورت کلیک در دایرة کنار Auto
deviceشماره تراشه به طور خودکار انتخاب میشود .ولی در صورت کلیک در دایرة کنار
Specific deviceباید شماره تراشه را در لیست موجود در پنجره انتخاب نماییم .با کلیک کردن
Nextصفحة 4از 5باز میشود.
.7در این صفحه ابزارهای شبیه سازی ،تحلیل ،وسنتز دیگر به غیر از QuartusIIکه در پروژه استفاده
خواهید کرد را انتخاب میکنید .در غیر این صورت ،روی Nextکلیک نمایید تا آخرین صفحه باز
گردد.
27
.8در این صفحه خالصة انتخابهای بعمل آمده تا اینجا نمایش یافته است .برای تایید تنظیمات فوق،
روی Finishکلیک کنید تا صفحة اصلی QuartusIIباز شود.
.9اکنون گزینة NEWرا از FILEاجرا کنید و از پنجرة حاصله ،گزینه Block Diagram
/Schematic Fileرا انتخاب نمایید .با کلیک OKیک فضای خالی جهت کشیدن طرح بوجود
میآید.
28
.11قبل از ادامة کار ،با اجرای Save Asاز Fileنام فایل مورد نظر را تایپ کنید تا فایلی با پسوند .bdf
ساخته شود .بصورت پیش فرض ،نام طرح وارد شده در مرحلة 3برای این فایل انتخاب میگردد.
29
.11در فضای خالی طرح کلیک راست کرده و از Insertگزینة Symbolرا انتخاب کنید .نام گیت
مورد نظر را تایپ کرده و OKرا کلیک کنید ( مثال and2برای گیت andدو ورودی) .عالوه بر
گیت ،بلوکهای از قبل طراحی شده نیز در کتابخانة این نرمافزار موجود است.
.12گیت انتخاب شده را در محل مناسب قرار دهید و کلیک چپ کنید .مرحله 11را برای سایر گیتها
نیز انجام دهید.
.13برای دسترسی به ورودیها و خروجیهای مدار ،باید Pinهایی در ورودی و خروجی تعریف نمود.
برای این منظور ،مرحلة 11را با تایپ inputسپس با تایپ outputتکرار کنیدPin .های input
برای اعمال سیگنال به مدار و Pinهای outputبرای مشاهدة خروجی مدار استفاده میشوند.
31
.14با دو بار کلیک روی Pinهای ورودی و خروجی ،نام آنها را تایپ کنید .این کار را می توان برای
گیتها نیز انجام داد.
.15اکنون اتصال ) (connectionبین قطعا ت را بوجود می آوریم .برای این کار ،با حرکت دادن
نشانگر موس در نزدیکی نقطة انتهایی هر نماد ،نشانگر بطور خودکار به عالمت +تبدیل می شود.
روی آن کلیک کنید و کلیک چپ را نگه دارید و موس را به سمت مقصد حرکت دهید .با رسیدن
نشانگر +به مقصد و تبدیل شدن آن به یک مربع ،کلیک چپ را رها کنید.
31
.16پس از اتمام اتصاالت ،فایل را ذخیره کنید.
.2اکنون گزینة NEWرا از FILEاجرا کنید و از پنجرة حاصله ،گزینه VHDL Fileرا انتخاب نمایید .با
کلیک OKیک فضای خالی جهت وارد نمودن کدهای VHDLبوجود می آید.
.3قبل از ادامة کار ،با اجرای Save Asاز Fileنام فایل مورد نظر را تایپ کنید تا فایلی با پسوند .vhdساخته
شود .بصورت پیش فرض ،نام طرح وارد شده در مرحلة 3قسمت قبل برای این فایل انتخاب میگردد.
32
.4در فضای خالی ایجاد شده ،کدهای VHDLرا تایپ کنید و فایل را Saveنمایید.
33
ایجاد فایل (.v)Verilog
.2اکنون گزینة NEWرا از FILEاجرا کنید و از پنجرة حاصله ،گزینه Verilog HDL Fileرا انتخاب
نمایید .با کلیک OKیک فضای خالی جهت وارد نمودن کدهای Verilogبوجود می آید.
.3قبل از ادامة کار ،با اجرای Save Asاز Fileنام فایل مورد نظر را تایپ کنید تا فایلی با پسوند .vساخته
شود .بصورت پیش فرض ،نام طرح وارد شده در مرحلة 3قسمت اول برای این فایل انتخاب میگردد.
34
.4در فضای خالی ایجاد شده ،کدهای Verilogرا تایپ کنید و فایل را Saveنمایید.
35
باز کردن فایلهای طراحی
اگر بخواهیم از فایلهای ایجاد شدة قبلی استفاده کنیم ،پس از اجرای نرمافزار QuartusIIگزینه Open
Projectرا انتخاب می کنیم .سپس در آدرس مربوطه ،روی فایل مورد نظر دو بار کلیک مینماییم .اگر فایل
انتخاب شده از نوع Quartus II Project Fileباشد ،تمامی فایلهای پروژه باز میگردد.
پس از وارد کردن طرح بصورت شماتیک یا زبان توصیف کنندة سختافزاری ویا باز کردن
پروژههای قبلی ،به دومین بخش یعنی کمپایل کردن می پردازیم.
36
-3-2کمپایل کردن )(Compilation
برای آنالیز و سنتز مدار وارد شده در بخش اول ،عملیات کمپایل کردن را از طریق اجرای Processingو انتخاب گزینة
Start Compilationانجام دهید.
در صورت وجود اشکال در تولید فایل طراحی ،پیغام خطا شامل تعداد خطاها و تعداد هشدارها ظاهر می شود .محل و نوع
خطا در پنجرة Messageنمایان می گردد تا بتوان اشکال مدار را بر طرف کرد .در صورت عدم خطا ،پنجره ای با
مضمون موفقیت در کمپایل کردن ایجاد می شود که با کلیک کردن OKآن ،میتوان به مراحل بعد پرداخت.
37
خالصه ای از نتایج کمپایل کردن در گزارش کمپایل کردن ) (Compilation Reportدرج می گردد .از جملة این
نتایج ،تاخیر مدار پیاده شده با ICمورد نظر است .که در قسمت tpdدرون Folderتحلیل کنندة زمانی (Timing
) Aynalyzerدیده می شود.
در صورتیکه از فایلهای HDLبرای ورود طرح استفاده شده باشد ،می توان شماتیک طرح را در این مرحله مشاهده نمود.
برای این کار ،از قسمت Toolsگزینة Netlist Viewersرا انتخاب کنید و سپس RTL Viewerرا اجرا نمایید.
38
39
-4-2شبیهسازی )(Simulation
.1پیش از شروع شبیه سازی باید فایل شکل موج برداری ) (Vector Waveform Fileساخته شود .در این
فایل ،شکل موجهای الزم برای تحریک ورودیهای مدار تولید می شود و شکل موجهای خروجی حاصله از
شبیه سازی نمایش داده می شود .برای ایجاد این فایل ،گزینة Newرا از قسمت Fileانتخاب کنید و از قسمت
Other Filesگزینه Vector Waveform Fileرا اجرا کنید.
.2قبل از ادامه کار با اجرای save asاز Fileنام فایل مورد نظر را تایپ کنید ،تا فایلی با پسوند .vwfساخته شود.
41
.3زمان انتهایی ) (End Timeو فاصلههای مدرج ) (Grid Sizeروی شکل موجها را مشخص کنید .برای ابن
منظور ،از قسمت Editاستفاده کنید .مثال برای زمان انتهایی 20میکروثانیه و فاصلة مدرج 1میکروثانیه ،مراحل
زیر را دنبال کنید :
Edit > End Time > 20 > μs > OK
Edit > Grid Size > Period > 1 > μs > OK
.4برای دیدن کل فاصلة زمانی صفر تا زمان انتهایی ،گزینة Fit in Windowرا از قسمت Viewاجرا کنید.
41
.5در این مرحله ،ورودیها و خروجیهای مورد نمایش را اضافه می کنیم .این کار را با دو روش می توان انجام
داد.
روش اول :در پنجره زیر Name Valueرا در سمت چپ فایل vwfکیلیک راست کنید .و گزینه Insert
… Node or Busرا انتخاب نموده و روی … Node Finderکلیک کنید .در پنجرة باز شده ،گزینة List
را اجرا کنید .با این کار ،فهرستی از تمامی پایهها در پنجرة سمت چپ ظاهر می شود .حال با دو بار کلیک
روی هر پایة ورودی یا خروجی ،آن پایه به پنجرة سمت راست منتقل می گردد .همین کار را می توان با یکبار
کلیک روی هر پایة ورودی یا خروجی و انتخاب گزینة <نیز انجام داد .با انتخاب >> می توانید تمام پایهها را
به پنجرة سمت راست انتقال دهید .اکنون گزینة OKرا کلیک کنید و در پنجرة باز شده نیز مجددا OKرا
کلیک کنید.
42
43
روش دوم :پنجره Node Finderرا بصورت زیر باز کنید :
View > Utility Windows > Node Finder
با آمدن پنجره Node Finderدر قسمت Filterگزینه Pins:allرا انتخاب کنید و روی Listکلیک کنید تا
فهرست تمام پایهها ظاهر شود .در صورت نیاز به رسم شکل موجهای گرههای میانی مدار ،در قسمت Filter
گزینه ) Design Entry(all namesرا انتخاب کنید.
44
حال توسط موس ،ورودیها و خروجیها را از پنجرة Node Finderبه پنجره فایل vwfدرگ کنید .می
توانید ورودیها و خروجیها را جداگانه ،و یا با همدیگر به فایل شکل موج برداری منتقل کنید.
45
.6با کلیک روی هر ورودی دلخواه ،می توانید شکل موج آن را ایجاد نمایید .پس از کلیک روی ورودی ،از
طریق Editو سپس Valueمی توانید مقادیر 0یا 1یا بی تفاوت یا ...را به ورودی اعمال کنید .یکی از
قابلیتهای موجود در Edit > Valueگزینه clockاست که توسط آن ،شکل موج دیجیتال متناوبی به
ورودی متصل می گردد .مقادیر دورة تناوب و دیوتی سایکل این شکل موج ،قابل تنظیم است .مثال برای
داشتن تمامی حالتهای ممکن 3ورودی در فاصلة زمانی 0تا 8میکرو ثانیه ،دورة تناوب آنها را به ترتیب 8
میکرو ثانیه 4 ،میکرو ثانیه و 2میکرو ثانیه انتخاب می کنیم.
46
.7پس از تعریف شکل موجهای ورودی ،فایل را ذخیره کنید.
.8اکنون از قسمت Processingگزینه Start Simulationرا اجرا کنید .پس از پیغام اتمام شبیه سازی با
موفقیت OKرا کلیک کنید.
47
-5-2برنامه ریزی )(Programming
پس از وارد کردن طرح،کمپایل کردن و شبیه سازی اکنون مرحلة آخر یعنی برنامه ریزی را انجام می دهیم.
.1برای برنامه ریزی ،باید نوع قطعه و شمارة تراشة مورد نظر را انتخاب کرده باشید .در صورتیکه این کار انجام
نشده باشد ،گزینة Deviceرا از قسمت Assignmentاجرا کنید .در پنجرة روبروی Familyخانواده IC
قابل برنامه ریزی را انتخاب کنید (مثال .)CycloneIIسپس با کلیک در دایرة کنار Specific deviceشماره
تراشه را در لیست موجود در پنجره انتخاب نمایید (مثال .)EP2C20Q240C8اکنون گزینة OKرا کلیک
کنید.
48
.2در این مرحله به هر ورودی و خروجی مدار ،یک شمارة پایه نسبت می دهیم .برای این منظور گزینه
Assignment Editorرا از قسمت Assignmentاجرا نمایید .روی Pinدر مقابل پنجره Category:
کلیک کنید .با دو بار کلیک روی >> <<newآبی در زیرستون toورودی یا خروجی مورد نظر را انتخاب
نمایید.این کار را برای >> <<newباز شدة جدید در مورد ورودی یا خروجی دیگر تکرار کنید .البته این
کار را با یکبار کلیک روی >> <<newآبی و تایپ نام ورودی یا خروجی نیز می توان انجام داد .همچنین با
اجرای گزینة Show All Known Pin Namesاز قسمت Viewنیز میتوان ورودیها و خروجیها را به
Assignment Editorانتقال داد.
49
51
51
.3در زیر ستون Locationو در مقابل هر ورودی و یا خروجی ،دو بار کلیک کنید و شماره پایة مورد نظر را
انتخاب نمایید .این کار را می توان با یکبار کلیک در مقابل هر ورودی و یا خروجی در زیر ستون Locationو
تایپ شماره پایة مورد نظر نیز انجام داد.
52
.4قبل از ادامة کار ،باید شماره پایههای نسبت داده شده را ذخیره کنید.
.5اکنون با بازکردن فایل .bdfشماره پایههای ورودی و خروجی روی طرح شماتیک نمایان میگردد.
.6حال باید طرح را دوباره کمپایل کنید تا مدار با شماره پایههای تخصیص یافته سنتز شود .همانطور که در قبال
دیدیم ،عملیات کمپایل کردن از طریق اجرای Processingو انتخاب گزینه Start Compilationانجام
میگیرد.
.7برای دیدن آرایش پایههای تراشة قابل برنامه ریزی و نحوة قرار گرفتن طرح روی آن ،گزینة Pin Plannerرا
از قسمت Assignmentاجرا نمایید.
53
54
.8در این مرحله ،نرمافزار MDA-ASIC2را اجرا کنید و در قسمت FPGA / CPLDدر دایرههای کناری
JTAG Loadو Altraکلیک کنید.
.9برای برنامه ریزی ICگزینه Programmerرا از قسمت toolsاجرا کنید .گزینه Hardware Setupرا اجرا
نمایید .گزینه Add Hardwareرا انتخاب کنید .در پنجره مقابل Hardware type:گزینه
ByteBlasterMV or ByteBlasterIIو در پنجره مقابل Port:گزینه LPT1را انتخاب کنید.این مرحله
را باید فقط یکبار اجرا نمود تا سختافزار برای کامپیوتر معرفی شود.
55
.11برای برنامه ریزی ICگزینه Programmerرا از قسمت toolsاجرا کنید .در پنجره مقابل Mode:گزینه
JTAGرا انتخاب کنید .در مربع زیر ستون Program / Configureکلیک کنید .اکنون با کلیک روی
startبرنامه ریزی شروع میشود .با نمایش ٪100د ر پنجره Progressبرنامه ریزی به پایان می رسد و مدار
پیاده شده روی FPGAآماده تست میباشد.
56
57