ForumSinsi - 2006 Yılından Beri

ForumSinsi - 2006 Yılından Beri (http://forumsinsi.com/index.php)
-   ForumSinsi Ansiklopedisi (http://forumsinsi.com/forumdisplay.php?f=476)
-   -   Verilog Sentezlenebilir Yapılar (http://forumsinsi.com/showthread.php?t=497067)

Prof. Dr. Sinsi 08-20-2012 12:26 AM

Verilog Sentezlenebilir Yapılar
 

Sentezlenebilir 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


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.