You are on page 1of 2

BİL 264L 14 Aralık 2015 Pazartesi

TOBB Ekonomi ve Teknoloji Üniversitesi BİL 264L – MDT Laboratuvarı


2015 – 2016 Öğretim Yılı
Bilgisayar Mühendisliği Bölümü Güz Dönemi Finali

Açıklamalar
1. Sınavı çözmeye başlamadan önce tüm açıklamaları ve soruları okuyun. Sınavda toplam 3 soru vardır ve soruların
toplam değeri 120 puandır. Bütün soruların değeri köşeli ayraç ile belirtilmiştir. Zamanınızı tek bir soru üzerinde
harcamayın; tüm soruları yanıtlamaya çalışın. Sınav süresi 120 dakikadır.
2. Sınav sırasında teknik konular dışında soru sorulmaz.
3. Başkasının ekranına bakma ve başkasıyla konuşma kopya olarak değerlendirilecektir. Ayrıca sınav esnasında
internete bağlanmak yasaktır. İnternete bağlı olduğu veya herhangi bir tarayıcısı açık olduğu görülen kişilerin
sınavları alınacaktır ve kopya olarak nitelendirilecektir.
4. Kitap, defter, kâğıt, cep telefonu vb. araç gerecin kullanımı yasaktır. İhtiyaç halinde soru kâğıdını
kullanabilirsiniz. Kendi bilgisayarınızda bulunan dokümanları ve lab kodlarını kullanabilirsiniz.

Dosya Düzeni ve Teslim Şekli: Çözümlerinizi içeren “.v” uzantılı dosyaları masaüstünde
(Desktop) oluşturacağınız bir klasöre (folder) kopyalayın. Daha sonra bu dosyaları zip veya rar
formatında sıkıştırın. Sonra internet bağlantınızı açın ve tarayıcınızla 10.5.147.210/examApp
adresine girin. Sayfada isminizi, soy isminizi ve numaranızı girin. Masaüstündeki sıkıştırılmış
dosyayı “Buraya Sürükleyiniz” kısmına sürükleyip bırakın ve sınav gözetmenini şifreyi girmesi
için çağırın.

1. [50 puan] Parametrik Mod Hesaplama

Verilen bir pozitif tam sayının başka bir pozitif tam sayıya göre modunu alan modül tasarlamanız istenmektedir.
Bu modül Verilog dili ile davranışsal (Behavioral) modelleme yaparak gerçekleştirilecektir. Modülün giriş/çıkış
sinyalleri yandaki kod parçasında verilmiştir. Görüldüğü gibi “bolunen” ve “bolen” sinyalleri uzunlukları
parametrik olarak verilmiştir. Sorudan tam puan alabilmek için, gerçekleyeceğiniz modül N > 0 olduğu N’in tüm
değerleri için doğru bir şekilde mod işlemini gerçekleştirmelidir.

Mod işlemini gerçekleştirmek için aşağıda verilen module ModHesaplayici #(parameter N = 8)


“Cikarici” ismindeki, verilen iki sayının birinden (
diğerini çıkaran modülü kullanmalısınız. “Mod input clk,
Hesaplayici” modülünde “valid_in” sinyali mantık-1 input rst,
olduğunda “bolen” ve “bolunen” sinyalleri ile verilen input valid_in,
sayılar alınıp, ardışık saat vuruşlarında (yükselen input [N-1:0] bolen,
kenar) bölünenden böleni çıkartarak mod input [N-1:0] bolunen,
hesaplamalıdır. Başka bir ifadeyle, (bölunen = x.bölen output [N-1:0] mod,
output valid_out
+ kalan) denklemindeki “x” modülün mod alma
);
işlemini tamamlayacağı çevrim sayısını gösterecek
olup, her çevrimde bölünenden bölen çıkartılacak ve …
bu işlem bölünen bölenden küçük olana kadar devam
edecektir. Her çevrimde yapılması gereken çıkarma endmodule
işlemi bir adet “Cikarici” modülü ile yapılmalıdır.
Mod hesaplandığında “valid_out” çıkışı mantık-1 yapılarak işlemin bittiği belirtilmeli ve işlem sonucu “mod”
çıkışından verilmelidir. İşlem tamamlanmadan “valid_in” sinyali tekrar mantık-1 olursa, yeni “bolen” ve
“bolunen” girişleri dikkate alınmayıp, işleme devam edilmelidir.
module Cikarici #(parameter N = 8)(
Tüm işlemler “clk” sinyalinin yükselen kenarında input[N - 1:0] eksilen,
yapılmalıdır. “rst” sinyali mantık-1 olduğunda input[N - 1:0] cikan,
modül, yeni işlem yapmaya hazır hale getirilecektir. output[N - 1:0] fark);
Yani, bir mod işlemi tamamlanmamışken “rst” assign fark = eksilen - cikan;
girişinden mantık-1 gelirse, işlem sonlandırılmalıdır. endmodule
(valid_out o işlem için hiçbir zaman mantık-1
olmayacak)

1
BİL 264L 14 Aralık 2015 Pazartesi

2. [30 puan] Durum makinesi Gerçekleme

Aşağıdaki şekilde verilen durum diagramını Verilog module DurumMak(


ile davranışsal (Behavioral) modelleme yaparak input clk,
gerçekleyin. Gerçeklemeniz gereken modülün input rst,
giriş/çıkış sinyalleri yan tarafta verilmiştir. input x,
output[1:0] y);

endmodule

3. [40 puan]

Bu soruda “data_in” adında tek bir girişten gelen sayıları


module FifoTopla(
aşağıda anlatıldığı gibi toplayan bir modülü Verilog dili input clk,
ile davranışsal (Behavioral) modelleme yaparak input rst,
gerçeklemeniz gerekiyor. Her bir saat vuruşunda input[7:0] data_in,
“data_in” girişinden gelen sayı 2-bitlik “select” sinyali ile input[1:0] select,
belirtilmiş yere yazılacaktır. output[9:0] sum);

Select 2’b00 ise “data_in” 8-bitlik 8 eleman tutabilen ilk endmodule
giren ilk çıkar (FIFO) şeklinde çalışan bir hafıza birimine
kaydedilmelidir. Bu FIFO sadece “select” 2’b00 olduğunda içerisine yeni eleman alıp, en eski elemanı hafızadan
atmalıdır. Diğer durumlarda FIFO’da herhangi bir değişiklik yapılmamalıdır.

Diğer “select” değerleri için, “data_in” girişinden gelen verinin en anlamsız 3 biti “select” ile gösterilen 3-bitlik
yazmaca kaydedilmelidir. Yani, gerçekleyeceğiniz modülde 3 adet 3-bitlik yazmaç (A, B, ve C yazmaçları)
bulunmalıdır.

Her saat vuruşunda, A, B ve C yazmaçlarının ile FIFO’ya erişip, bu yazmaçların gösterdiği konumlardaki 3 adet 8-
bitlik değer toplanıp “sum” çıkışından dışarıya verilmelidir.

Tüm işlemler “clk” sinyalinin yükselen kenarında yapılmalıdır. “rst” sinyali mantık-1 olduğunda A, B, C yazmaçları
sıfırlanıp, FIFO’nun içindeki tüm elemanlar da 0 olarak değiştirilmelidir.

You might also like