Ana sayfa ÜrünlerLED göstermek ölçü birimi

SparkFun veya Adafruit 32x32 RGB LED Panel Sürücü Eğitimi 16 veri sinyali, bir görüntüyü görüntülemek için + 5VDC'yi yeniledi

SparkFun veya Adafruit 32x32 RGB LED Panel Sürücü Eğitimi 16 veri sinyali, bir görüntüyü görüntülemek için + 5VDC'yi yeniledi

    • SparkFun or Adafruit 32x32 RGB LED Panel Driver Tutorial 16 data signals connect + 5VDC refreshed to display an image
    • SparkFun or Adafruit 32x32 RGB LED Panel Driver Tutorial 16 data signals connect + 5VDC refreshed to display an image
    • SparkFun or Adafruit 32x32 RGB LED Panel Driver Tutorial 16 data signals connect + 5VDC refreshed to display an image
    • SparkFun or Adafruit 32x32 RGB LED Panel Driver Tutorial 16 data signals connect + 5VDC refreshed to display an image
    • SparkFun or Adafruit 32x32 RGB LED Panel Driver Tutorial 16 data signals connect + 5VDC refreshed to display an image
    • SparkFun or Adafruit 32x32 RGB LED Panel Driver Tutorial 16 data signals connect + 5VDC refreshed to display an image
  • SparkFun or Adafruit 32x32 RGB LED Panel Driver Tutorial 16 data signals connect + 5VDC refreshed to display an image

    Ürün ayrıntıları:

    Menşe yeri: Çin
    Marka adı: Leeman
    Sertifika: UL CE ROHS ISO2000 ETL SGS SAA Fcc EMC
    Model numarası: PH5 RGB LED Panel

    Ödeme & teslimat koşulları:

    Min sipariş miktarı: 1 adet veya 1 adet
    Fiyat: Negotiation (Good price)
    Ambalaj bilgileri: Karton kutu veya tahta sandık
    Teslim süresi: 1-3 iş günü
    Ödeme koşulları: L / C, T / T, Western Union, Paypal, Kredi Kartı, MoneyGram, VISA, MasterCard, Nakit
    Yetenek temini: Ayda 50.000 adet
    Şimdi başvurun
    Detaylı ürün tanımı
    Modül Boyutu: 160x160 veya 320x160 veya 256x256 veya 192x192 veya 256x128 Çözünürlük: 32x32 piksel 64x32 piksel
    Parlaklık: 2500niteden fazla Giriş Voltajı: DC5V
    Tarama tipi: 1/2 veya 1/4 veya 1/8 veya 1/16 veya 1 / 32Scan Taze Oran: ≥ 2400Hz
    led tipi: SMD2121 SMD3528 SMD3535 SMD2727 SMD5050 MTTF: > 100,000 saat

    SparkFun veya Adafruit 32x32 RGB LED Panel Sürücü Eğitimi 16 veri sinyali, bir görüntüyü görüntülemek için + 5VDC'yi yeniledi

    Giriş

    Bu projede, bir SparkFun veya Adafruit 32x32 RGB LED panelini, LogiBone FPGA kartındaki Xilinx Spartan 6 LX9 FPGA kullanarak bir BeagleBone Black panosuna bağlarız. Bu projenin donanımı nispeten kolaydır, sadece 16 veri sinyali LED panelini LogiBone FPGA kartına bağlar. Bu projenin karmaşıklığı çoğunlukla RTL ve yazılımda yer almaktadır.

    Şekil 1. LogiBone FPGA kartına ve diğer bazı örnek panel görüntülerine bağlı rastgele bir twinkling desenine sahip RGB LED paneli.

    Gerekli Donanım

    Aşağıdaki donanım öğeleri gereklidir:

    • SparkFun veya Adafruit 32x32 RGB LED paneli
      Bu panel, 32x32 matrisinde düzenlenmiş 1024 RGB LED içerir. Sütunlar, birden fazla kaydırma yazmacısı kümesi kullanılarak yürütülür ve satırlar, bir seferde iki satırlık bir 4-bit adres kod çözücüsü kullanılarak sürülür. Panel 1/16 devir döngüsünde sürülür ve bir görüntüyü görüntülemek için sürekli olarak yenilenmelidir.

    • BeagleBone Siyah CPU kartı w / USB veya + 5VDC güç kaynağı
      Bunun için bir BeagleBone Black CPU kartına ve bir + 5VDC güç kaynağına ihtiyacınız olacak. Kartı bilgisayardan veya USB güç adaptöründen beslemek için bir USB kablosu kullanabilir veya ayrı bir + 5VDC, 2.1mm ID, merkez pozitif AC adaptörü kullanabilirsiniz.

    • LogiBone FPGA kartı
      FPGA kartı bir Xilinx Spartan 6 LX9 FPGA içerir. FPGA 32 adet 18kbit blok RAM içerir. Panelde görüntülenecek RGB piksel değerlerini tutmak için blok RAM'lerden ikisini çerçeve arabellekleri olarak kullanacağız. LED paneline bağlanmak için iki adet Digilent PMOD uyumlu konektör kullanılacaktır.

    • FPGA'yı ekrana bağlamak için jumper teller veya PMOD-ekran adaptörü
      İlk olarak, paneli bağlamak için erkek-kadın jumper kabloları kullandım. Bu, LogiBone FPGA kartını ekranla birlikte verilen şerit kablosunu kullanmadan doğrudan LED ekran paneline bağlamamı sağladı. Sadece erkek-erkek jumper kablolarınız varsa, jumper kablolarının ekran ucundaki erkek pinlere bağlanmak için ekranla birlikte verilen 16-konumlu şerit kablosunu bir adaptör olarak kullanmanız gerekir.
      Daha temiz ve uzun vadeli bir çözüm, LogiBone FPGA kartından ekranın giriş konektörüne bağlantı yapmak için bu paneli ve LED paneliyle birlikte verilen 16 konumlu şerit kablosunu kullanmaktır. Ayrıca FPGA ve paneli birbirine bağlamak için ön kablo terminallerini ve gövdelerini kullandım. Bu çözümü sevmedim çünkü öngöstermiş terminal kabloları, bir 2x8 yuva konektörüne takıldığında ekranın veri konektörüne takılması ve çıkarılması için çok fazla güç gerektiriyordu.

    • + 3.3V güç kaynağı, 2.0A nominal, 4.0A tepe
      Normal çalışma sırasında, ekran en fazla yaklaşık 2A akım çeker. Yenilemeyi görüntülenen tamamen beyaz bir desenle “duraklatırsanız”, yanan iki satır yaklaşık 3.8A çeker. Normal çalışma sırasında Mouser'dan gelen bu gibi bir 3,3V, 3.0A masaüstü güç kaynağı yeterli olacaktır. Bu adaptörle kullanmak için kendi IEC60320 C13 güç kablosunu tedarik etmeniz gerekecektir.
      Bu paneller ayrıca 3,3V yerine + 5V'dan da çalıştırılabilir. + 3.3V yerine + 5V'dan sürüldüğünde daha parlak yeşiller, daha parlak mavi renkler ve daha az kırmızı beyazlar elde edeceksiniz. Ayrıca yaklaşık% 15 daha fazla akım çekecek ve + 3.3V yerine +% 5 ile yaklaşık% 65 daha fazla güç kullanacaksınız. + 5V'luk bir güç kaynağı kullanıyorsanız, LogiBone FPGA kartını ekranın çıkış konektörüne yanlışlıkla takmamaya dikkat edin.

    • Dişi DC varil jakı adaptörü (isteğe bağlı)
      Bir dişi DC varil jack adaptörü, paneli güç kaynağına bağlamak için çok daha kolay hale getirecek. Bir adaptörünüz yoksa, güç kaynağı ve led panel arasındaki bağlantıları her zaman kesip, birleştirebilir, lehim yapabilir ve ısıyı daraltabilirsiniz.

    Gerekli Yazılım

    • Stok ValentFX LogiBone Ubuntu w / LogiBone logibone_ <revizyon> _dm.ko çekirdek modülü ve logi_loader ile inşa
      SD kartında varsayılan LogiBone Ubuntu görüntüsünü yüklemek için buradaki talimatları indirin ve izleyin .
    • Xilinx ISE WebPack Yazılımı
      FPGA bit dosyasını kendiniz oluşturmak istiyorsanız veya Verilog'u daha fazla panel sürmek veya diğer özel işlevler eklemek (örneğin, zor piksel desenlerini hesaplamak için bir yardımcı işlemci gibi) istiyorsanız, Xilinx ISE WebPack yazılımını indirip yüklemeniz gerekir. Talimatlar burada . Sadece varsayılan FPGA bit dosyasını kullanmak isterseniz, Xilinx ISE WebPack yazılımının kurulumunu atlayabilirsiniz.
    • Glen'in LED paneli GIT deposu
      Son olarak, GIT deposumu http://github.com/bikerglen/beagle adresinden BeagleBone Black ürününüze kopyalamanız gerekecek. Bu depoda, FPGA için Verilog kaynak kodu, önceden oluşturulmuş bir bit dosyası ve panelde bazı tanıtım kalıplarını görüntülemek için C ++ kaynak kodu bulunur. Depoyu indirme veya klonlama ve kullanma talimatları daha sonra sunulur.

    Operasyon teorisi

    Bu sistemin üç ana bileşeni vardır: LED paneli, FPGA kodu ve C ++ kodu. Bu üç ana bileşenin her birini ayrıntılı olarak inceleyelim.

    LED Panel

    LED Panel Donanım

    LED panelde 32 satır ve 32 sütun matrisinde 1024 RGB LED bulunur. Her bir RGB LED, tek bir pakette birlikte monte edilen ayrı kırmızı, yeşil ve mavi LED çipleri içerir. Ekran yatay olarak ikiye bölünür. Üst yarıda 32 sütun ve 16 satırdan oluşur. Alt yarısı da 32 sütun ve 16 satırdan oluşmaktadır.

    Ekranın sütunları bir dizi sürücü tarafından yönlendirilir ve ekranın satırları başka bir sürücü grubu tarafından yönlendirilir. Bir LED'i aydınlatmak için, hem kolon hem de bu LED'in satırı için sürücüler açık olmalıdır. Bir LED'in rengini değiştirmek için, her LED paketindeki kırmızı, yeşil ve mavi çipler ayrı ayrı kontrol edilir ve kendi sütun sürücülerine sahiptir. Aşağıdaki Şekil 2, ekranın sütun ve satır sürücüsü organizasyonunun şematik gösterimidir.

    Şekil 2. RGB LED paneli sütunu ve satır sürücüsü organizasyonu.

    Panel altı set sütun sürücüsü içerir; Ekranın üst yarısı için üç ve alt için üç. Her sürücünün 32 çıkışı vardır. Ekranın üst kısmındaki üç sürücü, panelin 0 ila 15 satırlarındaki LED'lerin 32 kolonunun her birinde kırmızı, yeşil ve mavi çipleri tahrik eder. Ekranın altındaki üç sürücü, panelin 16 ila 31 sıralarındaki 32 LED lambasının her birindeki kırmızı, yeşil ve mavi çipleri tahrik eder.

    Sürücülerin her biri, Şekil 3'te gösterildiği gibi bir seri veri girişine, bir körük girişine, bir kaydırma yazmacına ve bir paralel çıktı kaydına sahiptir. Seri veri girişi üzerindeki veriler, SCLK sinyali kullanılarak kaydırma yazmacına kaydırılır. Tüm veri sırası kaydırma yazmacına kaydırıldıktan sonra, LATCH sinyali, kaydırma verisindeki kaydırma verisinin paralel çıkış yazmacına aktarılması için kullanılır. Çıkış kaydındaki bir bit bir '1' ise ve boşluk girişi iptal edilirse, o sütunun sürücüsü etkinleştirilir; aksi halde sürücü kapatılacak. Veriler, ekranın sağ kenarından ekranın sol kenarına kaydırılır. Diğer bir deyişle, ekranın sol kenarında yer alan ilk biti görüntülenecek ve en son kaydırılan biti sağda gösterilecektir.

    Şekil 3. R0 veri girişi ve üst yarı kırmızı sütun çıktıları için kolon sürücüsü işlemi. Üstteki yeşil ve mavi sütunlar için ekranın üst kısmında ve alt yarım kırmızı, yeşil ve mavi sütunlar için altta üç tane daha bu kaydırma yazmaçları var.

    Ekranın üst yarısı için kırmızı, yeşil ve mavi sütun sürücüleri sırasıyla R0, G0 ve B0 veri girişlerine eklenir. Ekranın alt yarısı için kırmızı, yeşil ve mavi sütun sürücüleri sırasıyla R1, G1 ve B1 veri girişlerine eklenir. 32 bit sürücünün altısı, ortak SCLK, LATCH ve BLANK sinyallerini paylaşır.

    Satırlar dört adres biti ve bir adres kod çözücüsü kullanılarak sürülür. Satır sürücülerine dört bit adres girişi kodu çözülür ve bu adrese karşılık gelen iki satır sürücüsü açılacaktır. A [3: 0] 0 ​​olduğunda, ekranın 0 ve 16 satırları açılır. A [3: 0] 1 olduğunda, ekranın 1 ve 17 satırları açılır. Bu desen A [3: 0] 15 ve satır 15 ve 31 açılıncaya kadar devam eder.

    Satır ve sütun mantığına ve sürücülerine ek olarak, ekranın bir boşluk girişi vardır. Bu girdi büyük olasılıkla sütun sürücülerine bağlanır. Blanking sinyali onaylandığında, tüm pikseller kapatılır ve ekran siyah olur. Boşluk sinyali deased edildiğinde, adreslenen satır ve sütunlar sürülecek ve ilgili pikseller yanacaktır. Titremesiz ve gölgelenmeden bir görüntüyü göstermek için, bu sinyallerin tümü panel sürülürken kullanılmalı ve uygun şekilde sıralanmalıdır.

    Paneli Sürmek

    Ekran çoğullanır ve 1/16 devirlik bir döngüye sahiptir. Bu, ekranın üst yarısındaki 16'dan en fazla bir satır ve ekranın alt yarısındaki 16'lık bir satırın bir kerede aynı anda yanmadığı anlamına gelir. Ayrıca, bir LED sadece açık veya kapalı olabilir. Bir LED için hem satır hem de sütun açıksa, LED yanar; aksi halde LED söner.

    Bir görüntüyü göstermek için, tüm LED panelin hızlı bir şekilde taranması gerekir, böylece sürekli bir görüntü titremeden görüntülenir. Farklı renkler ve farklı parlaklık seviyelerini görüntülemek için, her LED paketindeki kırmızı, yeşil ve mavi LED çiplerin parlaklığı, her bir LED yongasının tek bir yenileme döngüsü içinde açık veya kapalı olduğu zaman miktarı değiştirilerek ayarlanmalıdır.

    Üç bit piksel başına renk kullanırken ekranı yenilemek için kullanılan temel işlem (kırmızı için bir bit; yeşil için bir bit; mavi için bir bit) aşağıdaki gibidir:

    1. Satır 0 için piksel verisini, R0, G0, B0, R1, G1 ve B1 veri girişlerini ve SCLK kaydırma saat sinyalini kullanarak satır 16 için alt sütun sürücülerine üst sütun sürücülerine ve piksel verisine kaydırın.
    2. Ekranı boşaltmak için boşluk sinyalini doğrulayın.
    3. Adres girişini 0 olarak ayarlayın.
    4. LATCH sinyalini kullanarak, sütun sürücülerinin kaydırma kayıtlarının içeriğini sütun sürücülerinin çıktı kayıtlarına geçirin.
    5. Satır 0 ve 16'yı görüntülemek için boşluk sinyalini deassert edin.
    6. Sabit bir süre bekleyin.
    7. Ekrandaki satır çiftlerinin her biri için işlemi tekrarlayın.
    8. Titremeyi önlemek için tüm süreci saniyede en az 100 ila 200 kez tekrarlayın.

    Yukarıdaki işlem LED rengi başına bir bit kullanır. Bu size sekiz olası renk verecektir: siyah; ana renkler kırmızı, yeşil ve mavi; ikincil renkler siyan, macenta ve sarı; ve beyaz.

    Daha fazla renk ve parlaklık seviyesini görüntülemek için yukarıdaki teknik, ikili kodlanmış modülasyonu kullanmak için değiştirilir. İkili kodlanmış modülasyonda, her bir piksel, piksel başına bir renk başına bir bitden daha fazla kullanılarak kontrol edilir. Her kırmızı, yeşil ve mavi LED çipin açık olduğu süre, pikselin kırmızı, yeşil ve mavi değerleriyle orantılı olarak değişir.

    İkili kodlanmış modülasyonda, ekranı yenilemek için aşağıdaki işlem gerçekleştirilir:

    1. Satır 0 ve 16 için her pikselin kırmızı, yeşil ve mavi değerlerinin bit sıfırını sütun sürücülerine kaydırın.
    2. Ekranı boşaltmak için boşluk sinyalini doğrulayın.
    3. Adres girişini 0 olarak ayarlayın.
    4. LATCH sinyalini kullanarak, sütun sürücülerinin kaydırma kayıtlarının içeriğini sütun sürücülerinin çıktı kayıtlarına geçirin.
    5. Satır 0 ve 16'yı görüntülemek için boşluk sinyalini deassert edin.
    6. Biraz zaman bekle, N.
    7. Aynı sıradaki bir sonraki yüksek sipariş bit renk verisi için yukarıdaki işlemi tekrarlayın. 6. adımda, önceki gecikme süresinin iki katı kadar bekleyin. Her bir bit renk verisi için bu işlemi tekrarlayın, her bir ardışık biti görüntüledikten sonra gecikme süresini ikiye katlayın.
    8. Ekrandaki satır çiftlerinin her biri için yukarıdaki işlemi tekrarlayın.
    9. Titremeyi önlemek için tüm süreci saniyede en az 100 ila 200 kez tekrarlayın.

    Gerçek uygulamalarda, Piksel verilerinin Adım l'deki kaydırma yazmaçlarına kaydırılma işleminin genellikle Adım 6'daki bekleme süresi esnasında gerçekleştirildiğini unutmayın.

    Küresel görüntü karartma, körleme sinyalinin bekleme süresi periyodu N'de ortaya konulduğu veya azaldığı zaman miktarı değiştirilerek gerçekleştirilebilir. Örneğin, körleme sinyalinin% 25'inin erkenden alınması,% 75'lik bir parlaklık ile sonuçlanacaktır. 100%. Küresel karartma sırasında bekleme süresinin kısaltılmaması veya uzatılmaması gerektiğini unutmayın; sadece körleme sinyali normalden daha erken ortaya çıkacak şekilde değiştirilir.

    FPGA

    FPGA, BeagleBone Black CPU üzerinde çalışan C ++ model oluşturma yazılımını LED paneline bağlar. FPGA, tüm LED panelini saniyede 200 kez yenilemek için gereken ağır kaldırma işlemini yapar. Bu, desenleri oluşturmak ve diğer görevleri gerçekleştirmek için BeagleBone Black CPU'yu ücretsiz bırakır.

    Şekil 4 . FPGA'nın temel fonksiyonel bloklarının bir blok diyagramını içeren sistemin blok diyagramı.

    Yukarıda Şekil 4'te gösterildiği gibi, BeagleBone Black üzerinde çalışan yazılımlar desen oluşturur. Bu desenler, TI SOC'nin GPMC veriyolu kullanılarak LogiBone kartındaki FPGA'ya beslenir. Bu kalıplar, bir görüntü arabelleği olarak işlev gören bir çift bağlantı belleğine yazılır. Son olarak, bir ekran denetleyicisi, çift bağlantı noktası belleğinden desenleri okur, verileri ekrana kaydırır ve görüntüyü görüntülemek için gereken şekilde satır sürücülerini etkinleştirir. Tüm işlem saniyede yaklaşık 200 kez tekrarlanır ve BeagleBone Blacks 'CPU'dan herhangi bir etkileşim olmaksızın 12 bit renkte 32 x 32 RGB görüntü üretir.

    GPMC Arayüzü

    TI SOC, genel amaçlı bellek denetleyicisi (GPMC) olarak adlandırılan programlanabilir bir bellek arabirimine sahiptir. Bu arayüz oldukça esnektir. Hem senkronize hem de asenkronize modlarda çalışabilir ve bus zamanlaması 10ns artışlarla programlanabilir. GPMC veri yolu, BeagleBone Black üzerindeki yazılımdan gelen piksel verilerini LogiBone kartındaki FPGA'ya aktarmak için kullanılacaktır.

    Sistemimizde, GPMC, senkronize olmayan, çoğullanmış adres / veri modunda çalışacak şekilde yapılandırılmıştır. Bu modda, hem adres hem de veri yolları 16 bit genişliğindedir. Bu, 12 bitlik bir pikselin, BBB'deki CPU'dan, LogiBone kartındaki FPGA'ya tek bir yazma işleminde aktarılmasına izin verir. GPMC'nin asenkron, çok yönlü çalışma modu hakkında daha fazla bilgi için, bkz. AM335x ARM® Cortex ™ -A8 Mikroişlemciler Teknik Referans El Kitabının 7.1.3.3.10.1.1 .

    FPI veriyolunda, LogiBone projelerinden daha farklı bir GPMC veriyolu arayüzünü kullanıyorum. Bu, stok VHDL devresinden biraz daha yavaştır, ancak GPMC veriyolu üzerinden CPU'dan her bir yazma işleminin, FPGA içindeki kayıt arabirimine tam olarak bir yazma strobe darbesi oluşturduğunu garanti eder. Stok devresinden biraz daha yavaş olduğu için, değiştirilmiş veri yolu zamanlaması ve böylece özel bir cihaz ağacı kurulum dosyası gerektirir. Aşağıdaki Şekil 5, FPGA'ya bir yazma gerçekleştirmek için değiştirilmiş GPMC arayüzünü kullanan veri yolu zamanlamasını göstermektedir. Aşağıdaki Şekil 6, FPGA'dan bir okuma yapmak için değiştirilmiş GPMC arayüzünü kullanan veri yolu zamanlamasını göstermektedir.

    Şekil 5. Değiştirilmiş veri yolu zamanlamaları kullanılarak GPMC hedefine yazmanın simülasyonu.

    Şekil 6. Değiştirilmiş veri yolu zamanlamaları kullanılarak GPMC hedefinden okunan bir okuma.

    Okuma veya yazma adresi, GPMC_ADVN sinyalinin yükselen kenarında bir geçici tutma yazmacına kilitlenir ve yazma verileri, GPMC_WEN sinyalinin düşen kenarı üzerinde kendi geçici tutma yazmacına yerleştirilir. Bu GPMC_ADVN ve GPMC_WEN veri sinyallerinin tersine çevrilmiş bir versiyonunun saat olarak kullanılmasını gerektirir. Teknik olarak, veri sinyallerini saatler olarak kullanmak brüt. Aslında çok iğrenç, Xilinx araçları bu durum için bir hata üretecek. Ancak etkilenen ağlar için UCF dosyasında bir istisna ve devam edebilmek için kuvvet sentezi ayarlayabilirsiniz. GPMC'yi eşzamanlı modda kullanmak çok daha iyi olurdu, ancak bu teknik, bir arabirimin eşzamanlı bir versiyonunu oluşturmak için zamana sahip olana kadar bir FPGA için yeterince iyi, simülasyon için eşzamanlı bir GPMC veriyolu modeli ve nasıl değiştirileceğini öğrenmek için cihaz ağacı daha fazla.

    Adresin tutulması ve veri değerlerinin kayıt defterlerine yazılmasına ek olarak, GPMC_CSN, GPMC_WEN ve GPMC_OEN kontrol sinyalleri kaydedilir ve FPGA'nın 100MHz saat alanına getirilir. FPGA'nın saat etki alanındayken, WEN ve OEN sinyalleri CSN sinyali ile kaplanır ve GPCM hedefine yazılanları algılamak ve GPMC hedefinden okur. Bir okuma veya yazma algılandığında, adres ve yazma veri tutma kayıtlarının içeriği, FPGA'nın 100MHz saat alanındaki kayıtlara kaydedilir.

    GPMC veriyolunu stok cihaz ağacı kurulum dosyasına göre yavaşlatmanın başlıca nedeni, bu kontrol sinyallerinin her birinin, FPGA'nın 100MHz'de sinyallerin kenarlarının tespit edilebilmesini garantilemek için, en az 30 derece veya daha düşük olduğu süreyi uzatmaktı. saat alanı. Bu ayrıca, adres ve verilerin, FPGA'nın 100MHz saat alanında saat ve veri kayıtlarına taşınmasından önce, bu kayıtların içeriğini kendi kayıt defterlerinde sabit tutacağını garanti etmiştir.

    GPMC hedefinin çıkışları, yavaş veri yolunu aradığım bir veri yoludur. Yavaş veri yolu GPMC hedefini FPGA'nın kayıt arayüzüne bağlar. Şekil 7, örnek bir yavaş veri yolu yazma işlemini göstermektedir. Şekil 8, örnek bir yavaş veri okuma işlemini göstermektedir.

    Şekil 7. Yavaş bir otobüs yazısının simülasyonu.

    sb_addr, sb_wr ve sb_wr_data, GPMC veriyolunda her yazışta tam 100MHz'lik bir saat darbesi için geçerli olacaktır. Kayıt arabirimi sb_wr tarafından onaylandığında, sb_wr_data sb_addr adresindeki kayıt defterine yazılır.

    Şekil 8. Yavaş bir veriyolunun okunması.

    sb_addr ve sb_rd, GPMC veriyolunda bir okuma her seferinde tam olarak bir 100MHz saat darbesi için geçerli olacaktır. Kayıt arayüzü, sb_rd'nin onaylandığını görür ve sb_addr adresindeki sb_addr adresindeki kayıt değerini, bir sonraki saat döngüsünde sb_rd_data veriyoluna geri döndürmelidir.

    Kayıt Arabirimi

    Kayıt arayüzü, FPGA Verilog'un en üst düzeyinde uygulanmaktadır. Kayıt arayüzü, yazılımın FPGA'nın sahip olduğu görünümü tanımlar. Aşağıdaki Tablo 1, FPGA'daki kayıtları listeler.

    FPGA Adresi BBB SOC Adresi isim Açıklama
    0x0000 0x0000 R / W Test Reg 1 Test yazmacını oku / yaz. Bu kayıt için herhangi bir değer yazın. Okumalar önceden yazılı değeri döndürür.
    0x0001 0x0002 R / W Test Reg 2 Test yazmacını oku / yaz. Bu kayıt için herhangi bir değer yazın. Okumalar önceden yazılı değeri döndürür.
    0x0002 0x0004 R / W Test Reg 3 Test yazmacını oku / yaz. Bu kayıt için herhangi bir değer yazın. Okumalar önceden yazılı değeri döndürür.
    0x0003 0x0006 R / W Test Reg 4 Test yazmacını oku / yaz. Bu kayıt için herhangi bir değer yazın. Okumalar önceden yazılı değeri döndürür.
    0x0004 0x0008 Salt Okunur Test Reg 1 Salt okunur test kayıtları. Okumalar sabit kodlanmış değerleri döndürür. Döndürülen değerler için RTL'ye bakın.
    0x0005 0x000a Salt Okunur Test Reg 2 Salt okunur test kayıtları. Okumalar sabit kodlanmış değerleri döndürür. Döndürülen değerler için RTL'ye bakın.
    0x0006 0x000c Salt Okunur Test Reg 3 Salt okunur test kayıtları. Okumalar sabit kodlanmış değerleri döndürür. Döndürülen değerler için RTL'ye bakın.
    0x0007 0x000e Salt Okunur Test Reg 4 Salt okunur test kayıtları. Okumalar sabit kodlanmış değerleri döndürür. Döndürülen değerler için RTL'ye bakın.
    0x0008 0x0010 Ekran Arabellek Adres Kaydı Bu kayıt defterine yazar, ekran arabelleği adres işaretçisini ayarlar. Görüntüleme arabelleği adres gösterici, görüntüleme arabelleği veri kaydına bir piksel değeri yazıldığında değiştirilecek olan görüntü arabelleği belleğindeki konuma işaret eder. Bellekte piksellerin düzenlenmesi için bu belgenin ekran arabelleği bölümüne bakın.
    0x0009 0x0012 Ekran Arabellek Veri Kaydı Bu kayda bir piksel değeri yazmak, piksel değerini, görüntü arabelleği adres göstericisinin işaret ettiği adreste görüntü arabelleğine yazar. Her yazma işleminden sonra, görüntü arabelleği adres işaretçisi, bir tanesi tarafından görüntü arabelleğinde bir sonraki piksele işaret edecek şekilde artar.
    0x000a 0x0014 Ekran Tampon Kayıt Seç 0, gösterim için tampon 0'ı seçer; 1, gösterim için 1 numaralı tamponu seçer; Okumalar şu anda hangi arabelleğin görüntülendiğini döndürür.

    Tablo 1. FPGA kaydeder.

    Ekran Tamponları

    Ekran arabellekleri, asenkron okuma ve yazma bağlantı noktalarına sahip çift bağlantı noktası bellekleri olarak yapılandırılmış usinx Xilinx Blok RAM'lerini uygular. İlk RAM, ekranın üst yarısı için 0 ve 1 ekran arabelleklerini içerir. İkinci RAM, ekranın alt yarısı için 0 ve 1 ekran tamponlarını içerir. Hafızanın yarısını içerecek şekilde hafızaların yapılandırılması, her biri satırlar 0 ila 15 arasındaki piksellerin, 16 ile 31 arasındaki satırlardaki piksellerin bellekten okunmasıyla aynı saatte hafızadan okunmasına izin verir.

    Ekran tamponu 0, 0x0000 adresinde bulunur. Ekran tamponu 1, 0x0400 adresinde bulunur. Her bir görüntü arabelleği 32 satır 32 sütun olarak düzenlenmiş 1024 12-bit RGB değerleri içerir. Her bir görüntü arabelleğinde, sol üst piksel ofset 0'da saklanır, sağ alt piksel ise 0x3ff ofsetinde saklanır. Piksel kaymasının 4 ila 0 bitleri, ekranın en solundaki sütunda pikseller için 0x00'dür; piksel ofsetinin bitleri 4 ila 0, en sağdaki sütundaki pikseller için 0x1F'dir.

    Piksel bellekte 12 bit RGB değerleri olarak saklanır. Bu değerler haklı olarak saklanır. 11'den 8'e kadar olan bitler kırmızı piksel seviyesidir, 7'den 4'e kadar olan bitler yeşil düzeydir ve 3'ten 0'a kadar olan değerler mavi düzeydir.

    Ekran sürücüsü

    Ekran sürücüsü, piksel değerlerini bellekten okur, bu değerleri ekrana kaydırır ve bu belgenin çalışma bölümü teorisinde açıklandığı gibi ikili kodlanmış modülasyon uygulamak için gereken şekilde ekranın sıraları arasında dolaşır. Ekran sürücüsü bir durum makinesi olarak uygulanır. Her eyalet yenileme işleminde bir adım uygular. Bu adım tamamlandığında, durum makinesi işlemdeki bir sonraki adıma geçer.

    Aşağıdaki Şekil 9, üç satırlık gösterim verisi için kontrol ve veri çıktıları için simülasyon dalga formlarını göstermektedir. Temel işlem, ekranı boşaltmak, önceden kaydırılmış verilerdeki mandalı kapatmak, satır seçimlerini güncellemek, ekranın önünü açmak, bir sonraki piksel verisi kümesini kaydırmak ve ardından bir güncelleme zamanlayıcısının süresinin dolmasını beklemek. Bu, her satır için dört kez tekrarlanır. Körleme çıktısını incelerseniz, düşük görüntü periyodunun her bir görüntü dizisi için çıkış süresi içinde üç kez iki katına çıktığını fark edeceksiniz. Bu, her bir pikselin yoğunluğunu değiştirmek için ikili kodlanmış modülasyonun kullanılmasının sonucudur.

    Şekil 9. Ekran veri çıkış bağlantıları için simülasyon dalga formları.

    Yazılım

    Gösteri yazılımı, FPGA ile iletişim kurmak için / dev / logibone_mem aygıtını kullanır. Bu aygıtın sürücüsü LogiBone Ubuntu görüntüsünün bir parçasıdır ve yüklenebilir çekirdek modülü, LED paneli için GitHub deposunda bulunan değiştirilmiş aygıt ağacı kurulum kabuğu komut dosyası tarafından yüklenir. (Daha sonra bu konuyla ilgili daha fazla bilgi.) Bu sürücü, FPGA'daki kayıtları, GPMC'yi kullanarak BBB CPU'nun adres alanının bir bölümüne eşler. GPMC normalde belleği CPU'nun adres alanına kaydeder. FPGA'mız GPMC veriyoluna bir bellek gibi göründüğünden, kayıtlar da CPU adres alanına eşlenebilir. Oldukça havalı. SPI, I2C, vb. CPU ve FPGA arasında sadece hızlı paralel erişim. Bu bellek eşlemeli boşluğa daha sonra C kütüphanesi açık fonksiyon çağrısı kullanılarak / dev / logbone_mem cihazının açılmasıyla erişilebilmekte ve FPGA'daki bir yazara okunup yazılanlar, pread C kütüphanesi fonksiyon çağrıları kullanılarak gerçekleştirilebilmektedir.

    Aşağıdaki Şekil 10, gösteri yazılımı yığınının bir blok diyagramıdır. Gösteri yazılımında, ana / dev / logibone_mem aygıtını açar, genel arabellek belleği gLevels'i tümüyle siyahla doldurur ve ardından global arabelleği ekrana yazmak ve ekranı temizlemek için WriteLevels'ı çağırır. Ekran temizlendikten sonra, ana işlev, yayılan daire, perlin gürültüsü veya colorwash alt sınıfı gibi bir model / animasyon alt sınıfını başlatır. Bu alt sınıf, genel bir model taban sınıfından türetilmiştir.

    Genel model taban sınıfı, oluşturulacak desenin yüksekliğini ve genişliğini ayarlamak için bir kurucu kullanır. Türetilmiş sınıflar kendi argümanlarını kendi kurucularına ekleyebilir. Temel sınıfın, ayrıca türetilmiş sınıfların uygulanması gereken iki saf sanal üye işlevi vardır. İnit işlevi ilk defa görüntülenecek bir desen hazırlar. Genellikle, herhangi bir durum bilgisini kalıbın başlangıcına sıfırlar. Sonraki işlev, modelin bir sonraki karesini hesaplar ve bu çerçeveyi global gLevels arabelleğine yazar.

    Ana model alt sınıfını oluşturduktan sonra, alt sınıfın init funciton'unu çağırır. Ana daha sonra 50Hz'de yürüten ve uyumaya devam eden bir zamanlayıcıyı kurar. Zamanlayıcının süresi dolduğunda, bir zamanlayıcı işleyici işlevi çağrılır. Zamanlayıcı işleyici işlevi, daha önce hesaplanan çerçeveyi gLevels içinde bir sonraki kullanılabilir ekran arabelleğine yazmak için WriteLevels'ı çağırır ve bu ekran arabelleğini etkin hale getirir. FPGA ekran arabelleklerine yazılanlar, bu belgenin Kayıt Arayüzlerinde belgelenen kayıtlar kullanılarak gerçekleştirilir.

    WriteLevels tamamlandıktan sonra, zamanlayıcı işleyici işlevi, desenin sonraki üye işlevini çağırır. Bir sonraki işlev, animasyondaki bir sonraki kareyi oluşturur, bu kareyi gLevels'e yazar ve WriteLevels'i çağırmadan döner. Zamanlayıcı işleyici daha sonra zamanlayıcının süresi sona erene kadar uyur. Sonraki aramadan önce WriteLevels'i çağırarak, görüntülenen kareler arasındaki zaman miktarı, bir sonraki gerçekleştirme süreleri, çerçeveler arasında değişse bile değişmeyecektir.

    Animasyonların sorunsuz çalışması için, zamanlayıcı işleyici işlevinin, zamanlayıcının bir sonraki süreden önce yürütmeyi tamamlaması gerekir. Bu, animasyondaki her karenin hesaplanması için yaklaşık 20 ms'den daha az alması gerektiği anlamına gelir.

    Şekil 10. Tanıtım yazılımı yığınının blok diyagramı.

    Donanımı Bağlama

    Ekran sadece LogiBone FPGA kartına bir veri bağlantısı ve çalışmak için + 3.3V güç kaynağına bir güç bağlantısı gerektirir. Bu bağlantılar aşağıdaki bölümlerde detaylandırılmıştır.

    Veri Bağlantılarını Görüntüle

    Aşağıdaki Şekil 11, PMOD konektörleri ile ekranın veri girişi konektörü arasındaki bağlantıları listeler. LogiBone kartı ve ekran paneli arasında toplam 16 bağlantı yapmanız gerekecektir. Bunlardan on üçü veri bağlantılarıdır; Bunlardan üçü gerekçesidir. Jumper kablolarını veya PMOD-ekran adaptör kartını kullanabilirsiniz. Bağlantı teli kullanırsanız, kablolar Şekil 12'ye benzer bir şekilde görünecektir. Adaptör kartı ile Şekil 13 gibi bir şey görünecektir. PMOD konnektörlerinin pinlerinin normalde çift sıralı başlıklardan farklı şekilde numaralandırıldığını unutmayın.

    Şekil 11. PMOD konnektör pinleri, PMOD konnektörleri ve ekran giriş konnektörü arasındaki bağlantılar ve ekran konektörü pin çıkışı.

    Şekil 12. Jumper kabloları kullanarak RGB LED paneline bağlı LogiBone FPGA kartı.

    Şekil 13. PMOD'den ekrana adaptör kartını kullanarak RGB LED paneline bağlı LogiBone FPGA kartı.

    Ekran Güç Kaynağı Bağlantısı

    Veri sinyalleri bağlandıktan sonra, ekrana güç kaynağı bağlantısını yapın. Aşağıdaki Şekil 14 temelleri göstermektedir. DC varil jakı adaptörünü kullanarak, güç kaynağının artı terminalini kablo demetinin kırmızı teline bağlayın ve güç kaynağının negatif terminalini kablo demetinin siyah teline bağlayın. Kablo demetini ekrana bağlamadan önce, bağlantıların polaritesini doğrulamak için bir voltmetre kullanın. Polariteyi doğruladıktan sonra, gücü kesin ve kablo demetini ekrana takın.

    Maça tellerini kablo demetine bıraktım çünkü ekranı daha büyük bir projede kullanmayı planlıyorum ve daha büyük bir projede onlara ihtiyacım olmadığından emin olmadan onları çıkarmak istemiyorum. Maça çengellerini de açık bırakırsanız, başka herhangi bir elektroniğe kazara kısa devre yapmalarına dikkat edin. Emin olmak için onları elektrik bandıyla sarmak isteyebilirsiniz. Maça konektörlerine ihtiyacınız yoksa veya istemiyorsanız, bunları kesmekten çekinmeyin, kablolardan biraz yalıtım alın ve bunları doğrudan DC varil jakı adaptörüne bağlayın.

    Şekil 14. Güç kaynağını, bir dişi DC varil jakı adaptörü kullanarak RGB LED paneline bağlama.

    İletişim bilgileri
    Leeman Display Technology Limited

    İlgili kişi: Leeman

    Sorgunuzu doğrudan bize gönderin (0 / 3000)

    Diğer ürünler