Verilog HDL ile Sayısal Tasarım V (Digital Design with Verilog HDL V)

watch_later 4/02/2016
comment 2 Comments
Ardışıl Devre Modelleme (Sequential Circuit Modeling)

Ardışıl devreler sadece always bloğu kullanılarak modellenir. Ardışıl devre modelleme always bloğundaki hassasiyet listesindeki kenar hassasiyetli elemanlar kullanarak yapılır. Bazen ardışıl devreler için bloklamayan(nonblocking) atamalarda kullanılabilir.

Latch ve Flip Flop 
Ardışıl devre modellemede kullanılan Latchlerde bazı problemler yaşanır. Bunlar:
1. Latch'in hangi anda enable yapılacağı bilinmelidir.
2. Latch disable duruma getirilebilmelidir.
3. Kompleks devrelerde latchlerin zamanlamasını kontrol etmek oldukça zordur.
Bu problemlerin iki yeni eleman ile çözülmesi mümkündür:
Saat, belleğe yazılacak zamanı bildirir.
Flip Flop ise, kesin olarak belirlenen zamanda belleğe yazma işlemini gerçekleştirmeyi sağlar.
Bu iki eleman birlikte kullanılırsa, bellek zamanlaması problemini göz ardı ederek devre tasarlanabilir. Saat çıkışı sürekli olarak belirli bir periyot ile 0 ve 1 arasında değişen özel bir devre elemanıdır.



R-S Flip Flop
NAND veya NOR kapılı RS Flip Flop’larda sakıncalı durum haricinde çıkışlar birbirinin tamamlayıcısı durumundadır. Bu tür Flip Flop’lar asenkrondur. Girişler değiştiği anda çıkışlar da değişmektedir.

Flip-Flop Devre Diyagramı
                
Flip-Flop Uyarım Tablosu
S
R
Q(n+1)
Q(n+1)’
Durum
0
0
Q(n)
Q(n)’
Hafıza
0
1
0
1
Reset
1
0
1
0
Set
1
1
1
1
İstenmeyen

R=0, S=0 durumunda Q(n) hafızadadır. 
R=0, S=1 durumunda 2. kapının çıkışı 0 olacağından 1. kapının çıkışı 1 olur.
R=1, S=0 durumunda 1. kapının çıkışı 0 olur. Çünkü NOR kapısı girişlerinden en az birisi 1 olduğunda çıkışı 0 olur.
R=1, S=1 durumunda her iki çıkışta 0 olacağından istenmeyen bir durumdur ve kullanılmaz.

Tetiklemeli R-S Flip-Flop
Bu Flip Flop türü, senkron çalışır. Girişlerin değişmesi, çıkışlara hemen aktarılmaz. Bir zamanlama işaretine gereksinim vardır.

Flip-Flop Devre Diyagramı
                 

Flip-Flop Uyarım Tablosu
CP
S
R
Q(n+1)
Q(n+1)’
Durum
0
0
Q(n)
Q(n)’
Hafıza
0
1
0
1
Reset
1
0
1
0
Set
1
1
1
1
İstenmeyen
x
x
Q(n)
Q(n)’
Hafıza

J-K Flip-Flop
R-S Flip Flop’un geliştirilmiş şeklidir. J ve K girişleri, S ve R girişleri gibi davranmaktadır. R-S Flip Flop’taki sakıncalı durum ortadan kalkmıştır. J ve K girişlerinin 1 olması durumunda (tetikleme sinyali dahilinde) çıkış bir önceki konumun tersi olacaktır.

Flip-Flop Devre Diyagramı
                   
Flip-Flop Uyarım Tablosu
CP
J
K
Q(n+1)
Q(n+1)’
Durum
0
0
Q(n)
Q(n)’
Hafıza
0
1
0
1
Reset
1
0
1
0
Set
1
1
Q(n)’
Q(n)
Toggle
x
x
Q(n)
Q(n)’
Hafıza
module JK_FlipFlop(Q, J, K, Clock)
     input J, K, Clock;
     output Q;
     reg Q;

     always@(posedge Clock)
          Q=(J&~Q) | (~K&Q); //Q+=JQ'+K'Q
endmodule



T (Toggle) Flip-Flop
T girişine 1 uygulandığı sürece, gelen tetikleme işaretine bağlı olarak devrenin çıkışı bir önceki çıkışın tersidir.

Flip-Flop Devre Diyagramı

Flip-Flop Uyarım Tablosu
CP
T
Q(n+1)
Q(n+1)’
Durum
0
Q(n)
Q(n)’
Hafıza
1
Q(n)’
Q(n)
Toggle
1
Q(n)
Q(n)'
Hafıza

module T_FlipFlop(Q, T, Clock)
     input T, Clock;
     output Q;
     reg Q;

     always@(posedge Clock)
          Q=T^Q; //Q=T XOR Q
endmodule



D Tipi Flip-Flop
Kullanılan inverter nedeniyle RS FF’daki sakıncalı durum ortadan kalkmış olur. Bu haliyle D tipi FF hafıza devrelerinde kullanılan 1 bitlik temel saklayıcıdır.

Flip-Flop Devre Diyagramı 

Flip-Flop Uyarım Tablosu
CP
D
Q(n+1)
Q(n+1)’
Durum
0
0
1
Reset
1
1
0
Set
x
Q(n)
Q(n)’
Hafıza

module D_Lacth(Q, D, Clock)
     input D, Clock;
     output Q;
     reg Q;

     always@(D or Clock)
        if(Clock)
              Q=D;
endmodule

module D_FlipFlop(Q, D, Clock)
     input D, Clock;
     output Q;
     reg Q;

     always@(posedge Clock)
          Q=D; //Q'=D
endmodule



Flip Flop Dönüşümleri
İki adet Flip Flop verilsin ve bu Flip Flop’ların birini ve mantık kapılarını kullanarak diğer Flip Flop tasarlanabilir. Bu tasarım için Flip Flop’lar XY ve ZT olsun. ZT Flip Flop'u ve mantık kapılarını kullanarak XY Flip Flop'u tasarlansın. Bunun için ilk olarak çıktıların olası birleşimlerini bulup, bu birleşimler için Flip Flopların girdilerini içeren birleşik uyarım tablosu oluşturulur. Z ve T fonksiyonlarını Q(n), X ve Y türünden ifade edilmelidir. Bunun için gerekirse karnaugh haritası da çıkarılabilir. Son olarak da ZT Flip Flop'unun girişlerine Z ve T fonksiyonlarının gerçekleşmeleri bağlanır.
J-K Flip Flop'un  S-R FlipFlop'a Dönüşümü
J-K Flip Flop harici olarak bağlanmaktadır ve J-K Flip Flop kombinasyonel devrenin çıkışı olacaktır. Bu sebeple J-K Flip Flop değerleri, S-R Flip Flop ve Q(n) cinsinden elde edilmesi gerekir. S=1 ve R=1 olduğu durumlarda çıkışa izin verilmez ve geçersiz kabul edilir.

Flip-Flop Uyarım Tablosu
S
R
Q(n)
Q(n+1)
J
K
0
0
0
0
0
X
0
0
1
1
X
0
0
1
0
0
0
X
0
1
1
0
X
1
1
0
0
1
1
X
1
0
1
1
X
0
1
1
İstenmeyen
Geçersiz
1
1
İstenmeyen
Geçersiz

Flip-Flop Karnaugh Haritası

J-K Flip-Flop'un  T Tipi Flip-Flop'a Dönüşümü

Flip-Flop Uyarım Tablosu
T
Q(n)
Q(n+1)
J
K
0
0
0
0
X
0
1
1
X
0
1
0
1
1
X
1
1
0
X
1


Flip-Flop Karnaugh Haritası

Bloklayan ve Bloklanmayan Atama (Blocking and Non-Blocking Assignment)
Bloklayan atamalar kodlandığı sırada gerçekleştirilirler, bundan dolayı bunlar ardışıldır. Şuanki ifade gerçekleştirilene kadar bir sonraki ifade bloklanır, bunlara bloklayan ifadeler denir. Atamalar “=” sembolüyle yapılır.

Bloklamayan ifadeler paralel olarak gerçekleştirilir. Bir sonraki ifadenin gerçekleştirilmesi mevcut ifadenin gerçeklemesini beklemez yani mevcut ifade bir sonraki ifadeyi tıkamaz, Bu atama türüne bloklamayan ifade denir. Atama <= sembolüyle yapılır. 


Bloklayan Atama Simülasyonu
module D_Flip_Flop_Blok(Q, D, Clock);
    input D, Clock;
    output [0:1] Q ;
    reg [0:1] Q;
    
    always@(posedge Clock)
    begin
            Q[0]=D;
            Q[1]=Q[0];    
    end
endmodule



Bloklamayan Atama Simülasyonu
module D_Flip_Flop_NonBlok(Q, D, Clock);
    input D, Clock;
    output [0:1] Q ;
    reg [0:1] Q;
    
    always@(posedge Clock)
    begin
            Q[0]<=D;
            Q[1]<=Q[0];    
    end
endmodule










Bir sonraki yazımda görüşmek üzere...
avatar
Adsız

Detaylı açıklama ve bilgilendirmeler için teşekkürler emeğinize sağlık.

delete 23 Mayıs 2017 22:43
avatar

Değerli yorumun için teşekkürler.

delete 27 Mayıs 2017 09:18



sentiment_satisfied Emoticon