MALTEPE ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSİĞİ BÖLÜMÜ BİL 321- Mantık Devreleri Tasarımı 1. Ara Sınavı Öğrenci Adı Soyadı : Öğrenci no : Akademik yıl : 2014-2015 Dönem : Güz Tarih : 04.11.2014 Sınav yeri : MA-3 Sınav süresi : 90 dakika : Yrd.Doç.Dr. Serap ÇEKLİ Ders sorumlusu Yrd.Doç.Dr. Ali AKMAN Soru 1 2 3 4 Toplam Puan 20 25 30 25 100 Not KURALLAR • Sınavdan önce adınızı-soyadınızı ve öğrenci numaranızı yazınız. • Soruların tamamını cevaplayınız. • Cevaplarınızı sadece ekteki sayfalara yazınız. Yazınız mutlaka düzgün ve okunaklı olmalıdır. Okunamayan ve anlaşılmayan karalama vb. kısımlar değerlendirmeye alınmayacaktır. • Sonuçlarınızı mutlaka birimleri (m, kg, m/s. vb) ile veriniz. Birimsiz sonuçlar sayısal değer doğru olsa bile eksik puanla (örneğin yarısı gibi) değerlendirilecektir. • Sınav sırasında sadece sınav kağıtları, kalem, silgi, 3 yaprak hatırlatma kağıdı ve hesap makinesi masa üzerinde bulunabilir. Diğer tüm eşyalarınız masa altında olmalıdır. • Sınav sırasında; sınavla ilgili soru sormak, arkadaşınızla konuşmak, malzeme alıp vermek, sözlük, cep telefonu, ders notları ve dersle ilgili diğer kişisel notları kullanmak yasaktır. • Kurallara uymayanların davranışları “sınavda kopya yapmaya teşebbüs etmek veya kopya yapmak” olarak değerlendirilecektir. SORULAR 1. [20 puan] Aşağıdaki soruları cevaplayınız. a) [10 puan] , , ve (a,b,c,d tel (wire) tipinde sinyallerdir) girişler için aşağıda verilen her Verilog HDL ifadesini değerlendirerek, sonucu ikili (binary) tabanda yandaki boşluklara yazınız. f = 1’b0 g = 12’b010101010101 h = 8’b11101111 w = 3’b101 z = 4’b0101 b) [10 puan] Aşağıda verilen clk_gen modülü bir saat sinyali üretmek için kullanılmaktadır. Bu modül ile oluşturulan saat sinyalinde başlangıç değeri 0 dır ve 0 değeri 90 ns ve 1 değeri 50 ns olarak periyodik olarak sürmektedir . Buna göre bu Verilog HDL modülünü yazınız. `timescale 10ns / 1ps module clk_gen; reg clk; initial clk = 0; always begin if(clk) #5 clk = ~clk; else #9 clk = ~clk; end endmodule 2. [25 puan] Aşağıda verilen Verilog HDL modüllerini göz önüne alınız. x = 4’b1000 ve y = 4’b1011 değerleri için devre_ana modülü çaıştırılırsa bu modül içinde oluşan sinyalleri aşağıda verilen tabloya yazınız. module devre_t(input [7:0] x, input [7:0] y, input c_in, output [8:0] s); assign s = x + y + c_in; endmodule module devre_c(input [1:0] x, input [1:0] y, output [3:0] f); assign f = x*y; endmodule module devre_ana(input [3:0] x, input [3:0] y, output [8:0] f); wire wire wire wire [1:0] [3:0] [7:0] [8:0] devre_c devre_c devre_c devre_c x1, x2, y1, y2; f1, f2, f3, f4; fs1, fs2, fs3, fs4; s1, s2, s3; carp1(.x(x1), carp2(.x(x1), carp3(.x(x2), carp4(.x(x2), .y(y1), .y(y2), .y(y1), .y(y2), .f(f1)); .f(f2)); .f(f3)); .f(f4)); devre_t top1(.x(fs1), .y(fs2), .c_in(1'b0), .s(s1)); devre_t top2(.x(fs3), .y(s1[7:0]), .c_in(s1[8]), .s(s2)); devre_t top3(.x(fs4), .y(s2[7:0]), .c_in(s2[8]), .s(s3)); assign assign assign assign assign assign assign assign assign endmodule Sinyal x1 = x[1:0]; x2 = x[3:2]; y1 = y[1:0]; y2 = y[3:2]; fs1 = {4'b0, f1}; fs2 = {2'b0, f2, 2'b0}; fs3 = {2'b0, f3, 2'b0}; fs4 = {f4, 4'b0}; f = s3; Değer (İkili Taban) Sinyal Değer (İkili Taban) f1 4’b0000 fs1 8’b00000000 f2 4’b0000 fs2 8’b00000000 f3 4’b0110 fs3 8’b00011000 f4 4’b0100 fs4 8’b01000000 s1 9’b000000000 s2 9’b000011000 s3 9’b001011000 f 9’b001011000 3. [30 puan] Aşağıda verilen soruları cevaplayınız. a) [10 puan] Aşağıda verilen birleşimsel mantık devresinin Verilog HDL modülünü kapı seviyesinde modellemeyi kullanarak yazınız. a1 a2 G1 G3 b1 b2 G4 c G2 module soru3a(input a1, input a2, input b1, input b2, output c); wire x1, x2, x3; and G1(x1, a1, a2); and G2(x2, b1, b2); or G3(x3, x1, x2); not G4(c, x3); endmodule b) [10 puan] a) şıkkında verilen devrede AND ve OR kapılarının eylemsizlik geçikmesi 8ns, NOT kapısının eylemsizlik geçikmesi 3 ns ve kapıları birbirine bağlayan tellerin (wire) transport geçikmesi 2 ns ise bu devrenin Verilog HDL modülünü tekrar yazınız. NOT: ‘timescale 100ps/1ps olarak göz önüne alınmalıdır. module soru3a(input a1, input a2, input b1, input b2, output c); wire #20 x1, x2, x3; and #80 G1(x1, a1, a2); and #80 G2(x2, b1, b2); or #80 G3(x3, x1, x2); not #30 G4(c, x3); endmodule c) [10 puan] Aşağıda bir Verilog HDL modülü verilmiştir. Bu modülün modellediği devreyi sentezleyerek aşağıya çiziniz. module devre(input [3:0] a, input [3:0] b, input en, output d); wire [3:0] c; wire dd; xor g1[3:0](c, a, b); or g2(dd, c); notif1 g3(d, dd, en); endmodule a[0] b[0] XOR a[1] b[1] XOR d a[2] b[2] XOR Notif1 en a[3] b[3] OR XOR 4. [25 puan] Hızı 0-8 km/s arasında 1 km/s kademelerle ayarlanabilen bir oyuncak arabanın hızını kontrol edecek bir mantıksal devre tasarlanmak isteniyor. Bu devrenin girişleri 4 adet butona bağlanacaktır. İlk buton arabayı durdurmak için kullanılmaktadır. İkinci buton basıldığında araba en yüksek hıza çıkmaktadır. Üçüncü ve dördürncü butonlar sırasıyla arabanın hızını kademeli olarak arttırmak ve azaltmak için kullanılmaktadır. Devrenin çıkışında arabanın hızı oluşacaktır. Buna göre bu devreyi davranışsal modelleme ile gerçekleyiniz ve Verilog HDL modülünü yazınız. module soru4( input arttir, input azalt, input durdur, input son_hiz, output [3:0] hiz ); reg [3:0] hiz_reg; initial hiz_reg = 0; assign hiz = hiz_reg; always always always always endmodule @(posedge @(posedge @(posedge @(posedge arttir) if(hiz_reg != 8) hiz_reg= hiz_reg + 1; azalt) if(hiz_reg != 0) hiz_reg = hiz_reg - 1; durdur) hiz_reg = 0; son_hiz) hiz_reg = 8;
© Copyright 2024 Paperzz