Lab_Ozet4.8 MB - Kocaeli Üniversitesi Mühendislik Fakültesi

Transkript

Lab_Ozet4.8 MB - Kocaeli Üniversitesi Mühendislik Fakültesi
KOCAELİ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ
ELEKTRONİK VE HABERLEŞME MÜHENDİSLİĞİ
ALTERA FPGA KARTLARI LABORATUVAR UYGULAMALARININ
NEXYS™4 ARTIX-7 FPGA KARTINA UYARLANMASI VE GERÇEKLENMESİ
VERİLOGHDL İLE SAYISAL TASARIM DERS PROJESİ
OSMAN KUŞCU
100207038
DERS VE PROJE DANIŞMANI: YRD.DOÇ.DR. ANIL ÇELEBİ
KOCAELİ, 2014
İçindekiler
İÇİNDEKİLER ....................................................................................................................... i
GİRİŞ ................................................................................................................................ 1
PROJE KAPSAMINDA GERÇEKLEŞTİRİLEN UYGULAMALAR ................................................. 2
FPGA NEDİR? .................................................................................................................... 4
NEXYS™4 ARTIX-7 FPGA .................................................................................................... 6
XILINX ISE DESIGN SUITE ................................................................................................... 9
PLAN AHEAD.................................................................................................................... 12
LABORATUVAR UYGULAMALARI - 1 ................................................................................. 13
LABORATUVAR UYGULAMALARI - 2 ................................................................................. 14
LABORATUVAR UYGULAMALARI - 3 ................................................................................. 15
LABORATUVAR UYGULAMALARI - 4 ................................................................................. 16
LABORATUVAR UYGULAMALARI - 5 ................................................................................. 17
LABORATUVAR UYGULAMALARI - 6 ................................................................................. 18
LABORATUVAR UYGULAMALARI - 7 ................................................................................. 19
LABORATUVAR UYGULAMALARI - 8 ................................................................................. 20
LABORATUVAR UYGULAMALARI - 9 ................................................................................. 21
LABORATUVAR UYGULAMALARI - 10 ............................................................................... 22
LABORATUVAR UYGULAMALARI - 11 ............................................................................... 23
LABORATUVAR UYGULAMALARI - 12 ............................................................................... 24
KAYNAKLAR ..................................................................................................................... 25
ALTERA FPGA KARTLARI LABORATUVAR UYGULAMALARININ
NEXYS™4 ARTIX-7 FPGA KARTINA UYARLANMASI VE GERÇEKLENMESİ
1. GİRİŞ
Proje kapsamında gerçekleştirilen uygulamalar; Altera FPGA kartlarında gerçeklenmek
üzere tasarlanan ve Altera firması tarafından yayınlanan laboratuvar uygulamalarının
Nexys™4 Artix-7 FPGA kartına uyarlanıp gerçeklenmesidir. Gerçeklenen uygulamalar için
Altera DE2 kartı laboratuvar uygulamaları referans alınmıştır. Bu uygulamalara aşağıda
verilen adresten ulaşabilirsiniz.
http://www.altera.com/education/univ/materials/digital_logic/labs/unv-labs.html
Projenin başlangıç aşamasında yapılması gereken en önemli durum Altera firması
tarafından yayınlanan laboratuvar uygulamalarının Nexys™4 kartında gerçeklenmesi için iki
FPGA kartı arasındaki farkları tespit etmekti. Altera laboratuvar uygulamalarında sıkça
kullanılan anahtarların, ledlerin, butonların sayıları her iki kart içinde farklıdır. Bunun
haricinde DE2 kartındaki RAM blokları ile Nexys™4 kartındaki Ram blokları ve her iki kart
üzerinde bulunan buton ve anahtarların bağlanma şekilleri de (ortak anot-katot) birbirinden
farklıdır. Bu durumlar göz önünde bulundurularak Altera firmasının yayınlamış olduğu
laboratuvar uygulamaları Nexys™4 kartı için değiştirilip kart üzerinde gerçeklenmiştir.
Nexys™4 Artix-7 FPGA kartı çalışmalarında kullanılmak üzere gerçeklenen laboratuvar
uygulamalarına göre yeni laboratuvar föyleri hazırlanmıştır.
Proje kapsamında kullanılan FPGA kartlarının görselleri aşağıdaki gibidir.
PROJE KAPSAMINDA GERÇEKLEŞTİRİLEN UYGULAMALAR
Altera firması tarafından gerçekleştirilmek üzere yayınlanan laboratuvar çalışmaları 12
uygulamadan oluşmaktadır. Her uygulamada kendi içinde farklı çalışmalara ayrılmıştır.
Laboratuvar Uygulamaları – 1
Bu uygulamada FPGA yongalarının giriş çıkışlarını yönetmek ve devreleri bu giriş çıkışlara
nasıl bağlanacağı esas alınmıştır ve bunun için Nexys™4 Artix-7 FPGA kartı üzerindeki
anahtarlar, ledler, butonlar ve 7-parçalı göstergeler kullanılmıştır.
Laboratuvar Uygulamaları – 2
Bu uygulamada kombinasyonel devreler tasarlanarak ikilik tabanda sayılar ile onluk
tabanda sayılar üzerinde işlemler yapılmış ve Nexys™4 Artix-7 FPGA kartı üzerindeki
anahtarlar, ledler, butonlar ve 7-parçalı göstergeler kullanılmıştır.
Laboratuvar Uygulamaları – 3
Bu uygulamada yaz-boz ve kaydedicilerin mantığı anlatılmaya çalışılmış ve Nexys™4
Artix-7 FPGA kartı üzerindeki anahtarlar ve ledler kullanılmıştır.
Laboratuvar Uygulamaları – 4
Bu uygulamada sayaçların nasıl oluşturulacağı ve nasıl kullanılması gerektiği gösterilmiş
ve Nexys™4 Artix-7 FPGA kartı üzerindeki anahtarlar, ledler, butonlar ve 7-parçalı göstergeler
kullanılmıştır.
Laboratuvar Uygulamaları – 5
Bu uygulamada zamanlanmış devrelerin kullanımı ve gerçek zamanlı saat uygulamaları
yapılmış ve Nexys™4 Artix-7 FPGA kartı üzerindeki anahtarlar, ledler, butonlar ve 7-parçalı
göstergeler kullanılmıştır.
Laboratuvar Uygulamaları – 6
Bu uygulamada matematiksel işlemlerin FPGA kartı üzerinde nasıl gerçekleştirileceği
anlatılmış ve Nexys™4 Artix-7 FPGA kartı üzerindeki anahtarlar, ledler, butonlar ve 7-parçalı
göstergeler kullanılmıştır.
Laboratuvar Uygulamaları – 7
Bu uygulamada sonlu durum makineleri (FSM) çalışma mantığı ve nasıl kullanılması
gerektiği üzerinde çalışılmıştır. Nexys™4 Artix-7 FPGA kartı üzerindeki anahtarlar, ledler,
butonlar ve 7-parçalı göstergeler kullanılmıştır.
Laboratuvar Uygulamaları – 8
Bu uygulamada bilgisayar sistemlerinde kullanılan hafıza birimlerinin (RAM-ROM) FPGA
kartı üzerinde nasıl kullanılması gerektiği ve kullanıcının kendisine ait hafıza birimlerini nasıl
oluşturması gerektiği üzerinde çalışılmıştır ve Nexys™4 Artix-7 FPGA kartı üzerindeki
anahtarlar, ledler, butonlar, 7-parçalı göstergeler ve hafıza birimleri (RAM-ROM)
kullanılmıştır.
Laboratuvar Uygulamaları – 9
Bu uygulamada FPGA kartında bir mikroişlemcinin nasıl tasarlanması gerektiği ve gerekli
devrelerde kullanılması üzerinde çalışmalar yapılmış ve Nexys™4 Artix-7 FPGA kartı
üzerindeki anahtarlar, ledler, butonlar, 7-parçalı göstergeler ve hafıza birimleri (RAM-ROM)
kullanılmıştır.
Laboratuvar Uygulamaları – 10
Bu uygulamada Laboratuvar Uygulamaları – 9 ‘da tasarlanan mikroişlemci biraz daha
geliştirilerek devrelerde gerçeklenmiştir ve Nexys™4 Artix-7 FPGA kartı üzerindeki anahtarlar,
ledler, butonlar, 7-parçalı göstergeler ve hafıza birimleri (RAM-ROM) kullanılmıştır.
Laboratuvar Uygulamaları – 11
Bu uygulamada algoritmik durum makineleri (ASM) çalışma mantığı ve nasıl kullanılması
gerektiği üzerinde çalışılmıştır. Nexys™4 Artix-7 FPGA kartı üzerindeki anahtarlar, ledler,
butonlar, 7-parçalı göstergeler ve hafıza birimleri (RAM-ROM) kullanılmıştır.
Laboratuvar Uygulamaları – 12
Bu uygulamada FPGA kartında sayısal işaretleri incelemenin nasıl yapılması gerektiği,
dışarıdan alınan analog bir işaretin dijital bir işarete dönüştürülüp incelenmesi ve tekrar
analog bir işarete dönüştürülüp gözlenmesi amaçlanmıştır. Uygulamada FPGA kartındaki
mikrofon girişinde alınan ve işlenen sesin ses çıkışına bağlanan hoparlör ile duyulması
gerçenlenmiştir. Nexys™4 Artix-7 FPGA kartı üzerindeki mikrofon, ses çıkışı ve hafıza birimleri
(RAM-ROM) kullanılmıştır.
2. FPGA NEDİR?
FPGA (Field Programmable Gate Array) programlanabilen bir yongadır (entegre veya
çipdir). Türkçede bu entegrelere "Alanda Programlanabilir Kapı Dizini" denilmektedir.
FPGA'lerin içerisinde sayısal(dijital) devre tasarlamak için kullanılabilen temel devre
elemanları bulunur. Flip-flop, AND, OR kapıları vb. Bu devre elemanları VHDL veya Verilog
gibi donanım tanımlama dilleri (Hardware Description Language - HDL) kullanılarak veya
şematik tasarım yapılarak birbirlerine bağlanır. Böylece istenilen sayısal devre sadece bir
FPGA entegresi kullanarak oluşturulabilir.
FPGA'lerin en önemli özelliklerinden birisi tekrar programlanabilir olmalarıdır. Yani
tasarımında bir hata tespit ettiğiniz zaman FPGA kodunuzu tekrar tasarlayıp testini
gerçekleştirdikten sonra kart üzerindeyken FPGA'e yükleyebilirsiniz. Bu esnek tasarım
özelliklerinden dolayı, bazı entegre üreticileri, tasarımlarını önce FPGA ile denerler ve son
aşamada FPGA üzerinde doğrulanmış olan bu tasarımı ASIC tasarıma dönüştürüp
entegrelerini piyasaya sunarlar.
FPGA entegreleri genelde paralel işlem gerektiren yüksek performanslı özel tasarımlar
için kullanılmaktadır. Görüntü işleme, sayısal işaret işleme (Digital Signal Processing - DSP)
işlemleri buna örnek olarak verilebilir. Ama tasarımınız sıralı bir işlem akışına uygun ise
mikroişlemci kullanmak daha mantıklı olacaktır. Bu noktada unutulmaması gereken şudur:
Mikroişlemcilerin iç mimarisi sabittir ve kod değişiklikleri temelde bu mimari üzerinde komut
akışının değişimi anlamına gelir ve FPGA'lere göre test ve doğrulama işlemleri daha kolay
gerçekleştirilebilir. FPGA'lerde ise, tasarımınız, entegrenin içindeki donanım yapısını ifade
eder. Her kod değişikliği mimari ve sinyal zamanlamaları açısından farklı yapılar ile
sonuçlanabilir. Aynı zamanda FPGA tasarımı sırasında bir veya birden fazla tasarım yazılımı
kullanmanız gerekebilir (tasarım girişi, sentez ve benzeşim adımları için). Bundan dolayı FPGA
tasarımlarında yapılan kod/tasarım değişikliklerini doğrulamak daha uzun zaman alabilir ve
uzmanlaşma gerektirir.
FPGA’i, içindeki transistörleri birbirinden bağımsız ve serbest olarak üretilmiş ham bir
entegre olarak düşünebiliriz. Bizim belirlediğimiz fonksiyona göre FPGA içindeki transistörler
birbirlerine bağlanır ve bu sayede istediğimiz fonksiyonu gerçekleştirir. Yani teorik olarak
transistör kapasitesi dâhilinde aklımıza gelen herhangi bir entegrenin yaptığı işi FPGA ile
yapabiliriz.
Örneğin gerçek zamanlı yüksek çözünürlüklü bir video görüntüsü üzerinde filtreleme
işlemi yapmak istiyoruz. Video aslında peş peşe sıralanan resimlerdir ve bu resimlerin her
birine “frame” denilmektedir. En basit haliyle bunun için videonun bir resim karesini giriş
portlarından almamız, onu filtrelememiz ve çıkış portlarından göndermemiz gerekir. Sonra
ikinci resim için de aynı işlemleri gerçek zamanlı olarak tekrarlamak durumundayız. Standart
entegreler (örneğin bir mikroişlemci) kullanırsak bu üç işlemi (alma, filtreleme, gönderme)
sırayla yapıp bitirdikten sonra gelen ikinci resmi almaya başlarız. Eğer bu işlemleri yeterince
hızlı yapamazsak sıradaki resmi kaçırabiliriz. FPGA’de ise bu işlemler paralel olarak devam
eder. Örneğin ilk resmi alıp filtreleme işlemini yaparken ikinci resmi almaya başlarız. İlk resmi
gönderirken ikinci resmi filtrelemeye ve üçüncü resmi almaya başlarız. Bunun yanında,
filtreleme işlemi genel olarak yoğun çarpım gerektirmektedir. Standart bir işlemci ile bu
çarpma işlemlerini de sırayla yapmak zorundayız. Oysaki FPGA ile bu işlemleri de paralel
olarak yani çok hızlı bir şekilde yapabiliriz.
Özet olarak, FPGA’ler bize paralel işlem kabiliyeti sunan ve içyapısını istediğimiz
fonksiyon ve uygulamaya göre değiştirebildiğimiz donanım-programlanabilir entegrelerdir.
FPGA ile mikroişlemci arasındaki en büyük ve temel fark FPGA’in donanımsal olarak sabit
bir yapıya sahip olmayıp kullanıcı uygulamasına göre programlanabilir olmasıdır. İşlemciler
ise sabit bir donanım yapısına sahiptir. Yani içerisindeki tüm transistör, bellek, çevrebirimi
yapıları ve bağlantıları sabittir. İşlemcinin yapabileceği işlemler (toplama, çarpma, I/O
kontrol, vs) önceden tanımlıdır ve kullanıcı yazılımla bu işlemleri kendi amacına uygun olarak
“sıralı bir şekilde” işlemciye yaptırabilir.
FPGA’de ise donanım yapısı sabit değildir ve kullanıcı tarafından tanımlanır. FPGA
içerisindeki mantık hücreleri sabit olmakla birlikte bunların gerçekleştirdiği fonksiyonlar ve
aralarındaki bağlantılar kullanıcı tarafından belirlenir. Dolayısıyla FPGA’in yapabileceği
işlemler önceden tanımlanmış değildir. Yazılan HDL koduna göre istediğiniz işlemleri “paralel
olarak” yani aynı anda yaptırabilirsiniz. Paralel işlem yapabilme yeteneği FPGA’yi işlemciden
ayıran ve birçok alanda üstün kılan en önemli özelliklerdendir.
3. NEXYS™4 ARTIX-7 FPGA
Digilent firmasına ait NEXYS™4 kartı, Xilinx firmasına ait Artix-7 FPGA’yini üzerinde
barındırmaktadır. NEXYS™4 kartı üzerinde bulunan bileşenler aşağıdaki şekilde gösterilmiştir.
1
2
3
4
5
6
7
8
9
10
11
12
Güç Seçim Bağlantısı
UART/JTAG USB Portu
Yapılandırılmış SD/USB Bağlantısı
PMOD Konektörü
Mikrofon
Güç Kaynağı Test Noktası
Ledler (16)
Anahtarlar (16)
7-Parçalı Göstergeler (8)
JTAG Portu İçin Dış Kablo
Butonlar (5)
Sıcaklık Sensörü
13
14
15
16
17
18
19
20
21
22
23
24
FPGA Resetleme Butonu
CPU Resetleme Butonu
Analog İşaretler PMOD Konektörü
Programlama Modu Bağlantısı
Ses Konektörü
VGA Konektörü
FPGA Programlandı Ledi
Ethernet Konektörü
USB Konektörü
PIC24 Programlama Portu
Güç Anahtarı
Güç Girişi (5V)
NEXYS™4 kartı üzerinde bulunan bazı birimlerin Artix-7 FPGA yongasına bağlanma
şekilleri ve FPGA yongasına bağlı oldukları pin numaraları aşağıdaki şekilde belirtilmiştir.
Şekilde gösterilen Artix-7 FPGA yongasına bağlı birimleri kullanmak için yapılması gereken bazı
hususlar vardır. Örneğin; 7-parçalı göstergeleri kullanmak için FPGA yongası üzerinde bizim
kullanımımıza açık M1,L1,N4,N2 … pinleri vardır. AN7 değişkeni Artix-7 FPGA yongasında M1
pinine bağlanmıştır. AN7 değişkenine mantık değeri ‘1’ verildiği zaman yani M1 pinine 3.3V
gerilim verildiği zaman transistörün bacakları arasında gerilim farkı oluşmadığı için akım
akmaz ve 7 parçalı gösterge beslenemez. AN7 değişkenine mantık değeri ‘0’ verildiği zaman
yani M1 pinine gerilim verilmediği zaman transistörün bacakları arasında gerilim farkı oluşur
ve 7 parçalı gösterge beslenir. Başka bir örnek verecek olursak Artix-7 FPGA yongasında
kullanıma açık 16 tane led bağlıdır. Bu ledler FPGA yongasının T8,V9,R8, … pinlerine
bağlanmıştır. T8 pinine mantık değeri ‘0’ verildiği zaman ledin bağlı olduğu telden akım
akmayacak, dolayısıyla led yanmayacaktır. Fakat T8 pinine mantık değeri ‘1’ yani o pine 3.3V
gerilim verilirse ledin bağlı olduğu telden akım akacak ve led yanacaktır. Bir başka örnekte
anahtarların çalışma şekline bakalım. FPGA yongasının R7 pinine anahtar bağlanmıştır.
Anahtar ‘0’ konumunda iken R7 pini toprak ile bağlantılıdır. Fakat anahtar ‘1’ konumunda
iken R7 pini 3.3V gerilim değerine sahiptir.
Artix-7 FPGA yongasına bağlı kullanıma açık hafıza birimleri de aşağıdaki şekilde
gösterilmiştir.
NEXYS™4 kartına ait en kapsamlı bilgileri aşağıdaki adresten edinebiliriz.
https://digilentinc.com/Products/Detail.cfm?NavPath=2,400,1184&Prod=NEXYS4
4. XILINX ISE DESING SUITE
Bu bölüme kadar projede uygulanması laboratuvar çalışmalarından ve NEXYS™4 Artix-7
FPGA kartının özelliklerinden bahsettik. Bu bölümde ise laboratuvar uygulamalarını NEXYS™4
Artix-7 FPGA kartında gerçekleştirmek için kullanacağımız programdan bahsedeceğiz.
Xilinx firması ürettikleri FPGA yongalarını programlayabilmek için ISE Design Suite
programını geliştirmişlerdir. Proje kapsamında öncelikli olarak ISE Design Suite programında
nasıl yeni proje oluşturulacağından, Verilog programlama dili ile yazılan çalışmaların Artix-7
FPGA yongasına nasıl gönderileceğinden bahsedeceğim.
İlk olarak ISE Design Suite programında yeni proje oluşturmayı şekillerle inceleyelim.
ISE Design Suite programı açıldıktan sonra New – Project sekmeleri tıklandıktan sonra
projemizin kaydedileceği yeri ve proje ismimizi belirlemeliyiz.
Sonraki adımda aşağıdaki şekilde olduğu gibi;
Evaluation Development Board, Product Category, Family, Device, Package, Speed ve
Preferred Language ara yüzlerinin seçimleri doğru yapılmalıdır. Artix-7 FPGA yongasının
özellikleri yukarıda seçildiği gibidir. Her yonga için ara yüzlerden o yonganın özelliklerinin
seçilmesine dikkat edilmelidir.
Proje ismi ve FPGA yongasının özellikleri
seçildikten sonra yapılması gereken adım
Verilog programlama dili için yeni bir
kaynak eklemektir. Bunun için yandaki
şekilde yuvarlak içinde bulunan New Source
butonu tıklanmalıdır.
New Source butonuna tıklandıktan sonra
karşımıza çıkan New Source Wizard ara
yüzü aşağıdaki şekilde gösterilmiştir.
Şekilde olduğu gibi projemiz için farklı
kaynaklar
ekleyebiliriz.
Projemizin
genelinde en fazla kullanacağımız kaynaklar
ilk olarak Verilog Module, Verilog Test
Fixture ve IP (Core Generator) ’ dir.
Verilog Module kaynağını seçtikten sonra
modülün
ismini
girip
projemize
başlayabiliriz.
Projenin bu aşamasında ise Verilog programlama dili ile oluşturulan çalışmanın Artix-7
FPGA yongasına nasıl gönderileceğinden bahsedeceğim.
FPGA yongasına ISE Design Suite programında oluşturulan projeyi göndermek için
IMPACT aracını kullanıyoruz. Öncelikli amacımız projemizin ISE Design Suite programı
tarafından doğru bir şekilde sentezlenmesidir. Sentezleme işlemi tamamlandıktan sonra
aşağıdaki şekilde gösterilen Manage Configuration Project (IMPACT) bölümüne geçilmelidir.
Açılan pencerede Boundary Scan
bölümüne geçilip Add Xilinx Device
seçilerek projemiz IMPACT aracına
yüklenmelidir.
Sonraki adımda ise aşağıdaki şekilde
sembol olarak gösterilen FPGA
yongasına sağ tıklanıp Program
seçilerek
FPGA
yongasının
programlanması beklenmelidir.
5. PLAN AHEAD
Bu bölümde Verilog programlama dili ile oluşturduğumuz çalışmanın FPGA yongasında
gerçekleşebilmesi için, FPGA’in oluşturduğumuz çalışmada kullanacağımız pinlerinin
belirtilmesinden bahsedeceğim.
Verilog programlama dili ile NEXYS™4 kartı üzerindeki bir ledi yakmak için Artix-7 FPGA
yongasında o ledin bağlı olduğu pine mantık değeri ‘1’ verilmesi gerektiğini daha önce
belirtmiştim. Pinlerin oluşturduğumuz çalışmada hangi değişkene karşılık geldiği
belirtilmelidir. Aksi takdirde projemiz ISE Design Suite programı tarafından zaten
derlenemeyecektir.
Verilog programlama dili ile oluşturulan projede değişkenlerin hangi pinlere karşılık
geldiğinin ayarlanması Plan Ahead programı sayesinde yapılmaktadır.
6. LABORATUVAR UYGULAMALARI – 1
Laboratuvar Uygulamaları – 1 bölümünde FPGA yongalarının pinlerine erişmek ve
erişilen pinlerdeki giriş ve çıkışları kontrol etmek amaçlanmıştır.
Yapılan uygulamalarda öncelikle anahtarların durumları ledlerde gözlenmiştir. Böylelikle
FPGA pinlerine doğru bir şekilde erişildiği anlaşılmıştır. Diğer uygulamalarda ise verilog
programlama dilinde bilgi seçici modülü oluşturulup anahtarlarla belirlenen bilgi işaretleri
yine anahtarlarla seçilerek çıkışlarda (led) sonuçlar gözlenmiştir. Anahtarlarla belirlenen
bilgiler bazı uygulamalarda sayı, bazı uygulamalarda ise ‘H-E-L-O’ harfleri göstergelerde
gözlenmiştir. Bilgi seçici modülü kullanılarak kayan yazı ‘H-E-L-L-O’ uygulaması yapılmıştır.
7. LABORATUVAR UYGULAMALARI – 2
Laboratuvar Uygulamaları – 2 bölümünde kombinasyonel devreler tasarlanarak
NEXYS™4 kartı üzerindeki anahtar, led ve göstergeler kullanılmıştır.
Yapılan uygulamalarda öncelikle anahtarla girilen sayıların onaltılık tabanda ve onluk
tabandaki değerleri göstergelerde gözlenmiştir. Diğer uygulamalarda ise anahtarlar ile girilen
sayıların toplamları önce ledlerde daha sonra göstergelerde gözlenmiştir. Sayılar ilk
aşamalarda tek basamaklı seçilirken sonraki aşamalarda 2 basamaklı istenmiştir.
8. LABORATUVAR UYGULAMALARI – 3
Laboratuvar Uygulamaları – 3 bölümünde yaz-boz ve kaydediciler üzerinde çalışmalar
yapılmıştır.
Yapılan çalışmalarda SR-Latch yapısı üzerinde simülasyonlar yapılıp istenen devreler
gerçeklenmiştir. Bizden istenen SR-Latch ve gerçeklenen devreler aşağıdaki şekillerde
belirtilmiştir.
9. LABORATUVAR UYGULAMALARI – 4
Laboratuvar Uygulamaları – 4 bölümünde sayaç tasarımları, sayaçların FPGA yongasında
kullanımları ile ilgili uygulamalar yapılmıştır.
Yapılan uygulamalarda öncelikle kullanıcı kontrollü sayıcı modülü tasarlanmıştır. ‘clock’
sinyali kullanıcı tarafından butonlarla sağlanmıştır. Sonuçlar göstergelerde gözlenmiştir.
Diğer uygulamalarda ise sayıcı kullanıcı kontrolünden çıkarılıp saniyede bir artması
istenmiştir ve sonuçlar göstergelerde gözlenmiştir. Laboratuvar Uygulamaları – 1 bölümünde
bilgi seçici modülü ile yapılan kayan yazı ‘H-E-L-L-O’ uygulaması bu bölümde tekrar
uygulanmıştır. Ancak bu sefer bilgi seçici modülü yerine saniyede bir artması istenmiştir.
10. LABORATUVAR UYGULAMALARI – 5
Laboratuvar Uygulamaları – 5 bölümünde sayıcı modülleri geliştirilerek zamanlanmış
devreler tasarlanmıştır. Gerçek zamanlı sonuçlar NEXYS™4 kartı üzerinde gözlenmiştir.
Yapılan uygulamalarda öncelikle Laboratuvar Uygulamaları – 4 ‘te yapılana benzer bir
şekilde kullanıcı kontrollü sayıcı tasarlanıp sonuçlar ledlerde gözlenmiştir. Saniyede bir artan
3 basamaklı sayı tasarlanıp göstergelere atanmıştır. Gerçek zamanlı saat uygulaması
yapılmıştır. İkişer göstergede saat, dakika ve saniyeler gözlenmiştir. Son olarak Mors
Alfabesi’nin ilk sekiz harfi ledlerde gözlenmiştir. Mors Alfabesi nokta ve çizgilerden oluşan ve
telgraf haberleşmesinde kullanılan bir alfabedir. Uygulamada bizden istenen nokta
karakterinin NEXYS™4 kartı üzerindeki bir ledi 0.5 sn, çizgi karakterinin ise 1.5 sn yakmasıdır.
Mors alfabesinin ilk sekiz harfinin şeması aşağıda verilmiştir.
11. LABORATUVAR UYGULAMALARI – 6
Laboratuvar Uygulamaları – 6 bölümünde matematiksel işlemlerin Artix-7 FPGA
yongasında uygulanması ve sonuçlarının göstergelerde gözlenmesi amaçlanmıştır.
Yapılan uygulamalarda öncelikle iki basamaklı 2 sayı anahtarlar yardımı ile belirlenmiş ve
toplamları göstergelerde gözlenmiştir. Diğer uygulamalarda ise iki basamaklı 2 sayının farkı,
tek basamaklı ve iki basamaklı sayıların çarpımları göstergelerde gözlenmiştir.
12. LABORATUVAR UYGULAMALARI – 7
Laboratuvar Uygulamaları – 7 bölümünde sonlu durum makineleri (FSM) tasarımı ve
FPGA yongaları üzerinde kullanımı üzerinde çalışılmıştır.
Yapılan çalışmalarda; giriş değerinin dört saat darbesi boyunca değişmemesi durumunda
çıkışı mantık değeri ‘1’ yapan sonlu durum makinesi tasarlanmıştır. Tasarlanacak olan sonlu
durum makinesinin durum diyagramı ve simülasyon sonuçları aşağıdaki şekillerde
gösterilmiştir. Sonuçlar ledlerde gözlenmiştir.
13. LABORATUVAR UYGULAMALARI – 8
Laboratuvar Uygulamaları – 8 bölümünde bilgisayar sistemlerinde kullanılan hafıza
birimlerinin (RAM-ROM) FPGA kartı üzerinde nasıl kullanılması gerektiği ve kullanıcının
kendisine ait hafıza birimlerini nasıl oluşturması gerektiği üzerinde çalışılmıştır.
Yapılan çalışmalarda ilk olarak ISE Design Suite programının IP Core Generator aracı
kullanılarak FPGA yongası içinde RAM bloğu oluşturulmuştur. Oluşturulan RAM bloğu
içindeki adreslere kullanıcı tarafından veriler yazılmış ve belirli adreslere yazılan veriler
okunmuştur. Diğer uygulamalarda ise yine RAM bloğu oluşturmak amaçlanmıştır. Ancak bu
sefer IP Core Generator aracı yerine Verilog programlama dilindeki reg değişkeni kullanılarak
RAM bloğu oluşturulmuştur. Artix-7 FPGA yongasına bağlı SRAM ‘e müdahele edilip içindeki
veriler değiştirilmiştir.
Laboratuvar Uygulamaları – 8 bölümünde hafıza birimlerinin oluşturulması, oluşturulan
hafıza birimlerine veriler yazılması ve yazılan verilerin okunulması gerçeklenmiştir.
14. LABORATUVAR UYGULAMALARI – 9
Laboratuvar Uygulamaları – 9 bölümünde FPGA yongası üzerinde bir mikroişlemcinin
nasıl tasarlanması gerektiği ve gerekli devrelerde kullanılması üzerinde çalışmalar yapılmıştır.
Bir mikroişlemcinin çalışma şekli ve tasarlanmak istenen
gerçekleştirmesi gereken komutlar aşağıdaki şekillerde verilmiştir.
mikroişlemcinin
Yapılan ilk çalışmada anahtarlarla girilen veriler ve yine anahtarlarla girilen komutlar
FPGA yongasında gerçekleştirilip göstergeler ve ledler üzerinde gözlenmiştir. mv komutu ile
bir kaydedici içindeki veri diğer kaydediciye yazılmıştır. mvi komutu ile dışarıdan yada RAM’
dan alınan veri kaydediciye yazılmıştır. add ve sub komutları ile iki kaydedicinin barındırdığı
veriler toplanıp yada çıkartılıp kaydedicilerden birine yazılmıştır.
Laboratuvar Uygulamaları – 9 bölümünde basit düzeyde bir mikroişlemci FPGA
yongasında tasarlanıp gerçeklenmiştir.
15. LABORATUVAR UYGULAMALARI – 10
Laboratuvar Uygulamaları – 10 bölümünde bir önceki uygulamada yapılan mikroişlemci
geliştirilmek istenmiştir.
Geliştirilmiş mikroişlemcinin çalışma şekli ve eklenen komutlar aşağıdaki şekillerde
gösterilmiştir.
Laboratuvar Uygulamaları – 9 bölümünde tasarlanan mikroişlemciye ek olarak ld, st,
mvnz konutları eklenmiştir. ld komutu kaydedicideki verinin RAM’ de gösterdiği adresteki
veriyi başka bir kaydediciye yazma görevini üstlenir. st komutu ise kaydedicideki veriyi diğer
bir kaydedicinin içindeki verinin RAM’ de gösterdiği adrese yazılmasını sağlar. mvnz komutu
ise bir kaydedicideki verinin diğer kaydediciye yazılmasını koşullu bir şekilde yapan komuttur.
Laboratuvar Uygulamaları – 10 bölümünde geliştirilmiş düzeyde bir mikroişlemci FPGA
yongasında tasarlanıp gerçeklenmiştir.
16. LABORATUVAR UYGULAMALARI – 11
Laboratuvar Uygulamaları – 11 bölümünde aritmetik durum makinelerinin (ASM) nasıl
oluşturulması gerektiği ve FPGA yongaları üzerinde nasıl kullanılması gerektiği üzerine
çalışmalar yapılmıştır.
Yapılan çalışmalarda ilk olarak kullanıcı tarafından girilen 8 bitlik bir sayının kaç tane ‘1’
değeri barındırdığı aritmetik durum makineleri kullanılarak hesaplanmıştır ve göstergelerde
gözlenmiştir. ASM durum diyagramı aşağıdaki şekilde gösterilmiştir. Diğer uygulamada ise
kullanıcı tarafından girilen bir sayının oluşturulan RAM bloğu içinde herhangi bir adreste olup
olmadığı ASM bloğu kullanılarak gerçeklenmiştir.
17. LABORATUVAR UYGULAMALARI – 12
Laboratuvar Uygulamaları – 12 bölümünde FPGA kartında sayısal işaretleri incelemenin
nasıl yapılması gerektiği, dışarıdan alınan analog bir işaretin dijital bir işarete dönüştürülüp
incelenmesi ve tekrar analog bir işarete dönüştürülüp gözlenmesi konusunda çalışmalar
yapılmıştır.
Yapılan çalışmalarda ilk olarak NEXYS™4 kartı üzerindeki ADMP421 mikrofon modülü
kullanılarak analog bir veri olan ses işareti PDM modülü kullanılarak Artix-7 kartında
oluşturulan kaydedicilere kaydedilmiştir. Daha sonra kaydedilen verilen AUD_PWM
modülünde süzgeçlenerek ‘mono audio out’ çıkışına bağlanan hoparlör ya da kulaklık ile
analog bir veri olarak dinlenmiştir.
ADMP421 mikrofon modülü ve AUD_PWM devre şeması aşağıdaki şekillerde
belirtilmiştir.
KAYNAKLAR
http://www.xilinx.com/
http://www.xilinx.com/products/silicon-devices/fpga/artix-7/index.htm
http://www.altera.com/education/univ/materials/manual/unv-lab-manual.html
http://www.altera.com/devices/fpga/cyclone2/cy2-index.jsp
http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,400,1184&Prod=NEXYS4
http://objectmix.com/verilog/189666-help-switch-debouncing.html
http://forums.xilinx.com/

Benzer belgeler

Gömsis2008 Bildirileri

Gömsis2008 Bildirileri Bu çalışmasında bir asenkron makinanın alan yönlendirme kontrolünde programlanabilir kapı dizileri (FPGA) kullanımının fizibilite çalışması yapılmıştır. Öncelikle asenkron makinanın dolaylı alan yö...

Detaylı