اطلاعیه

Collapse
No announcement yet.

شبیه سازی FPGA

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

    شبیه سازی FPGA

    سلام دوستان
    من میخوام کار با FPGA رو شروع کنم .
    وقتی اومدم تو برنامه Model sim شبیه سازیش کنم ( مثل AVR تو پروتئوس ) شبیه سازی نمی شد.
    از دوستان کسی میدونه چطور میشه شبیه سازیش کرد ؟
    و در ضمن اینکه Test Bench چیه و ما واسه چی باید اونو هم بنویسیم ؟
    Test bench رو با چه برنامه ای باید نوشت ؟
    مرسی
    ---------
    .
    .
    ...........

    #2
    پاسخ : شبیه سازی FPGA

    نوشته اصلی توسط ajapyy
    سلام دوستان
    من میخوام کار با FPGA رو شروع کنم .
    وقتی اومدم تو برنامه Model sim شبیه سازیش کنم ( مثل AVR تو پروتئوس ) شبیه سازی نمی شد.
    از دوستان کسی میدونه چطور میشه شبیه سازیش کرد ؟
    و در ضمن اینکه Test Bench چیه و ما واسه چی باید اونو هم بنویسیم ؟
    Test bench رو با چه برنامه ای باید نوشت ؟
    مرسی
    با modelsim کار نکردم، فکر می کنم حرفه ای ترین شبیه ساز همین برنامه باشه، اما یه برنامه ساده تر هست به نام Active HDL که با اون برنامه می نوشتم و شبیه سازی می کردم، البته این بحث مال دو-سه سال پیشه و الان چیز زیادی ازش یادم نمونده!
    تست بنچ هم یه کدی هست که شما بعد از این که entity و architecture هات رو نوشتی، میایی و با تعریف سیگنال ها و ورودی هایی و وقدار دادن به اون ها صحت برنامه نوشته شده رو چک می کنی
    اونچيزي که در دانشگاه ياد ميگيريد، "الفبايي" هست براي نوشتن يک "رمان" !!

    دیدگاه


      #3
      پاسخ : شبیه سازی FPGA

      سلام من یک آموزش مقدماتی برای Modelsim نوشتم که می توانید از لینک زیر دانلودش کنید
      http://www.eca.ir/forum2/index.php?topic=62946.0
      معجزه اين است که هرچه داشته هايت را بيشتر با ديگران سهيم شوي،داراتر مي شوي (لئونارد نيموي)
      اگر مغزانسان،چنان ساده مي بود که ما از آن سر در مي آورديم،هنوز چنان احمق بوديم که هيچ از آن سر در نمي آورديم!
      آموزش Modelsim

      دیدگاه


        #4
        پاسخ : شبیه سازی FPGA

        کمی با modelsim و active hdl کار کردم
        اما هنوز نمی دونم چه جور شبیه سازی اجرا میشه
        مثلا تو یه برنامه که دو تا ورودی با هم and میشن چه جور میشه به ورودی ها مقدار داد یعنی مثلا یکی
        رو یه پالس با فرکانس 1meg و اون یکی رو پالس دیگه با فرکانس 2meg داد ؟
        مرسی
        ---------
        .
        .
        ...........

        دیدگاه


          #5
          پاسخ : شبیه سازی FPGA

          نوشته اصلی توسط ajapyy
          کمی با modelsim و active hdl کار کردم
          اما هنوز نمی دونم چه جور شبیه سازی اجرا میشه
          مثلا تو یه برنامه که دو تا ورودی با هم and میشن چه جور میشه به ورودی ها مقدار داد یعنی مثلا یکی
          رو یه پالس با فرکانس 1meg و اون یکی رو پالس دیگه با فرکانس 2meg داد ؟
          مرسی
          متاسفانه مدت زیادیه که کار نکردم و دیگه فراموش کردم
          اما اون شبیه سازی که ما میکردیم دقیقا به صورت کد نویسی بود، یعنی علاوه بر کد برنامه یه کد تست بنچ هم می نوشتیم برای شبیه سازی و داخل اون ورودی و خروجی های قطعمون رو port میکردیم و با تعریف سیگنال هایی و مقدار دادن به اون ها خروجی رو به صورت waveform می دیدیم(توسط Active HDL)

          به عنوان مثال کد یک لچ به همراه تست بنچش رو میذارم تا یک دید کلی نسبت به موضوع داشته باشید:

          کد:
          [ltr]
          
          library ieee ;
          use ieee.std_logic_1164.all;
          
          --------------------------------------------
          
          entity D_latch is
          port(	data_in:	in std_logic;
          	enable:		in std_logic;
          	data_out:	out std_logic
          );
          end D_latch;
          
          --------------------------------------------
          
          architecture behv of D_latch is
          begin		
          
            -- compare this to D flipflop
          
            process(data_in, enable)
            begin
              if (enable='1') then
                -- no clock signal here
          	  data_out <= data_in; 
          	end if;
            end process;	
          	
          end behv;
          
          [/ltr]
          اینم تست بنچ:

          کد:
          [ltr]
          
          library ieee;
          use ieee.std_logic_1164.all;
          
          entity latch_TB is			-- entity declaration
          end latch_TB;
          
          -------------------------------------------------------------------
          
          architecture TB of latch_TB is
          
            signal T_data_in: 	std_logic;
            signal T_enable:	std_logic;
            signal T_data_out:	std_logic;
          	
            component D_latch
            port(	data_in:	in std_logic;
          		enable:		in std_logic;
          		data_out:	out std_logic
            );
            end component;
          		
          begin
          
            U_latch: D_latch port map (T_data_in, T_enable, T_data_out);
          	
            process
          
          	variable err_cnt: integer := 0;
          
            begin
          		
          	T_data_in <= '1';	 
          	T_enable <= '0';
          	wait for 20 ns;		  
          	
          	-- case 1	
          	T_enable <= '1';
          	wait for 5 ns;
          	assert(T_data_out='1') report "Error1!" severity error;
          	if (T_data_out/='1') then
          	  err_cnt := err_cnt + 1;
          	end if;
          
          	-- case 2
          	T_data_in <= '0'; 
          	wait for 20 ns;		
          	assert(T_data_out='0') report "Error2!" severity error;
          	if (T_data_out/='0') then
          	  err_cnt := err_cnt + 1;
          	end if;
          		
          	-- case 3
          	T_data_in <= '1'; 
          	wait for 20 ns;		
          	assert(T_data_out='1') report "Error3!" severity error;
          	if (T_data_out/='1') then
          	  err_cnt := err_cnt + 1;
          	end if;
          		
          	-- case 4
          	T_enable <= '0';
          	T_data_in <= '0'; 
          	wait for 20 ns;						 
          	assert(T_data_out='1') report "Error4!" severity error;
          	if (T_data_out/='1') then
          	  err_cnt := err_cnt + 1;
          	end if;
          
          	-- case 5
          	T_enable <= '1';
          	wait for 5 ns;
          	assert(T_data_out='0') report "Error5!" severity error;
          	if (T_data_out/='0') then
          	  err_cnt := err_cnt + 1;
          	end if;
          		
          	-- summary of all the tests
          	if (err_cnt=0) then 			
          	  assert false 
          	  report "Testbench of Adder completed successfully!" 
          	  severity note; 
          	else 
          	  assert true 
          	  report "Something wrong, try again" 
          	  severity error; 
          	end if; 
          
          	wait;
          
            end process;
          
          end TB;
          
          --------------------------------------------------------------------
          configuration CFG_TB of latch_TB is
          	for TB
          	end for;
          end CFG_TB;
          ---------------------------------------------------------------------
          
          [/ltr]
          ببخشید دیگه چیز زیادی یادم نمونده تا بیشتر راهنماییتون کنم :redface: اگه از کد بالا چیز زیادی متوجه نشدید یک جزوه یا کتاب آموزش VHDL مطالعه بفرمایید تا اصول دستتون بیاد

          اونچيزي که در دانشگاه ياد ميگيريد، "الفبايي" هست براي نوشتن يک "رمان" !!

          دیدگاه


            #6
            پاسخ : شبیه سازی FPGA

            سلام چرا از ise استفاده نمی کنید؟
            شما راحت می تونید باهاس test bench بسازید برای شبیه سازی هاتون.
            و مقادیر را به پایه هاتون بدید از طرفی می تونید پایه کلاک داشته باشید و هم فرکانس کلاک را خودتون مشخص کنید و نیاز هم نیست که مقداری که به پایه ها می دید ضریبی از فرکانس باشه .
            اگر در مورد ise سوالی داشتید بیشتر می تونم کمکتون کنم . :nerd:
            موفق باشید یاعلی

            دیدگاه


              #7
              پاسخ : شبیه سازی FPGA

              تو ise یه مدار ساده دیجیتال که دو تا ورودی با هم and میشن رو چطور میشه بهشون ورودی مثل کلاک داد یکی دو مگاهرتز و یکی 4 مگاهرتز ؟
              ---------
              .
              .
              ...........

              دیدگاه


                #8
                پاسخ : شبیه سازی FPGA

                سلام
                این یکمی کمکتون میکنه:

                http://www.4shared.com/office/a6zv-vup/xilinx_ISE.html

                دیدگاه

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