![]() |
Verilog Sentezlenebilir Yapılar |
![]() |
![]() |
#1 |
Prof. Dr. Sinsi
|
![]() Verilog Sentezlenebilir YapılarSentezlenebilir Yapılar Daha önce de belirtildiği gibi, donanımı tanımlamak için birkaç temel taslak kullanılabilir ![]() // Çoklayıcı Örnekleri -Aynı işlemi yapmanın 3 farklı yolu // İlk örnek sürekli atamayı kullanmaktadır ![]() wire out ; assign out = sel ? a : b; // İkinci örnek aynı işlemi gerçekleştirmek için izlek(prosedür) // kullanmaktadır ![]() reg out; always @(a or b or sel) begin case(sel) 1'b0: out = b; 1'b1: out = a; endcase end // İzlek yapısında If/else // kullanılabilir ![]() reg out; always @(a or b or sel) if (sel) out = a; else out = b; Sonraki ilginç yapı ise saydam mandaldır (transparent latch) ![]() ![]() ![]() // Saydam Mandal Örneği reg out; always @(gate or din) if(gate) out = din; // İlet durumu // Burada "else" ifadesine gerek yoktur ![]() // "din" değişkenini takip edecektir ![]() // "Gate" "LOW" olduğu zaman "out" durumunu koruyacaktır ![]() D Flip-Flop en basit yapılardan biridir ![]() reg q; always @(posedge clk) q <= d; Örnekte tıkanmasız atama kullanıldığına dikkat edilmelidir ![]() ![]() D flip-flop'un bir değişik türü, zamanuyumsuz sıfırlama (asynchronous reset) ile gerçekleştirilendir ![]() ![]() reg q; always @(posedge clk or posedge reset) if(reset) q <= 0; else q <= d; Bir sonraki değişik yapıda, hem zaman uyumsuz sıfırlama hem de zaman uyumsuz değer ataması kullanmaktadır ![]() ![]() reg q; always @(posedge clk or posedge reset or posedge set) if(reset) q <= 0; else if(set) q <= 1; else q <= d; Son değişik D flip-flop tipi ise girişini bir çoklayıcıdan alan tiptir ![]() // Temel yapı geri besleme ile yapılmaktadır ![]() always @(posedge clk) if(gate) q <= d; else q <= q; // açık geri besleme yolu always @(posedge clk) if(gate) q <= d; // "else" çoklayıcı gerçekleştirildi ![]() Kaynak : Wikipedia |
![]() |
![]() |
|