اطلاعیه

Collapse
No announcement yet.

سوال در مورد فایل test bench

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

    سوال در مورد فایل test bench

    زمانی که در نرم افزار ISE یک فایل test bench ایجاد می کنم نرم افزار بطور پیش فرض قسمتهایی از فایل رو ایجاد کرده
    و قسمتهای بعدی را کاربر تغییر و تنظیم می کند
    اما زمانی که خودم فایل تست رو می نویسم خطوط زیر ایجاد خطا می کنند
    البته فکر می کنم که نمی تونم اونها رو تنظیم کنم که با حذف این خطوط خطا ها نیز برطرف می شوند و حتی جالب اینکه جوراب صحیح نیز بدست می یاد
    می خواستم بدونم کسی می دونه این خطوط که نرم افزار ایجاد کرده چیه ؟ و چطور باید اونها رو تنظیم کرد ؟
    constant <clock>_period : time := 10 ns;
    -- Clock process definitions
    <clock>_process :process
    begin
    <clock> <= '0';
    wait for <clock>_period/2;
    <clock> <= '1';
    wait for <clock>_period/2;
    end process;
    -- Stimulus process
    stim_proc: process
    begin
    -- hold reset state for 100 ns.
    wait for 100 ns;

    wait for <clock>_period*10;
    مردود شدن بهتر از با تقلب قبول شدن است

    #2
    پاسخ : سوال در مورد فایل test bench

    واقعاً کسی نمیدونه؟
    :angry:
    مردود شدن بهتر از با تقلب قبول شدن است

    دیدگاه


      #3
      پاسخ : سوال در مورد فایل test bench

      با سلام

      تو نام گزاری اجازه ندارید از > یا < استفاده کنید!

      دیدگاه


        #4
        پاسخ : سوال در مورد فایل test bench

        نوشته اصلی توسط mojtaba_led
        با سلام

        تو نام گزاری اجازه ندارید از > یا < استفاده کنید!
        با تشکر از پاسخ شما
        شما میدونید این قسمت که گذاشتم کارش چیه؟
        مردود شدن بهتر از با تقلب قبول شدن است

        دیدگاه


          #5
          پاسخ : سوال در مورد فایل test bench

          البته این کامل نیست که بگم چکار میکنه !

          ولی پراسس اول یه کلاک تولید میکنه با پریود <clock>_period که برایر با 10 نانو ثانیه است.

          و دومی هم احتملا یه سری ورودی ها را مقدار دهی میکنه.

          مگه خودتون ننشوتید تست بنچ رو ؟

          دیدگاه


            #6
            پاسخ : سوال در مورد فایل test bench

            نوشته اصلی توسط mojtaba_led
            البته این کامل نیست که بگم چکار میکنه !

            ولی پراسس اول یه کلاک تولید میکنه با پریود <clock>_period که برایر با 10 نانو ثانیه است.

            و دومی هم احتملا یه سری ورودی ها را مقدار دهی میکنه.

            مگه خودتون ننشوتید تست بنچ رو ؟
            همانطور که نوشته بودم من این قسمتها رو غیر فعال می کنم یعنی اصلا تو برنامه نمی یارم
            بعد هم گفته بودم ک این قسمته دیفالت فایل تست بنچ است
            شما می دونید برای چی بایستی پراسس اول یه کلاک ایجاد کنه ؟ یا اصلا این کلاک چی هست ؟ مربوط به کجایه ؟ چرا من اینو حذف می کنم جواب صحیح بدست می یاد ؟
            هر کی میدونه پاسخ بده خیلی ممنونش میشم
            مردود شدن بهتر از با تقلب قبول شدن است

            دیدگاه


              #7
              پاسخ : سوال در مورد فایل test bench

              شما می دونید برای چی بایستی پراسس اول یه کلاک ایجاد کنه ؟ یا اصلا این کلاک چی هست ؟ مربوط به کجایه ؟
              خوب کلاک که کلاکه، احتمالا توصیفتون به شکلی هست که نیاز به کلاک داره. حالا این داره اونو شبیه سازی میکنه.

              چرا من اینو حذف می کنم جواب صحیح بدست می یاد ؟
              خوب بخاطره اینه که شاید در عمل بهش نیاز ندارید، من از ورژن 7 استفاده میکنم چنین چیزی به عنوان دیفالت تولید نمیکنه (پراسس اول) شاید این ورژنی که استفاده میکنید این کار را برای سهولت بیشتر انجام داده براتون.

              در ضمن خودتون با توجه به توصیفتون باید تشخیص بدید که آیا برای شبیه سازی به کلاک نیاز دارید یا خیر به عنوان مثال توصیف زیر رو در نظر بگیرید:

              library ieee,modelsim_lib;
              use ieee.std_logic_1164.all;
              entity serial_sub is
              port(a,b,start,clock:in bit;
              ready,boutut bit;
              result:buffer bit_vector(7 downto 0));
              end serial_sub;

              architecture behavioral of serial_sub is
              begin
              process(clock)
              variable count:integer:=8;
              variable sub,borrow:bit;
              begin
              if (clock='0'and clock'event)then
              if(start='1&#039then
              count:=0;
              borrow:='0';
              else
              if count<8 then
              count:=count+1;
              sub:=a xor b xor borrow;
              borrow:=(not(a) and b)or(not(a) and borrow)or(b and borrow);
              bout<=borrow;
              result<=sub&result(7 downto 1);
              end if;
              end if;
              if count =8 then
              ready<='1';
              else
              ready<='0';
              end if;
              end if;
              end process;
              end behavioral;


              فارق از اینکه توصیف بالا چه کار میکنه، با توجه به اینکه تو توصیف میبینیم که یه پایه کلاک داریم که تو لبه پایین رونده اون یه اتفاقی قراره بیوفته پس باید تو شبیه سازی یه کلاک ایجاد کنیم به صورت زیر :


              library ieee,modelsim_lib;
              use ieee.std_logic_1164.all;
              entity tb is
              end tb;

              architecture behavioral of tb is
              component serial_sub port(a,b,start,clock:in bit;
              ready,boutut bit;
              result:buffer bit_vector(7 downto 0));
              end component;
              signal a,b,start,clock,ready,bout:bit;
              signal result: bit_vector(7 downto 0);
              begin
              u1:serial_sub port map(a,b,start,clock,ready,bout,result);
              clock_generator:process
              variable clk:bit:='0';
              begin
              clk:=not clk;
              clock<=clk;
              wait for 100ns;
              end process;


              stimulus:process
              begin
              a<='0';
              b<='0';
              start<='0';
              wait for 100ns;
              --start
              start<='1';
              wait for 100ns;
              start<='0';
              wait for 100ns;
              --a=0,b=1
              a<='0';
              b<='1';
              wait ;
              end process;


              دیدگاه


                #8
                پاسخ : سوال در مورد فایل test bench

                نوشته اصلی توسط masoud58
                زمانی که در نرم افزار ISE یک فایل test bench ایجاد می کنم نرم افزار بطور پیش فرض قسمتهایی از فایل رو ایجاد کرده
                و قسمتهای بعدی را کاربر تغییر و تنظیم می کند
                اما زمانی که خودم فایل تست رو می نویسم خطوط زیر ایجاد خطا می کنند
                البته فکر می کنم که نمی تونم اونها رو تنظیم کنم که با حذف این خطوط خطا ها نیز برطرف می شوند و حتی جالب اینکه جوراب صحیح نیز بدست می یاد
                می خواستم بدونم کسی می دونه این خطوط که نرم افزار ایجاد کرده چیه ؟ و چطور باید اونها رو تنظیم کرد ؟
                constant <clock>_period : time := 10 ns;
                -- Clock process definitions
                <clock>_process :process
                begin
                <clock> <= '0';
                wait for <clock>_period/2;
                <clock> <= '1';
                wait for <clock>_period/2;
                end process;
                -- Stimulus process
                stim_proc: process
                begin
                -- hold reset state for 100 ns.
                wait for 100 ns;

                wait for <clock>_period*10;
                سلام
                شما وقتی میخوای برای یک ماژول تست بنچ درست کنی، موقع ایجاد اون خود نرم افزار ازت میپرسه که برای کدوم ماژول میخوای تست بنچ درست کنی. بعد که تست بنچ ایجاد شد، اگر نرم افزار درست کار کنه ( و سر حال باشه :icon_razz: ) درون تست بنچ تمام ورودی و خروجی های ماژول به درستی شناخته میشن و اسم گذاری می شن. همچنین یک کلاک برای انجام شبیه سازی همنام با اسمی که برای کلاک توی ماژول انتخاب کردید درست میکنه ( البته اگر ماژولتون کلاک داشته باشه ).
                اما اگر نرم افزار سر حال نباشه پورت ها (و همچنین کلاک) رو درست تشخیص نمیده و اونوقته که درون تست بنچ اسم همه سیگنال ها و پورت ها رو درون <> نشون میده. در این حالت شما باید اسم پورت ها و سیگنال ها رو خودتون با توجه به ماژولتون بنویسید. مثلا به جای <clock> باید بنویسید clk
                بازم اگر ابهامی هست بفرمایید

                دیدگاه


                  #9
                  پاسخ : سوال در مورد فایل test bench

                  نوشته اصلی توسط ehbas
                  سلام
                  شما وقتی میخوای برای یک ماژول تست بنچ درست کنی، موقع ایجاد اون خود نرم افزار ازت میپرسه که برای کدوم ماژول میخوای تست بنچ درست کنی. بعد که تست بنچ ایجاد شد، اگر نرم افزار درست کار کنه ( و سر حال باشه :icon_razz: ) درون تست بنچ تمام ورودی و خروجی های ماژول به درستی شناخته میشن و اسم گذاری می شن. همچنین یک کلاک برای انجام شبیه سازی همنام با اسمی که برای کلاک توی ماژول انتخاب کردید درست میکنه ( البته اگر ماژولتون کلاک داشته باشه ).
                  اما اگر نرم افزار سر حال نباشه پورت ها (و همچنین کلاک) رو درست تشخیص نمیده و اونوقته که درون تست بنچ اسم همه سیگنال ها و پورت ها رو درون <> نشون میده. در این حالت شما باید اسم پورت ها و سیگنال ها رو خودتون با توجه به ماژولتون بنویسید. مثلا به جای <clock> باید بنویسید clk
                  بازم اگر ابهامی هست بفرمایید
                  یه کم در مورد دستورات wait for مطالعه کردم
                  کم کم داره دستم میاد که اینها چیه
                  باز هم از شما ممنونم
                  مردود شدن بهتر از با تقلب قبول شدن است

                  دیدگاه


                    #10
                    پاسخ : سوال در مورد فایل test bench

                    خوب این قسمتو فهمیدم
                    یک موج مربعی با پریود 10 نانو ثانیه
                    البته خیلی از دوستان هم بهش اشاره کرده بودند :
                    constant <clock>_period : time := 10 ns;
                    -- Clock process definitions
                    <clock>_process :process
                    begin
                    <clock> <= '0';
                    wait for <clock>_period/2;
                    <clock> <= '1';
                    wait for <clock>_period/2;
                    end process;
                    مردود شدن بهتر از با تقلب قبول شدن است

                    دیدگاه

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