• Sonuç bulunamadı

Çip üzerinde sistem mimarili fpga kullanarak gerçek zamanlı görüntü işleme algoritmalarının gerçekleştirilmesi / Implementation of real time image processing algorithms by using system on chip fpga architecture

N/A
N/A
Protected

Academic year: 2021

Share "Çip üzerinde sistem mimarili fpga kullanarak gerçek zamanlı görüntü işleme algoritmalarının gerçekleştirilmesi / Implementation of real time image processing algorithms by using system on chip fpga architecture"

Copied!
82
0
0

Yükleniyor.... (view fulltext now)

Tam metin

(1)

FPGA KULLANARAK

(2)
(3)

II

ÖNSÖZ

Hem lisans hem de yüksek lisans eğitimim boyunca beni sürekli destekleyen ve fikirlerinden istifade ettiğim, beraber çalışma imkânı bulduğum değerli hocam Sayın Doç. Dr. Ayşegül UÇAR‟a bu çalışmamda da benim için çok değerli vaktini ayırdığı için teşekkürlerimi sunarım.

Bu çalışma, Fırat Üniversitesi Bilimsel Araştırma Projeleri (FÜBAP) komisyonu tarafından MF.17.33 proje numarasıyla desteklenmiştir. FÜBAP komisyonuna teşekkür ederim.

Son olarak da, hayatım boyunca her daim yanımda olan, sevgi ve desteklerini hiçbir zaman esirgemeyen aileme teşekkürü borç bilir, saygılarımı sunarım.

Recep ÖZALP ELAZIĞ-2018

(4)

III ĠÇĠNDEKĠLER Sayfa No ÖNSÖZ ... II ĠÇĠNDEKĠLER ... III ÖZET ... V SUMMARY ... VI ġEKĠLLER LĠSTESĠ ... VII TABLOLAR LĠSTESĠ ... IX KISALTMALAR LĠSTESĠ ... X

1. GĠRĠġ ... 1

2. ÇĠP ÜZERĠNDE SĠSTEM MĠMARĠLĠ FPGA’LAR... 4

2.1. FPGA ... 4

2.1.1. FPGA‟nın Yapısal Özellikleri ... 4

2.1.2. FPGA ile Yapılan Çalışmalar ... 7

2.2. Çip Üzerinde Sistem Mimarili FPGA‟lar ... 7

2.2.1. Zynq-7000 SoC ... 8

2.3. Gelişmiş Genişletilebilir Arayüz ... 10

2.3.1. AXI4-Stream Protokolü ... 12

2.3.2. AXI Doğrudan Bellek Erişimi ... 12

2.3.3. AXI VDMA ... 13

2.3.4. Zynq Platformunun Getirileri ... 13

2.3.5. Zynq Platformu Uygulama Alanları ... 14

2.3.5.1 Otomotiv ... 14

2.3.5.2. İletişim ... 15

2.3.5.3 Savunma ve Havacılık ... 15

2.3.5.4 Robotik, Kontrol ve Endüstri ... 16

2.3.5.5 Görüntü İşleme ... 16

2.3.5.6. Tıp ... 17

2.3.5.7. Yüksek Performanslı Hesaplama ... 17

2.4 Zynq-7000 Programlama Araçları... 17

2.4.1. Vivado Design Suite IDE ... 18

2.4.2. Xilinx SDK ... 19

2.4.3. Vivado Yüksek Seviyeli Sentez ... 20

2.4.4. Xilinx SDSoC-SDx ... 21

2.4.5. Matlab ... 22

3. ZYNQ ÜZERĠNDE ĠġLETĠM SĠSTEMĠ... 24

3.1. İşletim Sistemi ... 24

3.2. Zynq Üzerinde İşletim Sistemi ... 24

3.2.1. İşletim Sistemi Türleri ... 25

3.2.1.1. Bağımsız İşletim Sistemi ... 25

3.2.1.2. Gerçek Zamanlı İşletim Sistemleri ... 25

3.2.1.3. Linux ... 26

3.2.1.3.1. Linux Önyükleme ... 27

3.2.1.3.2. Zynq Önyükleme ... 28

4. GÖRÜNTÜ ĠġLEMEDE TEMEL KAVRAMLAR ... 30

(5)

IV

4.2. Renk Uzayları ... 30

4.3. Gri Seviye Görüntü ... 32

4.4. Sayısal Görüntü İşleme ... 32

4.5. Sayısal Görüntü İşlemede Temel Adımlar ... 32

5 DENEYSEL ÇALIġMA... 35

5.1. Kullanılan Donanımlar ... 35

5.1.1. Picozed Gömülü Görüntü İşleme Kartı ... 35

5.1.1.1. Xilinx XC7Z030-1SBG485C AP SOC Modül ... 36

5.1.1.2. Yapılandırma Kipleri ... 37

5.1.1.3. Saat Kaynağı... 37

5.1.1.4. HDMI Giriş/Çıkış FMC Birimi ... 37

5.1.2. Yüksek Çözünürlüklü Monitör ... 38

5.2. Kullanılan Yazılımlar ... 38

5.2.1. Vivado Design Suite ... 38

5.2.2. Xilinx SDSoC ... 40

5.3. Sistem ve Donanım Tasarımı ... 41

5.4. SDSoC Yazılımsal Programlama ... 43

5.4.1. Donanım Hızlandırmalı Hesaplama ... 45

5.4.1.1. Döngü Boru Hattı ve Döngü Açma ... 46

5.4.1.2. Döngü Borulama ve Açma ile Elde Edilen Paralelleştirmeyi Sınırlayan Faktörler ... 48

5.5. Yapılan Uygulamalar ... 48

5.5.1. Alınan Görüntüyü Ekrana Yansıtma ... 48

5.5.2. Gri Seviye Renk Dönüştürme... 50

5.5.3. Kenar Bulma Çalışmaları ... 52

5.5.3.1. Görüntü Gradyanı ... 52

5.5.3.2. Görüntüde Konvolüsyon ... 52

5.5.3.3. Gradyan İşleçleri ... 53

5.5.3.4 Kenar Bulma Uygulaması ... 56

6. SONUÇLAR... 59

KAYNAKLAR ... 61

EKLER ... 68

(6)

V

ÖZET

Bu tezde, gri seviye görüntü dönüşümü ve kenar bulma algoritmaları, Zynq-7000 mimarisine sahip FPGA üzerinde gerçek zamanlı olarak uygulanmıştır.

Oluşturulan deney düzeneğinde, gömülü sistem uygulaması için Picozed gömülü görüntü işleme kartı kullanılmıştır. Kullanılan kart, üzerinde Xilinx Zynq-7000 mimarisine sahip XC7Z030 FPGA barındırmaktadır. Zynq-7000 mimarisi ARM işlemci ve FPGA bloklarına sahip olduğu için, yazılımsal ve donanımsal olarak programlanabilir yapıdadır. Bu iki yapı arasındaki iletişim Gelişmiş Genişletilebilir Arayüz (AXI-Advanced eXtensible Interface) üzerinden sağlanmaktadır. Ayrıca, ARM işlemci bir işletim sistemi kullanmaya da imkân tanımaktadır. Xilinx tarafından sağlanan Linux işletim sistemi, FPGA‟da kullanılan donanımlar ve kartın barındırdığı donanımlar için sürücü desteği sağlamaktadır.

Bu tezde, kartın programlanmasında Yazılım Tanımlı Çip Üzerinde Sistem (SDSoC-Software Defined System on Chip) programlama ortamı seçilmiş ve AVNET tarafından sağlanan Picozed uyumlu SDSoC görüntü işleme platformu kullanılmıştır. Programlamada, C/C++ dilleri kullanılarak kartta kurulan Linux işletim sisteminde çalışan proje oluşturulmuştur. Görüntü işleme uygulamaları için aynı ortam donanımsal programlama yapmayı da mümkün kılmıştır. Donanımsal olarak gerçekleştirilmek istenen hesaplamalar, donanım hızlandırmalı hesaplama yapısı sayesinde doğrudan aynı ortamda tasarlanmıştır. Seçilen görüntü işleme uygulamaları; 1920X1080 piksel çözünürlükte, 60 çerçeve/saniye hızında gerçek zamanlı olarak gerçekleştirilmiştir. Uygulanan kenar bulma algoritmaları, Sobel, Prewitt ve Roberts kenar tespit yöntemleridir. Gömülü sistemin HDMI girişinden alınan görüntü verileri işlenerek HDMI protokolünde çıkışa aktarılmıştır.

Tezde her bir uygulama, hem yazılımsal hem de donanımsal olarak gerçekleştirilmiş ve performansları karşılaştırılmıştır.

Anahtar Kelimeler: FPGA, Zynq-7000, Picozed gömülü görme kartı, SDSoC, Kenar

(7)

VI

SUMMARY

IMPLEMENTATION OF REAL TIME IMAGE PROCESSING ALGORITHMS BY USING SYSTEM ON CHIP FPGA ARCHITECTURE

In this thesis, gray level image transformation and edge detection algorithms are implemented in real time on Zynq-7000 architecture FPGA.

In the experimental setup created, Picozed embedded vision card was used for embedded system application. The card used contains the XC7Z030 FPGA with Xilinx Zynq-7000 architecture. Zynq-7000 architecture is software and hardware programmable because it has ARM processor and FPGA blocks. Communication between these two structures is provided via the Advanced Extensible Interface (AXI). The ARM processor also allows the use of an operating system. The Linux operating system provided by Xilinx provides driver support for the hardware used in the FPGA and the hardware the card contains.

In this thesis, the Software Defined System on Chip (SDSoC) programming environment was chosen for the card programming and the Picozed compatible SDSoC image processing platform provided by AVNET was used. In the program, a project that runs on the Linux operating system installed on the card was created using C/C ++ languages. It is also possible to do the same media hardware programming for image processing applications. The hardware calculations are designed directly in the same environment thanks to the hardware accelerated calculation structure. Selected image processing applications; It was realized in 1920X1080 pixel resolution, 60 frames/second in real time.Applied edge detection algorithms are Sobel, Prewitt and Roberts edge detection methods. The image data received from the HDMI input of the embedded system is processed and transferred to the output in the HDMI protocol.

In this thesis, each application was realized both in software and hardware and their performances were compared.

(8)

VII

ġEKĠLLER LĠSTESĠ

Sayfa No

Şekil 2.1. FPGA‟nın içyapısı ... 5

Şekil 2.2. FPGA mantıksal tasarım devresi ... 5

Şekil 2.3. SoC mimarisi ... 8

Şekil 2.4. Zynq-7000 mimarisi ... 9

Şekil 2.5. Zynq-7000 temel yapısı ... 10

Şekil 2.6. AXI4 okuma protokolü ... 11

Şekil 2.7. AXI4 yazma protokolü ... 12

Şekil 2.8. Vivado HLS aracı IP çekirdek oluşturma aşamaları ... 20

Şekil 3.1. GNU/Linux mimarisi ... 26

Şekil 3.2. Zynq Linux önyükleme aşamaları ... 29

Şekil 4.1. Görüntü verilerinin gösterimi ... 30

Şekil 4.2. YUV biçimi renk yoğunlukları ve değerleri... 31

Şekil 4.3. Sayısal görüntü işleme aşamaları ... 33

Şekil 5.1. Picozed gömülü görüntü işleme kartı ... 35

Şekil 5.2. Picozed gömülü görme kartı donanım şeması ... 36

Şekil 5.3. Xilinx XC7Z030-1SBG485C AP SOC modül ... 36

Şekil 5.4. HDMI ve kamera birimi ... 37

Şekil 5.5. Yüksek çözünürlüklü monitör ... 38

Şekil 5.6. IP çekirdek kullanımı ... 39

Şekil 5.7. Vivado Design Suite iş akış şeması ... 39

Şekil 5.8. SDSoC platformu bölümleri ... 41

Şekil 5.9. Tasarlanan sistemin temsili gösterimi ... 42

Şekil 5.10. Vivado Design Suite donanımsal yapı veri taşınım aşaması ... 44

Şekil 5.11. SDSoC projesinin genel yapısı ... 44

Şekil 5.12. SDSoC donanım hızlandırmalı hesaplama iş akışı... 45

Şekil 5.13. Döngü borulama ... 46

Şekil 5.14. Alınan görüntünün ekrana yansıtılması uygulama görseli ... 49

Şekil 5.15. Gri seviye renk dönüşümü uygulama görseli ... 51

Şekil 5.16. Görüntüde konvolüsyon işlemi ... 53

(9)

VIII

Şekil 5.18. Prewitt işleci ... 55

Şekil 5.19. Sobel işleci ... 55

Şekil 5.20. Roberts işleci ... 56

Şekil 5.21. Prewitt filtresi uygulanmış örnek görüntü ... 57

Şekil 5.22. Roberts filtresi uygulanmış örnek görüntü ... 57

(10)

IX

TABLOLAR LĠSTESĠ

Sayfa No

Tablo 5.1. Alınan görüntünün ekrana yansıtılmasında kullanılan FPGA kaynakları ... 49

Tablo 5.2. Uygulama işlem süreleri karşılaştırması ... 50

Tablo 5.3. Gri seviye renk dönüşümü uygulamasında kullanılan FPGA kaynakları ... 51

Tablo 5.4. Uygulama işlem süreleri karşılaştırması ... 52

Tablo 5.5. Kenar bulma uygulamasında kullanılan FPGA kaynakları ... 58

(11)

X

KISALTMALAR LĠSTESĠ

FPGA : Alanda Programlanabilir Kapı Dizileri-Field Programmable Gate Array CLBs : Yapılandırılabilir Lojik Bloklar-Configurable Logic Blocks

VLSI : Çok Geniş Ölçekli Tümleşim-Very Large Scale Integration LUT : Başvuru Tablosu -Look-Up Table

ASIC : Uygulamaya Özgü Tümleşik Devre-Aplication Specific Integrated Circuit VHSIC : Çok Hızlı Tümleşik Devreler-Very High Speed Integrated Circuit

VHDL : VHSIC Donanım Tanımlama Dili-VHSIC Hardware Description

Language

SRAM : Statik Rastgele Erişimli Bellek-Static Random Acces Memory SoC : Çip Üzerinde Sistem-System on Chip

DWT : Ayrık Dalgacık Dönüşümü-Discrete Wavelet Transform

IDWT : Ters Ayrık Dalgacık Dönüşümü-Inverse Discrete Wavelet Transform DSP : Dijital Sinyal İşlemcisi-Digital Signal Processing

AXI : Gelişmiş Genişletilebilir Arayüz-Advanced eXtensible Interface AMBA : ARM Gelişmiş Mikrodenetleyici Veriyolu Mimarisi-Advanced

Microcontroller Bus Architecture

IP : Fikri Mülkiyet-Intelectual Property

ADAS : Gelişmiş Sürücü Destek Sistemleri-Advanced Driver Assistance Systems GPS : Küresel Konumlandırma Sistemi-Global Positioning System

PS : İşlemci-Processing System

PL : Programlanabilir Lojik-Programmable Logic

IDE : Entegre Tasarım Ortamı-Integrated Development Kit

XSDK : Xilinx Yazılım Geliştirme Ortamı-Xilinx Software Development Kit HLS : Yüksek Seviyeli Sentez -High Level Synthesis

SDSoC : Yazılım Tanımlı SoC-Software Defined SoC DMA : Doğrudan Bellek Erişimi-Direct Memory Acces

POSIX : İşletim Sistemi Arabirimi-Portable Operating System Interface for Unix GUI : Grafiksel Kullanıcı Arayüzü-Graphical User Interface

RTOS : Gerçek Zamanlı İşletim Sistemi-Real Time OS SCI : Sistem Çağrı Arayüzü-System Call Interface BSP : Bord Destek Paketi-Board Support Package

FSBL : Birinci Aşamalı Önyükleyici-First Stage Bootloader RAM : Rasgele Erişimli Bellek -Random Access Memory- SSBL : İkinci Aşamalı Önyükleyici-Second Stage Bootloader SOM : Birim Üzerinde Sistem-System On Module

(12)

1

1. GĠRĠġ

Son teknolojik gelişmeler hayatı hızlı bir hale getirmiştir. Hayatın hızlanmasıyla daha hızlı cihazlara gereksinim eskisinden çok daha fazla artmaktadır. Bu alanda birçok çalışma yapılmasına ve gelişmeler olmasına rağmen hayat, sürekli daha hızlısına muhtaç bir hale evirilmektedir. Bu ihtiyaç hayatın her alanında etkisini göstermektedir. Ekonomiden sağlığa, ulaşımdan güvenliğe ve haberleşmeye kadar çoğu alan çok daha hızlı sistemlere ihtiyaç duymaktadır.

Günümüzde artık bütün sistemler dijital olma yolunda ilerlemektedir. Artık çoğu işler dijital cihazlar sayesinde yapılmaktadır. Dünyadaki hızlanmadan kasıt, aslında dijital cihazların hızlanmasıdır. Dijital sistemler ne kadar hızlıysa hayat da o kadar hızlı olacaktır. Bu sebeple hızlanma gereksinimine çare olarak dijital sistemleri hızlandırmaya yönelik sayısız çalışma yapılmaktadır.

Klasik dijital işlemciler, seri işlem yapma özelliğine sahip olduğundan işlem süresi kullanılan işlemcinin hızına bağlı olarak değişir. Ayrıca dijital işlemcilerde programlama işlemi önceden oluşturulmuş sabit mimari üzerinde gerçekleşir. Bu mimari üzerinde gerçekleştirilen işlemlerin yoğunluğuna göre işlem süresi uzar ya da kısalır. Kapsamlı işlemlerin olduğu uygulamalarda işlem süresi artmaktadır. Hız gerektiren sistemler için seri işlem özelliğine sahip işlemciler yeterli olmamakta bunun yerine paralel işlem yeteneğine sahip işlemciler kullanılmaktadır. Paralel hesaplama yeteneğine sahip cihazlardan biri de Alanda Programlanabilir Kapı Dizileri (FPGA-Field Programmable Gate Array)‟lardır. FPGA‟lar özelleştirilebilir mimari yapıya sahip olduklarından kullanıcı isteklerine cevap verecek niteliktedir. Ayrıca paralel programlamaya imkân tanıması, eşzamanlı iş yükü olan sistemlerde çok önemli bir çözüm olarak ön plana çıkmaktadır. Ancak esnek programlamayı sağlarken yapısında bir dezavantaj oluşur. Esnek programlamaya imkân tanıyan kapı blokları silikon yapının çok verimsiz kullanılmasına neden olur [1]. Bu dezavantajı ortadan kandırmak için Çip Üzerinde Sistem (SoC- System on Chip) mimarili FPGA‟lar üretilmiştir. Bu FPGA‟lar, programlanabilir FPGA bloklarının yanında bir de aynı çip üzerinde ARM-A9 mikro denetleyicisi barındırır. Bu sayede çok önemli hız ve paralellik gerektiren işlemler için FPGA blokları kullanılabilecek, görece daha az hız gerektiren sistemlerde gereksiz FPGA blokları kullanımından kaçınmak sağlanacaktır. Ayrıca bu yapı programlamada da bir esneklik sağlar. Böylece, çalışmalar için çok önemli bir konumda bulunmayan yan uygulamalar için

(13)

2

görece zor bir programlama yapısına sahip FPGA programlamaya harcanacak zaman da azaltılmış olur. Günümüzde artık birçok gömülü sistem tasarımında bu şekilde heterojen bir yapıya sahip tasarımlar kullanılmaktadır [2].

Sayısal hesaplama hızlarının artmasıyla beraber, yüksek işlem kapasitesine ihtiyaç duyan görüntü işleme uygulamaları da yaygınlaşmaktadır. Tıp, güvenlik, askeri, endüstri, bilimsel araştırmalar, otomotiv, havacılık gibi geniş uygulama alanına sahiptir [3]. Görüntü işleme uygulamalarının 2013 yılında yapılan bir araştırmada yaklaşık olarak 25 milyar dolar pazar payına sahip olduğu tespit edilmiştir [4]. Günümüzde bu rakamın teknolojik gelişmelerle beraber en az 10 katına çıktığı tahmin edilebilir. Görüntü işleme uygulamalarında birçok piksele sahip görüntülerin kısa zamanda işlenmesi gerekir. FPGA‟ların görüntü işleme uygulamalarında kullanılma sebebi; enerji verimliliği, paralel işlem kapasitesi yetenekleridir. FPGA‟lar birçok gerçek zamanlı uygulamalar için tercih edilmiştir [5].

Neshatpour, Arezou ve diğerleri [6]; Xilinx Zynq-7000 FPGA üzerinde büyük biyomedikal verilerin donanım hızlandırmalı hesaplama kullanılarak işlenmesi çalışması yapmışlardır.

Onat [7], Sobel, Pprewit ve Laplace filtreleri kullanarak gerçek zamanlı video sinyallerinin işlenmesini gerçekleştirmiştir. Bu çalışmayı Onat, Xilinx Zynq-7000 FPGA‟sı üzerinde donanımsal olarak gerçekleştirmiştir.

Han ve Oruklu [8], gerçek zamanlı trafik işareti algılama işleminde Zynq-7000 kullanmıştır.

Abdelgawad, Safar ve Wahba [9]; Zynq-7000 üzerinde gerçekleştirdiği çalışmalarında; yüksek seviyeli sentez ortamında Canny kenar algılama algoritması gerçekleştirmiştir.

Dobai ve Sekanina [10], görüntü filtreleme işlemlerini Zynq platformu üzerinde gerçekleştirmişlerdir.

Russel ve Fischaber [11], Zynq platformu üzerinde OpenCV temelli yol çizgilerini algılama çalışması yapmıştır.

Ayadi, Loukil ve diğerleri [12], Zynq platformu üzerinde Linux işletim sistemi kullanarak Yüksek Verimli Video Kodlaması uygulamasını gerçek zamanlı olarak gerçekleştirmiştir.

Yu, Yang ve diğerleri [13], gerçek zamanlı yaya izleme için ölçeklenebilir donanım/yazılım platformu çalışmasını Zynq-7000 platformunda gerçekleştirmiştir.

(14)

3

Khongprasongsiri, Kumhom ve diğerleri [14], gerçek zamanlı şerit tanıma sistemini yüksek seviyeli sentez kullanarak Zynq-7000 üzerinde 130 çerçeve/saniye hızında ve 480x270 piksel çözünürlükte gerçekleştirmiştir.

Srijongkon, Duangsoithong ve diğerleri [15], araç sayma sistemini; adaptif arka plan yöntemini kullanarak SDSoC ortamında programlayarak Zynq üzerinde gerçekleştirmişlerdir.

Yao, Liu ve diğerleri [16], lazer profil ölçümü çalışmasını Zynq platformunda gömülü olarak gerçekleştirmiştir.

FPGA‟lar daha birçok görüntü işleme uygulamasında kullanım alanı bulmuştur [17-22].

Tezin amacı; günümüzde geniş uygulama alanına sahip bazı temel görüntü işleme uygulamalarını, çip üzerinde sistem mimarili FPGA kullanarak, yüksek çözünürlükte ve gerçek zamanlı olarak gerçekleştirmektir.

Bu tez, dört ana bölümden oluşmaktadır. Birinci bölüm, FPGA‟lar ve Zynq mimarisine sahip FPGA‟lar ile ilgilidir. Bu bölümde, FPGA‟ların temel yapısından Zynq mimarisine evirilmesi, bu mimarinin özellikleri, faydaları ve kullanım alanlarına değinilmiştir.

Tezin ikinci bölümünde, Zynq mimarisinin desteklediği işletim sistemi yapıları ve özel olarak tezde de uygulama kısmında kullanıldığı için Linux işletim sisteminden bahsedilmiş ve temel yapısı ve çalışma mantığı üzerinde durulmuştur.

Üçüncü bölümde, tezin ana konusunu oluşturan görüntü işleme algoritmaları üzerinde durulmuş, çalışma yapısı ve türleri hakkında bilgi verilmiştir.

Son bölüm ise önceki bölümlerde anlatılan konuların Zynq platformu üzerinde gerçek zamanlı uygulamaları yapılmıştır. Bu uygulamalar; alınan görüntüyü doğrudan iletme, gri seviye renk dönüşümü ve kenar bulma çalışmalarını kapsamaktadır.

(15)

4

2. ÇĠP ÜZERĠNDE SĠSTEM MĠMARĠLĠ FPGA’LAR

2.1. FPGA

1985 yılında aynı zamanda Xilinx‟in kurucusu Ross Freeman tarafından icat edilen FPGA‟lar, mimari yapısı itibariyle lojik bloklar ve ara bağlantılarından oluşan ve bu bağlantıların tamamı kullanıcı tarafından programlanabilen entegre devreleridir.

Tasarımcı, FPGA‟da tasarlayacağı devreyi donanım tanımlama dilini VHSIC Donanım Tanımlama Dili (VHDL- VHSIC Hardware Description Language) ya da Verilog kullanarak tasarlar. Yazılan kod bilgisayar destekli tasarım yazılımı yardımıyla, sentezlenir. Başka bir yazılım aracı kullanılarak daha önce sentezlenmiş koda karşılık gelen uygun bağlantılar FPGA içinde gerçekleştirilir. Gerekli veri akışı oluşturulduktan sonra yazılım, kodları FPGA içerisine aktararak FPGA‟yı programlar [23].

2.1.1. FPGA’nın Yapısal Özellikleri

Sayısal elektronikte zaman içerisinde yaşanan gelişim çok büyük ölçekli sistemlerin tasarımını da beraberinde getirmiştir. Yarıiletken ve üretim teknolojilerinde gelinen nokta sayesinde bugün Çok Geniş Ölçekli Tümleşim (VLSI-Very Large Scale Integration) çipleri içerisinde milyonlarca transistor bulunmaktadır. Malzeme ve üretim teknolojilerinin daha iyi noktalara tasınmış olması bunun son ürünlere de yansıtılması gerekliliğini beraberinde getirmektedir. Nitekim gelişen teknoloji yanında tüketici istekleri de artan oranda büyümektedir. Bilimdeki gelişmeleri mühendislik anlayışı içerisinde en kısa sürede ve verimlilikte tüketiciye ulaştırabilmek amacıyla yeni araç ve gereçler mühendislerin hizmetine sunulmaktadır. FPGA sayısal tasarım mühendislerinin, bilimin yarattığı imkânları teknolojiye yansıtabilmesi için geliştirilmiş bir çiptir [24]. FPGA‟lar üç temel yapıdan oluşmaktadır. Bunlar: programlanabilir mantık blokları (CLBs- Configurable Logic Blocks), giriş çıkış blokları (I/O-Input/Output) ve ara bağlantı bloklarıdır. Şekil 2.1‟de FPGA ların temel yapısı gösterilmiştir.

(16)

5

GiriĢ ÇıkıĢ Blokları

Mantık Blokları Ara Bağlantılar

ġekil 2.1. FPGA‟nın iç yapısı

FPGA, içerisinde bulunan tipik bir mantık devresi flip-flop dizileri arasına sıkıştırılmış tümleşik mantık bloklarından oluşmaktadır. Tümleşik bloklar, çıkışı yalnızca girişine bağlı olan alt devreler olarak bilinmektedir. İki girişli AND, OR gibi tüm iyi bilinen basit mantıksal fonksiyonlar bu gruba dahildir. Herhangi bir karmaşıklık seviyesinde olan bir fonksiyon bu basit bloklar kullanılarak gerçeklenebilir. Yol seçiciler (multiplexer), kodlayıcılar (encoder), kod çözücüler (decoder) gibi yapılar tümleşik bloklara örnekler olarak verilebilmektedirler. Bu devrenin girdisi birçok bitten oluşabilir. Şekil 2.2‟de bu flip flop devresinin tasarımı gösterilmektedir.

D Q FF D Q FF GİRİŞ CLK ÇIKIŞ LOJİK

(17)

6

Bugün gelinen nokta itibariyle FPGA üretimi alanında, çok fazla sayıda olmamakla birlikte çeşitli üretici firmalar mevcuttur. Bu firmaların geliştirdiği FPGA‟lar farklı mimarilere ve üretim teknolojilerine dayanmaktadır. Farklı mimarilerin ve teknolojilerin birbirlerine göre üstünlükleri, güvenlik, güç tüketimi ve maliyet gibi ölçütlere göre değerlendirilir [25]. FPGA‟lar, üretici firmalara göre değişen farklı mimarilere sahip olmasının yanında temel olarak tasarım yapılandırmasının büyük kısmını Statik Rastgele Erişimli Bellek (SRAM-Static Ramdom Access Memory) hücreleri ile sağlar. Bu nedenle binlerce kez programlanabilir bir yapıya sahiptirler. FPGA‟lar programlanırken hedeflenen mantıksal yapıyı gerçekleştirmek için farklı yapıları kullanabilirler. MUX ve LUT tabanlı hücre mimarileri en çok kullanılan hücre mimarileridir [26]. Başvuru Tablosu (LUT-LookUp Table) tabanlı hücre mimarisine sahip bir FPGA‟da, mantık hücreleri giriş sinyallerinin alacağı her değer için sonucun ne olacağının tutulduğu bir başvuru tablosu içermektedir. MUX tabanlı hücre mimarisinde ise bir mantık hücresi sadece çoğullayıcılardan oluşur ve istenen fonksiyon bu yapılarla gerçeklenir.

FPGA‟lar, sabit fonksiyonlu Uygulamaya Özgü Tümleşik Devre (ASIC-Application-Specific Integrated Circuit) teknolojisine göre birçok getirisi vardır. ASIC‟ler, genel olarak istenilen bir devreyi elde etmek için aylarca sürebilen üretim aşamalarına ve yüksek miktarda maliyetlere sahiptir. Buna karşın FPGA‟lar, bir saniyeden daha kısa bir sürede yapılandırılabilirlik ve tasarımda herhangi bir hata oluşması durumunda sürekli olarak yeniden programlanabilir bir yapı sunmaktadır. Ayrıca FPGA teknolojisine, birkaç dolardan başlayıp birkaç bin dolara kadar olan düşük maliyetlerle her yerde sahip olma imkânı bulunmaktadır [27]. FPGA teknolojisi iletişim, mobil telefonlar gibi pek çok yeni uygulamalarda en uygun mikro elektronik teknolojisi olmaya başlamıştır. Bunun nedenleri genel olarak, bu cihazların oldukça yüksek kapasiteli ve düşük maliyetli olmaları ve elektronik tasarım araçları kullanılarak kısa tasarım süreçleri ile hızlı bir şekilde piyasaya sunulmaları olarak gösterilebilir. VLSI, ASIC cihazlarının geliştirilmesindeki yüksek maliyet ve üretim sonrasında tasarım değişikliklerinin uygulanışının yetersiz kalmasından dolayı FPGA bu cihazlara göre büyük fayda sağlamaktadır [28]. FPGA‟ların sahip olduğu paralel, hızlı işlem yapabilme yeteneği ve sahada birçok kez yeniden programlanabilir olması gibi özellikleri bu cihazların endüstride ve akademik araştırmalarda geniş bir şekilde kullanılmasına olanak tanımıştır. FPGA‟lar, güç kalitesi ile ilgili çalışmalarda [29,30], gerçek zamanlı görüntü işlemede [31], yapay sinir ağlarının donanımsal olarak gerçekleştirilmesinde [32, 33], Ayrık Dalgacık Dönüşümü (DWT- Discrete Wavelet

(18)

7

Transform) ve Ters Ayrık Dalgacık Dönüşümü (IDWT-Inverse Discrete Wavelet Transform) gibi sinyal işleme algoritmalarının uygulanmasında etkili bir şekilde kullanım alanı bulmuştur [34, 35].

2.1.2. FPGA ile Yapılan ÇalıĢmalar

[36]‟da yapılan çalışmada FPGA‟da tasarlanan algoritma sayesinde robot kontrolü gerçekleştirilmiştir. FPGA‟nın hızlı paralel işlem yeteneğinden faydalanılarak gerçekleştirilen 3 boyutlu bir görüntüleme sistemi başka bir çalışmadır [37]. [38]‟de Online güç kalitesi izleme sisteminin tasarımında LabVIEW yazılımı ve CompactRIO donanımı kullanılarak FPGA‟da gerçekleştirilmiştir. [39]‟de yine LabVIEW yazılımı ve CompactRIO donanımı kullanılarak bir asenkron motor için gerçek zamanlı durum izleme uygulaması gerçekleştirilmiştir. FPGA‟da yapılan elektrik enerji sistemlerinde güç kalitesi analizi de yapılan çalışmalardan biridir [40]. [41]‟te Tıp alanında yapılan bir çalışmada kalp atışlarının analizi ile hastalık teşhis çalışmaları yapılmıştır. Bu gibi çok sayıda çalışma FPGA‟ların üstün özelliklerinden faydalanılarak yapılmıştır [42-45].

2.2. Çip Üzerinde Sistem Mimarili FPGA’lar

SoC, tek bir çip içerisinde birden fazla işe uygun mimarilerin uygulanmasıyla oluşturulmuş yapıya verilen addır. SoC terimi genellikle ASIC uygulamalarında kullanılmaktadır. ADC-DAC çeviricilerin tek bir çip üzerinde tasarlanmasıyla oluşturulmuş devreler buna örnek olarak verilebilir.

FPGA‟larda SoC terimi, tek bir çip üzerinde hem bir işlemci mimarisini hem de programlanabilir lojik blokları barındırması anlamında kullanılmaktadır. Şekil 2.3‟te bu mimarinin temsili yapısı görülmektedir.

(19)

8

Programlanabilir Lojik

Mikrodenetleyici

AXI Arayüzü

ġekil 2.3. SoC mimarisi [46]

2.2.1. Zynq-7000 SoC

Zynq, Xilinx tarafından geliştirilen FPGA blokları ve ARM Cortex A-9 işlemcisinin aynı programlanabilir çip üzerinde bulunduğu cihazlardır. Bu cihazlara Zynq (çinko) ismi, tıpkı çinko gibi birçok alanda kullanılmaya uygun olduğu için verilmiştir. Esnek olması ve çok çeşitli platformlar için uygun olması ile Zynq cihazları, birçok metalle alaşım yapmaya uygun çinko metaline benzetilmektedir [47].

Zynq‟in en önemli ve belirgin özelliği, çift çekirdek ARM Cortex A-9 işlemcisinin, FPGA mantıksal işlem bokları ile birleştirmiş olmasıdır. Zynq, Linux gibi bir işletim sistemini çalıştırmaya uygun ARM A-9 işlemciyi ve Xilinx-7 serisi FPGA bloklarını barındırmaktadır [48]. Ayrıca Xilinx-7 serisi mimari, Dijital Sinyal İşlemcisi (DSP- Digital Signal Processing) bloklarına da sahiptir. Bu mimari, işlemci ve programlanabilir bloklar arasında yüksek bant genişliği ve düşük gecikme süresi sağlayan endüstri standardı, AXI arayüzü ile tamamlanmaktadır [49]. Bu şekilde iki farklı platformun birleştirilmesi, her iki platformun farklı uygulamalar için en ideal şekilde kullanılmasını mümkün kılmaktadır. Şekil 2.4‟te bu mimarinin yapısal gösterimi yer almaktadır.

(20)

9

ġekil 2.4. Zynq-7000 mimarisi [50]

Zynq platformunda işlemci tarafından kullanılabilen bazı çevresel donanımlar doğrudan FPGA bloklarına bağlıdır. Bu yapı nedeniyle Zynq çipinde bulunan ARM işlemci bu çevresellere doğrudan erişemez. Çevresellere erişim ancak programlanabilir bloklarla tasarlanacak donanımlarda AXI arayüzü kullanılarak sağlanabilir. Hâlihazırda Xilinx tarafından sağlanan hazır IP bloklar bu iletişim tipini destekler yapıda tasarlanmıştır. Kullanıcı tarafından tasarlanacak IP bloklara da bu arayüz eklenerek çevresellere ARM işlemci erişimi sağlanabilir. Bu yapı Şekil 2.5‟te gösterilmiştir.

(21)

10 BELLEK İŞLEMCİ ÇEVRESEL 1 ÇEVRESEL 2 ÇEVRESEL 3 AXI PROGRAMLANABİLİR LOJİK

ġekil 2.5. Zynq-7000 temel yapısı [46]

2.3. GeliĢmiĢ GeniĢletilebilir Arayüz

Gelişmiş genişletilebilir arayüz, 1996 yılında piyasaya sürülen mikrodenetleyici veri yollarının bir ailesi olan ARM Gelişmiş Mikrodenetleyici Veriyolu Mimarisi (AMBA-Advanced Microcontroller Bus Architecture)‟nin bir parçasıdır. ARM AMBA protokolleri, SoC içindeki fonksiyonel blokların bağlantısı ve yönetimi için açık standart, çip arası bağlantı ara yüzüdür. Çok sayıda kontrolör ve çevre birimi ile çoklu işlemci tasarımlarının geliştirilmesini kolaylaştırır [51].

AXI‟nin ilk sürümü 2003'te piyasaya sürülen AMBA 3.0‟dır. 2010'da piyasaya sunulan AMBA 4.0 AXI4; AXI‟nin ikinci büyük sürümünü içermektedir. AXI4, AXI4-Lite, AXI4-Stream olmak üzere üç tip AXI4 arabirimi vardır.

AXI4, bellek eşlemeli(memory mapped) ara yüzler içindir ve tek bir adreslemeyle 256 bit veri aktarım döngüsüne kadar yüksek veri aktarımına izin verir.

AXI4-Lite; basit, tek bir veri alışverişli bellek eşlemeli bir arabirimdir hem tasarımda hem de kullanımda çalışmak için basit bir ara yüzdür.

AXI4-Stream, bir adres aşaması gereksinimini tamamen ortadan kaldırır ve sınırsız veri çoğaltma boyutuna izin verir. AXI4-Stream arayüzleri ve transferleri adres fazlarına sahip değildir ve bu nedenle hafıza haritası olarak kabul edilmez.

(22)

11

Xilinx, AXI arayüzünde standartlaşarak, geliştiricilerin sadece IP (Intelectual Property) için tek bir protokol öğrenmelerini yeterli kılmıştır. Birçok IP sağlayıcıları AXI protokolünü desteklemektedir.

AXI, birbiriyle bilgi alışverişi yapan IP çekirdeklerini temsil eden, tek bir AXI master ve AXI slave arasındaki bir arabirimi tanımlar. Birden fazla bellek eşlemeli AXI master ve slave, AXI altyapısına sahip IP blokları kullanılarak birbirine bağlanabilir. AXI4-Lite arayüzleri beş farklı kanaldan oluşur:

• Okuma Adresi Kanalı, • Yazma Adresi Kanalı, • Okuma Veri Kanalı, • Yazma Veri Kanalı, • Yazma Yanıtı Kanalı,

Şekil 2.6‟da bir AXI4 okuma işleminin okuma adresini ve okuma veri kanallarını nasıl kullandığını göstermektedir.

Adres/ Kontrol Okunan Veri Okunan Veri Okunan Veri

M

A

ST

E

R

SL

A

V

E

VERİ OKUMA

VERİ OKUMA ADRESİ

ġekil 2.6. AXI4 okuma protokolü [49]

(23)

12 Gönderme Sonucu Adres/ Kontrol Gönderilen Veri Gönderilen Veri Gönderilen Veri

M

A

ST

ER

SL

A

V

E

VERİ YAZMA SONUCU VERİ YAZMA

VERİ YAZMA ADRESİ

ġekil 2.7. AXI4 yazma protokolü [49]

2.3.1. AXI4-Stream Protokolü

Akış verilerinin aktarımı için tek bir kanalı tanımlar. AXI4-Stream kanalı, AXI4'ün yazma veri kanalını modellemektedir. AXI4'ün aksine, AXI4-Stream (akış) arayüzleri sınırsız miktarda veri patlamasını destekler.

Bellek eşlemeli protokollerde (AXI3, AXI4 ve AXI4-Lite), tüm işlemler bir sistem bellek alanı ve verilerin bir hedef adresin içine aktarılması kavramını içerir. Bellek eşlemeli sistemler genellikle, sistemi tanımlamak için daha homojen bir yol sağlar. Bunun nedeni IP‟nin tanımlı bir bellek haritasının etrafında çalışmasıdır.

AXI4-Stream protokolü, tipik olarak bir adres kavramının mevcut olmadığı veya gerekli olmadığı bir veri merkezli uygulamalar için kullanılır. Her bir AXI4-Stream, veri akışı ile tek yönlü bir kanaldan sağlanır. Bu düşük işlem seviyesinde (bellek eşlemeli protokol türlerine kıyasla), IP arasında etkili bir veri taşıma mekanizması tanımlanmıştır. Ancak, IP arasında birleştirici bir adres bağlamı yoktur. AXI4-Stream IP, veri akışı uygulamalarındaki performans için daha iyi optimize edilebilir, ancak belirli bir uygulama alanı etrafında daha uzmanlaşmış olma eğilimindedir.

2.3.2. Doğrudan Bellek EriĢimi

Çoğunlukla bir Doğrudan Bellek Erişimi (DMA- Direct Memory Access) motoru, verileri belleğe ve dışına taşımak için kullanılabilir.

(24)

13

AXI DMA motoru, sistem belleği ve AXI4-Stream tipi hedef çevre birimleri arasında yüksek performanslı doğrudan bellek erişimi sağlar. AXI DMA, CPU'nun aktarım kontrolünü ve donanım otomasyonu yürütmesini devre dışı bırakmasına izin verir.

2.3.3. AXI VDMA

AXI Video DMA (AXI VDMA) motoru, sistem belleği ve AXI4-Stream tipi hedef çevre birimleri arasında yüksek performanslı doğrudan bellek erişimi sağlar. AXI VDMA ayrıca, Merkezi İşlem Birimi (CPU)‟nun aktarım kontrolünü ve donanım otomasyonuna aktarımını durdurmasına izin veren Scatter Gather (SG) özelliğini de desteklemektedir. AXI VDMA ve SG motorları, AXI4-Stream ve AXI4 bellek eşlemeli veri yolları arasındaki temel köprüleme elemanı olan AXI DataMover yardımcı çekirdeği etrafında inşa edilmiştir. AXI VDMA aşağıdakileri özelliklere sahiptir:

 En fazla 32 çerçeve arabelleği için dairesel çerçeve tamponu erişimi ve tam video karelerinin bölümlerinin aktarımını sağlar.

 Bir kare üzerinde bekleme, aynı video karesi verilerinin tekrar tekrar aktarılmasına izin verir.

 Bağımsız kare eş zamanlaması ve bağımsız bir AXI saati, her bir kanalın farklı bir kare hızında ve farklı bir piksel hızında çalışmasını sağlar. İki bağımsız çalışan AXI VDMA kanalı arasında eş zamanlaması sağlamak için isteğe bağlı bir Gen-Lock eş zamanlaması özelliği vardır. Gen-Lock, AXI VDMA slave‟lerini otomatik olarak bir veya daha fazla AXI VDMA master‟ına eş zamanlama yöntemini sağlar, böylece slave master ile aynı video karesinde çalışmak zorunda kalmaz.

2.3.4. Zynq Platformunun Getirileri

Bir uygulama geliştirirken çok çeşitli platformlardan faydalanmak mümkündür. Genel amaçlı işlemciler, DSP‟ler ya da FPGA‟lar kullanılarak çok çeşitli uygulamalar geliştirilebilir.

Genel amaçlı bir işlemci veya DSP kullanıldığında hedeflenen uygulama, işlemcinin izin verdiği sınırlar çerçevesinde ve yazılımsal olarak gerçekleşecektir. Ayrıca işlem akışı seri bir şekilde işleyecek, kapsamlı ve yoğun uygulamalarda işlem süresi önemli ölçüde artacaktır.

(25)

14

Aynı işlemler bir Zynq platformu kullanılarak yapıldığında ise karmaşık işlem gerektiren uygulama alt hesaplama rutinleri için paralel hesaplama yeteneğine sahip FPGA blokları ve DSP blokları kullanılabilecek, nispeten hız gerektirmeyen işlemler ARM Cortex A-9 işlemcisi üzerinden gerçekleştirilecektir. FPGA, belirli bir görev için tam olarak optimize edilebilmekte ve hedeflenen işlem için en uygun mimari yapı oluşturulmaktadır.

Programlanabilir mantık doğası gereği, paralel olarak uygulamaların uygulanabilmesi için ideal bir ortam sunar. Örneğin matematiksel işlemlerin aynı anda çok sayıda örnek veya piksel üzerinde gerçekleştirildiği sinyal ve görüntü işleme uygulamaları gibi. Bu uygulamalarda işlemleri, seri olarak birim işlem zamanında bir işlem yapılarak uzun işlem süresinde hesaplamak yerine aynı anda farklı pikselleri işleyerek, işleme zamanının düşürülmesi sağlanır.

2.3.5. Zynq Platformu Uygulama Alanları

Zynq platformu, yapısı ve getirilerinden dolayı birçok uygulama alanına sahiptir. Bunlar aşağıdaki gibi verilebilir:

 Otomotiv  İletişim  Savunma ve havacılık  Robotik ve kontrol  Görüntü işleme  Tıp

 Yüksek performanslı hesaplama

2.3.5.1. Otomotiv

Günümüzde otomobiller motor yönetiminden, pencere, ayna ve aydınlatma gibi fonksiyonların kontrolüne, seyrüsefer ve bilgi-eğlence sistemlerine kadar önemli miktarda elektronik içermektedir. Gelişmiş Sürücü Destek Sistemleri (ADAS-Advanced Driver Assistance Systems), özellikle sürücü güvenliği ve rahatlığı için araçlarda sunulan sistemlerin toplanmasıyla ilgilidir. Bunlar; şerit ayrılma uyarı sistemleri, yol işareti tanıma,

(26)

15

park yardımı, gösterge görüntüleri ve sürücü farkındalığını izleyen sistemlerdir. Zynq cihazları bu otomotiv sistemlerini gerçekleştirmek için kullanılabilir [52], [53]. Zynq'in işleme kabiliyetleri, bu tür sistemleri özellikle çok uygun hale getirmektedir. Bunun ötesinde bütün işlemlerin tek bir cihazdan kontrol edilmesi fiziksel yer kazancı da sağlayacaktır.

2.3.5.2. ĠletiĢim

FPGA‟lar, hem kablosuz iletişimde hem de kablolu, paket tabanlı sistemlerde gerekli olan hesaplama yoğun işlemlerin üstlenilmesi için kullanılabilmektedir. Bu alan çeşitlidir ve karasal ve uydu iletimi, mobil destek altyapısı, kablolu ağ teçhizatı, radar, sonar, Küresel Konumlandırma Sistemi (GPS-Global Positioning System) ve diğer birçok iletişim sistemleri için alıcı-vericilere sahiptir.

Kablosuz iletişimde, kablosuz sistem ve standartların sayısı artmaya devam etmektedir. Esnek radyo kavramı, radyo spektrumunu daha iyi kullanma ve radyo donanımını, çalışmasını dinamik olarak değiştirebilen tek bir cihazda birleştirmeyi sağlar. Zynq, ideal bir esnek radyo platformu sağlar. Kablolu iletişimde, yazılım kontrolü altında işlevselliği yükseltme yeteneğine sahip “yumuşak tanımlanmış ağlar” kullanılarak benzer bir esneklik düzeyi aranır [54].

2.3.5.3. Savunma ve Havacılık

Savunma sistemleri, çok çeşitli iletişim, görüntü işleme, havacılık, seyrüsefer ve ulaşım sistemleri ile ilgili teknolojiyi içerir. Savunma elektroniği genellikle genişletilmiş sıcaklık aralıklarına ve güvenlik özelliklerine sahip sivil uygulamalara kıyasla daha yüksek bir sağlamlık seviyesi gerektirir [55].

İlgi çeken bir alan olan savunma alanı, askeri personel ve donanımların; uçaklar, uydular, sinyal istihbarat cihazları ve diğer savunma sistemleri ile birbirine bağlı olduğu “ağa bağlı savaş alanı” kavramıdır [56]. Ağa bağlı savaş alanının amacı bilgiyi toplamak, filtrelemek ve paylaşmak ve böylece askeri operasyonların etkinliğini optimize etmektir.

Sivil havacılık uygulamaları arasında ise seyrüsefer ve araç üstü uçuş sistemleri, uydu ve yer haberleşmeleri ve radar sistemleri yer almaktadır.

(27)

16

Zynq platformu savunma ve havacılık alanının ihtiyaç duyduğu sağlamlık ve çok çeşitli gereksinimler için kullanılabilecek esneklik ve hıza sahiptir.

2.3.5.4. Robotik, Kontrol ve Endüstri

Üretim ve hizmetlerden, yüksek enerji fiziği deneylerine kadar uzanan endüstriyel ve bilimsel süreçler, hassas kontrol ve enstrümantasyon gerektirir.

Zynq cihazları bu tür işlemler için çok uygun bir platformdur. Programlanabilir bloklardan yararlanarak hızlı, gerçek zamanlı işleme ve çoklu sensör girişlerini ve aktuatör çıkışlarını eşzamanlı olarak kontrol edebilirler. Zynq, bir işletim sistemini de desteklediği için robotik ve kontrol alanlarında esnek şekilde kullanım alanı bulmaktadır.

Motor kontrol algoritmaları, endüstrinin bazı dallarında özellikle önemlidir. Örneğin, ABD imalat sanayine yönelik bir anket, sanayide tüketilen elektrik enerjisinin yaklaşık %50'sinin "makine sürücüleri", yani motorlar, pompalar ve fanlar ile ilişkilendirilebileceğini göstermektedir [57]. Zynq, İşlemci (PS-Processing System) ve Programlanabilir Lojik (PL-Programmable Logic) arasındaki yüksek bant genişliği bağlantısından dolayı motor kontrolüne çok uygundur ve sıkı bir geri bildirim döngüsüne olanak tanımaktadır [58].

2.3.5.5. Görüntü ĠĢleme

Görüntü ve video işleme, tüketici ve profesyonel kullanım için kameralar, video sıkıştırma ve depolama sistemleri, yayın donanımları, görüntüleme teknolojisi, endüstriyel süreç izleme, güvenlik ve gözetleme gibi çeşitli uygulamaları içerir.

Görüntü ve video işleme alanının, çeşitli tüketici ve ticari ürünlerdeki özelliklerin yanı sıra tıp, endüstri, savunma ve güvenlik alanlarında da kullanım alanı bulmaktadır.

Görüntü işleme, tek veya “hareketsiz” resimlerle ilgilenirken, video işleme, genellikle belirli bir kare hızında, geçici bir dizi resim (“kareler”) anlamına gelir. Bilgisayar görmesi (veya makine görmesi) sistemleri, görüntülerden veya video verilerinden anlam çıkarılabilir. Uygun olduğu takdirde, kararlar bu bilgilere dayanılarak alınabilir.

(28)

17

Zynq‟in işleme yetenekleri, büyük miktarlarda piksel verilerini hem hesaplanabilir olarak işlenmesini gerektiren, hem de görüntülerden bilgi elde etmek için PL ve PS için uygun olan yazılım algoritmalarını işleme özelliklerine sahiptir [56].

2.3.5.6. Tıp

Tıbbi teşhisteki önemli bir konu, vücudun içini “görme” işlemidir. Bu işlem; Bilgisayarlı Tomografi (CT-Computed Tomography) tarayıcıları, ultrason ve Manyetik Rezonans Görüntüleyicileri (MRI) gibi tıbbi görüntüleme ekipmanı gerektirir. Bu donanımlardan elde edilen görüntülerin geliştirilmesi ve gösterilmesi, genellikle büyük veri setlerinde gerçekleştirilecek karmaşık görüntü işleme algoritmaları gerektirir. Diğer görüntü işleme uygulamalarında olduğu gibi, Zynq tarafından sağlanan PL ve PS özelliklerinin birleşimi hem yüksek hızlı paralel işlemeyi hem de yazılım tabanlı algoritmaları destekler.

Tıpta diğer uygulamalar, robot destekli cerrahide cihazların kontrolünü ve endoskopik ve hasta izleme donanımlarını ve ev sağlık teknolojileri gibi gerçek zamanlı cerrahi görüntülemeyi içermektedir [59].

2.3.5.7. Yüksek Performanslı Hesaplama

Yüksek performanslı hesaplama, büyük veri kümelerinin hızlı bir şekilde işlenmesini gerektiren uygulamaları kapsar. Bunlar, genellikle özel donanım işlemleriyle hızlandırılabilir işlemlerdir [60]. Finansal modelleme [61], petrol ve gaz arama analizi, bilimsel deneylerden veri işleme, radyo astronomi [62] ve yakalanan radar sinyallerinin analizi gibi çeşitli uygulamaları içerir. Ancak bunlarla sınırlı değildir, ayrıca veri merkezleri ve bulut bilişim tesisleri için de geliştirilen altyapıyı da kapsamaktadır.

2.4. Zynq-7000 Programlama Araçları

Diğer programlanabilir cihazlarda olduğu gibi Zynq platformu da uygulama geliştirme aşamasında birçok programlama aracı ve programlama dilini desteklemektedir.

Zynq programlarken diğer FPGA‟lardan farklı olarak sadece donanımsal programlama yapılmadığı için programlama mantığı biraz farklıdır. Zynq cihazlarında

(29)

18

bulunan FPGA blokları donanımsal programlama gerektirirken, ARM işlemci programlanırken yazılımsal programlama kullanılır. Ayrıca platformda bulunan DSP hesaplama blokları da programlanarak kullanılabilmektedir. ARM-A9 işlemci sayesinde istenildiği takdirde Linux işletim sistemi ile de kullanılabilmektedir. Bu denli esnek bir platform programlanırken birçok programlama aracı ve programlama dilleri kullanılabilmektedir. Zynq programlarken kullanılabilecek programlama araçları şunlardır:

 Vivado Design Suite,  Vivado-HLS,

 Xilinx SDK,

 Xilinx SDSoC-SDx,  Matlab.

2.4.1. Vivado Design Suite IDE

Xilinx tarafından geliştirilen, Xilinx FPGA‟lar için donanımsal gömülü sistem geliştirme ortamıdır. Zynq-7000 mimarisinin barındırdığı FPGA bloklarının programlaması, bu mimarinin barındırdığı ARM işlemcinin genel ayarları ve FPGA blokları ile işlemci bağlantısı bu ortamda yapılır. Vivado Design Suite, verimliliği artırmak için tasarlanmıştır. Xilinx FPGA‟larının artan özellikleri nedeniyle geliştirilen Vivado, eski Xilinx ISE Design Suite‟in yerine daha kapsamlı bir kullanıcı arayüzü sunmaktadır. Bu kapsamlı yapı sayesinde çok boyutlu tasarım zorluklarının aşılması amaçlanmıştır. Tüm Vivado Design Suite araçları, yerel bir takım komut dili (Tcl) arayüzü ile yazılmıştır. Vivado Design Suite için grafik kullanıcı arabirimi (GUI) olan Vivado Entegre Tasarım Ortamında (IDE-Integrated Development Environment) bulunan tüm komut ve seçeneklere Tcl ile erişilebilir. Ortam; şematik programlama, Verilog programlama ve VHDL programlama dillerini desteklemektedir. Şematik programlama ile özellikle görüntü işleme uygulamaları olmak üzere birçok hazır FPGA bloklarının kullanılmasına olanak tanımaktadır. Yapılan çalışmaların simülasyonunun da yapılabildiği bir simülatöre sahiptir.

(30)

19

2.4.2. Xilinx SDK

Xilinx Yazılım Geliştirme Ortamı (XSDK- Xilinx Software Development Kit), Xilinx mikroişlemcilerinde gömülü uygulamalar oluşturmak için Entegre Tasarım Ortamıdır. Bu mikroişlemciler, Zynq- UltraScale + MPSoC, Zynq-7000 SoCs ve MicroBlaze işlemcilerdir. SDK, homojen ve heterojen çok işlemcili tasarım, hata ayıklama ve performans analizi sağlayan uygulama ortamıdır. Eclipse tabablı olarak geliştirilmiştir. Vivado gömülü donanım tasarım ortamına doğrudan arabirim oluşturan ve donanım / yazılım birlikte hata ayıklama yetenekleri dahil olmak üzere tam yazılım tasarımı ve hata ayıklama akışları, editör, derleyiciler, derleme araçları, flash bellek yönetimi ve JTAG hata ayıklama tümleştirmesi, Xilinx Yazılım Komut Satırı Aracı (XSCT- Xilinx Software Command-line Tool) barındırmaktadır.

Xilinx System Debugger, Zynq UltraScale + MPSoC, Zynq-7000 SoC ve MicroBlaze çekirdeklerini destekleyen entegre bir hata ayıklayıcıdır. Hem komut satırından hem de XSCT‟yi kullanarak ve SDK GUI içinden hata ayıklama kullanılabilir. Kesme noktaları veya izleme noktaları ayarlama, program yürütme boyunca adım atma, program değişkenlerini ve yığını görüntüleme ve bellek içeriğini görüntüleme gibi tüm yaygın hata ayıklama özelliklerini destekler. Aynı anda, aynı hata ayıklama ortamından farklı işlemcilerde (çok işlemcili bir sistemde) çalışan programların hatalarını ayıklayabilir. Örneğin, bir Zynq veya Zynq UltraScale+ tabanlı tasarımında, Sistem Hata Ayıklayıcı tek bir JTAG kablosuyla aynı hata ayıklama oturumunda hem ARM CPU‟larını hem de birden çok MicroBlaze yazılımını görüntüleyebilir.

XSDK, proje oluşturmada üç işletim sistemi türünü desteklemektedir. Bunlar, bağımsız işletim sistemi, gerçek zamanlı işletim sistemi ve Linux işletim sistemidir.

XSDK; desteklenen tüm Xilinx donanım IP‟leri, POSIX uyumlu çekirdek kütüphanesi, ağ oluşturma ve dosya işleme kütüphanesi için kullanıcı tarafından özelleştirilebilir sürücüleri içerir. Bu kütüphaneler ve sürücüler, özellik gereksinimlerine, bellek gereksinimlerine ve donanım özelliklerine göre özel tasarım için ölçeklendirilebilir yapıdadır.

(31)

20

2.4.3. Vivado Yüksek Seviyeli Sentez

Günümüzde haberleşme, medikal, savunma ve tüketici uygulamalarında kullanılan gelişmiş algoritmalar her zamankinden daha karmaşıktır. Bu karmaşıklıktan dolayı VHDL dili kullanarak donanım oluşturma işlemi hem zaman almakta hem de yazılan kodun kontrol edilmesini zorlaştırmaktadır. Vivado-HLS(Yüksek Seviyeli Sentez-High Level Syntesis) yüksek seviyeli diller kullanarak işlem donanımları (IP Core- İntellectuel Property) üretmeye yarayan programlama aracıdır. Yüksek seviyeli dil kullanıldığı için programlama süresi kısalmaktadır. Vivado-HLS‟nin kullandığı yüksek seviyeli diller C, C ++ ve SistemC dilleridir. Bu dillerle yazılan kodlar daha sonra VHDL veya verilog dilinde yazılmış kodlara dönüştürülür. Algoritmik tanımlama, veri tipi belirtimi (tamsayı, sabit nokta veya kayan nokta) ve arabirimler (FIFO, AXI4, AXI4-Lite, AXI4-Stream), video ve DSP uygulamaları için geniş kütüphane desteği sağlama gibi geniş özelliklere sahiptir. C/C++ simülasyon ortamı desteği sunmaktadır. Ayrıca VHDL ve Verilog dillerine dönüşüm yapıldıktan sonra bu dillerde lojik simülasyon ortamına sahiptir. Şekil 2.8‟de Vivado HLS aracı IP çekirdek oluşturma aşamaları gösterilmiştir.

SINIRLAMALAR DİREKTİFLER

VIVADO HLS

TEST DOSYASI C, C++, Systemc RTL ŞEMASI VHDL/Verilog RTL SİMÜLASYON

RTL EXPORT

(32)

21

2.4.4. Xilinx SDSoC-SDx

Yazılım Tanımlı SoC (SDSoC-Software Defined SoC) ortamı, Zynq-7000 Tüm Programlanabilir SoC‟ler ve Zynq UltraScale+ ve MPSoC'leri kullanarak heterojen gömülü sistemlerin uygulanması için bir Eclipse tabanlı tümleşik geliştirme ortamıdır. SDSoC sistem derleyicisi, C / C ++ ile yazılmış uygulama kodunu derleyerek, uygulamaya özel bir yazılım ve donanım kodu üretir. Bir SDSoC platformu, işletim sistemi, harici bellek arabirimleri, özel giriş /çıkış birimleri, önyükleme yükleyicileri, platform çevre birimleri için sürücüler de dahil olmak üzere temel donanım ve yazılım mimarisi ve uygulama bağlamını tanımlar. SDSoC ortamında oluşturulan her proje belirli bir platformu hedefler. Bu sayede, farklı platformlar için yüksek düzeyde uygulamaya özel sistemler oluşturabilir ve yeniden kullanılabilir.

SDSoC sistem derleyicileri, yazılım ve donanım fonksiyonları arasındaki veri akışını belirlemek için programı analiz eder ve programı gerçekleştirmek için uygulamaya özel bir sistem oluşturur. Yüksek performans elde etmek için, her donanım işlevi bağımsız bir iş parçacığı olarak çalışır. Sistem derleyicileri, donanım ve yazılım iş parçacıkları arasında senkronizasyon sağlayan donanım ve yazılım bileşenleri üretir. Uygulama kodu, birçok donanım işlevini, belirli bir donanım işlevinin birden çok örneğini içerebilir. SDSoC IDE, hızlı bir performans tahmini yeteneği sağlar. SDSoC sistem derleyicileri, bir platformu hedefler ve sentezlenebilir C / C ++ fonksiyonlarını programlanabilir mantık içine derlemek için Vivado High-Level Synthesis (HLS) aracını kullanır. Daha sonra, Vivado Design Suite araçlarını çalıştırarak DMA‟lar, ara bağlantılar, donanım arabellekleri ve diğer IP‟ler dahil olmak üzere eksiksiz bir donanım sistemi oluştururlar. Tüm donanım işlev çağrılarının orijinal davranışlarını koruduğundan emin olmak için SDSoC sistem derleyicileri sisteme özgü yazılım taslakları ve yapılandırma verileri üretir. Program, oluşturulan IP bloklarını kullanmak için gerekli sürücü çağrıları içerir. Uygulama ve oluşturulan yazılım standart bir GNU toolchain kullanılarak derlenir ve bağlanır. Tek kaynaktan, eksiksiz uygulamalar üretilmesine, program düzeyinde yeniden düzenleme yaparak tasarım ve mimari değişiklikleri üzerinde yineleme yapılmasına olanak tanır ve hedef platformda uygulamalar gerçekleştirmek için gereken süreyi önemli ölçüde azaltır.

(33)

22

2.4.5. Matlab

Matlab, teknik hesaplamalar ve matematiksel problemlerin çözümü ve analizi için tasarlanmış bir yazılım geliştirme aracıdır. Matlab, Xilinx FPGA‟larını programlamak için kullanılabilecek araçları barındırmaktadır. Bu araçlar; genellikle DSP tasarımı için kullanılan Sistem Üreticisi ve Matlab diliyle yazılan uygulamaları VHDL veya Verilog diline çeviren HDL Kodlayıcıdır.

Sistem Üreticisi, FPGA sistem tasarımı için Mathworks Simulink tasarım

platformunu kullanan bir tasarım aracıdır. Donanım tasarımlarının oluşturulması için üst düzey, model tabanlı bir ortam sağlar. System Generator tasarımını Vivado IP Kataloguna dahil edilebilecek bir IP birimine paketlemesini sağlar. Sistem Üreticisi tasarımı, daha sonra, IP Kataloğu‟ndan başka bir birim gibi kullanılabilir ve bir Vivado kullanıcı tasarımına eklenebilir [64]. Sistem Üreticisi, tasarımların hızlı ve kolay bir şekilde oluşturulması için blokların birbirine bağlanabileceği IP tasarımı için sezgisel bir ortam sunar. Basit matematiksel operatörlerden karmaşık DSP işlemlerine kadar çok sayıda blok mevcuttur. İşlevsellik her zaman HDL kodundaki en okunabilir formda uygulanmaz ve bu, bazı tasarımların takip edilmesini zorlaştırabilir. Sistem Üreteci tasarımında seçilen seçeneklere bağlı olarak, IP uygulaması HDL‟de elle kodlanmış gibi etkili olmayabilir.

HDL Kodlayıcı, Matlab fonksiyonlarından ve Simulink modellerinden

sentezlenebilir HDL kodunun (hem VHDL hem de Verilog) üretilmesini sağlayan bir araçtır. Kullanıcının HDL tasarımının düşük seviyenin incelikleri olmadan algoritmaların ve modellerin geliştirilmesine konsantre olmasını sağlar. HDL Kodlayıcı iş akışı, HDL kodunun doğrulanması için araçlar sağlar ve üretilen HDL kodunun orijinal Matlab / Simulink modeli ile birlikte test edilmesini sağlar. Bu sayede, oluşturulan HDL kodunda bulunabilecek herhangi bir hata kolayca tespit edilebilir. HDL kod en iyilenmesi, kritik yolların vurgulanmasına, HDL mimarisinin kontrol edilmesine ve donanım kaynağı kullanım tahmini oluşturulmasına olanak tanıyan, uygulama üzerinde büyük miktarda kontrol sağlamak için hedef FPGA aygıtını belirleme seçeneğini sunar. HDL Kodlayıcı tarafından oluşturulduktan sonra, HDL kodu, bir IP çekirdeği oluşturmak için kullanılabilir. HDL Kodlayıcı, mevcut Matlab / Simulink modellerinden hızlı bir şekilde IP oluşturulmasına ve minimum tasarım değişiklikleri yapılmasına izin verirken, bazı dezavantajları vardır. Şu anda tüm Matlab fonksiyonları ve Simulink blokları HDL üretimini desteklememektedir. Bu, bazı işlevlerin desteklenen işlevler veya bloklarla

(34)

23

yeniden işlenmesi gerekebileceği anlamına gelir. Dikkat edilmesi gereken bir diğer nokta da, donanım uygulaması ve en iyilenmesi açısından büyük miktarda özelleştirme yapılmasına rağmen, üretilen HDL kodunun elle kodlanmış HDL gibi etkili olamayacağıdır.

(35)

24

3. ZYNQ ÜZERĠNDE ĠġLETĠM SĠSTEMĠ

3.1. ĠĢletim Sistemi

İşletim Sistemleri, uygulama yazılımları ile bilgisayar donanımı arasındaki bağlantıyı sağlayan özel yazılımlardır. Bilgisayarda programların çalıştırılmasını ve istenilen temel işlevlerin yerine getirilmesini işletim sistemi sağlar. Dosya ve dizin oluşturma, silme, kopyalama, taşıma işlemleri, disk biçimlendirilmesi (format), tarih, saat, donanım ayarları, vb. işlemler işletim sistemi tarafından gerçekleştirilir.

3.2. Zynq Üzerinde ĠĢletim Sistemi

Gömülü bir sistem geliştirirken bir tasarımcının karşılaştığı temel sorulardan biri, gömülü bir işletim sistemi dahil edip etmemektir. Zynq platformunda bulunan çift çekirdekli işlemciyi en iyi şekilde kullanabilmek için mevcut seçeneklerden biri de işletim sistemi kullanmaktır.

Gömülü bir işletim sistemi tüm gömülü sistem uygulamaları için gerekli olmasa da, kullanımlarının birçok avantajı vardır. Bunlardan ilki pazara arz edilme zamanın azaltılmasıdır. Gömülü bir işletim sisteminin geliştirme süresini azaltabileceği bir dizi kilit alan vardır. İşletim sistemi satıcıları çok çeşitli mimariler ve platformlar için destek sağlar. Geliştirilmiş olan yazılım belirli bir aygıttan ziyade bir işletim sisteminde hedeflendiğinden, yeni bir mimariye veya aygıta geçme süreci sorun oluşturmamalıdır. Örneğin, gömülü Linux ve geleneksel Masaüstü sürümü arasında büyük ölçüde benzerlik vardır. Bir tasarımcı, Linux‟un çeşitli masaüstü sürümleri için uygulamalar geliştirmeye aşinaysa, gömülü Linux için geliştirilme işlemi kolay olacaktır ve öğrenmesi nispeten kolay olacaktır. Bu, bir tasarımcının yeni bir geliştirme ortamına aşina olması için gereken süreyi önemli ölçüde azaltacaktır. Geliştirilmiş taşınabilirlik, İşletim Sistemi Arabirimi (POSIX- Portable Operating System Interface for Unix) gibi standartlaştırılmış bir sistem arabirimine sahip bir işletim sisteminin kullanılmasıyla sağlanabilir. Genel olarak, POSIX standardına sahip işletim sistemlerinin kullanımı, işletim sistemi seviyesinde taşınabilirlik konusunda daha fazla esneklik sağlar.

İkinci avantaj ise; bakım ve geliştirme maliyetlerinin azaltılmasıdır. Gömülü bir işletim sistemi kullanarak, geliştirilmesi ve test edilmesi gereken özel kod miktarı azaltılmaktadır.

(36)

25

3.2.1. ĠĢletim Sistemi Türleri

Gömülü sistemde kullanılacak işletim sisteminin türünü belirlerken bir dizi olasılık vardır. Bu tür örnekler, basit bir bağımsız işletim sistemi (Standalone Operating System), bir Gerçek Zamanlı İşletim Sistemi (RTOS) veya gömülü Linux‟un sayısız varyasyonu gibi özelleştirilmiş yerleşik bir işletim sistemini içerir.

3.2.1.1. Bağımsız ĠĢletim Sistemi

Bağımsız bir işletim sistemi (Standalone OS), sistemin işlemciye özgü işlevlere erişmek için kullanabileceği çok düşük düzeyde yazılım birimleri sağlamayı amaçlayan basit bir işletim sistemidir. Özellikle Zynq platformu ile ilgili olarak Xilinx, önbelleklerin yapılandırılması, kesintilerin, istisnaların ve diğer donanımla ilgili işlevlerin ayarlanması gibi işlevler sağlayan bağımsız bir işletim sistemi platformu sağlar. Bağımsız platform, doğrudan İşletim Sistemi katmanının altında bulunur ve bir uygulama doğrudan işlemci özelliklerine erişmek istediğinde kullanılır [65]. Bağımsız bir işletim sistemi, kod çalıştırma üzerinde hızlı kontrol sağlar, ancak işlevsellik açısından oldukça sınırlıdır. Sadece yazılım işlevlerinin basit ve tekrarlayıcı olduğu uygulamalar için kullanılması daha uygundur. Bağımsız bir işletim sistemi tarafından yürütülen görevlerin sayısı, daha fazla görev eklemek, bağımsız olarak gereken görev yönetimini hızla artırabileceğinden, nispeten küçük olmalıdır.

3.2.1.2. Gerçek Zamanlı ĠĢletim Sistemleri

Bir Gerçek Zamanlı İşletim Sistemi (RTOS)‟un belirleyici özelliği programlayıcı tarafından garanti edilen çalışma zamanıdır. Bir RTOS‟un amacı, yüksek bir iş hacmine ulaşmak değildir, bunun yerine, belirli bir görev için hem hızlı hem de öngörülebilir bir şekilde yanıt vermektir. Birçok gömülü sistemin işlevi, yazılımın olaylara kısa, tanımlanmış bir yanıt süresi içinde yanıt vermesini gerektirir. Çoğu modern RTOS sistemi, gerçek zamanlı çekirdeği tamamlayan bir dizi yüksek seviyeli işlev içerir. Bu işlevler bir Grafiksel Kullanıcı Arayüzü (GUI-Graphical User Interface), iletişim protokolü yığınları ve belirli bir derecede çevresel aygıt yönetimini içerebilir. Gömülü bir sistemde, RTOS cihazı kontrol etmekten ve gerekli tepki seviyesini sağlamaktan sorumludur. Yazılım

(37)

26

görevleri, her bir göreve ayrılmış CPU zamanını programlayan RTOS tarafından kontrol edilir [65].

3.2.1.3. Linux

Linux, Linus Torvalds tarafından 1991 yılında geliştirilmiş işletim sistemi çekirdeğidir. Torvalds, Richard Stallman tarafından sağlanan GNU araçlarını kullanarak, Linux çekirdeğini oluşturmuştur. Bugün, Linux her zamankinden daha popüler olmuştur ve cep telefonları ve uydu navigasyon sistemlerinden süper bilgisayar ve sunuculara kadar geniş bir cihaz yelpazesinde bulunmaktadır.

Şekil 3.1‟de GNU/Linux sisteminin genelleştirilmiş üst düzey mimarisi gösterilmiştir.

KULLANICI UYGULAMALARI

GNU C KÜTÜPHANESİ

SİSTEM ÇAĞRI ARAYÜZÜ

ÇEKİRDEK

MİMARI BAĞIMLI KOD

DONANIM CİHAZLARI Ç E K İR D E K U Z A Y I K U LL AN IC I U ZAY I

ġekil 3.1. GNU/Linux mimarisi [66]

Çekirdek, çok daha fazla bileşen içeren çok daha karmaşık bir kavramdır. GNU C kütüphanesinin yanı sıra uygulamalar ve sistem programları çekirdeğin üstünde çalışır. Sistem programları, sistemin çalışmasını sağlayan çeşitli işletim sistemi hizmetlerinin

(38)

27

uygulanmasında gereklidir. Fiziksel donanım, çekirdeğin altında bulunur ve kullanıcı alanı, çekirdek tarafından soyutlanır. Bu fiziksel donamımlar, herhangi bir sistem depolamasını, ağ kartlarını veya bir geliştirme kartındaki GPIO (General Purpose Input Output- Genel Amaçlı Giriş Çıkış)‟yu içerir.

Sistem Çağrı Arayüzü (SCI- System Call Interface), kullanıcı alanından sistemin çekirdeğine kadar işlev çağrılarını kolaylaştırır. Linux çekirdeği işletim sisteminin kalbini oluşturur ve kullanıcı alanının donanım ile etkileşime girebileceği bir dizi araç sağlar. Linux çekirdeği, bellek ve süreç yönetimi, sanal dosya sistemi ve aygıt sürücüleri gibi katmanlı alt sistemlere ayrılabilir. Çekirdek kodu, Linux tarafından desteklenen tüm işlemci mimarileri için ortak olduğundan, mimariden bağımsız olarak kabul edilir. Bunun altında mimariye bağlı kod; yani, işlemci ve platforma özgü olan ve genellikle Bord Destek Paketi (BSP-Board Support Package) olarak adlandırılan koddur.

Mimariye Bağlı Kod, Linux çekirdek yığınının en alttaki katmanıdır. Linux çekirdeği, çok çeşitli farklı donanım platformlarını desteklemektedir ve bu platformların mimariye bağımlı kodla uyum içinde çalışması için özel kodlar gereklidir. Bu, BSP olarak bilinir ve mimari aileleri ve işlemcileri için kaynak dosyalar, ortak önyükleme destek dosyaları, DMA donanım arabirimleri, kesinti işleme ve belirli bir işlemci ailesi ile ilgili diğer öğeleri içerir [67].

Herhangi bir işletim sistemindeki gibi bir Linux aygıt sürücüsü, bir sistemdeki donanım aygıtları ile işletim sisteminde çalışan programlar arasında soyutlama sağlayan bir yapı olarak düşünülebilir. Aygıt sürücülerini kullanarak, belirli bir aygıttan bağımsız tüm programlarda standart bir çağrı kümesi uygulanabilir. Bu çağrılar, gerekli işlemleri gerçekleştiren sürücüye özgü işlevlere karşılık gelir. Bu sayede çekirdeğin dışındaki sürücülerin oluşturulmasına ve bunları gerektiği gibi eklenmesine olanak tanınmaktadır [68].

3.2.1.3.1. Linux Önyükleme

Bir Linux sistemi açıldığında veya sıfırlandığında meydana gelen ilk şey, işlemcinin önceden belirlenmiş bir konumda kod yürütmesidir. Bir masaüstü bilgisayar için, bu konum, Temel Giriş / Çıkış Sistemi (BIOS- Basic Input Output System) olarak bilinir ve ana kart üzerindeki flash belleğin bir bölümünde saklanır. Günümüz bilgisayarları, önyükleme aygıtları alanında çok yönlülük sunarken, BIOS‟un yapacağı ilk şey, hangi

(39)

28

aygıtların önyüklenebilir seçenekler sunacağını belirlemektir [61]. Önyükleme (booting) aygıtı belirlendikten sonra, FSBL (First Stage Bootloader) Rasgele Erişimli Bellek (RAM-Random Access Memory)‟e yüklenir ve işlemci tarafından yürütülür. FSBL çok küçük bir kod bölümüdür (512 bayttan az) ve tek amacı İkinci Aşamalı Önyükleyiciyi (SSBL-Second Stage Bootloader) RAM‟e yüklemektir. SSBL, bir önyükleme menüsünün sunulduğu önyükleme işleminde bir aşamadır. Bu menü, kullanılabilir olası önyükleme seçeneklerinin bir listesini sunar. Listeden bir önyükleme seçeneği seçildiğinde, önyükleyici ilgili işletim sistemini yükler, daha sonra çekirdeği başlatmadan önce kendini sıkıştırır ve belleğe yükler. Çekirdek başlatılmadan önce önyükleyici tarafından yürütülen diğer işlevler vardır. Gerekli çekirdek birimleri başarıyla başlatıldığında, önyükleme işleminin son aşaması, ilk kullanıcı alanı işlevini başlatmaktır. Bu işlev, sistemin tüm üst düzey bölümlerini başlatır. Bu, Linux önyükleme işleminin üst düzey genel görünümünü sonuçlandırır.

3.2.1.3.2. Zynq Önyükleme

Gömülü Linux önyükleme işleminin bir masaüstü dağıtımından farklı olduğu bir dizi önemli alan vardır. Zynq aygıtları, açılışta başlatılan önyükleme ROM‟undan başlayarak, bir dizi aşamada önyükleme gerçekleşir. Cihazın önyükleme kipi değeri önyükleme kipini belirler [69]. Önyükleme modu desteklenen arabirimler, JTAG, NAND Flash, NOR Flash, QSPI Flash veya SD karttır [70]. Önyükleme kipi belirlendikten sonra, önyükleme ROM‟u önyükleme üstbilgisini okuyacaktır ve yapılandırma parametreleri verildiğinde, görüntüyü doğrulayacak ve FSBL görüntüsünü belirtilen arabirimden OCM(on Chip Memory)‟ye yükleyecektir. Görüntü Çip Üzerinde Bellek (OCM-on Chip Memory)‟ye aktarıldıktan sonra, CPU‟nun kontrolü FSBL‟e teslim edilir.

Tipik olarak, FSBL, CPU‟yu kullanarak PS ve PL‟yi yapılandırmak [70] için talimatlar içerir.

Referanslar

Benzer Belgeler

Attilâ İlhan’ın yorumu: “Atatürk sosyal olayları gerçek sebeplerini kurcalayarak işleyecek sanatçıların açık ve kat’i olmaları gereğinin altını önemle

Paşa anılarında, Gürbüzler Ordusu’nu şöyle anlatıyor: Yoksul ve bakımsız çocukları devlet.. himayesine alarak memleketin diğer çocukları gibi başarılı ve

Araştırmamızda ergenlerin sahip oldukları değerler, umutsuzluk ve psikolojik sağlamlık arasındaki yordayıcı ilişkilerle ilgili bulgulardan hareketle aşağıdaki

Araştırmanın sonunda video desteğinin özengen keman eğitiminde olumlu etkisinin olduğu; ön hazırlık ve bedensel kurulum boyutlarında iki grup arasında fark

Şekil 6.23 ise yarım dalga boyundaki katlanmış dipol anten için elektrik alan ışıma örüntüsünü dB ölçekli olarak göstermektedir. Katlanmış dipol anten için

Elde edilen optimal göz şekil ve açıklığının etkileri, tasarlanan evrimsel topolojik optimizasyonunun, sonlu elemanlar yöntemi ile standart ı profile

%XoHUoHYHGH$ø+6¶QLQ|QJ|UG÷VWDQGDUWODUDX\JXQGDYUDQPDJHUH÷L UHNDEHW NXUDOODUÕQ HWNLOLELUELoLPGHX\JXODQPDVÕQÕ HQJHOOH\HFHNDGHWDELU\N RODUDN

Babam Mecit Efendinin daha Veliahtlık zamanında önce onun yaver», sonra da başyaveri olmuştu. Bu Başyaverlik Halifenin son günlerine kadar devam etmiş, bu arada