Verilog'a giriş kod örnekleri

Yazı işlemci tasarım topluluğu kurucusu emin tarafından yazılmış ve izni alınarak admin tarafından discord kanalından kopyalanarak buraya yapıştırılmıştır.

Verilog Örnekleri - 1

NOT yani DEĞİL işlemi yapan modül:
Üçü de aynı işlevi görüyor. Giren sinyali 0 ise 1, 1 ise 0 yaparak tersliyor(inverter).

module Degil(input I, output O);
assign O = ~I; // Bit işlemleriyle ile tersleme
assign O = !I; // Mantıksal true/false tersleme
not(O, I); // NOT kapısını kullanarak
endmodule

AND yani VE işlemi yapan modül:

module Ve(input X, input Y, output O);
    assign O = X & Y; // Bit işlemleriyle
    assign O = X && Y; // Mantıksal
    and(O, X, Y); // Kapıyla
endmodule

OR yani VEYA işlemi yapan modül:

module Veya(input X, input Y, output O);
    assign O = X | Y; // Bit işlemleriyle
    assign O = X || Y; // Mantıksal
    or(O, X, Y); // Kapıyla
endmodule

XOR yani ÖZEL VEYA işlemi yapan modül:
Üçü de aynı işlevi görüyor. Giren sinyali 0 ise 1, 1 ise 0 yaparak tersliyor(inverter).

module OzelVeya(input X, input Y, output O);
    assign O = X ^ Y; // Bit işlemleriyle
    xor(O, X, Y); // Kapıyla
endmodule

mantik-kapilari-hepsi

initial begin bloğu
Modül ilk eklendiğinde Bir kere çalışacak blok. Örneğin başlangıç değerleri atanabilir. Testbench değerleri de denenebilir.

module Yazi();
initial begin
    $display("Merhaba!");
end
endmodule

always @(…) bloğu
Modül içinde bir şeyler değiştiğinde sürekli olarak çalışacak blok. eğer always @(*) şeklinde kullanılırsa modülü etkileyen herhangi bir kablo/flipflop değiştiğinde çalışır demektir. Eğer hangi değerler değiştiğinde çalışacağı belirtilirse, örneğin always @(kablo) sadece “kablo” değeri değişime uğradığında çalışır.

module Tersle(input I, output reg O);
always @(*) begin
    O <= ~I;
end
endmodule