• Sonuç bulunamadı

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.

Benzer Belgeler