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
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ö...