اطلاعیه

Collapse
No announcement yet.

آموزش ChipScope

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    آموزش ChipScope

    سلام.
    قصد دارم در این تاپیک آموزش ChipScope رو به صورت خلاصه و همراه با مثال و عکس بذارم.
    ChipScope یکی از برنامه های جانبی Xilinx ISE Suit هست که همراه اون نصب میشه و در منوی برنامه ها به اسم Analyzer یا ChipScope Analyzer موجوده که برای سیستم های 32 بیتی و 64 بیتی برنامه های جدایی داره و باید برنامه مناسب سیستمتون رو اجرا کنید. همچنین امکان اجرای برنامه از داخل ISE هم وجود داره.
    اول یک توضیح کلی راجع به این برنامه و کاربردش:
    وقتی یک کد VHDL یا Verilog مینویسین برای تست درستی کدتون اولین راهی که معمولاً به ذهن میرسه شبیه سازی با برنامه هایی مثل ISim یا ModelSim هست در حالی که بعضی مواقع تولید فایل TestBench زمان زیادی میگیره و مثلاً لازمه که یک سیگنال ورودی که پیچیدگی هایی داره رو در کد تست تولید کنید یا به نحوی ذخیره کنید و با TextIO به شبیه سازی اضافه کنید.
    مشکل دیگه ای که وجود داره اینه که همیشه نتیجه شبیه سازی با نتیجه در عمل یکسان نیست مخصوصاً اگه زمانبندی های خیلی حساس داشته باشید.
    یک راه آسون و مطمئن وقتی سخت افزار در دسترسه استفاده از برنامه ChipScope هست. این برنامه با قابلیت های زیر میتونه به شدت زمان تست رو کاهش بده و قابلیت دیباگ به کدتون بده:
    1- مشاهده سیگنالهای داخلی کد با کلاک دلخواه مثلاً کلاکی که سیگنال با اون تغییر می کنه.
    2- مشاهده سیگنالها در صورت تریگر شدن توسط سیگنال دیگر.
    3- ورودی/خروجی آسنکرون یا سنکرون(با کلاک) از طریق JTAG (پروگرمر).

    استفاده از این برنامه همون طور که گفته شد نیاز به موجود بودن سخت افزار و وصل بودن کامپیوتر به FPGA از طریق پروگرمر هست.
    امکان دیباگ تمام FPGA های داخل Chain هر مدلی که باشن به صورت همزمان وجود داره.

    محدودیت این برنامه هم اینه که حداقل زمان پدیت سیگنالهای متصل به ILA (بعداً توضیح میدم چیه) در نرم افزار 25 میلی ثانیه تعریف شده البته میشه هر سیگنال رو تا چند هزار (مقدار دقیق الان یادم نیست بعداً اصلاح می کنم) تریگ دید یعنی اگه مثلاً تریگ تعریف نشه و با کلاک سیستم کار کنه میشه تا چند هزار کلاک مقدار سیگنال رو دید.

    برای استفاده از ChipScope لازمه که در کدتون چند تا ماژول اضافه کنید:
    1- ICON که مخفف Integrated Controller هست، به ازای هر ماژول ILA یا VIO لازمه یک سیگنال کنترل اضافه بشه. طول سیگنال کنترل ثابته و هیچ نکته خاصی نداره.
    برای اضافه کردن این ماژول باید IP Core اون رو دقیقاً مثل روالی که برای اضافه کردن IP Core های دیگه طی میشه انجام داد. با وارد کردن عبارت icon در کادر جستجوی IP Core میشه سریعاً پیداش کرد.
    2- ILA که مخفف Integrated Logic Analyser هست، در این ماژول میشه سیگنالهایی که قصد مشاهده اونها رو دارین مشخص کنین، کلاکی که سیگنالها با اون کلاک مشاهده میشن و سیگنالهای تریگر رو تعریف کنید. این ماژول هم به صورت یک IP Core هست.
    3- VIO که مخفف Virtual Input/Output هست و در صورتی که بخواین مقداری رو به عنوان ورودی مجازی به یکی از سیگنالهای داخل کدتون بدین استفاده میشه (در صورتی که فقط خروجی از FPGA بخواین میشه فقط از ILA استفاده کرد).

    در حال حاضر سخت افزار در دسترس نیست ادامه مباحث و توضیحات و مثال در پست های بعدی در آینده نزدیک قرار میگیره.
    موفق باشید.
    لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
    لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
    با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
    اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
    يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

    #2
    پاسخ : آموزش ChipScope

    ادامه آموزش: در این پست نحوه اضافه کردن ماژول های مورد نیاز و توضیحات مرتبط آموزش داده میشه و نحوه استفاده در برنامه ChipScope برای بعد میمونه.

    یک IP Core از نوع ICON به Top Module اضافه کنید.


    تنها گزینه ای که ممکنه لازمه تغییر بدین تعداد پورت های کنترلی هست (در تصویر پایین مشخص شده) که در صورتی که فقط قصد اضافه کردن ILA دارید 1 و در صورتی که قصد اضافه کردن VIO هم دارید 2 پورت انتخاب کنید. (به ازای هر ILA یا VIO یک پورت کنترلی نیاز دارید)


    یک IP Core از نوع ILA به Top Module اضافه کنید.


    تنظیمات ILA که لازمه تغییر بدین:
    1- Sample Data Depth: مقادیر 512، 1024، 2048، 4096، 8192 و 16384 رو داره که بسته به نیازتون باید یکی رو انتخاب کنید.
    به عنوان مثال در صورتی که 512 رو انتخاب کنید، از لحظه شروع نمونه گیری (به صورت خودکار یا با تریگر) مقدار سیگنالها رو تا حداکثر 511 کلاک بعد هم نشون میده.
    2- Data Same as Trigger : باید تیک این گزینه رو بردارید و مقداری بین 1 تا 256 رو در کادری که فعال میشه وارد کنید.
    این مقدار، حداکثر طول مجموع سیگنالهایی است که میتونید در ChipScope ببینید.(نوع سیگنالها باید حتماً std_logic باشه)
    مثلاً اگه 256 رو انتخاب کنید میتونید هر تعداد سیگنال از نوع std_logic یا std_logic_vector که مجموع طولشون حداکثر 256 بشه رو ببینید.
    3- Number of Trigger Ports: تعداد پورت های تریگر: مقداری بین 1 تا 16. طول سیگنالهای تریگر ثابت و مساوی 8 هست.
    منظور از سیگنال تریگر رو با یک مثال توضیح میدم؛ فرض کنید یک ارتباط سریال در کدتون دارین و میخواین هر وقت دیتای جدیدی از طریق سریال دریافت کردید مقدار سیگنالهای ILA در ChipScope پدیت بشن، در این صورت سیگنال Data_Ready ماژول سریال رو به یکی از بیت های تریگر سیگنال تریگر ILA میدین و در ChipScope اون بیت رو تنظیم می کنید که هر وقت 1 شد تریگر انجام بشه. هر پورت تریگر به طور پیشفرض 8 بیت داره پس در صورت نیاز به تعداد بیشتری سیگنال تریگر میتونید تعداد پورت های بیشتری استفاده کنید یا طول سیگنال تریگر رو تا 256 زیاد کنید.


    در صفحه بعد تنظیمات ILA فقط نوع Match Type رو به extended with edges تغییر بدین.


    در صورتی که قصد دادن ورودی مجازی از طریق پروگرمر رو دارید ماژول VIO رو به Top Module اضافه کنید.


    در صفحه تنظیمات VIO کافیه که نوع Asynchronous Output Port رو فعال کنید (بقیه رو میتونید غیر فعال کنید چون در حالت معمولی کاربردی ندارن) و طول پورت ورودی (اسم Output در نوع پورت به این دلیله که این پورت از سمت JTAG یا کامپیوتر خروجی هست ولی برای FPGA ورودی حساب میشه) رو بین 1 تا 256 تعیین کنید.
    از طریق این پورت میشه به FPGA از طریق ChipScope ورودی داد.


    بعد از ایجاد IP Core های مورد نیاز باید اونها رو به کد اضافه کنید:
    راحت ترین راه اضافه کردن (هر نوع Core) اینه که طبق شکل زیر سورس مورد نظر رو انتخاب کنید و از کادر پایین گزینه View HDL Instantiation Template رو بزنید (در حالتی که IP Core نیست این گزینه زیر مجموعه Design Utilities هست):


    هر دو قسمت رو کپی کنید و در محل مناسب برنامه Paste کنید.
    پست خیلی طولانی شد، ادامه توضیحات در پست بعد.
    لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
    لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
    با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
    اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
    يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

    دیدگاه


      #3
      پاسخ : آموزش ChipScope

      مثال:
      کد:
      	signal CONTROL0 : STD_LOGIC_VECTOR(35 DOWNTO 0);
      	signal CONTROL1 : STD_LOGIC_VECTOR(35 DOWNTO 0);
      	
       component xICON
       PORT (
        CONTROL0 : INOUT STD_LOGIC_VECTOR(35 DOWNTO 0);
        CONTROL1 : INOUT STD_LOGIC_VECTOR(35 DOWNTO 0)
      	 );
      	end component;
      	
        signal ILA_DATA : STD_LOGIC_VECTOR(255 DOWNTO 0);
        signal ILA_TRIG0 : STD_LOGIC_VECTOR(7 DOWNTO 0);
      	
       component xILA
       PORT (
        CONTROL : INOUT STD_LOGIC_VECTOR(35 DOWNTO 0);
        CLK : IN STD_LOGIC;
        DATA : IN STD_LOGIC_VECTOR(255 DOWNTO 0);
        TRIG0 : IN STD_LOGIC_VECTOR(7 DOWNTO 0)
      	 );
      	end component;
      
       signal ASYNC_OUT : STD_LOGIC_VECTOR(7 DOWNTO 0);
       signal ADC_Trig : STD_LOGIC := '0';
       signal sRelay_Data : STD_LOGIC_VECTOR(8 DOWNTO 0);
       signal ADC_Status : STD_LOGIC_VECTOR(5 DOWNTO 0) := (others => '0');
       
       component xVIO
       PORT (
        CONTROL : INOUT STD_LOGIC_VECTOR(35 DOWNTO 0);
        ASYNC_OUT : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
      	end component;
      کد:
      	Inst_ICON : xICON
      	port map (
        CONTROL0 => CONTROL0,
        CONTROL1 => CONTROL1
      	 );
      	 
        Inst_ILA : xILA
        port map (
        CONTROL => CONTROL0,
        CLK => CLK40M,
        DATA => ILA_DATA,
        TRIG0 => ILA_TRIG0
      	 );
      	 
       Inst_VIO : xVIO
       port map (
        CONTROL => CONTROL1,
        ASYNC_OUT => ASYNC_OUT
      	);
      	 
       ILA_DATA(19 downto 0) <= Data_Alarm;
       ILA_DATA(28 downto 20) <= sRelay_Data;
       ILA_DATA(45 downto 30) <= Data_Array(1) & Data_Array(2);
       ILA_DATA(65 downto 50) <= Data_Array(3) & Data_Array(4);
       ILA_DATA(85 downto 70) <= Data_Array(5) & Data_Array(6);
       ILA_DATA(105 downto 90) <= Data_Array(7) & Data_Array(8);
       ILA_DATA(125 downto 110) <= Data_Array(9) & Data_Array(10);
       ILA_DATA(145 downto 130) <= Data_Array(11) & Data_Array(12);
       ILA_DATA(165 downto 150) <= Data_Array(13) & Data_Array(14);
       ILA_DATA(185 downto 170) <= Data_Array(15) & Data_Array(16);
       ILA_DATA(205 downto 190) <= Data_Array(17) & Data_Array(18);
       ILA_DATA(225 downto 210) <= Data_Array(19) & Data_Array(20);
      
       ILA_DATA(239 downto 230) <= ADC3DIN;
       ILA_DATA(249 downto 240) <= ADC4DIN;
       ILA_DATA(255 downto 250) <= ADC_Status;
       
       ILA_DATA(46) <= ADC0_SCK;
       ILA_DATA(47) <= ADC0_CS;
       ILA_DATA(48) <= ADC0_DO;
       ILA_DATA(49) <= ADC0_DO;
       
       ILA_TRIG0(0) <= ASYNC_OUT(0);
       ILA_TRIG0(1) <= ADC_Trig;
      دو خط آخر مربوط به VIO و قبلی ها مربوط به ILA هستند.
      نحوه کار با ChipScope در پست بعد در اولین فرصت...
      لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
      لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
      با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
      اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
      يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

      دیدگاه


        #4
        پاسخ : آموزش ChipScope

        با یکی از دو روش زیر ChipScope رو باز کنید:

        از منوی استارت:


        یا از طریق ISE:


        بعد از باز شدن ChipScope آیکن اشاره شده در تصویر زیر رو بزنید(باید برنامه حاوی ICON/ILA/VIO روی FPGA پروگرم شده باشه و پروگرمر وصل باشه)


        اگه درست عمل کرده باشید عناصر موجود در chain شناسایی میشن. OK رو بزنید.



        بعد از زدن OK، عناصر ChipScope موجود در طرح نشون داده میشن:


        در شکل بالا:
        (1) ماژولهایی که به کد اضافه شدن نشون داده میشه.
        (2) پورت های Data و Trigger مربوط به ILA وقتی در کادر (1) انتخاب شده باشه و پورت های VIO وقتی در کادر (1) انتخاب شده باشه نشون داده میشه. تعداد پورت ها مطابق با مقداری است که در تولید IP Core های مربوط به اونها انتخاب شدن.
        (3) تولبار برنامه که ابزارهای پر استفاده در این قسمت قرار گرفتن.
        (4) Trigger Setup که قبلاً (در پست اول) توضیح مختصری راجع به تریگر داده شده بود.
        (5) Waveform مشابه wave در Isim که شکل موج دیتای ILA رو میشه مشاهده کرد.
        (6) در این کادر اطلاعاتی مثل قطع و وصل کابل، خطاها و ... نشون داده میشه. همچنین Progress bar سمت راست هم وضعیت لود شدن دیتا رو نشون میده.

        برای شروع کار، با توجه به سیگنالهایی که در کدتون تعریف کردین، پورت های دیتا رو در صورت نیاز به باس (معادل vecotr در VHDL) تبدیل کنید و اسم اونها رو به دلخواه تغییر بدین:


        برای شروع مانیتورینگ، طبق شکل زیر از لیست یکی از گزینه ها رو انتخاب کنید:
        1- Single: با انتخاب این گزینه، با هر بار زدن Run (دکمه مثلث شکل کنار لیست)، یک بار اطلاعات ILA خونده میشه. در هر بار خوندن اطلاعات، به همون تعدادی کلاکی که در تولید VIO مشخص کرین دیتاهای ILA به کامپیوتر لود میشن. توجه کنید که کلاک ILA لازم نیست کلاک اصلی سیستم باشه و بسته به نیاز شما میتونه هر سیگنالی باشه ولی اگه میخواین دیتای ILA رو بتونید تحلیل کنید بهتره همون کلاکی رو بدین که سیگنالهای دیتای ILA با اون کلاک عوض میشن.
        2- Repetitive: با انتخاب این گزینه اطلاعات ILA به صورت متوالی خونده میشن، هر چقدر عمق و تعداد سیگنالها کمتر باشه سرعت پدیت بیشتر میشه. برای شروع باید آیکن Run رو بزنید.
        3- Startup: اطلاعات رو از اولین لحظه شروع کار نشون میده.


        بعد از Run کردن شکل موج پدیت میشه، برای زوم کردن میتونید از سه آیکن آخر تولبار استفاده کنید یا این که مثل شکل زیر قسمتی که میخواین به صورت زوم شده ببینید رو با درگ کردن انتخاب کنید و کلید پاپ پ Zoom Area رو بزنید.


        با راست کلیک کردن روی سیگنال بسته به این که تکی هست یا باس گزینه هایی در اختیارتون میذاره:
        Rename: عوض کردن اسم نمایشی سیگنال
        Color: عوض کردن رنگ سیگنال برای تمایز راحت تر سیگنالها
        Reverse Bus Order: ترتیب اهمیت سیگنالها در باس رو عوض میکنه، در حالت پیشفرض سیگنال با بالاترین شماره MSB و سیگنال با کمترین شماره LSB هستند.
        Bus Radix: مشابه Radix در ISim هست و شکل نمایش باس رو عوض میکنه مثلاً در شکل زیر نوع Hex (پیشفرض) به Unsigned Decimal تغییر پیدا کرده.
        گزینه های دیگه هم که مشخصه چکاری میکنن. (تذکر: در صورت حذف سیگنال از Waveform میتونید مجدداً اون رو از کادر Signals که در تصویر 5 این پست مشخص شده برگردونید).


        یکی از امکانات جالب ChipScope همون طور که در شکل زیر میبینید امکان دادن ضریب و آفست در تبدیل نوعه که بعضی جاها به درد میخوره. این پنجره بعد از انتخاب نوع Unsigned Decimal ظاهر شده.


        به جز امکان زوم کردن، میتونید با انتخاب یکی از مقادیر در قسمت Trigger Setup مطابق شکل زیر، زوم بهتری روی شکل موج داشته باشید. در شکل زیر، تعداد کلاکها 8192 هست که میشه از لیست نشون داده شده در شکل تعدادشون رو کم کرد. مقدار 8192 جزء تنظیمات ILA هست که موقع تولید این IP Core تنظیم کردین (دو پست قبل مقدار Sample Data Depth در تصویر 5 که حداکثر میتونه 2 باشه).


        یکی دیگه از امکانات جالب ChipScope امکان پلات کردن مقدار باس هست که یکی از کاربرهاش میتونه مشاهده مقدار خروجی ADC باشه. برای این کار گزینه Bus Plot رو از کادر Project (کادر شماره (1) در تصویر 5 همین پست) انتخاب کنید تا شکل زیر رو ببینید، باس های موجود در waveform به صورت اتوماتیک اضافه شدن که با زدن تیک کنار هر کدوم اون رو مشاهده می کنید.


        نحوه استفاده از سیگنال تریگر: در مثال زیر سیگنال LAN_Data_Ready به (Trigger(0 در کد VHDL داده شده، با تنظیم تریگر شماره 0 در ChipScope (جایگزین کردن مقدار X در جایگاه 0 با مقدار 1) در قسمت Trigger Setup و انتخاب حالت اجرای Repetitive هر بار سیگنال LAN_Data_Ready مساوی 1 بشه مقدار شکل موج پدیت میشه. (این مقدار در دو شکل بالاتر در قسمت Value پنجره Trigger Setup تنظیم شده)


        نحوه استفاده از VIO: در صورتی که در کدتون VIO هم اضافه کرده باشین میتونید با استفاده از ChipScope به FPGA ورودی بدین. این ورودی میتونه برای شبیه سازی رفتار کد استفاده بشه مثلاً فرض کنید که قراره دستوری از طریق سریال به FPGA داده بشه و کار خاصی انجام بده ولی در حال حاضر سخت افزار لازم رو ندارین در این صورت میتونید دستور رو با VIO بدین، فقط لازمه که سیگنالی که برای سریال تعریف کردین به طور موقت سیگنال VIO رو بهش وصل کنید.
        از کادر Project گزینه VIO رو انتخاب کنید تا پنجره VIO Console باز بشه. این پنجره تقریباً مشابه Waveform هست.


        مطابق شکل بالا، میتونید Radix باس رو تنظیم کنید برای ارسال مقدار به FPGA بعد از تغییر مقدار باید کلید اینتر رو بزنید و یا سیگنال های تکی رو مطابق شکل بعد به صورت کلید دائمی یا لحظه ای تعریف کنید که در این صورت کافیه روی کلید کلیک کنید تا مقدار به FPGA ارسال بشه.


        فکر می کنم مطالب اصلی گفته شده باشه به هر حال اگه ابهام یا سوالی بود در خدمتم تا مطلب تکمیل بشه و به صورت فایل PDF در پست اول قرار بگیره.
        لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
        لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
        با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
        اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
        يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

        دیدگاه


          #5
          پاسخ : آموزش ChipScope

          چند تا نکته الان یادم اومد:
          1- در تنظیمات ILA طول و عمق سیگنال، به نوع FPGA انتخاب شده بستگی داره.
          2- در پنجره Trigger Setup در برنامه ChipScope با تغییر مقدار Position میشه به همون تعداد کلاک قبل از تریگر رو هم دید. زمان تریگر با T Cursor روی waveform نشون داده میشه.
          لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
          لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
          با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
          اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
          يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

          دیدگاه


            #6
            پاسخ : آموزش ChipScope

            سلام
            آقای هادی واقعا خسته نباشد، عالی بود.
            فقط ای کاش کد vhdl که باهاش این آموزش رو گذاشتید هم، اینجا قرار میدادید تا از روی اون جلو بریم
            من یه برنامه ساده شمارنده رو گذاشتم . core ها رو درست کردم ، ولی برای استفاده از برنامه chipscope analayzer ،چون یه خورده برام گنگ بود توضیحات کار با برنامه analayzer ،نتونستم ادامه بدم .
            این قسمت رو متوجه نشدم :
            برای شروع مانیتورینگ، طبق شکل زیر از لیست یکی از گزینه ها رو انتخاب کنید:
            1- Single: با انتخاب این گزینه، با هر بار زدن Run (دکمه مثلث شکل کنار لیست)، یک بار اطلاعات ILA خونده میشه. در هر بار خوندن اطلاعات، به همون تعدادی کلاکی که در تولید VIO مشخص کرین دیتاهای ILA به کامپیوتر لود میشن. توجه کنید که کلاک ILA لازم نیست کلاک اصلی سیستم باشه و بسته به نیاز شما میتونه هر سیگنالی باشه ولی اگه میخواین دیتای ILA رو بتونید تحلیل کنید بهتره همون کلاکی رو بدین که سیگنالهای دیتای ILA با اون کلاک عوض میشن.
            2- Repetitive: با انتخاب این گزینه اطلاعات ILA به صورت متوالی خونده میشن، هر چقدر عمق و تعداد سیگنالها کمتر باشه سرعت پدیت بیشتر میشه. برای شروع باید آیکن Run رو بزنید.
            3- Startup: اطلاعات رو از اولین لحظه شروع کار نشون میده.
            اگه امکانش هست توضیحات برنامه chipscope analayzer با یه کد vhdl ساده تر بزارید .
            بازم ممنون .

            دیدگاه


              #7
              پاسخ : آموزش ChipScope

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

              دیدگاه


                #8
                پاسخ : آموزش ChipScope

                در اولین فرصت که وقت داشته باشم کد به همراه فایل cpj میذارم.
                دقیقا کدوم قسمت رو متوجه نشدی؟ فعلا با موبایل اومدم و تایپ کردن سخته.
                لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
                لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
                با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
                اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
                يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

                دیدگاه


                  #9
                  پاسخ : آموزش ChipScope

                  خیلی خیلی ممنون که میخواید کد رو بزارید.
                  دقیقا کدوم قسمت رو متوجه نشدی؟
                  دقیقا از لحظه شروع مانیترینگ که وضعیت Single یا Repetitive یا Startup رو انتخاب می کنیم و run رو میزنیم به بعدنتونستم ادامه بدم.
                  نیاز من از این chipscope اینه که بتونم واقعا یه debugging مناسب به طوری که مشخص شه پیاده سازی صورت گرفته به ازای ورودی های مختلف از نظر زمانی (کلاکینگ) ،در خروجی جوابها ی درستی میده (البته در صورتی که مطمئن هستم الگوریتم رو درست پیاده کردم) .
                  مثلا برای پیاده کردن یه فیلتر fir با ضرائب بسیار کم که کد اون رو دستی نوشتم ،مطمئن شم،نسبت به فرکانس سمپلینگ و فرکانس کاری، مثلا هیچ گونه هم پوشانی زمانی صورت نمیگیره (اینو به عنوان مثال گفتما).
                  یا مثلا ورودی های کنترلی آسنکرون (مثلا سیگنال reset آسنکرون داشته باشم که بفهمم تفاوتش با reset سنکرون در وضعیت های مختلف چی هست) داشته باشم.
                  خیلی ممنون میشم اگه یکم بحث رو باز تر کنید.

                  دیدگاه


                    #10
                    پاسخ : آموزش ChipScope

                    بابت تأخیر در جواب دادن شرمنده، متأسفانه چند وقتی هست خیلی درگیرم و هنوز هم وقت نکردم فایل vhd و cpj درست کنم و بذارم.
                    اگه مراحل قبلی درست انجام شده باشه کافیه در قسمتی که گفتی، یکی از موارد Single یا Repetitive رو انتخاب کنی و Run رو بزنی تا مانیتورینگ شروع بشه. در حالت Single فقط اولین بار که شرط Trig که در قسمت Trig Setup تنظیم کردی برقرار بشه مقادیر سیگنالها پدیت میشن و در حالت Repetitive هر بار که شرط برقرار بشه مقادیر پدیت میشن. در صورتی که گزینه Immediate رو هم بزنی با سریع ترین فرکانس ممکن، مقادیر بدون نیاز به برقراری هیچ شرطی پدیت میشن.
                    تنظیمات دیگری هم در قسمت Trig Setup هست که فاکتور گرفته بودم. مثلاً رابطه بین شرط های Trig شدن چی باشه یا انتخاب این که با چند بار برقراری شرط Trig مقادیر پدیت بشن که زیاد مهم نیستن چون وقتی بتونی در حالت معمولی نتیجه بگیری کم کم با این گزینه ها هم کار کنی دستت میاد.
                    ضمناً حالت Startup حالت خاصی هست که خودم باهاش کار نکردم و فکر می کنم از ویژگی های بعضی FPGA ها باشه و همه ندارن.
                    چون فرکانس کاری FPGA خیلی بالا هست برای بررسی موارد تایمینگ فکر می کنم اول در شبیه سازی مطمئن بشی بهتر باشه، برای اطمینان بیشتر میتونی از شبیه سازی Post-route استفاده کنی.
                    لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
                    لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
                    با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
                    اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
                    يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

                    دیدگاه


                      #11
                      پاسخ : آموزش ChipScope

                      از توضیحات خوبتون ممنون
                      اما آقای هادی شما گفتید:
                      نوشته اصلی توسط هـادی
                      سلام.
                      قصد دارم در این تاپیک آموزش ChipScope رو به صورت خلاصه و همراه با مثال و عکس بذارم.
                      ChipScope یکی از برنامه های جانبی Xilinx ISE Suit هست که همراه اون نصب میشه ...
                      نسخه نرم افزار من ISE 10.1 SP3 است و chipscope نداره آیا باید جداگانه نصب بشه؟وچه جوری؟

                      دیدگاه


                        #12
                        پاسخ : آموزش ChipScope

                        نوشته اصلی توسط mmajid
                        از توضیحات خوبتون ممنون
                        اما آقای هادی شما گفتید: نسخه نرم افزار من ISE 10.1 SP3 است و chipscope نداره آیا باید جداگانه نصب بشه؟وچه جوری؟
                        در مورد این ورژن اطلاعی ندارم. لینک زیر رو ببین به دردت میخوره یا نه.
                        http://www.xilinx.com/csi/dlc-tab-10_1-sp3.htm
                        در ضمن چرا از ورژن جدیدتر استفاده نمی کنی؟
                        لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
                        لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
                        با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
                        اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
                        يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

                        دیدگاه


                          #13
                          پاسخ : آموزش ChipScope

                          ممنون
                          برای دانلود از http://www.xilinx.com/csi/dlc-tab-10_1-sp3.htm نتونستم USER ID رو فعال کنم
                          البته سعی کردم از هویت جعلی استفاده کنم ولی error میگیره.
                          من پروگرمر USB ندارم لذا از دو تا لپ تاپ استفاده میکنم (یکی قدیمی با 1.ISE10 و دارای LPT برای پروگرم کردن - و دومی جدید با ISE14.2 و البته بدونه LPT) روی لپ تاپ قدیمی ISE ورژن جدید نمیشه نصب کرد حالا اگر CHIPSCOPE رو برای قدیمی نصب میکردم خوب میشد.

                          دیدگاه


                            #14
                            پاسخ : آموزش ChipScope

                            برای جمع بندی این مطلب که نسبتاً هم قدیمی شده چند نکته دیگه هم اضافه می کنم.

                            1- تنظیمات پنجره Trigger Setup:
                            - در صورتی که تعداد پورت های تریگر بیشتر از یکی باشه، در قسمت Trigger Condition Equation میشه تنظیم کرد که تریگ بر اساس کدوم پورت انجام بشه و حتی میشه بین پورت ها رابطه منطقی با AND و OR و NOT تنظیم کرد.
                            - مقادیر قابل قبول در حالت Basic with edges یا Extended with edges در قسمت Value شامل: 0، 1، R (لبه بالارونده)، F(لبه پایین رونده)، B(هر دو لبه) هست وقتی Radix از نوع Binary انتخاب شده باشه، وقتی Radix از نوع Signed یا Unsigned انتخاب بشه میشه مقادیر صحیح وارد کرد و در قسمت Function تعیین کرد که چه وقت تریگ اعمال بشه مثلاً وقتی مقدار پورت تریگر کمتر از عدد صحیح 10 باشه.
                            - در قسمت Windows میتونید عددی مثبت رو انتخاب کنید. این عدد تعداد تریگر شدن های متوالی ChipScope هست مثلاً اگه تریگ رو روی لبه بالارونده سیگنال Ready کامپوننت سریال قرار دادین و طول بسته سریال 20 هست میتونید در این قسمت با وارد کردن 20، همه بایت های دیتا رو ببینید. در صورت استفاده از این خاصیت برای مشاهده بهتر، مقدار Position رو صفر قرار بدین.

                            2- پروگرم کردن FPGA از طریق ChipScope: از منوی فایل گزینه Configure میتونید با انتخاب فایل bit. مناسب، FPGA متصل به ChipScope رو پروگرم کنید.

                            3- استفاده از ChipScope Inserter: علاوه بر امکان اضافه کردن دستی Core های ChipScope به پروژه میشه با انتخاب ChipScope Inserter در قسمت Add Source این کار رو به صورت اتوماتیک انجام داد. برای استفاده از این قابلیت لازمه تا یک بار کد کامل سنتز بشه. ChipScope Inserter مزایا و معایبی نسبت به اضافه کردن دستی سیگنال ها داره:
                            - مزایا:
                            * سیگنالهای داخلی کامپوننت ها که ازشون بیرون کشیده نشدن و در Top Module در دسترس نیستن رو میشه به ChipScope اضافه کرد.
                            * نیازی به تعریف سیگنالها و کامپوننت های مربوط به ChipScope نیست.
                            * نام سیگنالهای اضافه شده در فایل cdc همراه پروژه ذخیره میشه که قابلیت Import کردن در ChipScope و ذخیره با پسوند cpj وجود داره و به این ترتیب نیازی به نامگذاری تک تک سیگنال ها و درست کردن باس نیست.
                            - معایب:
                            * امکان اضافه کردن VIO نیست.
                            * بعضی سیگنالها در مرحله سنتز به دلیل بهینه سازی حذف میشن همچنین تعدادی از Constantها. در ChipScope Inserter فقط سیگنالهایی که بعد از سنتز باقی میمونن رو میشه به قسمت Trigger یا Data وصل کرد. برای جلوگیری از حذف شدن سیگنالها میشه از KEEP Attribute استفاده کرد که البته نتیجه اش قطعی نیست.
                            * انعطاف پذیری کمتری نسبت به اضافه کردن دستی Coreها داره مثلاً در Coreهای دستی میشه به یک سیگنال ILA با استفاده از when مقدار شرطی نسبت داد.
                            * نام های طولانی که در مرحله سنتز به سیگنالها داده میشه و بعضاً بعضی اسامی عوض میشن و سلسله مراتب کامل سیگنالها در اسمشون میاد که باعث طولانی شدن اسمها میشه.
                            * با تغییر در کد ممکنه تعدادی از سیگنالها عوض بشن که نیاز به تنظیم مجدد ChipScope Inserter هست.

                            4- اتصال بیشتر از یک پروگرمر (برد FPGA) به یک کامپیوتر: در صورتی که نیاز به دیباگ همزمان دو FPGA دارین که با هم Chain نیستن میتونید با استفاده از دو پروگرمر و دو برنامه ChipScope این کارو انجام بدین. برای این کار لازمه از منوی JTAG Chain گزینه Server Host Setting شماره پورت سرور رو برای ChipScope دوم تغییر بدین. برای اتصال به JTAG هم در همین منو روی نوع پروگرمرتون کلیک کنید (معمولاً ...Xilinx Platrorm USB Cable) تا کادری باز بشه که پورت های متصل به پروگرمر رو نشون بده، در این مرحله با انتخاب پورت و زدن کلید Blink LED میشه فهمید مربوط به کدوم پروگرمر هست (با زدن Blink LED، چراغ مربوط به پروگرمر متصل به اون پورت به مدت 5 ثانیه چشمک میزنه).
                            لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
                            لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
                            با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
                            اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
                            يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

                            دیدگاه


                              #15
                              پاسخ : آموزش ChipScope - منابع

                              در تکمیل پست قبل، یکی دیگه از قابلیت های نرم افزار ChipScope Pro امکان لاگ گرفتن از سیگنالهاست. در منوی File گزینه Export سه فرمت مختلف برای لاگ گرفتن وجود داره، فرمت ASCII برای کار با فایل مثل خواندن در متلب مناسبه. همچنین در منوی Trigger Setup قابلیت های زیر وجود داره:
                              1- Export کردن تنظیمات تریگر
                              2- Import کردن تنظیمات تریگر
                              3- لاگ گرفتن از سیگنالها با هر بار تریگر (در حالت Repetitive)

                              ---------------------------------------------------------------------------------

                              منابع مرتبط با ChipScope Pro در سایت Xilinx:





                              ویدئوی آموزشی ChipScope Pro
                              لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
                              لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
                              با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
                              اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
                              يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

                              دیدگاه

                              لطفا صبر کنید...
                              X