bu kod parçacığında 162-260. satırlar arasında UDP paketi yakalandığında çağrılan callback fonksiyonu bulunmaktadır. Fonksiyonu modifiye ederek, Ethernetten içerisinde ‘S,’E’,’L’,’A’,’M’ byte’ı barıdıran bir paket geldiğinde, geriye ‘M,’E’,’R,’H,’A,’B’,’A’ byte’larını gönderen bir uygulama geliştiriniz.
MAC adresi nedir?
TCP ve UDP arasındaki farklar nedir?
Microblaze
Aşağıda Microblaze, uartlite ve AXI Interconnect IP’lerinin giriş ve çıkış arayüzleri verilmiştir.
Bu üç IP’i birbirlerine bağlayarak microblaze’in UART paketleri gönderebileceği sistemi oluşturunuz. Diğer (Örn, DLMB, ILMB) bağlantıların çizilmesine gerek yoktur.
Aşağıda blok diyagramda tasarlanmış olan bir microblaze tabanlı sistemin Adress Editor pencere görüntüsü bulunmaktadır.
Microblaze’e bağlı olan GPIO IP’sinin giriş bölümüne 8 bitlik bir switch bağlanmış, çıkış bölümüne ise LED’ler bağlanmıştır. AXI GPIO’nun saklayıcı listesi aşağıda verilmektedir.
Bu sistem için, CPU üzerinde switch’lerden alınan değerin bir fazlasını LED’lerde gösterecek bir kod parçacığı geliştiriniz.
AXI Interrupt Controller IP’sinin görevi nedir?
Microblaze gibi softcore bir işlemci hangi durumlarda kullanılması tercih edilebilir? Hardcore bir işlemciye göre avantaj ve dezavantajlarını sıralayınız.
Performance Profiling and Debugging
Breakpoint nedir? Ne amaçla kullanılır?
Profiler Tool nedir?
Bir yazılımda en yavaş çalışan fonksiyonu bulmak için izlenebilecek stratejiler nedir?
QEMU
QEMU nedir?
Bir emulatör kullanmanın avantaj ve dezavantajları nedir?
patternGenerator isminde bir sınıf oluşturunuz. Sınıfın UML Diagramı aşağıda verilmektedir.
Sınıfta 2 adet 32 bitlik pattern ve currentSeed isimli saklayıcı bulunmaktadır. Sınıfın constructor’u int türünde initSeed isminde bir argüman almakta ve aldığı argümanı currentSeed saklayıcısına yazmaktadır. setSeed fonksiyonu currentSeed değerini sabit olarak 32’h1234 değerine atamaktadır. randomGenerator fonksiyonu ise aşağıda verilen operasyonu gerçekleştirmektedir.
patternGenerator sınıfından testbench modülünde bir obje türetip, constructor’una 1234 decimal sayısını veriniz. Ardından pattern degiskenini $display ile ekrana gösteriniz. randomGenerator fonksiyonunu çağırıp pattern değişkenini $display ile ekrana gösteriniz.
aluTest isimli bir sınıf geliştiriniz. Bu sınıfın UML diyagramı aşağıda verilmektedir.
Bu sınıf içerisinde arg1, arg2, operation ve result isminde 4 adet saklayıcı barındırmaktadır. arg1, arg2 ve result 32 bitlik, operation ise 2 bitliktir. Sınıftın constructor’u bir argüman almamakta ve constructor çalıştığında sınıfta bulunan tüm değişkenlere sıfır değerini atamaktadır. setOper fonksiyonu bir argüman alıp, aldığı argümanı operation değişkenine atamaktadır. setArgs fonksiyonu iki argüman alıp, aldığı argümanları arg1 ve arg2 değişkenlerine atamaktadır. doOperation fonksiyonu argüman almaktadır. Bu fonksiyon sınıfın içindeki operation saklayıcısının değerine göre aşağıda verilen işlemleri yapmaktadır.
operation == 0 –> result = arg1 + arg2 operation == 1 –> result = arg1 – arg2 operation == 2 –> result = arg1 * arg2 operation == 3 –> result = arg1 & arg2
aluTest sınıfını tasarladıktan sonra, aluTest sınıfını kullanan bir testbench hazırlayınız. Bu testbench ile aluTest sınıfının yapabildiği 4 farklı operasyonu test etmelidir.
DDM: Kalıtım
aluTest sınıfından kalıtım yapılarak aluTestPlus isminde bir sınıf oluşturunuz. Bu sınıfın içerisinde ek bir fonksiyon olarak doOperations2 isimli bir fonksiyon bulunmalıdır. Sınıfın UML diyagramı aşağıda verilmekedir.
doOperations2 fonksiyonu operation değişkenine bakarak aşağıda verilen operasyonları yapmaktadır.
operation == 0 –> result = arg1 | arg2 operation == 1 –> result = arg1 ^ arg2 operation == 2 –> result = arg1 + 1 operation == 3 –> result = arg2 + 1
aluTestPlus sınıfını tasarladıktan sonra, aluTestPlus sınıfını kullanan bir testbench hazırlayınız. Bu testbench ile aluTestPlus sınıfının yapabildiği 8 farklı operasyonu test etmelidir.
DDM: Değişken Türleri
aluTestPlus sınıfından aluTestPlus2 isimli bir sınıf kalıtım yapınız. Bu sınıfın içerisinde void doOperation3(string argIn1, string argIn2, string operationIn) isimli bir fonksiyon bulunmaktadır. Bu fonksiyon aldığı string argIn1 ve argIn2 argümanlarından herhangi biri floating point ise (yani string’in içinde nokta işareti varsa) aşağıda verilen operasyonları yapmaktadır.
operationIn == 0 –> result = argIn1 * argIn1 operationIn == 1 –> result = argIn1+ arg2 operationIn == 2 –> result = argIn1 – 1 operationIn == 3 –> result = arg2 + 1
eğer string argIn1 ve argIn2 argümanları floating point değiller ise (yani string içinde nokta işareti yok ise) aşağıda verilen operasyonları yapmaktadır.
operationIn == 0 –> result = argIn1 – argIn2 operationIn == 1 –> result = argIn1* arg2 operationIn == 2 –> result = argIn1 – 5 operationIn == 3 –> result = arg2 + 5
aluTestPlus2 sınıfını tasarladıktan sonra, aluTestPlus2 sınıfını kullanan bir testbench hazırlayınız. Bu testbench ile aluTestPlus sınıfının yapabildiği 8 farklı operasyonu test etmelidir.
DDM: Arayüzler
modul1 ve modul2 isminde iki modül tanımlaması yapınız. Bu modüllere ortak olarak giren ve çıkan sinyaller aşağıda verilmektedir.
* clk * rst * data[31:0] * wrEn
verilen 4 sinyali gruplayarak myIntf isimli bir interface tanımlaması yapınız. Bu interface’i her iki modül için kullanınız. Ayrıca modul2 için out isminde bir bitlik çıktı vardır. modul1 her clock cycle data sinyalinin değerini bir arttırarak dışarıya sürmektedir. wrEn sinyalini ise sabit olarak 1 olarak sürmektedir. rst geldiği zaman ise data sinyalini 0’a atamaktadır. Modül 2 wrEn sinyali aktif iken kendine gelen data sinyalinin değeri 100 ise, out çıkışından 1 sinyali çıkartmaktadır. Eğer rst sinyali aktif ise out çıktısı 0 olmalıdır.
Bir testbench ortamı geliştirip modul1 ve modul2’in sahip olduğu myIntf interface’ini birbirine bağlayınız. Clock’u interface’e testbench’ten besleyiniz.
Modport nedir? Ne amaçla kullanılmaktadır?
DDM: Rasgeleleştirme
rand ve ranc nedir? Aralarındaki fark nedir? Örnek vererek açıklayınız.
randomUretici isimli bir sınıf tasarlayınız. Bu sınıfta 2 bitlik bir rand türünde rasgele isimli bir saklayıcı tanımlayınız. Bu değişkenin rasgele üretimi esnasında 0 sayısının üretilmemesi için bir constraint tanımı yapınız. randomUretici sınıfından bir obje türetip, initial/begin bloğu içerisinde randomize fonksiyonunu 10 defa döngü ile çağırıp üretilen rasgele değerleri $display ile ekranda gösteriniz.
İletkenlik, yalıtkanlık ve yarı iletkenlik kavramları nedir?
Direnç nedir?
Kapalı ve açık devre kavramları nedir?
Doğru ve alternatif akım nedir?
Aşağıda verilen direnç renk tablosuna göre ve verilmiş direncin renk kodlarından Ohm değerini hesaplayınız.
Sıfır ohm’luk dirençler neden kullanılmaktadır?
Ohm Yasası
1000 Ohm’luk bir direncin üzerinden 0.01 amper akım geçebilmesi için kaç Volt’luk bir gerilim uygulanmalıdır?
Bir motor 120 Volt altında 2 amperlik bir akım çekmektedir. Bu motorun direnci nedir?
Bir klima 220 V altında 20 amper akım çekmete ise, bu klimanın tükettiği güç’ü hesaplayınız.
Bir elektrik süpürgesi 220V altında 15 amper akım çekmektedir. Elektrik kullanılan bölgede kilowatt saat fiyatı 2 TL ise, bu süpürge 2 saat çalıştırıldığında elektrik faturasına kaç TL eklenecektir?
Seri Devreler
Aşağıda verilen devredeki direnç ve devrede dönen akım’a göre gerilim kaynağının gerilim değerini hesaplayınız.
Verilen devrenin üzerinden geçen akımı hesaplayınız.
Verilen devredeki gerilim kaynağının gerilim değerini hesaplayınız.
Verilen devredeki geçen akımı hesaplayınız.
Paralel Devreler
Aşağıda verilen devrenin üzerinden geçen toplam akımı ve R3, R4 dirençleri üzerinden geçen akımları hesaplayınız.
Aşağıda verilen devredeki R1 ve R2 dirençleri üzerine düşen gerilimleri ve R3 direnci üzerinden geçen akımı hesaplayınız.
Aşağıda verilen devrede R1 ve R2 dirençleri üzerinden geçen akımı ve R3 direnci üzerine düşen gerilimi hesaplayınız.
Devrede verilen akım değerlerine göre gerilim kaynağının gerilim değerini ve R3 direncinin Ohm değerini hesaplayınız.
Aşağıda verilen kombinasyonel devrenin Verilog dilindeki gösterimini yazınız.
Aşağıda verilen Verilog RTL kodunun karşılığı olan donanım’ın şematik çizimini yapınız.
Aşağıda verilen devrenin Verilog gösterimindeki karşılığını yazınız. A, B, C, D ve Sel sinyalleri giriş, y sinyali ise çıkıştır
Aşağıda verilen Verilog RTL kodunu sentezlendiği zaman ortaya çıkacak devreyi çiziniz.
Aşağıda verilen verilog kod parçacığı sentezlenince oluşacak donanım şematiğini çiziniz.
Aşağıda verilen devrenin Verilog gösterimini yazınız.
Aşağıda verilen Mealy durum makinasının Verilog dilinde gerçekleyiniz.
Aşağıda verilen 3 Verilog kod parçacığı farklı shifter tasarımlarıdır. Hangi tasarımın kombinasyonel hangisinin ardışık devreler ile gerçeklendiğini ifade edip, devrelerini çiziniz. Not: Tasarımda normalde kullanmayı tercih etmediğimiz, kombinasyonel döngü olabilir. Kaydırma devresini kutu olarak çizebilirsiniz.
4 farklı operasyon yapabilen iki 4’er bitlik sayı girişi alan bir ALU tasarlanacaktır. Operasyonlar; toplama, cıkartma, çarpma ve 0 üretmektir (Operasyon kodu 3 olduğunda sonuç 0 olacaktır). Operasyon kodu girişi bulunmakta ve 2 bitliktir. ALU tasarımını verilog dilinde yapınız
ZYNQ Mimarisi
PS ve PL kavramları nedir?
Microblaze nedir? PS’den farkı nedir?
APU nedir? APU’da bulunan I-Cache, D-Cache ve L2 Cache’in görevlerini açıklayınız?
MIO nedir? Ne amaçla kullanılır?
EMIO nedir? Ne amaçla kullanılır?
ZYNQ mimarisinde bulunan GP, HP ve ACP portları nedir? Aralarındaki fark nedir?
Cache Coherence nedir? Bu ihtiyaç için ZYNQ mimarisindeki çözüm nedir? Olası sorunu bir örnek ile açıklayıp, çözümü anlatınız.
ZYNQ mimarisindeki NEON Engine nedir?
Veriyolları
AXI arayüzü nedir? Kim tarafından geliştirilmiştir?
AXI gibi bir arayüzü modüller arasında iletişim için kullanmanın avantajı nedir?
Xilinx ortamında kullanılan AXI türlerini açıklayınız.
AXI Lite ve AXI MM arayüzleri arasındaki farkı açıklayınız.
Master ve Slave kavramlarını açıklayınız?
AXI Lite ve AXI MM veriyolu üzerinde bulunan 5 kanalın isimleri ve görevleri nelerdir?
AXI arayüzlerindeki ready sinyali ne işe yaramaktadır?
AXI arayüzlerindeki valid sinyali ne işe yaramaktadır?
Interfaces
UART arayüzü nasıl çalışmaktadır?
SPI arayüzü nasıl çalışmaktadır?
I2C arayüzü nasıl çalışmaktadır?
Aşağıda verilen Xilinx Github Reposunda bulunan UART loopback örneğinde, UART portundan 32 byte’lık veri transfer edilip, geriye alınıp aynı sonucun gelip gelmediği kontrol edilmektedir.
Öğrencilerin soru sorup yanıt alabileceği bir soru cevap sistemi sunulmaktadır. Ders duyuruları, öğrenci soruları ve cevapları için bir platformdur. Aşağıdan erişebilirsiniz.
CORDIC Tabanlı HW/SW CoDesign: Donanım hızlandırıcı olarak Xilinx’in CORDIC (COordinate Rotation DIgital Computer) IP’si kullanıldığı ve işlemcinin hesap yükünü donanım hızlandırıcıya aktardığı bir proje yapılacaktır