Categories
Embedded Systems Graduate

Midterm Sample Questions

Gömülü Sistemler

  1. Gömülü Sistem adı ne anlama gelmektedir?
  2. Bir gömülü sistemin planlanması aşamasında göz önünde bulundurulması gereken unsurlar nelerdir?
  3. Bir gömülü sistem uygulamasında kullanılabilecek hesaplama üniteleri neler olabilir? Avantaj ve dezavantajları ile karşılaştırarak açıklayınız.
  4. RISC-V organizasyonu nedir?

MCU & MPU Mimarisi

  1. Bir MCU’nun işlemci çekirdeği mimarisi aşağıda verilmektedir.

Buna göre;

  • Bu diyagramda yer alan “Program Counter” (PC) hangi görevi üstlenir?
  • “Memory Address Register” (MAR) ve “Memory Data Register” (MDR) arasındaki fark nedir?
  • Kontrol Birimi (Control Unit) CPU içerisindeki iş akışını nasıl düzenler?
  • ALU (Aritmetik Mantık Birimi) hangi temel işlemleri yerine getirir?
  • Sistem saati (System Clock) CPU’nun çalışmasını nasıl etkiler?
  1. Interrupt kavramını ve sistem performansı üzerindeki etkilerini açıklayınız. Kesme (interrupt) mekanizmasının normal program akışını nasıl değiştirdiğini, kesme vektör tablosunun rolünü ve kesme servis rutinlerinin (ISR) işleyiş biçimini detaylandırınız. Ayrıca, kesme meydana geldiğinde CPU’nun hangi adımları izlediğini ve sistemin bu durumdan nasıl güvenli bir şekilde çıktığını açıklayınız.
  2. GPIO pinlerinde buffer (ara bellek) devrelerinin ve enable hattının (enable line) rolü nedir? Hem giriş hem de çıkış yönünde veri akışını yöneten buffer devrelerinin nasıl çalıştığını, enable hattının bu süreçteki fonksiyonunu ve inverting (ters çevirme) mekanizmasının hangi durumlarda kullanıldığını açıklayınız.
  3. ADC’nin analog sinyali dijital forma çevirme sürecini, örnekleme hızının ve örnek bit genişliğinin önemini değerlendiriniz.
  4. DMA kontrolcüsünün (DMA Controller) veri transferlerini nasıl kendi başına yönetebildiğini, CPU üzerindeki yükü hangi yöntemlerle azalttığını açıklayınız.
  5. Watch Dog Timer’nin temel çalışma prensiplerini, zaman aşımı süresi sonunda sistemin nasıl otomatik olarak yeniden başlatıldığını ve yazılım tarafından düzenli olarak “yenileme” (kick) işleminin neden kritik olduğunu bir örnek ile açıklayınız.

Arayüzler (UART)

  • Bir UART paketinde 1 start bit, 8 data bit, even parity bit ve 1 stop bit kullanıldığında, nominal baud rate 9600 olduğuna göre efektif veri aktarım hızı kaç bit/s’dir?
  • Verilen 8 bit veri “10101100” için even parity bit değeri nedir?
  • Verilen 8 bit veri “11010110” için odd parity bit değeri nedir?
  • Bir sistemde 8 data bit, parity’siz, 1 start bit ve 1 stop bit kullanılarak UART ile veri iletimi yapıldığında, baud rate 38400 olduğuna göre efektif veri aktarım hızı ve saniyede gönderilebilecek bit sayısı nedir?
  • Aşağıda verilen UART transfer diyagramına göre karşı tarafa gönderilen 8 bitlik bilgi nedir? Even Parity için gönderilen parity bit’i doğru mudur?

  • Arayüzler (CAN)
  • CAN mesaj çerçevesinin yapısında hangi alanlar bulunur?
  • CAN arayüzünde mesaj iletiminde arbitraj süreci nasıl gerçekleşir?
  • CAN protokolünde hata tespiti nasıl gerçekleştirilir?

Arayüzler (I2C)

  • I2C arayüzünde master ve slave cihazlar arasındaki haberleşme nasıl organize edilir ve bu cihazlar hangi sinyalleri paylaşırlar?
  • I2C hattında kullanılan pull-up dirençlerinin görevi nedir ve neden bu dirençler olmadan iletişim sağlanamaz?
  • Bir veri aktarımı sırasında ACK/NACK bitleri hangi durumlarda kullanılır ve bu bitler iletişim akışını nasıl etkiler?
  • Bir I2C Master cihazı 0x15 adresli cihazın içindeki 0x10 nolu saklayıcıyı okumak istiyor. Bu saklayıcıdaki değerin ise 0x5 olduğu bilinmektedir. Buna göre master ve slave arasındaki iletim yapmayı sağlayan DATA (SDA) kablosundaki beklenen aktiviteyi bir waveform olarak çiziniz. Çizimde CLOCK (SCL) hattındaki aktiviteyi de gösteriniz.
  • Aşağıda bir I2C yazma aktivitesi diyagramı verilmektedir. Buna göre hangi adresli cihazın hangi saklayıcısına ne bilgisi yazılmıştır?

Arayüzler (SPI)

  • SPI protokolünde kullanılan hatlar (SCK, MOSI, MISO, SS) nelerdir ve her birinin işlevi nedir?
  • SPI modları (Clock Polarity ve Clock Phase) hangi kombinasyonlardan oluşur ve veri örnekleme zamanlamasını nasıl etkiler?
  • Birden fazla slave cihazın bağlandığı SPI hattında “Chip Select” (SS) sinyalleri nasıl yönetilir?
  • Aşağıda verilen SPI waveform’una göre (CPOL=0, CPHA=0), gönderilen ve alınan veri nedir?

Sensörler ile Sistem Tasarımı – Baremetal

Bu başlık altındaki soruları aşağıda UART, I2C, SPI erişim örnekleri içeren kod parçasındaki sözdizimi kullarına uyacak şekilde yanıtlayabilirsiniz.

int main(void) {
    
    init_system_clock();
    init_gpio();
    init_i2c();
    init_uart();
    init_spi();

    uint8_t sensor_data[2];
    char message[50];
    uint8_t sensor_address = 0x48;  // Örnek I2C cihaz adresi
    uint8_t sensor_reg = 0x00;      // Okunacak kayıt

    while (1) {
        
        i2c_read(sensor_address, sensor_reg, 2, sensor_data);
        sprintf(message, "Sensor Data: %02X %02X\n", sensor_data[0], sensor_data[1]);
        uart_send(message);

        spi_transfer(sensor_data, 2);

        uint8_t button_state = gpio_read(BUTTON_PIN);
        if (button_state) {
            gpio_write(LED_PIN, 1);
            uart_send("Button pressed: LED ON\n");
        } else {
            gpio_write(LED_PIN, 0);
            uart_send("Button not pressed: LED OFF\n");
        }

        delay(1000); // 1 saniye bekle
    }
    return 0;
}
  • Bir ev otomasyon sisteminde, ortam sıcaklığını izlemek amacıyla bir sıcaklık sensörü kullanılmaktadır. Bu sensör, I2C arayüzü ile MCU’ya bağlıdır ve iki register içermektedir:
    0. Register: Sensörün aktif/pasif durumunu kontrol etmekte olup, 0 değeri sensörün kapalı olduğunu, 1 değeri ise sensörün aktif olduğunu göstermektedir.
    1. Register: 8-bitlik sıcaklık ölçüm değerini içermektedir.

    Sistem, aşağıdaki işlemleri gerçekleştirecek şekilde tasarlanacaktır:
    – I2C üzerinden sensörün 0. register’ı okunarak, sensörün aktif olup olmadığı kontrol edilecektir.
    – Eğer sensör kapalı ise, I2C üzerinden gerekli komut gönderilerek sensör açılacaktır.
    – Sensör aktif olduğunda, 1. register’dan 8-bitlik sıcaklık verisi okunacaktır.
    – Okunan sıcaklık değeri, UART arayüzü üzerinden “Mevcut Sıcaklık: XX °C” formatında iletilecektir.
    – Bu işlem her 1 saniyede bir tekrarlanacaktır.

    Yukarıdaki senaryoyu gerçekleştirecek baremetal C kodunu yazınız.
  • Bir ev otomasyon sisteminde, odada insan varlığını algılayarak ışıkları otomatik olarak kontrol eden bir sistem tasarlanacaktır. Sistemde, I2C arayüzüne bağlı, iki register içeren bir varlık sensörü bulunmaktadır:
    0. Register: Sensörün çalışma durumunu içermektedir. Bu register 0 değerini içeriyorsa sensör kapalı; 1 değerini içeriyorsa sensör aktif durumdadır.
    1. Register: İnsan varlığını algılayan 8-bitlik veri içermektedir. (0: İnsan yok, 1: İnsan var)

    Ayrıca, MCU üzerinde bir GPIO çıkışı, odadaki ışığın kontrolünü sağlamaktadır (HIGH: Işık açık, LOW: Işık kapalı).

    Sistem, aşağıdaki işlemleri gerçekleştirmektedir:
    – I2C üzerinden sensörün 0. register’ı okunarak sensörün aktif olup olmadığı kontrol edilmektedir.
    – Eğer sensör kapalı ise, I2C komutları kullanılarak sensör aktif hale getirilmektedir.
    – Sensör aktif olduğunda, I2C üzerinden 1. register’dan insan varlığı durumu okunmaktadır.
    – Eğer sensör insan varlığı tespit ederse, GPIO çıkışı kullanılarak odanın ışığı açılmaktadır.
    – Işık, açıldıktan sonra 10 saniye boyunca açık kalmakta, sonrasında otomatik olarak kapatılmaktadır.
    – Her işlem döngüsünün sonunda UART üzerinden “İnsan var: Işık Açıldı” veya “İnsan Yok: Işık Kapalı” mesajı gönderilmektedir.
    – Tüm bu işlemler, 1 saniyelik periyodik döngüler şeklinde tekrarlanmaktadır.
    Yukarıdaki senaryoyu gerçekleştirecek baremetal C kodunu yazınız.

Sensörler ile Sistem Tasarımı – FreeRTOS

  • FreeRTOS nedir? FreeRTOS’un temel tanımı, özellikleri ve gerçek zamanlı işletim sistemi olarak kullanım avantajları nelerdir?
  • FreeRTOS’un gömülü sistemlerde tercih edilmesinin nedenleri, düşük kaynak tüketimi, esnek görev yönetimi ve güvenilirlik gibi avantajları nelerdir?
  • Görevlerin oluşturulması, zamanlanması (preemptive vs. cooperative scheduling) ve senkronizasyon araçları (semafor, mutex, kuyruk) kullanılarak çoklu görevlerin yönetimi nasıl sağlanır?
  • Bir akıllı ev sisteminde, oda içinde hareket algılandığında hem uyarı mesajı gönderilmesi hem de aydınlatmanın (LED kontrolü) aktif hale getirilmesi gerekmektedir. Bu sistemde, FreeRTOS kullanılarak iki farklı fonksiyon paralel olarak çalıştırılacaktır:

    – Hareket İzleme Fonksiyonu: Belirli aralıklarla hareket sensöründen (örneğin, dijital giriş pininden) veri okuyacaktır. Hareket tespit edildiğinde, bu bilgiyi bir kuyruk (queue) aracılığıyla diğer göreve iletecektir.
    -Raporlama ve LED Kontrol Fonksiyonu: Kuyruktan gelen hareket bilgisine göre, LED’i aktif hale getirecek (örneğin, GPIO çıkışı ile LED açılacak) ve UART üzerinden “Hareket Algılandı” mesajını gönderecektir. LED 5 saniye süre ile açık kaldıktan sonra otomatik olarak kapatılacaktır.

    Uygulamada, bu iki farklı fonksiyonun (hareket izleme ve raporlama/LED kontrol) ayrı FreeRTOS görevleri olarak tanımlanması ve paralel olarak çalıştırılması gerekmektedir. Ayrıca, görevler arası iletişim için kuyruk veya semafor gibi FreeRTOS senkronizasyon araçlarının kullanımı da zorunludur.

    Bu senaryoya göre, FreeRTOS kullanarak hareket sensörü verilerini okuyan ve bu veriye göre LED kontrolü ile UART üzerinden mesaj ileten bir uygulama geliştirin. Kodunuzda en az iki farklı fonksiyon tanımlanmalı (örneğin, “Hareket İzleme Fonksiyonu” ve “Raporlama ve LED Kontrol Fonksiyonu”), bu fonksiyonlar FreeRTOS görevleri olarak paralel başlatılmalı ve görevler arası iletişim kuyruk (queue) veya semafor kullanılarak sağlanmalıdır. FreeRTOS c kodunu yazınız.

Sensörler ile Sistem Tasarımı – Embedded Linux

  • Embedded Linux nedir? FreeRTOS ve baremetal uygulamalarla karşılaştırıldığında avantaj ve dezavantajlarını yorumlayınız.
  • Embedded Linux ortamında bash scriptlerinin kullanımıyla otomasyon nasıl sağlanır?
Categories
Embedded Systems Graduate

LMS

LMS (Learning Management System), some assignments will be required to be delivered through the LMS system.

Categories
Embedded Systems Graduate

Exams and Sample Questions

Midterm

Final

  • Final Sample Questions
Categories
Embedded Systems Graduate

Seminar Topics

TopicsTopic
1Safety Critical Interfaces
2Security of Interfaces
3Safety Critical OS
4RISC-V AI Applications
5RISC-V Quantum Applications
6Gyro Drift Compensation
Categories
Embedded Systems Graduate

Homeworks

HomeworkTopicDateDue DateDelivery MethodDownloadSolution
1TBA
Categories
Embedded Systems Graduate

Detailed Course Description

Course Description

Bu ders kapsamında, gömülü sistem uygulamalarında kullanılan MCU ve MPU mimarileri incelenecek ve çeşitli gömülü sistem uygulamaları geliştirilecektir. Dersin ilk bölümünde, sektörde yaygın olarak kullanılan MCU ve MPU’lar ile çeşitli sensörler entegre edilerek sistem tasarımı yapılacaktır. Dersin ikinci bölümünde ise, dünyanın en popüler açık kaynaklı işlemci mimarisi olan RISC-V tabanlı bir işlemci tasarlanacak ve doğrulaması gerçekleştirilecektir. Tasarım sürecinde Verilog ve SystemVerilog dilleri kullanılacak, doğrulama ise SystemVerilog ile yapılacaktır. Tasarlanan işlemciye UART, I2C, SPI gibi yaygın kullanılan arayüzler entegre edilecek; sıcaklık, GPS ve IMU gibi sensörlerle çalışan gömülü sistem uygulamaları geliştirilerek demoları gerçekleştirilecektir. RISC-V tabanlı geliştirmeler esnasında Xilinx Artix-7 FPGA’ler kullanılacaktır.

Course Hours (Theoretical + Lab)

TBA

Instructors

Assist. Prof. Vecdi Emre Levent

Prerequisites

There are no prerequisites.

Helpful Resources

Reference sources of the course are listed below.

  • Introduction to Logic Design, Third Edition, Alan B. Marcovitz, McGraw-Hill, 2010
  • Digital Design, Moris Mano and Michael D. Ciletti, 5th edition, Prentice Hall, 2009
  • FPGA Prototyping by Verilog Examples, Pong Chu, John Wiley, 2008
  • Introduction to Logic Design, Alan Marcovitz, McGraw Hill, 2010

Softwares

Xilinx Vivado 2024.2

Courses

The course has 3 hours of theory per week. It is expected that the course materials given by the lecturer will be reviewed before the lesson and repeated after the lesson. 

Learning Outcomes

  • RISCV Based CPU Design
  • Sensor Applications

Quizzes

There will be two quizzes during the semester. 30 minutes will be given. Quiz date will be announced one week in advance.

Grading

It is mandatory to attend classes at 80%.

Term grade; will be determined by midterm, labs, assignments, project and final exam. Evaluation percentages are given in the table below.

ActivitiesRates
Midterm%30
Homework/Quiz/Seminar%20
Final%40

5 points will be deducted for each hour that passes over the delivery time of homework and quizzes.

The weight and letter grade corresponding to the end of term grade are given in the table below.

MarkWeightLetter grade
90-1004.00AA
85-893.50BA
80-843.00BB
75-792.50CB
65-742.00CC
50-641.50DC
45-491.00DD
0 -440FF

Expected Effort

The effort table that the student is expected to show during the term is given below.

ContentHoursTimesSub Total
Lesson Preparation21428
Lesson Repetition21428
Homeworks4416
Course Lesson31545
Midterm and Final24248


Students are expected to spend an average of 165 hours during the semester to be successful in the course.

Coding Homeworks

Grading of coding assignments will be done by examining the accuracy, quality and details of the algorithmic implementation of the code.

Testing

Test entry and expected outputs will be shared for each assignment to be given. However, other test situations that have not been shared with you will be tried during the homework control. Code that takes longer to run than expected may be evaluated incorrectly.

Theory

The code should be the design of the desired algorithm. The optimal solution is not expected. But memory and runtime shouldn’t be too much than expected.

Written Assignments

The assignment should be written in your own handwriting. The homework answer sheet should contain the name of the course, student name and surname, student number and date. 

Academic Integrity

The aim of the homework is to learn to do in-depth research about the course and to gain practical knowledge. Working with other students on assigned assignments is encouraged. Students who form a study group are more successful in exams than students who study on their own.

But even if you work with others to solve an assignment, you must solve each problem yourself without help. If you obtain your solution through a search (eg an internet search), you should express the solution in your own sentence and/or code. When the solution is asked orally, the student is expected to be able to explain it.

If the given assignment is a code, you have to write it yourself. You can get help from others in debugging. Manual and automatic mechanisms will be used for plagiarism detection in code. Plagiarism, cheating in the exam and similar behaviors are punished according to the disciplinary regulations.

Categories
Embedded Systems Graduate

Lecture Notes

HaftaDersİndirme
1Giriş
2MCU, MPU, FPGA Mimarileri, Arayüzler
3Sensörler ile Sistem Tasarımı I, Baremetal
4Sensörler ile Sistem Tasarımı II, FreeRTOS
5Sensörler ile Sistem Tasarımı III, Embedded Linux

6RTL Tasarım I (Kombinasyonel Devreler)
7RTL Tasarım II (Ardışık Devreler, Durum Makinaları)
8RTL Tasarım III (Bellekler, Çoklu Clock Tasarımları ve SoC Konseptleri) + Temel Doğrulama
9Midterm
10AXI Arayüzleri ve AXI Arayüzlü Özel Donanım Geliştirme
11System Verilog Tabanlı Doğrulama
12RISC-V Mimarisi ve CV32E40P MCU Çekirdeği
13RISC-V Baremetal Derleyicileri ve FreeRTOS
14Çevre birimleri (GPIO, UART, Timer, I2C, QSPI, JTAG) ve Bellek Yapılandırmaları I + Sensörler
15Çevre birimleri (GPIO, UART, Timer, I2C, QSPI, JTAG) ve Bellek Yapılandırmaları II + Sensörler
16Fiziksel Çip Tasarım Süreci (OpenLane Araçları)
17Final

Categories
Embedded Systems Graduate

Syllabus

HaftaDers
1Giriş
2MCU, MPU, FPGA Mimarileri, Arayüzler
3Sensörler ile Sistem Tasarımı I, Baremetal
4Sensörler ile Sistem Tasarımı II, FreeRTOS
5Sensörler ile Sistem Tasarımı III, Embedded Linux
6RTL Tasarım I (Kombinasyonel Devreler)
7RTL Tasarım II (Ardışık Devreler, Durum Makinaları)
8RTL Tasarım III (Bellekler, Çoklu Clock Tasarımları ve SoC Konseptleri) + Temel Doğrulama
9Midterm
10AXI Arayüzleri ve AXI Arayüzlü Özel Donanım Geliştirme
11System Verilog Tabanlı Doğrulama
12RISC-V Mimarisi ve CV32E40P MCU Çekirdeği
13RISC-V Baremetal Derleyicileri ve FreeRTOS
14Çevre birimleri (GPIO, UART, Timer, I2C, QSPI, JTAG) ve Bellek Yapılandırmaları I + Sensörler
15Çevre birimleri (GPIO, UART, Timer, I2C, QSPI, JTAG) ve Bellek Yapılandırmaları II + Sensörler
16Fiziksel Çip Tasarım Süreci (OpenLane Araçları)
17Final