Professional Documents
Culture Documents
1
BİL264L - Mantıksal Devre Tasarımı Laboratuvarı
wire[ADDER_WIDTH:0] sonuc;
always @* begin
ledler = (1 << sonuc) - 1;
end
endmodule
2
BİL264L - Mantıksal Devre Tasarımı Laboratuvarı
3
BİL264L - Mantıksal Devre Tasarımı Laboratuvarı
Aşağıda seven segment display üzerinde bazı ışıkları yakan bir kod verilmiştir.
4
BİL264L - Mantıksal Devre Tasarımı Laboratuvarı
5
BİL264L - Mantıksal Devre Tasarımı Laboratuvarı
module ornek(
input giris,
output reg [6:0] segment,
output dp
);
localparam L = 7'b111_0001;
localparam U = 7'b100_0001;
assign dp = 1'b1;
always @* begin
if (giris == 1'b1) begin
segment = U;
end
else begin
segment = L;
end
end
endmodule 6
BİL264L - Mantıksal Devre Tasarımı Laboratuvarı
Bu kod parçasında “L” ve “U” adında iki adet yerel parametre tanımladık. Bu parametrelerin
tuttuğu değerler seven segment display üzerinde hangi ışıkların yanacağını belirlemek için
kullanılır. Örneğin “L” yerel parametresinin tuttuğu 7’b111_0001 değeri sadece D, E, F harflerine
karşılık gelen ışıkları yakacağından ekranda L harfine benzeyen bir görüntü oluşacaktır.
module BCDto7SD(
input [3:0] bcd,
output reg[6:0] segment,
output dp
);
assign dp = 1'b1;
Devam ediyor
7
BİL264L - Mantıksal Devre Tasarımı Laboratuvarı
always @* begin
case(bcd)
4'd0:
segment = ZERO;
4'd1:
segment = ONE;
4'd2:
segment = TWO;
4'd3:
segment = THREE;
4'd4:
segment = FOUR;
4'd5:
segment = FIVE;
4'd6:
segment = SIX;
4'd7:
segment = SEVEN;
4'd8:
segment = EIGHT;
4'd9:
segment = NINE;
endcase
end
endmodule
Kodu inceleyelim.
Giriş ve çıkışların ne olduğundan zaten bahsetmiştik. “localparam” ile başlayan satırlar
dikkatinizi çekebilir. Bu şekilde yerel parametreler tanımlamamızın sebebi kodumuzun daha
okunabilir olmasını sağlamaktır.
Kodun devamında “always” bloğu içerisinde gelen girdi değerine göre çıktılara atama
yapıyoruz. 10 farklı durum var (0’dan 9’a kadar rakamlar). Her bir durum hangi rakamın yanmasını
gerektiriyorsa daha önceden belirlemiş olduğumuz ilgili yerel parametreyi kullanarak atama işlemini
gerçekleştiriyoruz. Örneğin, gelen bcd kodu 4’d3 olduğunda tek bir satırda “segment = THREE”
şeklinde seven segment aygıtlarında 3 (üç) rakamının görüntülenmesini sağlayabiliyoruz.
“assign” kullanarak “dp” çıktısına 1 değerini verdik. Çünkü nokta ışığını kullanmayacağız.
Daha sonraki derslerde ondalıklı sayıları gösterirken bu çıktıyı kullanmak isteyebilirsiniz.
“always” bloğunun hassasiyet listesi “*” olarak verilmiş. Bu şu anlama geliyor: “always”
bloğunda okunan herhangi bir sinyalde değişiklik olduğu zaman bu blok tekrar çalışır. Peki bu blokta
hangi değerler okunuyor? Tek bir değer okunuyor. O da girdi olarak gelen 4 bitlik “bcd” değeri. Yani
girdi her değiştiğinde blok tekrar çalışıyor ve gelen girdiye göre çıktıların değeri tekrar belirleniyor.
Yazdığımız bu modülü bu haftaki laboratuvar çalışmasında ve önümüzdeki laboratuvar
çalışmalarında sık sık kullanacaksınız.