fpganedir.com'da ara

fpganedir mail

NEXT

Döngü içinde tekrarlanan ifadelerden birini tamamlamak için kullanılır. Koşul ifadesiyle birlikte kullanılabilir.

Döngü içinden çıkmaksızın, sıradaki tekrarlı işleme geçmek için “next “ifadesi kullanılır. Eğer bu durum bir şarta bağlanacaksa” when” ifadesiyle birlikte yazılır. Belirtilen koşul değeri TRUE olursa, döngü sonuna kadar olan sıradaki tüm işlemler pas geçilerek döngüdeki sırası artırılarak ilk ifade işlenir. “next” kullanırken döngü etiketi belirtilmezse, en içteki döngüde işleme devam edilir.

next;
next döngü_ismi;
next döngü _ ismi when koşul;

NOT: Exit ifadesi genellikle next ifadesi ile karıştırılır. Burada unutulmaması gereken nokta, exit kullanıldığında döngüden çıkıldığı, next kullanıldığında ise döngüden çıkmadan bir sonraki tekrarlı işleme geçileceğidir.

ÖRNEK 1

U1:  for i in 1 to15 loop
            Atama1:  count(i) := '0';
           next when koşul;
           Atama2:   temp(i) := '1';
         end loop U1;

Koşul TRUE ise tekrar sırası 1 artırılarak Atama1 ifadesine dönülür. Örneğin 2. tekrar içerisinde next ifadesi TRUE olmuşsa next'en sonraki ifadeler işlenilmeden, döngüye  3. Tekrar işlenecekmiş gibi baştan başlanır.  FALSE durumunda ise Atama2 satırıyla devam edilir.

ÖRNEK 2

Bu örnekte, generic olarak verilen  bir değere kadar olan tek sayıların toplamını verecek bir program tasarlayacağız.

Belirlenen sayı 10 ise, toplam
1+3+5+7+9= 25 olacak.

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;

entity odd_calculate is
      generic(sayi:integer:=10);
      Port ( clk : in  STD_LOGIC;
                toplam:out STD_LOGIC_VECTOR(7 downto 0) );
end odd_calculate;

architecture Behavioral of odd_calculate is
signal temp:integer range 0 to 250:=0;
begin
    U2: process(CLK)
               variable mod_f:integer:=0;
               variable temp:integer range 0 to 250:=0;
               begin
                    temp:=0;
                        U1: for i in 1 to sayi loop
                                   mod_f:=i mod 2 ;
                                   next U1 when mod_f=0;
                                   temp:=temp+i;
                              end loop;
                     toplam<= CONV_STD_LOGIC_VECTOR(temp,8);            
             end process;
end Behavioral;

Programın ModelSim'de simülasyonunu yaptıktan sonra aşağıdaki tabloyu elde ederiz.

 

 

Anasayfa | Fpga | VHDL | VHDL Sözlüğü | Embedded Sistem | Android | Sayısal Tasarım | Simulasyon | PCB | Örnekler | Forum | İletişim
Copyright © 2010-2013 FPGAnedir. All Rights Reserved.