Categories
Digital Design

Digital Design

Course Description: This course covers combinatorial, sequential circuits, state machines, verification methodologies, memories, design principles, SOC concepts and interfaces, which are frequently used in the digital design world. Within the scope of the course, a processor named Fenerbahçe Processor will be designed for educational purposes and verified with Verilog HDL. FPGA based demo will be presented.

Categories
microcontrollers

Final Sample Questions

Simulatorler

  1. Fiziksel bir ortam kurmak yerine simulasyon üzerinde çalışmak neyi sağlar? Dezavantajları nelerdir?

FPGA Tabanlı Kontrol

  1. FPGA ve MCU arasındaki farklar nelerdir? FPGA ne zaman tercih nedeni olmalıdır?
  2. FPGA’e bağlı 10 bitlik bir ADC çipi kulunmaktadır. Bu ADC çipinin çıktı sinyalleri clk, data[9:0], dataValid’dir. Bu sinyalleri kullanarak bir sıcaklık sensörü verisini okuyup eğer sıcaklık 50 derece’nin üzerinde ise FPGA’e bağlı bir LED’i aktif yapan, değil ise pasif yapan bir verilog tasarımı geliştiriniz. Sıcaklık sensörü 0-100 derece arasında çalışmaktadır.
  3. FPGA’e bağlı motor sürücü entegresini kontrol edecek bir verilog tasarımı gerçekleyiniz. Entegrenin clock çıkışı, 8 bitlik dIn girişi ve direction isimli bir bitlik girişi bulunmaktadır. Bu sinyaller ile aşağıda verilen pattern’i oluşturan bir tasarım yapınız. Clock frekansı 10MHz’dir.

    Durma
    Yarı Hız ileri
    Tam Hız ileri
    Yarı Hız geri
    Tam Hız geri
    Durma
    Çeyrek Hız ileri

    Her bir pattern 2 saniye sürmelidir.

Categories
embedded-systems

Final Sample Questions

Interfaces

  1. Seri port arayüzü nedir? Nasıl çalışmaktadır?
  2. ZYNQ mimarisinde PS bölümünde bulunan UART arayüzü ile PL bölümüne konfigüre edilebilen UART arayüzünün farkı nedir?
  3. ZYNQ mimarisinin UART PS0 bloğunu kullanarak dışarıya saniyede bir “Merhaba” string’ini basan bir uygulama geliştiriniz.
  4. 10 adet UART arayüzüne sahip sensörler bulunmaktadır. Bu sensörleri ZYNQ mimarisine sahip bir FPGA ile okuyup ethernet üzerinden verileri transfer eden bir sistem geliştiriniz.

    Sistemin Block diagramını çiziniz. Ardından Petalinux ortamı için bir C kodu geliştirip okunan verileri ethernet üzerinden UDP Protokolü ile transfer eden bir uygulama geliştiriniz.

    Sensör verileri 0-255 arasında bir byte olarak gelmektedir. Ethernet’e transfer edilecek veriler 10 sensör için toplam 10 byte’lık bir dizi olarak gönderilebilir. IP ve port bilgileri rasgele girilebilir.
  5. Bilgisayardan bir byte büyüklüğünde iki sayıyı (yani 0-255 arasında) UART arayüzünden ZYNQ’in UART PS0 bloğuna transfer ediniz. ZYNQ sayıları yakaladıktan sonra iki sayı ile aşağıda verilen aritmetik işlemi yapıp sonucunu tekrar UART üzerinden döndürmektedir.

    Aritmetik işlem: karekök(X^2 + Y^2)

    UART üzerinden sayı gönderme ve UART üzeirnden sonucu yakalamak için bilgisayar ortamında istediğiniz bir dilde (C#, Python vb..) seri port uygulaması geliştiriniz. ZYNQ üzerinde petalinux ortamında gerekli olan C kodunu yazınız.

Custom Module Interfacing

  1. AXI Lite Slave arayüzü nedir?
  2. AXI Lite Master arayüzü nedir?
  3. AXI FULL Slave arayüzü nedir?
  4. 3 saklayıcısı olan AXI Lite Slave arayüzlü bir modül geliştiriniz. Bu modülün

    0. adresindeki saklayıcı, 1. sayıyı
    1. adresindeki saklayıcı, 2. sayıyı
    3. adresindeki saklayıcı, 1. ve 2. sayının toplamını göstermektedir.

    Aşağıda bir AXI Lite Slave arayüzlü modülün örnek şablon kod parçacığı verilmektedir. Bu kod parçacığını modifiye ederek, belirtilen görevi yapan bir modül haline döndürünüz.

    Kod parçacığı: İndirme

Categories
System on Chip (SOC) Design

Midterm Sample Questions

Linux Fundamentals

  1. Bir klasördeki dosyaların tamamını listelip, dosyaların okuma yazma çalıştırma izinlerinin ne durumda olduğu nasıl listelenir?
  2. Root yetkisi nedir?
  3. sudo komutu nedir? Neden gerekli olmaktadır? Örnek vererek açıklayınız.
  4. /home/emre/x.txt dosyasını /var/tmp/test/y.txt dosyası olarak kopyalanmak isteniyor. İlgili komutu yazınız.
  5. CPU kaynağını en çok tüketen uygulama nasıl bulunur. Bu uygulamayı tespit ettikten sonra komut satırından nasıl öldürülür? Açıklayınız
  6. Bash script nedir?
  7. Bir dosyayı görüntülemek için more, tail, head komutları kullanılabilir. Komutların farkları nedir? Ne amaçla kullanılabilirler açıklayınız. Dosyanın ilk 3 satırını, dosyanın son 5 satırını gösteren komutları yazınız.
  8. Ortam değişkeni nedir? Ne amaçla kullanılır?
  9. Terminalde ‘KEY’ isminde bir ortam değişkeni oluşturup içerisine 1234 sayısını yazınız. Bir bash script oluşturup KEY ortam değişkenin değerini alıp karesini print yapan bir bash script geliştiriniz.
  10. Dışarıdan bir argüman alan bash script geliştiriniz. Bu bash script’e gelen argüman eğer 0 ise, şu anki tarih saati bulunduğu klasörde saat.txt dosyası yaratıp içerisine yazmalıdır. Kendisine gelen argüman 1 ise, bulunduğu klasörde deneme.txt dosyası var ise o dosyanın içeriğini print etmeli eğer dosya yok ise “Dosya Bulunamadi” uyarısını print etmelidir.

Embedded Linux Toolchain

  1. Linux çekirdeği nedir?
  2. Bir boot sürecinde aşağıda verilen görseldeki adımlar izlenmektedir.



    Figürde verilen adımları açıklayınız.
    BOOT.BIN dosyası nedir? Hangi dosyalardan oluşur?
  3. Aşağıda verilen kavramları açıklayınız

    * ROOTFS
    * Image.ub
    * Device Tree

PL/PS CoDesign

  1. Linux’te bulunan devmem komutu nedir? Bu komut ile 0x40000000 adresine hexadecimal olarak ABCD yazıp, 0x40000008 adresinde bulunan içeriği okuyacak bir komutu yazınız.
  2. MMAP Komutu ne yapmaktadır?
  3. 0x40000000 adresinde bir AXI GPIO IP’si bulunmaktadır. Bu IP’nin register space’i aşağıda verilmektedir.



    AXI GPIO’nun 1. kanal çıkış bölümüne bir bitlik LED bağlanmıştır. 1. kanal giriş bölümüne ise 8 bitlik bir saklayıcı bulunmaktadır. Giriş bölümünden 0x11 değeri geldiğinde LED’i 1 yapan diğer tüm durumlarda LED’i 0 yapan bir petalinux ortamı için uygulama geliştiriniz.
  4. PL bölümünde bir AXI GPIO IP’si bulunarak oluşturulmuş bir petalinux imajında

    ls /sys/class/gpio

    komutu çalıştırılarak bağlanmış GPIO’nun ne olduğu görülmektedir.

    Buna göre örneğin komutun çıktısında gpio496 olduğu görülmüştür.

    Petalinux ortamında GPIO’nun değerini her saniye tersine çeviren bir uygulama geliştiriniz.

Categories
microcontrollers

Midterm Sample Questions

MCU Architecture

  1. Mikrokontrolcü nedir?
  2. Aşağıda Atmel Atmega328 MCU’sunun mimarisi verilmektedir.

    Mimaride görülen;

    * USART
    * SPI
    * Flash
    * Oscillator
    * AVR CPU

    bloklarının görevlerini açıklayınız
  3. Aşağıda Atmel Atmega328 MCU’sunun CPU Core Mimarisi verilmektedir.



    Bu mimariye göre;

    * ALU
    * Program Counter
    * General Purpose Register
    * Instruction Register
    * Instruction Decoder

    bloklarının görevlerini açıklayınız.
  4. Ardunio IDE’sinde geliştirilen bir uygulamada kullanılan temel setup ve loop fonksiyonlarını görevlerini açıklayınız.
  5. Aşağıda Ardunio Nano’nun pinlerini gösteren bir figür verilmektedir.



    Ardunio’nun Dijital 5 ve 6. pinlerine butonlar, 7. pinine ise LED bağlanmıştır. Her iki butona da basılı iken LED saniyede bir yanıp sönecek bir uygulama geliştiriniz.
  6. MCU’nun UART arayüzünden ‘A’ paketi geldiğinde 1. LED’i 2 saniyeliğine yakan, ‘B’ paketi geldiğinde ise 2. LED’i 10 saniyeliğine yakan bir uygulama geliştiriniz.

Interfaces and Sensors

  1. Analog ve dijital pin’lerin okuma/yazma kabiletleri nedir? Farkları nelerdir?
  2. MCU’nun 0. analog girişine bir uzaklık sensörü bağlanmıştır. Bu sensör 50 cm’de iken maksimum değer olan 1023’ü, 2 cm’de ise 0 değerini geri döndürmektedir. Buna göre sensör 20 ile 30cm arasında bir nesne tespit ettiğinde UART üzerinden ‘Aralik Icerisinde’ mesajını gönderen bir uygulama geliştiriniz.
  3. MCU’nun 0. analog girişine bir sıcaklık sensörü bağlanmıştır. 1. analog girişine ise bir duman sensörü bağlanmıştır.

    Sıcaklık sensörü 0 derece için 0; 50 derece için 1023 sayısını döndürmektedir. 0-50 derece arasındakiler 0-1023 arasında lineer olarak değişmektedir.

    Duman sensörü ise duman olmaması durumunda 0, duman olması durumunda ise geriye 1023 sayısını döndürmektedir.

    Buna göre 40 derece üstü ve duman olması durumunda MCU’nun dijital 3. pinine bağlı LED’i aktif edip UART üzerinden “Yangin” mesajını gönderen bir yazılım geliştiriniz.
  4. Sensör nedir? Analog ve dijital sensörler nedir? Farkları nelerdir?

Motor Control

  1. Fırçasız motor nedir?
  2. Servo motor nedir?
  3. Step motor nedir?
  4. 5V gerilim uygulandığında 200 RPM ile çalışan bir fırçasız motor’a çevresi 2 cm olan bir tekerlek takılıyor. Robota bağlı olan bu motor ile 1 metre hareket etmek için gerekli olan MCU kodunu geliştiriniz. Tekerlek 3cm olması durumu için 2. bir kod geliştiriniz.
  5. Fırçasız bir motorun 3V altında 200 RPM, 5V altında ise 300 RPM yaptığı dökümanında belirtilmiştir. Buna göre MCU’nun ADC pinleri kullanılarak bu motor’a 2 sn 250 RPM, 3 sn 275 RPM hıza çıkaracak bir kod geliştiriniz. Not: 3V-5V arasındaki RPM değişiminin lineer olacağı varsayılabilir. MCU’nun ADC’si 0 verisi için 0V, 1023 verisi için ise 5V üretmektedir. Ara değerler lineer olarak değiştiği varsayılabilir.

Robot Assembly

  1. Robot şasesi nasıl üretilir?
  2. PCB tasarımı nedir?
  3. Lehimleme nedir?
Categories
embedded-systems

Labs

LabKonuTarihİndirme
1Linux Fundamentals 
2Embedded Linux Toolchain
3Interfaces I
4Interfaces II
5Custom Module & Driver Development II

Lab teslim dokümanı

Categories
embedded-systems

Detailed Course Description

Ders Açıklaması

Bu ders kapsamında gömülü sistemlerde kullanılan bir Linux dağıtımı olan Petalinux ile çalışılacaktır. Ders’te Xilinx’in PYNQ Z2 geliştirme kartlar kullanılacaktır. Dönem projesi olarak Petalinux üzerinden AXI DMA IP’si ile PL bölümüne veri transferi yapılıp, FFT bloğuna aktarılıp, sonuçlar yine AXI DMA ile processor’e alınacaktır.

Ders Saatleri (Teorik + Lab)

Cuma 9.00-14.00

Öğretim Elemanları ve Ofis Saatleri

Dr. Öğr. Üyesi Vecdi Emre Levent, Ofis 311 – Salı 16.00-17.00

Arş. Gör. Uğur Özbalkan, Ofis 311 –  Salı 16.00-17.00

Ön Gereksinimler

Yok

Yardımcı Kaynaklar

Dersin referans kaynakları aşağıda listelenmektedir.

  • Programming Arduino: Getting Started with Sketches, Second Edition, Simon Monk, McGraw Hill, 2016
  • Exploring Arduino: Tools and Techniques for Engineering Wizardry 2nd Edition, Jeremy Blum, 2019

Yazılımlar

Petalinux 2021.1

Vivado 2021.1

Dersler

Dersin haftalık 2 saat teorik, 2 saat laboratuvar bölümü bulunmaktadır. Öğretim üyesi tarafından verilen ders materyallerinin ders öncesi incelenip, ders sonrasında ise tekrar edilmesi beklenmektedir. 

Öğrenim Çıktıları

  • Linux Fundamentals
  • Embedded Linux
  • PL/PS CoProcessing
  • Performans ve Debugging

Quizler

Dönem içerisinde iki adet quiz yapılacaktır. 30 dk süre verilecektir. Quiz tarihi bir hafta önceden duyurulacaktır. 

Notlandırma

Derslere %80 oranında devam zorunludur.

Dönem notu; vize, lablar, ödevler, proje ve final sınavı ile belirlenecektir. Değerlendirme yüzdeleri aşağıdaki tabloda verilmiştir.

FaaliyetlerOranlar
Vize%20
Ödev/Quiz%10
Lab%15
Proje%25
Final%30
Bonus5 Puan’a kadar

Ödev ve quizlerin teslim saati üzerinden her geçen saat için 5 puan kesilecektir.

Dönem sonu notunun karşılık geldiği ağırlık ve harf notu aşağıdaki tabloda verilmiştir.

Dönem NotuAğırlıkHarf Notu
90-1004.00AA
85-893.50BA
80-843.00BB
75-792.50CB
65-742.00CC
50-641.50DC
45-491.00DD
0 -440FF

Beklenen Efor

Öğrencinin dönem içinde göstermesi beklenen efor tablosu aşağıda verilmiştir.

İçerikSaatKaç DefaAra Toplam
Derse Hazırlık21428
Ders Tekrarı21428
Ödev4624
Proje48148
Sınıf Dersi41456
Ara Sınav ve Final24248


Öğrenciler dersten başarılı olmak için dönem boyunca ortalama 232 saat harcamaları beklenmektedir.

Kodlama Ödevleri

Kodlama ödevlerinin notlandırılması, kodun doğruluğu, kalite ve algoritmik gerçeklemedeki detayları incelenerek yapılacaktır.

Doğruluk

Verilecek her bir ödev için test girişi ve beklenen çıkışlar paylaşılacaktır. Ancak ödev kontrolü yapılırken sizinle paylaşılmamış başka test durumları da denenecektir. Çalışma zamanı, beklenenden çok uzun süren kodlar yanlış olarak değerlendirilebilir.

Teori

Kod, istenen algoritmanın tasarımı olmalıdır. En optimum çözüm beklenmemektedir. Ancak bellek ve çalışma zamanı beklenenden çok fazla olmamalıdır.

Yazılı Ödevler

Ödev kendi el yazınız ile yazılmalıdır. Ödev cevap kağıtının üzerinde, dersin adı, öğrenci adı ve soyadı, öğrenci numarası ve tarih bulunmalıdır. 

Akademik Dürüstlük

Ödevin amacı, ders hakkında derinlemesine araştırma yapmayı öğrenmek ve pratik bilgiler kazanmayı sağlamaktır. Verilen ödevler hakkında, diğer öğrenciler ile birlikte çalışma teşvik edilmektedir. Çalışma grubu oluşturan öğrenciler, kendi başına çalışan öğrencilere göre sınavlarda daha başarılı olmaktadırlar. 

Ancak bir ödevi çözmek için başkaları ile birlikte çalışsanız bile, her bir sorunun çözümünü yardım almadan kendiniz yapmalısınız. Çözümünüzü bir araştırma yolu ile elde ederseniz (örn. bir internet araması), çözümü kendi cümle ve/veya kodunuz ile ifade etmelisiniz. Çözümü sözlü olarak sorulduğunda, öğrencinin açıklayabilmesi beklenmektedir. 

Verilen ödev bir kod ise, kendinizin yazması gerekmektedir. Hata ayıklamada başkalarından yardım alabilirsiniz. Kodda intihal tespiti için manuel ve otomatik mekanizmalar kullanılacaktır. İntihal, sınav içi kopya ve benzeri davranışlar disiplin yönetmeliğine göre cezalandırılır.

Categories
embedded-systems

Exams and Sample Questions

Vize

Final

Categories
embedded-systems

Project

Petalinux Tabanlı Cordic 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. Petalinux Ortamından Uart arayüzü üzerinden yakalanan veriler CORDIC IP’sile iletilip, sonuçları Uart üzerinden PC’e iletilecektir.

Proje detayları için tıklayınız.

Categories
embedded-systems

Homeworks

ÖdevKonuTarihSon Teslim TarihiTeslim Yöntemiİndirme
1Linux FundamentalsYazılı Olarak Ders Sınıfında Teslim