اطلاعیه

Collapse
No announcement yet.

ChipScope cores adding (اضافه کردن cores)

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

    ChipScope cores adding (اضافه کردن cores)


    سلام،

    من برای استفاده ازchip scope ، وقتیآ‌ ۲ تا core ICON & ILA رو استفاده میآ‌کنم ، سینتکس خطا میگیرم.

    کسیآ‌ متوجه اینکه کجا ایراد داره میشه؟


    --
    ----------------------------------------------------------------------------------
    library IEEE;
    use IEEE.STD_LOGIC_1164.ALL;



    entity randbit is
    generic (width : integer := 32);
    port (
    clk :in std_logic;
    -- random_num ut std_logic_vector (width-1 downto 0)
    rnd_out : out std_logic
    );

    end randbit;

    architecture Behavioral of randbit is

    --chipscope ICON
    ---/////////////
    signal CONTROL0 : STD_LOGIC_VECTOR(35 DOWNTO 0);
    component xicon
    PORT (
    CONTROL0 : INOUT STD_LOGIC_VECTOR(35 DOWNTO 0));

    end component;

    --chipscope ILA

    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;

    ---/////////////

    begin
    process(clk)

    variable rand_temp :std_logic_vector(width-1 downto 0) := (31 =>'1',28 =>'1', others =>'0'
    variable temp : std_logic := '0';
    begin
    if (rising_edge(clk)) then
    temp := rand_temp (width-1) xor rand_temp (width-2);
    rand_temp(0) :=temp;
    rand_temp (width -1 downto 1) := rand_temp (width -2 downto 0);
    end if;

    rnd_out<=rand_temp(31);

    end process;

    --/// CHIPSCOPE ICON & ILA
    Inst_ICON : xicon
    port map (
    CONTROL0 => CONTROL0);


    Inst_ILA: xILA
    port map (
    CONTROL => CONTROL0,
    CLK => CLK,
    DATA => ILA_DATA,
    TRIG0 => ILA_TRIG0);




    end Behavioral;







    #2
    پاسخ : ChipScope cores adding (اضافه کردن cores)

    سلام. اگه کدت رو انتخاب کنی، با استفاده از گزینه "کد" و انتخاب "VHDL" به صورت زیر در میاد که خواناتر میشه:
    [code=vhdl]--
    ----------------------------------------------------------------------------------
    library IEEE;
    use IEEE.STD_LOGIC_1164.ALL;



    entity randbit is
    generic (width : integer := 32);
    port (
    clk :in std_logic;
    -- random_num ut std_logic_vector (width-1 downto 0)
    rnd_out : out std_logic
    );

    end randbit;

    architecture Behavioral of randbit is

    --chipscope ICON
    ---/////////////
    signal CONTROL0 : STD_LOGIC_VECTOR(35 DOWNTO 0);
    component xicon
    PORT (
    CONTROL0 : INOUT STD_LOGIC_VECTOR(35 DOWNTO 0));

    end component;

    --chipscope ILA

    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;

    ---/////////////

    begin
    process(clk)

    variable rand_temp :std_logic_vector(width-1 downto 0) := (31 =>'1',28 =>'1', others =>'0'
    variable temp : std_logic := '0';
    begin
    if (rising_edge(clk)) then
    temp := rand_temp (width-1) xor rand_temp (width-2);
    rand_temp(0) :=temp;
    rand_temp (width -1 downto 1) := rand_temp (width -2 downto 0);
    end if;

    rnd_out<=rand_temp(31);

    end process;

    --/// CHIPSCOPE ICON & ILA
    Inst_ICON : xicon
    port map (
    CONTROL0 => CONTROL0);


    Inst_ILA: xILA
    port map (
    CONTROL => CONTROL0,
    CLK => CLK,
    DATA => ILA_DATA,
    TRIG0 => ILA_TRIG0);




    end Behavioral;[/code]

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

    دیدگاه


      #3
      پاسخ : ChipScope cores adding (اضافه کردن cores)

      سلام .. نه منظورم یک ICON و یکILA هست
      راستش الان که Re-Run کردم دیگهerror نمیده ولیآ‌ warning میده ..
      نمیدونم چقدر مهمه اینwarning ها

      Line 33: Net <ILA_TRIG0[7]> does not have a driver.
      WARNING:Xst:653 - Signal <ILA_DATA> is used but never assigned. This sourceless signal will be automatically connected to value GND.
      WARNING:Xst:653 - Signal <ILA_TRIG0> is used but never assigned. This sourceless signal will be automatically connected to value GND.

      دیدگاه


        #4
        پاسخ : ChipScope cores adding (اضافه کردن cores)



        WARNING:PhysDesignRules:372 - Gated clock. Clock net CONTROL0<13> is sourced by
        a combinatorial pin. This is not good design practice. Use the CE pin to
        control the loading of data into the flip-flop.
        WARNING:PhysDesignRules:2410 - This design is using one or more 9K Block RAMs
        (RAMB8BWER). 9K Block RAM initialization data, both user defined and
        default, may be incorrect and should not be used. For more information,
        please reference Xilinx Answer Record 39999.

        دیدگاه


          #5
          پاسخ : ChipScope cores adding (اضافه کردن cores)


          شاید خطا به خاطره ucf فایله

          دیدگاه


            #6
            پاسخ : ChipScope cores adding (اضافه کردن cores)

            code edited

            دیدگاه


              #7
              پاسخ : ChipScope cores adding (اضافه کردن cores)

              من امروز همش رو این کار کردم ولیآ‌ نشد!! :sad:

              فکر میآ‌کنم مشکل از assign کردن دیتا و تریگگر باشه ..

              [code=vhdl]CLK => CLK,
              DATA => ILA_DATA,
              TRIG0 => ILA_TRIG0[/code]


              من میآ‌خوام پورت خروج rnd_out رو track کنم با chipscope ..




              [code=vhdl]--
              ----------------------------------------------------------------------------------
              library IEEE;
              use IEEE.STD_LOGIC_1164.ALL;

              entity randbit is
              generic (width : integer := 32);
              port (
              clk :in std_logic;
              -- random_num ut std_logic_vector (width-1 downto 0)
              rnd_out : out std_logic
              );
              end randbit;


              architecture Behavioral of randbit is

              signal rand_temp :std_logic_vector(width-1 downto 0) := (31 =>'1',28 =>'1', others =>'0'
              signal temp : std_logic := '0';

              --- Chipscope ICON & ILA cOMPONENTS
              signal CONTROL0 : STD_LOGIC_VECTOR(35 DOWNTO 0);
              signal ILA_DATA : STD_LOGIC_VECTOR(255 DOWNTO 0);
              signal ILA_TRIG0 : STD_LOGIC_VECTOR(7 DOWNTO 0);

              component xicon
              PORT (
              CONTROL0 : INOUT STD_LOGIC_VECTOR(35 DOWNTO 0)
              );

              end component;

              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;


              begin
              process(clk)
              -- variable rand_temp :std_logic_vector(width-1 downto 0) := (31 =>'1',28 =>'1', others =>'0'
              -- variable temp : std_logic := '0';
              begin
              if (rising_edge(clk)) then
              temp <= rand_temp (width-1) xor rand_temp (width-2);
              rand_temp(0) <=temp;
              rand_temp (width -1 downto 1) <= rand_temp (width -2 downto 0);
              end if;

              rnd_out<=rand_temp(31);
              end process;
              -- Chipscope PortMap ICON & ILA
              inst_icon : xicon
              port map (
              CONTROL0 => CONTROL0
              );

              inst_ila : xila
              port map (
              CONTROL => CONTROL0,
              CLK => CLK,
              DATA => ILA_DATA,
              TRIG0 => ILA_TRIG0
              );

              end Behavioral;




              [/code]

              دیدگاه


                #8
                پاسخ : ChipScope cores adding (اضافه کردن cores)

                این Warning ها مهم نیستن و همیشه به وجود میان. مشکلی توی کد نیست فقط سیگنالی که میخوای ببینی رو به ILA بده:

                [code=vhdl]ILA_Data(31 downto 0) <= rand_temp;[/code]
                لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
                لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
                با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
                اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
                يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

                دیدگاه


                  #9
                  پاسخ : ChipScope cores adding (اضافه کردن cores)



                  بلاخره درست شد.ممنونم زیاد.

                  فقط چند تا سوال،

                  ۱. تنها سیگنال رو میآ‌شه در chipscope دید؟ یا مثلا میآ‌شه پورت خروجی یا variable رو وصل کرد؟

                  ۲. برای هر چیآ‌ که میآ‌خوایم track کنیم باید یکILA ساخت؟

                  ۳.اگر اینجا بخوام کلاک رو هم داشته باشم باید چه کار کنم؟

                  پیشاپیش ممنون از وقتیآ‌ که میزارید

                  دیدگاه


                    #10
                    پاسخ : ChipScope cores adding (اضافه کردن cores)

                    1- سیگنال ILA_Data یک سیگنال مثل بقیه سیگنالهاست و هرچی که به بقیه سیگنال ها بتونی اختصاص بدی به ILA_Data هم میتونی اختصاص بدی.
                    2- روش های مختلفی هست، اولین راه شبیه سازی با ISim یا ModelSim هست، دومیش همین ChipScope هست که میتونی با ILA یا VIO سیگنالها رو ببینی و راه سوم هم اینه که سیگنال دیتا رو به خروجی (مثلاً پورت سریال) بدی و با نرم افزار بخونی و سیگنال پالس رو هم با اسکوپ ببینی.
                    * ILA از منابع سخت افزاری Block RAM استفاده میکنه و طول سیگنال دیتا × عمق ILA نمیتونه از ظرفیت Block RAM موجودت بیشتر بشه به همین خاطر باید تعداد سیگنالهایی که قصد داری به ILA بدی و تعداد کلاک هایی که قصد داری در هر بار Trig ببینی خیلی زیاد نشه.
                    * با یک Instant از ILA معمولاً کارت راه میفته و نیازی به ساختن تعداد بیشتر نداری.
                    * برای داشتن سیگنالها با سرعت پدیت مختلف میتونی سه تا کار انجام بدی:
                    - یک سیگنال برای Trig بسازی متناسب با سرعت پدیت.
                    - برای سیگنالهای با سرعت پدیت مختلف، ILA های جدا با کلاک متناسب با سرعت پدیت اون سیگنالها بذاری.
                    - سیگنال کلاک ILA رو با استفاده از VIO انتخاب کنی.
                    * کلاک هم یک سیگناله مثل بقیه سیگنالها و میتونی به ILA بدی ولی اگه فرکانسش از نصف فرکانس کلاک ILA بزرگتر باشه در ChipScope دیده نمیشه.
                    لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
                    لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
                    با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
                    اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
                    يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

                    دیدگاه

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