Are You suprised ? - Maltepe Üniversitesi

MALTEPE ÜNİVERSİTESİ
BİLGİSAYAR MÜHENDİSİĞİ PROGRAMI
BİL 551- Uygulamalı Sayısal Tasarım
Ara Sınavı
Öğrenci Adı Soyadı
:
Öğrenci No
:
Akademik yıl
: 2014-2015
Dönem
: Güz
Tarih
: 26.11.2014
Sınav yeri
: Sayısal Sistemler Laboratuvarı
Sınav süresi
: 120 dakika
Ders sorumlusu
: Yrd.Doç.Dr. Serap ÇEKLİ
Soru
1
2
3
Toplam
Puan
60
20
20
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, 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.
BİL 551 Ara Sınavı
Güz Yarıyılı – 2014 / 2015
Soru 1
a) [30 puan] Girişine 1101 veya 1110 dizisi geldiğinde çıkışı 1 olan Mealy Makinesini Sonlu Durum
Makinesi (FSM) Modeliyle tasarlayınız. Sonlu durum makinesinin durum diyagramını çiziniz.
Durum geçiş tablosunu çiziniz.
0/0
S0
1/0
0/0
0/0
S1
1/1
S4
1/0
0/0
0/1
S2
1/0
S3
1/0
2 of 5
BİL 551 Ara Sınavı
Güz Yarıyılı – 2014 / 2015
b) [30 puan] Tasarladığınız sonlu durum makinesinin (FSM) Verilog HDL kodunu yazınız.
module Soru_Mealy_Machine(input clk, x, reset, output z);
parameter S0 = 3'b000, S1 = 3'b001, S2 = 3'b010, S3 = 3'b011, S4 = 3'b100,
S5 = 3'b101; // Binary Encoding Schema
reg [2:0] present_state;
reg [2:0] next_state;
always@( posedge clk )
begin
if(reset) present_state <= S0;
else present_state <= next_state;
end
always@( present_state or x )
begin
case(present_state)
S0: if (x) next_state <= S1; else next_state <= S0;
S1: if (x) next_state <= S2; else next_state <= S0;
S2: if (x) next_state <= S3; else next_state <= S4;
S3: if (x) next_state <= S3; else next_state <= S4;
S4: if (x) next_state <= S1; else next_state <= S0;
default: next_state <= S0;
endcase
end
/*always@( present_state or x )
begin
case(present_state)
S0: if (x) z <= 1'b0;
S1: if (x) z <= 1'b0;
S2: if (x) z <= 1'b0;
S3: if (x) z <= 1'b0;
S4: if (x) z <= 1'b1;
default: z <= 1'b0;
endcase
end*/
else
else
else
else
else
z
z
z
z
z
<=
<=
<=
<=
<=
1'b0;
1'b0;
1'b0;
1'b1;
1'b0;
assign z = ( (present_state == S3) && (x == 0) ) | ( (present_state == S4) &&
(x == 1) );
endmodule
3 of 5
BİL 551 Ara Sınavı
Güz Yarıyılı – 2014 / 2015
Soru 2
Aşağıda verilen Verilog HDL modüllerini inceleyerek bu modüllerde yazım hatası olup
olmadığını belirleyiniz ve belirlediğiniz hataları kısaca sebebini yazarak düzeltiniz.
a) [10 puan]
module tamtoplama(input a, b, cin, output reg s, cout);
wire p, g;
assign p = a ^ b;
assign g == a & b;
assign s = p ^ cin;
always@(*) begin
assign cout = g | (p & cin);
end
endmodule
b) [10 puan]
module bolmeFSM (input clk, input reset, output reg y);
reg [1:0] state;
wire [1:0] nextstate;
parameter S0 = 2’b00, S1 = 2’b01, S2 = 2’b10;
// state register
always @ (posedge clk, posedge reset)
if (reset) state <= S0;
else state <= nextstate;
// next state logic
always @ (*)
case (state)
S0: nextstate = S1;
S1: nextstate = S2;
S2: nextstate = S0;
default: nextstate <= S0;
endcase
// output logic
assign y = (state == S0);
endmodule
4 of 5
BİL 551 Ara Sınavı
Güz Yarıyılı – 2014 / 2015
Soru 3
[20 puan] Tek bitlik bir B girişine sahip bir sistem, bu B girişindeki sinyalin değişimlerini saymaktadır.
Girişe gelen sinyaldeki değişimler, sinyalin lojik 0’ dan lojik 1’ e dönmesi ve yine bu sinyalin lojik 1’
den lojik 0’ a dönmesi olarak tanımlanmıştır. Sayılan bu değişimler başlangıçta değeri 0 olan 16 bitlik
işaretsiz bir C çıkışında her bir saat çevriminde gösterilmektedir. C çıkışının en büyük değerine
ulaşıldığında sistem baştan saymaya başlamaktadır. Bu sistemin davranışını Yüksek Seviyeli
Durum Makinesi (HLSM) modeli ile tasarlayınız (durum geçiş diyagramını çiziniz).
Giriş : 1-bit B
Çıkış: 16-bit C
Toplama değerini tutan kaydedici (register): C_reg
B’
Creg:= Creg + 1
Bekle1
B
Arttır1
B’
Başla
B
Creg:= 0
B
Bekle0
B’
Arttır0
Creg:= Creg + 1
5 of 5