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) Kapı işareti "geç" olarak ayarlandığında girişi çıkışa gönderecektir Eğer kapı işareti "tut" olarak ayarlamışsa, çıkış işareti girişten bağımsız olarak aynı durumda kalacaktır![]() // Saydam Mandal Örneği reg out; always @(gate or din) if(gate) out = din; // İlet durumu // Burada "else" ifadesine gerek yoktur "Gate" "high" durumdayken "out" // "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 Temel kurallardan biri "always" yapısı içerisinde "posedge" (pozitif kenar) veya "negedge" (negatif kenar) ifadeleri kullanıldığında "<=" işlecini kullanmaktır![]() D flip-flop'un bir değişik türü, zamanuyumsuz sıfırlama (asynchronous reset) ile gerçekleştirilendir Reset ifadesi geleneksel olarak yapı içerisindeki ilk "if" ifadesi olarak tanımlanmaktadır![]() 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 Geleneksel olarak "reset" terimi "set" terimi (değer ataması) ile takip edilmektedir![]() 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 |
|
|
|