Çıkışların belirli bir
andaki değeri, girişlerin yalnızca o andaki değerine bağlı olan devreler kombinasyonel
devreler olarak adlandırılır.
Çıkışların belirli bir andaki değeri, girişlerin
yalnızca o anki değerine değil, aynı zamanda girişlerin önceki değerlerinin
sırasına da bağlı olan devrelere ardışıl
devreler adı verilir.
Kombinasyonel Devreler
1. Kombinasyonel mantık devreleri iç yapılarında öncesindeki herhangi bir durumu saklama yeteneği yoktur.
2. Bu nedenle, kombinasyonel mantık devreleri herhangi bir bellek elemanı içermez.
3. Bilgisayarlarda depolanan veriler üzerinde gerçekleştirilen aritmetik işlemler kombinasyonel mantık devreleri kullanılarak yapılır.
4. Kombinasyonel mantık devreleri temelde farklı devre türleri kullanılarak oluşturulur. Bunlar: multiplexer, demultiplexer , decoder, encoder, half adder ve full adder.
5. Bilgisayarların aritmetik ve mantık birimi bileşenleri genellikle kombinasyonel mantık devrelerinden oluşmaktadır.
6. Kombinasyonel mantık devreleri clock sinyalinden bağımsızdır.
7. Kombinasyonel mantık devrelerinde herhangi bir tetikleme gerekmez.
8. Kombinasyonel mantık devresinin davranışı çıkış fonksiyonlarının kümesi kullanılarak tanımlanabilir.
1. Kombinasyonel mantık devreleri iç yapılarında öncesindeki herhangi bir durumu saklama yeteneği yoktur.
2. Bu nedenle, kombinasyonel mantık devreleri herhangi bir bellek elemanı içermez.
3. Bilgisayarlarda depolanan veriler üzerinde gerçekleştirilen aritmetik işlemler kombinasyonel mantık devreleri kullanılarak yapılır.
4. Kombinasyonel mantık devreleri temelde farklı devre türleri kullanılarak oluşturulur. Bunlar: multiplexer, demultiplexer , decoder, encoder, half adder ve full adder.
5. Bilgisayarların aritmetik ve mantık birimi bileşenleri genellikle kombinasyonel mantık devrelerinden oluşmaktadır.
6. Kombinasyonel mantık devreleri clock sinyalinden bağımsızdır.
7. Kombinasyonel mantık devrelerinde herhangi bir tetikleme gerekmez.
8. Kombinasyonel mantık devresinin davranışı çıkış fonksiyonlarının kümesi kullanılarak tanımlanabilir.
Ardışıl Devreler
1. Ardışıl sayısal mantık devreleri akım girişleri ve daha önceki durumuna göre sisteminin önceki durumunu koruma yeteneğine sahiptir.
2. Bu nedenle, kombinasyonel mantık devrelerin aksine, ardışıl mantık devreleri, dijital devredeki veri depolama yeteneğine sahiptir.
3. Latch ardışıl mantık devrelerinde önceki durumu korumak için kullanılan en basit devre elemanı olarak kabul edilir.
4. Ardışıl mantık devrelerinin flip flop sayısı kadar tetiklenmesi için clock sinyali kullanır.
5. Ardışıl mantık devreleri senkron ve asenkron ardışıl devreler olmak üzere ikiye ayrılır.
6. Ardışıl mantık devreleri çıkışlarından girişlerine geri bildirimleri kullanmaktadır.
Xlinix Ortamında Kombinasyonel ve Ardışıl Devre
module test(O,I); input [0:2] I; output O; reg O; always @(I) case({I}) 3'b000:O=1'b0; 3'b001:O=1'b0; 3'b010:O=1'b0; 3'b011:O=1'b0; 3'b100:O=1'b1; endcase endmoduleDevreyi kombinasyonel olarak oluşturmak yerine bir LDCE içeren yani önceki durumunu hafıza da tutan bir ardışıl devre oluşturdu.
Latches
Devre depolama elemanları latchlar ve flip-flop olmak üzere ikiye ayrılabilir. Latchlar
da geri bildirim yolu vardır, bu nedenle geçici bellek alanlarında bir bit veri
saklayabilir. Latchlar, mandal anlamına gelir, yani bir anlamda veriyi üzerine
mandal gibi tutturulur.
LDCE
Primitive: Transparent Data Latch with
Asynchronous Clear and Gate Enable
Kombinasyonel Devre Davranışı Gösteren Modül
module test(O,I); input [0:2] I; output O; reg O; always @(I) case({I}) 3'b000:O=1'b0; 3'b001:O=1'b0; 3'b010:O=1'b0; 3'b011:O=1'b0; 3'b100:O=1'b1; default:O=1'bx; endcase endmodule
Modülü oluştururken default ile tüm durumlar kapsandığı için kombinasyonel bir devre oluşturuldu.
Xlinix Ortamında Doğru Bilinen Yanlışlar
1. Bu modül örneğinde tüm durumlar tanımlanmadığı için kombinasyonel devre tasarmak yerine ardışıl bir Latch içeren devre oluşturulur.
always @(coke or cola) begin if (coke) blah1 = 1; else if (cola > 2’b01) blah2 = coke; endDiğer durumlarda tanımlanarak kombinasyonel devre davranışı korunmuş olur.
always @(coke or cola) begin blah1 = 0; blah2 = 0; if (coke) blah1 = 1; else if (cola > 2’b01) blah2 = coke; end
2. Bu modülde ise case yapısında atama işlemi birden fazla kere oluşturularak kod kendini tekrar etmiştir.
module fred (f, a, b, c); output f; input a, b, c; reg f; always @ (a or b or c) case ({a, b, c}) 3’b000: f = 1’b0; 3’b001: f = 1’b1; 3’b010: f = 1’b1; 3’b011: f = 1’b1; 3’b100: f = 1’b1; 3’b101: f = 1’b0; 3’b110: f = 1’b0; 3’b111: f = 1’b1; endcase endmoduleBunun yerine 0 durumlarının haricindeki diğer durumlara default ile 1 durumu atanmış olur.
module fred (f, a, b, c); output f; input a, b, c; reg f; always @ (a or b or c) case ({a, b, c}) 3’b000: f = 1’b0; 3’b101: f = 1’b0; 3’b110: f = 1’b0; default: f = 1’b1; endcase endmodule
Bir sonraki yazımda görüşmek üzere...