Bu çalı¸smanın amacı mandalları, flip-flopları ve kaydedicileri anlamaktır.
Uygulama I
Alteranın FPGA’lerinde kullanıcıların kullanımına açık flip-floplar bulunmaktadır. Uygulama IV’de bu iki durum-luları nasıl kullanaca˘gımızı görece˘giz. Ancak ön tanımlı flip-flopları kullanmadan önce hafıza birimlerini nasıl olu¸sturabilece˘gimizi görece˘giz. Bir RS latchının kapı yapısı ¸Sekil 1’de veerilmi¸stir. Bu devreyi ¸Sekil 2’de ve-rildi˘gi gibi iki farklı verilog koduyla gerçekleyebiliriz. Aynı devreyi olu¸sturmak için ¸Sekil 2a mantık kapılarını kullanırken, ¸Sekil 2b mantık i¸slemlerini kullanmaktadır. E˘ger bu latchı FPGA üzerinde 4-giri¸sli bir Look Up Table (4-LUT) kullanarak gerçeklemek istersek, o zaman ¸Sekil 3a’da görüldü˘gü gibi sadece tek bir LUT ile gerçekleye-biliriz.
R
S Clk
S_g
Qa (Q) R_g
Qb
¸Sekil 1: RS mandalı devresi.
// A gated RS latch
module part1 (Clk, R, S, Q);
input Clk, R, S;
output Q;
wire R_g, S_g, Qa, Qb /* synthesis keep */ ; and (R_g, R, Clk);
and (S_g, S, Clk);
nor (Qa, R_g, Qb);
nor (Qb, S_g, Qa);
assign Q = Qa;
endmodule
¸Sekil 2a. RS mandalının mantık kapıları kullanılarak tanımlanması.
// A gated RS latch
module part1 (Clk, R, S, Q);
input Clk, R, S;
output Q;
wire R_g, S_g, Qa, Qb /* synthesis keep */ ; assign R_g = R & Clk;
assign S_g = S & Clk;
assign Qa = ∼(R_g | Qb);
assign Qb = ∼(S_g | Qa);
assign Q = Qa;
endmodule
¸Sekil 2b. RS mandalının mantık i¸slemleri kullanılarak tanımlaması.
Tek bir 4-LUT ile gerçeklenebilmesine ra˘gmen devrenin iç yapısını gözlemlememize izin vermez. Devrenin iç yapısını inceleyebilmek için derleyici komutlarına ihtiyaç duyarız. ¸Sekil 2’deki /* synthesis keep */ komutu devre-nin iç yapısındaki de˘gi¸siklikleri inceleyebilmemiz için Quartus programının bunları ayrı birer mantık elemanı gibi görmesini sa˘glar. E˘ger 4-LUT kullanarak olu¸sturdu˘gumuz devrenin iç yapısını görmek istersek o zaman devreyi
¸Sekil 3b’deki gibi dört tane 4-LUT ile olu¸sturmamız gerekmektedir.
R
S Clk
S_g
Qa (Q) R_g
Qb
(a) Using one 4-input lookup table for the RS latch.
(b) Using four 4-input lookup tables for the RS latch.
Qa (Q) R
S
Clk 4-LUT
4-LUT 4-LUT
4-LUT
4-LUT
¸Sekil 3. ¸Sekil 1’deki devrenin gerçeklenmesi.
Bir RS mandalı için bir Quartus II projesini a¸sa˘gıdaki adımları izleyerek olu¸sturun:
1. Yeni bir proje olu¸sturun. Hedef yonga olarak Cyclone IV EP4CE115F29C7’yi seçin.
2. ¸Sekil 2’deki kodlardan birini seçip verilog dosyasını olu¸sturun.(˙Iki kodda aynı devreyi olu¸sturur.)
3. Kodunuzu derleyin. RTL Viewer aracını kullanarak kapı-düzeyinde devrenizi gözlemleyin. Aynı ¸sekilde Technoloji map Viewer aracıyla gözlemleyerek ¸Sekil 3b’deki gerçeklemeyle kar¸sıla¸stırın.
4. 4. Qsim programını çalı¸stırıp bir Vector Waveform File (.vwf) dosyası olu¸sturun. R ve S giri¸sleri için bir sinyal olu¸sturup programa R_g, S_g, Qa ve Qb için çıkı¸s sinyallerini olu¸sturun.
Uygulama II
D mandalının kapı yapısı ¸Sekil 4 de gösterilmi¸stir.
S
R Clk
D S_g
R_g
Qa (Q)
Qb
¸Sekil 4. D flip-flop’u devresi.
A¸sa˘gıdaki adımları takip edin:
1. Yeni bir proje olu¸sturun ve ¸Sekil 2b’deki gibi mantık i¸slemleri kullanarak D flip-flop’unun verilog kodunu olu¸sturun. R, S_g, R_g, Qa, ve Qb sinyallerinin ayrı mantık birimlerinde saklanması için /* synthesis keep
*/ komutunu kullanın.
2. Kodunuzu derleyin ve Technology Viewer aracını kullanarak olu¸sturdu˘gunuz devreyi inceleyin.
3. fonksiyonel simulasyonu kullanarak devrenizin bütün giri¸s kombinasyonlarında do˘gru çalı¸stı˘gını kontrol edin ve zamanlama simulasyonu yaparak kontrol edin.
4. SW0anahtarını D giri¸sine, SW1anahtarını Clk giri¸sine ve LEDR0ledinide Q çıkı¸sına ba˘glayın.
5. Projenizi tekrar derlyip karta yükleyin.
6. Anahtarları açıp kapatarak devrenizin do˘gru çalı¸stırı˘gını kontrol edin.
Uygulama III
¸Sekil 5’te iki D flip-flop’unun ba˘glandı˘gı bir devre gösterilmi¸stir.
D Q
Q
Master Slave
D
Clock
Q
Q
D Q
Q
Qm Qs
Clk Clk
¸Sekil 5. Birbirine ba˘glı iki D flip-flop’u.
A¸sa˘gıdaki adımları uygulayın:
1. Yen bir proje olu¸sturun ve bir önceki uygulamada yazdı˘gınız D flip-flop’u kodundan biri master biri slave olmak üzere iki tane içerecek yeni verilog kodunuzu olu¸sturun.
2. SW0anahtarını D giri¸sine, SW1anahtarını Clock giri¸sine ve LEDR0ledinide Q çıkı¸sına ba˘glayın.
3. Projenizi derleyin.
4. Technology Viewer aracını kullanarak olu¸strudu˘gunuz devreyi kontrol edin. Simulasyon yaparak sonuçları inceleyin.
5. Devreyi karta yükleyip anahtarları de˘gi¸stirerek kontrol edin.
Uygulama IV
¸Sekil 6’da farklı kenar tetiklemeli D flip-flop’larının devreleri gösterilmi¸stir.
D Clock
Qa
Qb
D Q
Q
(b) Timing diagram
D Q
Q
D Q
Q D
Clock Qa
Qb
Qc Qc Qb Qa
(a) Circuit Clk
Qc
¸Sekil 6. Bu uygulama için devre ve zaman çizelgesi.
Bu devreyi gerçeklemek ve simulasyonunu yapmak için a¸sa˘gıdaki adımları izleyin:
1. Yeni bir proje olu¸sturun.
2. Üç tür D flip-flop’unu içeren verilog dosyasını olu¸sturun. ¸Sekil 7’de standart bir D flip-flop’una ait verilog kodu verilmi¸stir.
3. Projenizi derleyin ve Technology Viewer aracıyla kontrol edin.
4. Bir Vector Waveform File (.vwf) dosyası olu¸sturarak ¸Sekil 6’daki gibi D ve Clock giri¸slerini olu¸sturun.
Daha sonra simulasyonu çalı¸stırarak üç flip-flop’un çıkı¸slarını kontrol edin.
module D_latch (D, Clk, Q);
input D, Clk;
output reg Q;
always @ (D, Clk) if (Clk)
Q = D;
endmodule
¸Sekil 7. D flip-flop’u için verilog kodu.
Uygulama V
Bu uygulamada 16-bitlik A de˘gi¸skenini HEX7 − 4 göstergelerinde, yine 16-bitlik B de˘gi¸skenini HEX3 − 0 göstergelerinde gösteren bir devre olu¸sturaca˘gız. A ve B de˘gi¸skenlerini SW15−0anahtarları yardımıyla tanımla-yacaksınız. Devreniz çalı¸stı˘gında ilk A de˘gi¸skeninin de˘geri anahtarlardan okunacak ve daha sonra B de˘gi¸skeninin de˘geri okunacaktır. B de˘gi¸skeni okunurken A’nın de˘geri kaydedicilerde tutulmalıdır.
1. Yeni bir proje olu¸sturun.
2. Proje için verilog kodunu olu¸sturun. KEY0anahtarını negatif kenar tetiklemeli asenkron reset olarak, KEY1
anahtarını da saat giri¸si olarak ayarlayın.
3. Projenizi derleyin.
4. Gerekli anahtarları ve göstergeleri projenize ekleyin.
5. Projenizi tekrar derleyin ve karta yükleyin.
6. Anahtarların pozisyonlarını de˘gi¸stirerek göstergeleri kontrol edin.