تبلیغات
باران الکترونیک - مقدمه ای بر ‏Timing Constraints‏ در ‏FPGAهای ‏Xilinx
شنبه 18 خرداد 1392  11:33 ب.ظ
نوع مطلب: (FPGA ،Xilinx ،) توسط: امیرحسین رستمی


طراحان و برنامه ­نویسان FPGAهای ‏Xilinx از محدودیت­ های زمانی یا Timing Constraints برای کنترل کارایی و عملکرد FPGA استفاده می ­کنند. در این قسمت از Timing Constraints برای کنترل فرکانس کلاک، زمان آماده ­سازی و نگه­داری برای ورودی­های همزمان، و زمان کلاک-به-خروجی برای خروجی­های هم­زمان استفاده شده است.

با استفاده از Timing Constraints به نرم ­افزار ISE می­گوییم که دقیقاً چه عملکردی در پروژه قابل قبول میباشد. بدون گفتن این ­ها به نرم­ افزار، ممکن است نرم­ افزار، سیم ­کشی (route) طرح را طوری انجام دهد که هنگام پیاده سازی روی FPGA به درستی کار نکند.


برای دیدن مقاله کامل روی ادامه مطلب کلیک کنید.


برای مثال اگر قصد این را داریم که تمام رجیسترهای FPGA از یک اسیلاتور MHz 100 کلاک بگیرند، باید مطمئن شویم که نرم­افزار ISE سیم­کشی طرح را طوری در نظر می­ گیرد که تأخیر مجموع بین هر رجیستر کمتر از ns 10 باشد.

این فرایند شامل دو قدم می­باشد:

1) تعریف مسیر اعمال محدودیت با ایجاد "Timing Groups"

2) اعمال Timing Constraints به آن مسیر

مشخص کردن فرکانس کلاک

1) با استفاده از کلمه کلیدی "TNM_NET" مسیری را که می­خواهیم محدودیت اعمال کنیم را تعریف می‎کنیم. کلمه کلیدی "TNM_NET" یک گروه زمان­بندی ایجاد می­کند که شامل بلوک­های همزمان از قبیل زجیسترها، BRAM و غیره می­شود و به یک نت (net : شبکه) مشخص متصل می­شود و برای ایجاد گروه­های زمان­بندی برای کلاک و فعال­ساز کلاک مفید می­باشد.

فرض کنید که می­خواهیم تمام رجیسترهای متصل به کلاک "Clk_A" را در یک گروه قرار دهیم:

شکل 1

شکل 1: رجیسترهای متصل به Clk_A & Clk_B

این گروه زمان­بندی به صورت زیر مشخص می­شود:

NET "Clk_A" TNM_NET = "ClkA_Group";

با این کار یک گروه زمان­بندی به نام "ClkA_Group" ایجاد می­گردد که فقط شامل رجیسترهای متصل به نت "Clk_A" می­شود (با رنگ زرد در شکل 1 نشان داده شده­اند).

2) اکنون که گروه زمان­بندی را مشخص کردیم، می­توانیم محدودیت زمانی "PERIOD" را به صورت زیر به آن اضافه کنیم:

TIMESPEC "TS01" = PERIOD "ClkA_Group" 20 ns HIGH 5 ns;

 محدودیت  "TS01" تناوب و زمان وظیفه  "Clk_A" را تعیین می­کند: دوره تناوب ns 20 و زمان ماندن در سطح منطقی "1"ns 5 می­باشد.

شکل 2

شکل 2: شکل موجی که توسط "TS01" تعریف شده است.

برای مدار نشان داده شده در شکل 1 timing constraint نهایی به صورت زیر می­باشد:

NET "Clk_A" TNM_NET = "ClkA_Group";

TIMESPEC "TS01" = PERIOD "ClkA_Group" 20 ns HIGH 5 ns;

NET "Clk_B" TNM_NET = "ClkB_Group";

TIMESPEC "TS02" = PERIOD "ClkB_Group" 40 ns HIGH 20 ns;

 

توجه: نام TIMESPEC باید با TS شروع شود.

چگونه متوجه شویم که تمام ورودی­ های هم­زمان به درستی کلاک می­خورند؟

وقتی که از ورودی­ های هم­زمان صحبت می ­کنیم، منظور ورودی ­های خارجی هستند که توسط یک سیگنال کلاک نمونه­برداری می­ شوند. باید تظمین کنیم که زمان آماده­ سازی و نگه­داری (setup and hold times) لازم برای رجیستر­های داخلی با در نظر گرفتن تأخیر ناشی از سیم­ کشی، رعایت می­ شود.

فرض کنید شرایط ما به صورت زیر می­ باشد:

·         یک ورودی (Data) توسط سیگنال کلاک نمونه برداری می­ شود

شکل 3

شکل 3: FPGA با ورودی­های خارجی هم­زمان با کلاک

·         می ­دانیم که ورودی "Data" ns 8 زمان آماده ­سازی قبل از لبه بالارونده "Clk" و ns 7 زمان نگه­داری بعد از لبه بالا رونده دارد، مانند شکل زیر:

شکل 4

شکل 4:  زمان آماده­سازی و نگه­داری "Data" نسبت به لبه بالا رونده "Clk"

در این مورد باید به صورت زیر به نرم­ افزار ISE بگوییم که ورودی "‏Data‏" ‏ns‏ 8 زمان آمادهسازی و ‏ns‏ 7 زمان نگهداری دارد:‏

NET "Data" OFFSET = IN 8ns VALID 15 ns BEFORE "Clk" HIGH;

این خط به نرم ­افزار می­گوید که ‏"‏Data‏"‏ ns 8 زمان آماده ­سازی قبل از لبه بالارونده "Clk" دارد و برای ns 15 معتبر می ­باشد.

با استفاده از کلمه کلیدی "HIGH" نرم ­افزار می­ فهمد که زمان آماده سازی نسبت به لبه بالا رونده کلاک میباشد. اگر این کلمه کلیدی را به LOW تغییر دهیم:

 NET "Data" OFFSET = IN 8ns VALID 15 ns BEFORE "Clk" LOW;

اکنون آنچه را که مشخص کردیم به صورت زیر می­باشد:

شکل 5

شکل 5: زمان آماده­سازی و نگه­داری "Data" نسبت به لبه پایین رونده "Clk"

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

چگونه متوجه شویم که خروجی­های هم­زمان به اندازه کافی سریع می­باشند؟

چیزی که اکنون نگران آن هستیم این است که  خروجی­های هم­زمان با چه سرعتی بعد از لبه کلاک که آن­ها را تولید می­کند، معتبر می­شوند، به این فرایند، تأخیر  کلاک-به-خروجی گفته می­شود.

فرض کنید که خروجی رجیستر به صورت زیر باشد:

شکل 6: خروجی رجیستر

و ما نیازمند بیشینه تأخیر کلاک-به-خروجی ns 8 به صورت زیر می­باشیم:

شکل 7

شکل 7: تأخیر کلاک-به-خروجی ‏

ما نیازمند مشخص کردن محدودیت OFFSET OUT می­باشیم:

  NET "Data" OFFSET = OUT 8ns AFTER "Clk" HIGH;

نرم ­افزار ISE در صورت امکان تضمین می­کند که تأخیر بین زمانی که کلاک به پین FPGA رسید تا زمانی که پین خروجی "Data" معتبر شود، حداکثر ns 8 می­باشد.

خلاصه:

محدودیت PERIOD:

·         بیشینه تأخیر بین هر المان هم­زمان را که در گروه زمان­بندی تعریف شده باشد، کنترل می­کند.

·         تأخیر بین پین­های خارجی و المان­های هم­زمان را کنترل نمی­کنند.

محدودیت OFFSET IN BEFORE:

·         تعیین می­کند که چقدر زمان آماده­سازی و نگه­داری برای ورودی­های هم­زمان نسبت به لبه بالا یا پایین رونده سیگنال کلاک، در دسترس می­باشد.

·         زمان آماده­سازی و نگه­داری تعیین شده، زمانی است که FPGA روی پین­های ورودی می­بیند، طراح باید زمان واقعی را که روی برد ایجاد می­شود را تعیین کند.

·         برای ورودی کلاک با لبه بالا رونده توصیه می­شود که از کلمه کلیدی HIGH استفاده شود.

  • برای ورودی کلاک با لبه پایین رونده توصیه می­شود که از کلمه کلیدی LOW استفاده شود.

محدودیت OFFSET OUT AFTER

·         بیشینه نرخ تأخیر بین زمانی که لبه کلاک به پین FPGA می­رسد و زمانی که خروجی هم­زمان معتبر می­شود ( کلاک-به-خروجی نامیده می­شود) را تعیین می­کند.

·         برای خروجی کلاک با لبه بالارونده توصیه می­شود از کلمه کلیدی HIGH استفاده شود.

  • برای خروجی کلاک با لبه پایین رونده توصیه می­شود از کلمه کلیدی LOW استفاده شود.

 

محدودیت­های زمانی گفته شده در اینجا مقدماتی می­باشند. بیش­تر طراحی­های واقعی نیازمند استفاده از محدودیت­های پیچیده­تری می­باشند.


دانلود فایل PDF


  • آخرین ویرایش:چهارشنبه 25 شهریور 1394
  • برچسب ها:FPGA ،Xilinx ،ISE ،
نظرات()   
   
هدی
جمعه 20 فروردین 1395 03:29 ب.ظ
عالیه ممنون
حسین
سه شنبه 24 شهریور 1394 03:26 ب.ظ
سلام
با تشکر از فایل ها و مطالب مفید شما
من سوالی داشتم اینه که
من منظورتون رو از بخش اینکه ورودی ها همزمان کلاک می خورند نفهمیدم
یعنی با تعیین زمان setup and hold time چطوری ورودی ها همزمان کلاک می خورند
پاسخ امیرحسین رستمی : فرض کنید سیگنال کلاک و داده هشت بیتی به پین های ورودی FPGA متصل شده اند. همچنین می دانیم که سیگنال داده در لبه بالا رونده سیگنال کلاک تغییر می کند. داخل FPGA مخواهیم در لبه بالا رونده CLK از DATA نمونه برداری کنیم. اگر از constrain استفاده نکنیم هنگامی که DATA در حال تغییر می باشد (مثلا از 7 به 8 چهار بیت با تاخیر چند نانون ثانیه NOT می شوند) و FPGA از آن نمونه برداری کند ، نتیجه غلط می شود. با مشخص کردن setup and hold time طوری سیگنال های CLK و DATA سیم کشی می شوند در لبه CLK سیگنال داده هشت بیتی ثابت شده باشد.
ali karimi
شنبه 12 اردیبهشت 1394 02:00 ق.ظ
رستمی pdf باز نمیشه ها.
 
لبخندناراحتچشمک
نیشخندبغلسوال
قلبخجالتزبان
ماچتعجبعصبانی
عینکشیطانگریه
خندهقهقههخداحافظ
سبزقهرهورا
دستگلتفکر
آخرین پست ها