For english version http://dincaysroom.blogspot.com (Not complete yet)
Spartan 3E etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Spartan 3E etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

12 Eylül 2009 Cumartesi

Klavye Arayüzü - 1

Klavyeden basılan tuşun kodunu 7 bölmeli ledde gösteren bir program yazdım. Program klavyeden gelen veriyi doğrudan ledlerde gösteriyor.

Klavye veriyi SPI(Serial Peripheral Interface) ile gönderiyor. SPI'de bir clock bir de data hattı var. Clock'u da datayı da klavye sürüyor. O yüzden clockdaki kenarları bulmak FPGA'in işi. Klvaye veriyi paket halinde gönderiyor. Bir paket 11 bit. Paket biçimi 1 bit start biti ve hep 0 + 8 bit data + odd parity biti + stop bit. Data, clock'un negatif kenarında okunmalı. Datanın en düşük biti ilk yollanıyor. Aşağıdaki şekil PS2 klavyenin 1 paketi yollarkenki pin seviyelerini gösteriyor.

FPGA, ps2clockdaki negatif kenarları algılayıp, durum makinası ile ps2data'yı shift registera koyuyor. Sonra pariteyi kontrol edip, eğer hata yoksa ledlere veriyor ve data_ready bayrağını 1 yapıyor. Hata varsa ölü bir durumda kalıyor. FPGA'in tekrar çalışması için resetlemek gerekiyor. Ps2 klavyenin çalışma frekansı 10kHz - 16kHz arasında. Bu çok düşük çalışma frekansından dolayı 2 klavye pininin de filtrelenmesi gerekiyor.

Aşağıdaki şekilde klavye kodları var.
Bir tuşa basıldığında klavye o tuşun kodunu yolluyor. Eğer tuşa basılı tutulursa 0.1 saniye sonra tuşun kodunu sürekli yollamaya başlıyor. Tuş bırakılınca da F0 ve tuşun kodunu yolluyor. Yani 2 paket yolluyor. Program en son basılan tuşun kodunu gösterdiği için F0 gözükmüyor, onun yarine bırakılan tuşun kodu gözüküyor. Ama tuş bırakılınca ledlerin kısa bir süre yandığı görebiliyorum. Tuşa basılı tutulunca olan sürekli yollamalar da gözüküyor.

Bundna sonra klavye ile kartın üzerindeki LCD ekrana yazı yazabilecek programı yazmayı düşünüyorum.

Program kodları buradan indirilebilir.

29 Mayıs 2009 Cuma

Kart Geldi

Sonunda kartım geldi. 26 Mayıs salı günü elime ulaştı. Buraya yazabilmek için anca vakit bulabildim. Kartı Xilinx'in Türkiye distribütörü Empa Elektronik'ten aldım. Fiyatı 190$+KDV. KDV dahil 350 YTL etti. Sipariş formunu imzaladıktan sonra 4 buçuk haftada elime geçti kart.

Kit kutu içinde geldi. Güzel bir kutusu var.

İşte kartın fotoğrafı

Kartın 1.5 m'den uzun USB kablosu var ama adaptör kablosu 1 m'den kısa. Prizlerin, USB girişlerine göre daha zor ulaşılabilir yerlerde olduğunu düşününce adaptör kablosu çok kısa. Kartı masaya koyduğumda; priz, yerde kartın tam altında değilse adaptör kablosu yetmiyor. Bu yüzden uzatma kablosunu bilgisayar kasasının üstüne koymak zorunda kaldım.

Korktuğum hirose konektörü. Korktuğum kadar varmış. Bu konnektörden hayatta bağlantı alamazdım. İyi ki eklenti kartını almışım.

Eklenti kartı ve 7 segment display ile görüntüsü. 7 segment, hirose konnektörün altındaki sokete de takılabiliyor ama hirose kartı takılı değil iken.

Kitin içinde iki tane referans kitabı çıktı:
  • Introduction to Programmable Logic
  • EDK Concepts, Tools and Techniques
Introduction to Programmable Logic kitabında, Xilinx FPGA ve CLPD'leri ve Webpack programını anlatıyor. Spartan serisi için en son Spartan 2E'lerden bahsediyor. Webpack'in de 6 sürümü üzerinden anlatıyor. Kitabın güncellemeye ihtiyacı var.

İkinci kitapta Embedded Design Kit'ini anlatıyor. EDK hakkında çok bilgim olmadığı için bu kitap hakkında pek yorum yapamayacağım.

Aldığım kitin kullanıcı rehberinin çıkmaması hoş değil. Bunu kendim kitap haline getireceğim artık.

Kitten 3 cd çıktı.
  • Spartan 3 Customer Resource CD
  • Xilinx 9.2i Design Tools Evaluation DVD
  • Embedded Development Kit DVD ve ISE 9.2i DVD
ISE'nin 11 sürümü çıkmışken kitin içinden 9.2 sürümü çıkıyor. Üstelik 2 tane. Hoş değil.

Spartan 3 Customer Resource CD'sinde bir sürü pdf var. İnanıyorum ki hepsini Xilinx'in sitesinden indirebilirim.

Design Tools Evaluation DVD'sinde ISE, webpack Chip scope gibi programlar var. Ama hepsi 9.2 sürümü. Şu sıralar işime yarayacak sadece webpack. Onunda 10.1 sürümünü kullanıyorum. Şu an işime yaramaz bir cd.

EDK DVD'sinde, ne olduğunu yeni yeni öğrenmeye başladığım gömülü tasarımdan bahsediyor.

Kitten çıkanlar hakkında bu kadar.

Kartın her tarafı açıkta olduğu için ESD tehlikesi var. Bunun için aklıma gelen ilk şey adaptör toprağına bir kablo bağlayıp ara sıra bu kabloya dokunmak. Şimdilik böyle idare edeceğim. Belki ileride ESD korumalı masa örtülerinden alırım.

Kartı çalıştırdığımda, kart üzerindeki flash bellekte saklanan program yükleniyor. Bu program test programı. LED'leri, döner kodlayıcıyı , tuşları ve LDC ekranı test ediyor. Bende hepsi düzgün çalışıyor. Bu program http://www.xilinx.com/products/boards/s3estarter/files/s3esk_startup.zip adresinden indirilebilir. Benim için kötü yanı vhdl ile yazılmış olması.

Kartla ilk yapmak istediğim 7 segment ile zıplama önleyiciyi denemek. Bunun için programı yazmaya başladım. Her şey bittiğinde buraya yazacağım.

25 Mayıs 2009 Pazartesi

Sık kullanılacak modüller

Kartım hala gelmedi. Kart gelene kadar kullanacağım garanti olan bazı modülleri yazayım dedim. Kartta kullanacağım garanti olan hangi modüller var?
  • 7 bölmeli LED (Pmod kartım sayesinde 7 bölmeli displayim var)
  • Düğmeler için zıplama önleyicisi (Debouncing circuit)
  • LCD kontrol
  • SDRAM kontrol
Kolaydan zora doğru sıraladım. SDRAM kontrol modülü yazmak çok zordur. Sürekli yenileme yapmak, okuma yazma protokolleri, gerekli zamanlama (timing) koşullarına dikkat etmek... Neyse ki Xilinx'in SDRAM için hazır kontrolörü var. http://www.xilinx.com/support/documentation/ip_documentation/opb_ddr.pdf adresinden kontrolörün dökümanına ulaşılabiliyor. Kendisini nasıl bulabiliriz, hiç ilgilenmedim ama ona da sıra gelecek.

Başlangıç olarak 7 bölmeli LED ve zıplama önleyici modülü yaptım. Basit modüller oldukları için ayrıntılı açıklama yapmıyorum.

7 bölmeli LED display modülüne 2 adet 4 bitlik data girişi var. Datada kaç varsa 16'lık düzende LED'lerde gösteriyor. Zaman çoğullamasını kendi yapıyor. Tabii bu yüzden clk lazım. Bir de reset pini olmalı ki modülü kapatabilelim.

Zıplama önleyicinin espirisi, tuşa basıldıktan belli bir süre geçene kadar kendini tuştan gelen sinyale kapaması. Sinyalde bir değişikli olduktan sonra 50 ms çıkışı sabit tutuyor. İnsan eli bir tuşa saniyede 20 defa basamayacağı için bir problem yok. Bekleme süresi 1 saniye olursa tuşa basıp hemen çekilince tuş 1 saniye basılı kalır. Tuşa basılı tutarken bırakıp geri basılırsa 1 saniye bırakılmış kalır. Bir de, asenkron bir giriş olduğu için sinyali bir flip floptan geçirerek kullanmak lazım. Yoksa kararlılık (stability) problemleri çıkabilir.

Kartım gelince ilk bu ikisini deneyeceğim :)

Dosyalar: sevensegment.v, debouncer.v

23 Mayıs 2009 Cumartesi

Spartan 3E Starter Kit Eklenti Kartları

Bu kartı almayı ciddi olarak düşünürken kartın I/O pinleri için olan genişleme konektörü ile ne yapacağımı düşünüyordum. Kartın kullanabileceğim 48 I/O’sundan 40’ı abuk Hirose FX-2 konektörde. Geri kalan 8 tanesi bana yetmez. Hirose FX-2’den kablo yardımıyla bağlantı almam mümkün değil. O yüzden bu konektörü kullanılabilir yapmaya karar verdim.

İnternetten konektör ile ilgili arama yaparken Digilent isimli bir firmanın sitesini buldum. Xilinx kartının üzerinde de Digilent yazıyor ama ben onları Texas Instruments, Micron, Intel, Linear gibi parça sağlayıcısı olduğunu düşünmüştüm (TI, güç kaynağını; Micron, SDRAM’i; Intel, flash RAM’i; Linear de ADC ve DAC’ı üretiyor). Meğersem adamlar kartın tasarımını yapmışlar.

Digilent’in sitesinde (http://www.digilentinc.com) tam benim ilacım olacak şeyler var. Ben de gümrüğe takılmasın diye 100$’ı geçmeyecek şekilde bir şeyler almaya karar verdim. (Sonradan öğrendim ki bu sınır, kargo ücreti dahil 100€’ymuş). Kargomu USPS (United States Postal Service) ile gönderdiler. 10 günde bana ulaştı. Kargo ücreti 43$. Kargomu Amerika dışında takip edemedim. Kargo elime ulaştığında, internette hala kargo San Francisco’dan ayrıldı gözüküyordu.

Gelelim neler aldığıma. Aldığım en önemli şey FX2 Module Interface Board. Bu kart sayesinde I/O’lara sıradan bir kablo ile ulaşabileceğim. Kartın fotoğrafı
Bu kartın esas amacı Pmod kartları için yer yaratmak. Pmod (Peripheral Modules), Digilent’in ürettiği envai çeşit eklenti kartları. Yine de benim işimi görür. Sonradan düşündüğümde FX2 Wirewrap alsaydım keşke dedim. Wirewrap üzerine kendi breadboard’umu yapıştırabilirdim. Neyse çok da önemli değil.

İkinci önemli kart 7 segment display. Xilinx kartında olmaması eksiklik zaten. 2 basamaklı, zaman çoklama (time multiplexing) kullanan basit bir kart. Program debug için LCD’den daha pratik bir çözüm. Kartın fotoğrafı

Xilinx kartı üzerindeki ADC ve DAC’a kolayca ulaşabilmek için 6 pinlik kablo aldım. Bu sayede ADC ve DAC pinlerine kendi breadboard’umdan erişebileceğim. Kablonun fotoğrafı

Tel kablo aldım! Amerika’dan tel kablo getirtmek ne kadar mantıklı olabilir? Ama kullanımı çok pratik. Adamlar breadboarda uygun olacak şekilde boylarını ayarlayıp uçlarını sıyırıp bir de bükmüşler. Kutusuyla birlikte geliyor, dağınıklık da olmuyor. Çok beğendiğimden 3 tane aldım. Belki Türkiye’de de satan vardır. Kutunun fotoğrafı
Breadboarda takılınca
Kutuda daha uzun kablolar da var tabii.

6 pinlik cinsiyet değiştirici (gender changer) aldım. Yukarıda aldığım kabloya uygun. ADC ve DAC için kullanacağım kabloyu breadboard’a takmak için lazım.

Bu aksesuarlar, Xilinx kartı ile bağlantı olayını epey kolaylaştıracaklar.

22 Mayıs 2009 Cuma

Spartan 3E Starter Kit Ön İnceleme

Merhaba.
Bir kaç ay önce evimde FPGA (Field Programmable Gate Array) işine girişmeye karar verdim. Bunun için internetten Xilinx'in başlangıç ve geliştirme kartlarına baktım. Sonunda Spartan 3E Starter Kit'in benim için en uygun kart olduğuna karar verdim. Bu kartı seçmemdeki sebepler
  • Xilinx FPGA kullanması. Altera kullanmak istemiyorum çünkü Xilinx daha yaygın. İşimde de Xilinx kullanılıyor.
  • Xilinx Türkiye Distribütöründen sipariş edilebiliyor. Kartın fiyatı 150$ olduğu için yurtdışından getirtmek istediğinizde büyük ihtimalle gümrüğe takılacak.
  • Xilinx'in doğrudan desteklediği bir kart olması. Bu sayede herhangi bir 3. parti programına ihtiyaç duymuyor. Bir tek ISE yeterli. Bu sayede bu 3. parti programlarını öğrenmekle vakit harcamıyorsunuz. Sadece FPGA'in kendisi ve ISE ile ilgileniyorsunuz.
  • Giriş çıkış portları çok. VGA, RS232 (voltaj ayarlama dervesi ile), PS/2, eternet (arayüz çipi ile). VGA'ya monitör bağlayabilir, PS/2'ye fare klavye bağlayabilir, RS232 ile bilgisayarla konuşabilirsiniz. Ethernet ile bilgisayar iletişiminin çok zor olduğunu okumuştum ama emin değilim.
  • Çevre birimleri çok. LCD ekran, 4 çıkışlı DAC, 2 girişli ADC, döner kodlayıcı (rotary encoder), 128 Mbit Flash bellek, 64 Mbyte SDRAM, EEPROM, toplam 48 pinlik genişleme portları, 4 buton, 8 LED. LCD ekran çok iyi debug imkanı veriyor. ADC ve DAC ile analog dervelerle uğraşabiliyorsunuz, herhangi analog sensorü okuyabilir veya aktuatörü sürebilirsiniz. Her çeşit bellek var. 48 pinlik genişleme yuvası da yeterli.
  • Kartta bir tane de CPLD (Complex Programmable Logic Device) var. Bu da FPGA gibi programlanabilen ama iç yapısı biraz farklı, içindeki bilgiler güç kesildiğinde kaybolmayan, nispeten daha küçük boyutta bir çip. CPLD'nin olması kartla yapabileceklerinizi oldukça arttırıyor.
Xilinx'in Spartan 3 ve Spartan 3A için de başlangıç kartları var ama fiyat/performans oranları daha düşük kanımca.

İşte Spartan 3E Starter Kit'in görünümü
Kart hakkında daha ayrıntılı bilgilere http://www.xilinx.com/products/devkits/HW-SPAR3E-SK-US-G.htm adresinden ulaşılabilir.

Kartın en problemli kısmı genişleme yuvaları. Çok abuk bir konektör kullanılmış: Hirose FX-2 100p. Hiç de evrensel bir konektör değil, sadece bu kartta kullanılıyor. Neyseki bu konektöre uygun genişleme kartları satılıyor.