fpganedir.com'da ara

fpganedir mail

FOR LOOP

Tekrar edilmesi istenen sıralı işlemleri içeren ifadedir.

Döngülerde koşul sağlandığı sürece ifadeler işlenmeye devam edilir, döngü bittikten sonraki ilk ifadeye geçilir.
“for” döngüsü process, fonksiyon, procedure içinde Sıralı (Sequential) Durumlar’da kullanılır.

Döngüde tekrarlarlanacak ifade sayısını belirtmek gerekiyorsa, “for” döngüsü kullanılır. Yapılan tekrarlar belirtilen aralık içindeki parametrenin en soldan en sağa kadar değişimiyle birlikte yapılır. (Örnek1)

İkinci bir for döngüsü de “for-genarate” ifadeleridir. (Örnek2)

NOT:Sonsuz döngüden çıkmak için “exit”  ifadesi kullanılır. Gerekirse bu işlem bir koşula da bağlanabilir.

1) FOR LOOP [Sıralı Durumlar(Sequential Statements)]

          for  değişken in alt limit  to üst limit [üst limit downto alt limit  ] loop
                 -ifadeler
                 -İfadeler       
           end loop;

2) FOR  GENERATE [(Paralel  Durumlar (Concurrent Statements) ]

 Etiket: for  değişken in alt limit  to üst limit [üst limit downto alt limit  ] generate
       begin
             -ifadeler
              -İfadeler       
        end generate;

ÖRNEK 1

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity PARITY is
        Port (  input                 :  in  STD_LOGIC_VECTOR (7 downto 0);
                    output_even   : out  STD_LOGIC;
                    output_odd     : out STD_LOGIC);
        end PARITY;    
architecture Behavioral of PARITY is   
       function Parity_odd(input:STD_LOGIC_VECTOR (7 downto 0)) return std_logic is
               variable temp: std_logic:='0';
       begin
               for I in 0 to 7 loop
                     temp:=temp xor input(I);
               end loop;
               return (not temp);
       end Parity_odd;  
       function Parity_even(input:STD_LOGIC_VECTOR (7 downto 0)) return std_logic is
             variable temp: std_logic:='0';
       begin
             for I in input'range loop
                      temp:=temp xor input(I);
             end loop;
              return temp;
       end Parity_even;
begin
     output_even <=Parity_even(input);
     output_odd<=Parity_odd(input);
end Behavioral;

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




ÖRNEK 2
(Ters Çevirici)

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity cevirici is
      Port ( input   : in    STD_LOGIC_VECTOR (7 downto 0);
                output  : out  STD_LOGIC_VECTOR (7 downto 0));
end cevirici;
architecture
Behavioral of cevirici is
begin
     U1: for I in 0 to 7 generate
     begin
          output(I)<=input(7-I);
     end generate;
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.