fpganedir.com'da ara

fpganedir mail

SİNYAL ATAMA

Sinyallerin çıkış şeklini değiştiren atama ifadeleridir.

-----------------------------------------------------------------------
sinyal_ismi <= [gecikme] değer ;
-----------------------------------------------------------------------
sinyal_ismi <= [gecikme] değer1 when koşul1 else
                            [gecikme] değer2 when koşul2 else
                            . . .

                            [gecikme] değerN;
-----------------------------------------------------------------------
with seçim select
    sinyal_ismi <= [gecikme] değer1 when seçenek1,
                                [gecikme] değer2 when seçenek2,
                                . . .
                                [gecikme] değerN when others;
-----------------------------------------------------------------------

NOT:

ÖRNEK 1 :

signal A, B, C, X, Y, Z : integer;
process (A, B, C)
begin
      A <= X - 5;
      B <= X * Y;  --İşlem geçersiz.
      C <= Z + A;
       B <= Y;        --B'ye yapılan son atama olduğu için geçerlidir.
end process;

Örnekteki process’de tüm işlemler sırayla yapıldıktan sonra (B <= X * Y) satırı hariç tüm satırlar geçerli olur. Çünkü B sinyaline son satırda yapılan atama geçerlidir.

ÖRNEK 2 :

signal A, B, C, X, Y, Z : integer;
process ( X, Y, Z)
begin
     A <= X - 5;
     B <= X * Y; 
     C <= Z + A;
      Y <= Z * C;      
end process;

Z sinyalinin değişmesiyle process’in çağrıldığı durumu düşünürsek, duyarlılık listesinde bulunan Y sinyalinin de değiştiğini görürüz. Bu durumda process yeniden çağrılır.

ÖRNEK 3 :

architecture Es_zaman of HalfAdder is
begin
  Sum <= X xor Y;
  Carry <= X and Y;
end architecture Es_zaman;

Örnekte Sum ve Carry çıkışları, X ve Y sinyallerinin herhangi birinin değişimiyle birlikte eş zamanlı olarak yeni değerler alırlar.

ÖRNEK 4:

architecture Kosullu of TS_Buffer is
begin
  B_Out <= B_In when EN = '1'
    else 'Z';
end architecture Kosullu;

Yukardaki tristate buffer örneğinde, sadece EN ‘1’ olduğunda B_Out değeri B_In’e aktarılıyor. Diğer bütün durumlarda çıkış değeri ‘Z’ (yüksek empedans) oluyor.

ÖRNEK 5:

with Komut select
  MuxOut <= In1 when 0 to 3,  --Seçenek olarak aralık kullanılıyor.
                      In2 when 4 | 5,    --4 ve 5 Komutları gelince In2 çıkışa aktarılıyor.
                      In3 when 6,
                        'Z' when others;

DETAYLI AÇIKLAMA

Sıralı Değer Atama:
Process içinde bir sıralı sinyal ataması varsa, etkisi process askıya alındığı zaman ortaya çıkar. Aynı sinyal için birden fazla atama varsa, process askıya alındığında en sonuncusu etkin olur. (ÖRNEK 1)

Process’in duyarlılık listesinde yeralan bir sinyale içerde atama yapılıyorsa, bu değişim process’in geri çağrılmasına sebep olur. (ÖRNEK 2)

Eşzamanlı Değer Atama:
Eşzamanlı sinyal atamaları architecture içinde yapılabilir. Burada bir sinyalin değişimi diğerinden bağımsızdır. 
(ÖRNEK 3)
Eğer bir sinyale birden çok atama yapılacaksa, o sinyal çözülmüş (resolved) tipte olmalıdır.

Koşullu Değer Atama:
Şartlı sinyal atamaları, eşzamanlı yapılan bir işlemdir fakat process içindeki “if then else” yapısına benzer çalışır. “When” ifadesinden sonra bir boolean koşul varsa siyal ataması yapılır. Koşullu atamalar “else” ifadesi ile sonlandırılmalıdır. (ÖRNEK 4)

Seçilen Sinyale Değer Atama:
Seçilmiş sinyal ataması da “case” ifadesiyle yapılan eşzamanlı işlemlere benzer. Eğer “other” ifadesi son seçenekte kullanılmadıysa bütün seçenekler belirtilmelidir. Seçenek olarak aralıklar ya da değerler kullanılabilir. (ÖRNEK 5)

 

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.