تبلیغات
باران الکترونیک - روش های پیشرفته برای مشخص کردن محدودیت های دوره تناوب (PERIOD Constraint) در ‏FPGAهای ‏Xilinx

تعریف محدودیت تناوب در نرم­افزار

نگارش کامل برای تعریف محدودیت در دوره تناوب (در فایل UCF) به صورت زیر می­باشد:

TIMESPEC "TSidentifier"= PERIOD "TimingGroupName" period_time {HIGH|LOW} [high_or_low_time] INPUT_JITTER value; 

TSidentifier: نام TIMESPEC می­باشد و باید با TS شروع شود. همچنین باید یکتا باشد. بیش از یک TIMESPEC با نام یکسان قابل قبول نمی­باشد.

TimingGroupName: نام گروه زمان­بندی می­باشد که محدودیت PERIOD به آن اعمال می­گردد. معمولا با TNM_NET ساخته می­شود.

period_time: مقدار واقعی تناوب کلاک. می­تواند به صورت یک مقدار مطلق در زمان ps، ns (مقدار پیش فرض) us یا ms یا به صورت فرکانس kHz، MHz یا GHz تعریف شود.

HIGH|LOW: وضعیت اولین لبه را برای محاسبه محدودیت OFFSET مشخص می­کند. توجه شود که مقداری که در این­جا مشخص می­شود می­تواند در محدودیت OFFSET در نظر گرفته نشود.

high_or_low_time: بیانگر عرض اولین پالس می­باشد در نتیجه زمان وظیفه را مشخص می­کند. می­تواند به عنوان یک مقدار مطلق در زمان ، ‏ns‏ (مقدار پیش فرض) ‏us‏ یا ‏ms‏ یا بر حسب درصد  period_time تعریف شود.

INPUT_JITTER: پیک-تا-پیک ناپایداری (jitter) کلاک. می­تواند به عنوان یک مقدار مطلق در زمان برحسب ‏ns‏ (مقدار پیش فرض) ‏us‏ یا ‏ms‏ بیان شود.

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

تعریف محدودیت تناوب در نرم­افزار

نگارش کامل برای تعریف محدودیت در دوره تناوب (در فایل UCF) به صورت زیر می­باشد:

TIMESPEC "TSidentifier"= PERIOD "TimingGroupName" period_time {HIGH|LOW} [high_or_low_time] INPUT_JITTER value; 

TSidentifier: نام TIMESPEC می­باشد و باید با TS شروع شود. همچنین باید یکتا باشد. بیش از یک TIMESPEC با نام یکسان قابل قبول نمی­باشد.

TimingGroupName: نام گروه زمان­بندی می­باشد که محدودیت PERIOD به آن اعمال می­گردد. معمولا با TNM_NET ساخته می­شود.

period_time: مقدار واقعی تناوب کلاک. می­تواند به صورت یک مقدار مطلق در زمان ps، ns (مقدار پیش فرض) us یا ms یا به صورت فرکانس kHz، MHz یا GHz تعریف شود.

HIGH|LOW: وضعیت اولین لبه را برای محاسبه محدودیت OFFSET مشخص می­کند. توجه شود که مقداری که در این­جا مشخص می­شود می­تواند در محدودیت OFFSET در نظر گرفته نشود.

high_or_low_time: بیانگر عرض اولین پالس می­باشد در نتیجه زمان وظیفه را مشخص می­کند. می­تواند به عنوان یک مقدار مطلق در زمان ، ‏ns‏ (مقدار پیش فرض) ‏us‏ یا ‏ms‏ یا بر حسب درصد  period_time تعریف شود.

INPUT_JITTER: پیک-تا-پیک ناپایداری (jitter) کلاک. می­تواند به عنوان یک مقدار مطلق در زمان برحسب ‏ns‏ (مقدار پیش فرض) ‏us‏ یا ‏ms‏ بیان شود.

اکنون نگاهی به چند مثال می­اندازیم:

کلاکMHz 100  با زمان وظیفه 50 %، اولین پالس high بدون ناپایداری

شکل 1

شکل 1: کلاکMHz‏ 100  با زمان وظیفه 50 %، اولین پالس ‏high‏ بدون ناپایداری

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

TIMESPEC "TS01"= PERIOD "ClkGroup" 10 ns HIGH 5 ns ;

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

TIMESPEC "TS01"= PERIOD "ClkGroup" 10 ns HIGH 50% ;

یا کلمات کلیدی HIGH و زمان وظیفه 50% که پیش فرض می­باشند را حذف کرد:

TIMESPEC "TS01"= PERIOD "ClkGroup" 10 ns;

سرانجام می­توانیم دوره تناوب را به صورت فرکانس بیان کنیم:

TIMESPEC "TS01"= PERIOD "ClkGroup" 100 MHz ;

تعریف ناپایداری کلاک (Clock Jitter)

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

شکل 2

شکل 2: کلاکMHz‏ 100  با زمان وظیفه 50 %، اولین پالس ‏high‏ ناپایداری 30 ps

کلاکMHz‏ 100  با زمان وظیفه 50 %، اولین پالس ‏high‏ ناپایداری ‏30 ps

با اضافه کردن کلمه کلیدی INPUT_JITTER می­توانیم TIMESPEC را به هر یک از صورت­های زیر بنویسیم

;TIMESPEC "TS01"= PERIOD "ClkGroup" 10 ns HIGH 5 ns INPUT_JITTER 30 ps

;TIMESPEC "TS01"= PERIOD "ClkGroup" 10 ns HIGH 50% INPUT_JITTER 30 ps

;TIMESPEC "TS01"= PERIOD "ClkGroup" 100 MHz HIGH 50% INPUT_JITTER 30 ps

;TIMESPEC "TS01"= PERIOD "ClkGroup" 100 MHz INPUT_JITTER 30 ps

TIMESPEC "TS01"= PERIOD "ClkGroup" 10 INPUT_JITTER 30 ;

مشخص کردن کلاک­های مرتبط به هم

وقتی تعدادی کلاک با یکدیگر ارتباط دارند، می­توانیم فرکانس­ها و فازهایشان را به صورت تابعی از یکدیگر بیان کنیم.

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

"MasterClk" دارای فرکانس MHz 50 و زمان وظیفه 7:13، پالس اول high

"SlaveClk"   با تقسیم "MasterClk" به دو به دست می­آید و همیشه 2 نانو ثانیه تأخیر دارد

شکل 3

شکل 3

اول محدودیت تناوب را برای ورودی "MasterClk" تعریف می­کنیم

TIMESPEC "TS01"= PERIOD "MasterGroup" 20 ns HIGH 7 ns ;

اکنون می­توان محدودیت PERIOD را برای "SlaveClk" به صورت تابعی از TS01 بیان کنیم

TIMESPEC "TS02"= PERIOD "SlaveGroup" TS01*2 PHASE + 2 ns ;

 

دانلود فایل PDF


نظرات()   
   
بهراد
شنبه 12 اردیبهشت 1394 04:44 ب.ظ
خیلی ممنون بابت مطالب مفیدتون،
یک سوال در ارتباط با محدوده دوره تناوب و محدودیتهای زمانی دارم ، آیا میشه این محدوده دوره تناوب رو بر سیگنالهای خاص در محیط برنامه نویسی اعمال کرد مثلا در خروجی سیگنالهای چند برابر کننده فرکانس ورودی؟
پاسخ امیرحسین رستمی : خود نرم افزار ISE به صورت خودکار در خروجی PLL محدودیت های مورد نظر را اعمال می کند. اگر خطای زمان بندی روی دهد در قسمت Design Summery قابل مشاهده می باشد.
بابازاده
چهارشنبه 6 اسفند 1393 04:41 ب.ظ
جناب آقای رستمی
از مطالب بسیار مفید و ارزنده ای که در وبلاگتان گذاشته اید بسیار متشکرم
من به تازگی کار با fpga های xilinx را شروع کرده ام و از مطالب شما بسیار استفاده کردم
به دلیل کمبود مطالب فارسی در این زمینه هنوز با مشکلات زیادی مواجه هستم.
میخواستم از شما خواهش کنم در صورتی که از این دست مقالات فارسی خوب در اختیار دارید، انها را از طریق همین وبلاگ خودتان یا از طریق ایمیل ، در اختیار من نیز بگذارید.
باز هم از لطف شما سپاسگذارم.
پاسخ امیرحسین رستمی : اگه موضوع خاصی مورد نظر شماست، خوشحال می شم بگید تا در موردش بنویسم.
 
لبخندناراحتچشمک
نیشخندبغلسوال
قلبخجالتزبان
ماچتعجبعصبانی
عینکشیطانگریه
خندهقهقههخداحافظ
سبزقهرهورا
دستگلتفکر
آخرین پست ها