elektrik port üyelik servisleri elektrik port üyelik servisleri

Altera DE0-Board ile FPGA Programlama |
2. Bölüm

Altera DE0 ve FPGA'yı tanıtarak başladığımız yazı seriminizin 2. bölmünde Verilog programlama ile FPGA programlamayı uygulamalı bir şekilde anlattık. Verilog programlama ile FPGA programlama hakkındaki sorularınızı bize yorum olarak iletebilirsiniz.



A- A+
24.02.2017 tarihli yazı 2430 kez okunmuştur.
Verilog dilini anlatabilmek adına örnekler üzerinden açıklamalar yapacağız. İlk öncelikle Modelsim programında Verilog programımızı yazabilmek için Windows işletim sistemine sahip bilgisayarlarda yerel disk C’de veya diğer yerel disklerde herhangi bir klasör oluşturup, bu klasör içinde tekrar bir klasör oluşturup Modelsim programının oluşturduğu çalışma dosyalarını son oluşturduğunuz klasör içine kaydetmelisiniz. Şimdi programlamaya geçmek için sıradan basit bir lojik devre oluşturalım. Bu tasarım için doğruluk tablosu lazım. Doğruluk tablosu aşağıdaki gibi olsun.


 

Doğruluk tablosu yukarıdaki gibi olan ve üç girişi, bir çıkışı olan bu devrenin şekli ve karnough haritası aşağıdaki gibidir.



►İlginizi Çekebilir: FPGA Nedir?

Artık devremizi yukarıdaki gibi tasarladık. Yukarıdaki devrede, NOT ve AND kapıları çıkışında sırasıyla W1 ve W2 yazmakta. Bunlar programımızı yazarken kullanacağımız sanal kablolardır. Bu yapıları kullanarak devremizi kod içinde gerekli yerlere bağlarız. Şimdi Modelsim ile aşağıdaki sırayı izleyerek dosyamızı oluşturalım.

Yerel Disk (İstediğiniz yer) > FPGA adı altında klasör oluşturalım > FPGA klasörü içinde istediğiniz isimle bir klasör daha oluşturun.

Şimdi de Modelsim programında izlenilmesi gereken sıra aşağıdaki gibidir.

Modelsim programını açalım > Sol üstten File sekmesine basalım > New > Project > Çıkan sekmede proje ismine istediğinizi yazınız > Project location yazan yerde FPGA klasörü içindeki klasörü seçin daha sonra tamama tıklayın > Çıkan sekmede create new file’ı seçin > Çıkan sekmede file name olarak örneğin elektrikport.v yazınız. Burada ‘.v’ kısmı Verilog dosyası olduğunu anlatmaktadır. Daha sonra ‘Add file as type’ kısmını Verilog olarak seçin ve ok tuşuna basın. Bu oluşturulan dosya devrenin asıl kodlarını içerir. Birde test dosyasını oluşturmalıyız ki yazdığımız kodlar çalışıyormu kontrol etmeliyiz > Asıl Verilog dosyası son adımda anlatıldığı gibi oluşturulduğunda ‘Create Project File’ sekmesi tekrar karşımıza çıkar. Burada da test dosyası için elektrikporttest.v oluşturulur ve yine Verilog seçilir.

 

Artık programlamaya geçebiliriz. Öncelikle devrenin Verilog programını vererek kodları anlatalım. Devrenin Verilog kodu aşağıdaki gibidir.
 

►İlginizi Çekebilir: Savunma Sanayinde FPGA Kullanımı

Kodu parça parça anlatalım. 1. satırda, dosyasını oluşturduğumuz Verilog dosyasının ismini module ile yazarak parantez içinde sistemin veya devrenin giriş ve çıkışlarını belirttik. Verilogta modüller içinde herzaman ilk önce çıkış daha sonra girişler tanımlanır. 3. satırda a,b ve c giriş olarak atadık. 4. satırda x’i çıkış olarak atadık. 5 satırda yukarıda da belirtmiş olduğumuz gibi w1 ve w2 yi wire (sanal kablo) ataması ile tanımladık. Devreden de görüleceği üzere 7. satırda ki kodun anlamı w1 çıkışını, girişi b olmak üzere değilledik. 8. satırın anlamı ise benzer bir şekilde, çıkışı w2 olan, a ve c girişlerinden oluşan ve kapısını tanımladık. 10. satırda da çıkış x olan, girişi w1 ve w2 olan veya kapısını tanımladık ve “endmodule” koduyla da programın bittiğini tanımladık. Yukarıdaki devrenin test Verilog programıda aşağıdaki gibidir.
 

İlk satırda, test programının ismiyle modülümüzü tanımladık. Yukarıda ki Verilog programında yazdığımız girişleri, test programında register olarak atıyoruz. Çünkü test programını simüle ettiğimizde bilgisayar RAM üzerinde bir veri akışı sağlayacak. Daha sonra çıkışımızı wire olarak atayacağız. Bir sonraki satırda ise yukarıda kodunu yazdığımız programın ismiyle yani elektrikport ismiyle ve tamamıyla size kalmış bir takma isim ‘ee0’gibi çıkışı x ve girişleri registerdan dolayı ra,rb ve rc olan modülü test programına çekiyoruz. İnitial yani ilk başlatma sonra begin yani başla’dan sonra simülasyon şartlarını yazıyoruz. Baştaki #50 bize 50 birimlik gecikmeyi anlatmaktadır. Test koşullarımızı doğruluk tablosundan yazıyoruz ve “end” komutu ile simülasyonu ve “endmodule” komutu ile test programını sonlandırıyoruz. Şimdi ise simülasyonu gerçekleştirmek için Modelsim programında sol üstten kaydediyoruz. Daha sonra Compile seçeneğinden Compile All seçeneğine tıklıyoruz. Eğer programı doğru ise sol taraftaki project sekmesinde tik işareti görülecektir. Eğer yanlışsa çarpı işareti görülecektir. Ayrıca alttaki Transcript sekmesinden hatanızın nerede olduğunu görebilirsiniz.
 

Şimdi simülasyon için Modelsim programında Simulate seçeneğine tıklayalım. Çıkan sekmede Start simulation seçeneğine tıklayalım. Çıkan kutuda en başta design sekmesi altında genellikle en üstte bulunan work adında bir dosya bulunur. Bu dosya projeye başladığınızda oluşturduğunuz klasör içinde, Modelsim tarafından oluşturulur. Şimdi work adındaki dosyaya tıklayalım, altında çıkan iki dosyadan test olanını seçin ve ok tuşuna basın. Açılan yeni sekme Object sekmesidir. Bu sekmede kontrol tuşu ile ra, rb, rc ve x seçeneklerini seçin. Hepsini seçip sağ tıklayın ve sırasıyla Add > To Wave > Selected İtems seçiniz. Daha sonra çıkan Wave ekranında simülasyonumuzun ve devremizin çalışıp çalışmadığını test edeceğiz. Bunun için tekrardan Simulate sekmesinin içine gelip Run > Run All seçeneğine tıklayınız. Böylelikle test programı içine yazdığınız test koşulları ile devrenin sağlıklı çalışıp çalışmadığını test edebiliriz. Tasarımımızın simülasyon sonucu aşağıdaki gibidir.
 

Bu örneği tamamladığımıza göre biraz daha üst bir devreye geçelim sıradaki devremiz bir tam toplayıcı devresidir.
 

Doğruluk tablosu yukarıdaki gibi olan ve üç girişi, iki çıkışı olan bu devrenin şekli aşağıdaki gibidir. Bu devrenin amacı 1 bitlik A,B ve Ci girişlerini toplayarak 1 bitlik toplam sonucu ve 1 bitlik elde çıkışı sağlamasıdır. S çıkışı toplam’ı, Co çıkışı ise elde çıkışını anlatmaktadır.
Bu devrenin Verilog kodu aşağıdaki gibidir.
 

Bu Verilog programımızda tamtoplayici ismiyle modülümüzü oluşturuyoruz. Giriş, çıkış ve devre içindeki bağlantları yani wire atamalarımızı yapıyoruz ve satır satır devremizdeki elemanları ilk önce çıkışı sonra girişleri belirtecek şekilde tanımlıyoruz. Test programı da aşağıdaki gibidir.
 

Test programımızda da gerekli tanımlamalarımızı yapıyoruz. Begin kodundan sonra ra, rb ve rci değişkenlerimize istediğimiz atamaları yaparak test programımızı bitiriyoruz. Simülasyon programında da bir önceki örnekteki adımlar izlenerek aşağıdaki sonuca ulaşırız.
 

Bu yazımızda Verilog programına giriş yaparak basit uygulamalar yaptık. Bir sonraki bölümde ise daha gelişmiş uygulamalar yaparak Quartus programına da değineceğiz. Ayrıca ne kadar çok pratik yaparsanız o kadar faydalı olacaktır.

Verilog programlama ile FPGA programlama hakkındaki sorularınızı bize yorum olarak iletebilirsiniz.

Ömer Faruk GÜMÜŞ Ömer Faruk GÜMÜŞ Yazar Hakkında Tüm yazıları Mesaj gönder Yazdır



Aktif etkinlik bulunmamaktadır.
ANKET
Endüstri 4.0 için En Hazır Sektör Hangisidir

Sonuçlar