Görüntü teknolojisinin sürekli gelişimi ile gerçek renkli LCD ekranlar, yüksek çözünürlük, yüksek kontrast ve yüksek tanım avantajları ile gömülü görüntü sistemlerinde giderek önemli bir yer işgal ediyor. Şu anda, gömülü platforma dayalı LCD ekran kontrol teknolojisini gerçekleştirmenin iki ana yolu vardır: ARM gömülü LCD denetleyici ve bağımsız kontrol cihazı. Ancak, bu iki uygulamanın eksiklikleri vardır. Gömülü denetleyicilerin kullanılması, işlemci üzerindeki yükü artırabilir ve görüntü kare hızını sınırlayabilir. Harici kontrol cihazları sadece maliyetli olmakla kalmaz, aynı zamanda spesifiktir ve farklı LCD ekran tiplerine adapte edilmesi zordur.
Bu probleme dayalı olarak, ARM ve FPGA'ya dayalı bir LCD kontrolör tasarım şeması. Bir yandan bu tasarım şeması, Framebuffer cihazını LINUX OS altında çalıştırarak video belleğinin yazma hızını artırabilir ve işlemci üzerindeki yükü azaltabilir. Bir yandan FPGA, farklı küçük ve orta büyüklükteki LCD ekranlara uygulanabilen kısa geliştirme döngüsü, düşük güç tüketimi ve esnek taşınabilirlik ile LCD denetleyici tasarımını gerçekleştirmek için kullanılır.
1 Sistem bileşimi ve çalışma prensibi
Sistem temel olarak bir mikro denetleyici, FPGA (LCD denetleyici), depolama birimi ve çevresel arabirimden oluşur. Sistem blok şeması Şekil 1'de gösterilmiştir.
LCD likit kristal ekran için uygun kontrolör tasarım şeması
Sistemin çalışma süreci: FPGA içindeki zamanlama üreten devre tarafından üretilen zamanlama kontrol sinyalinin etkisi altında, LCD denetleyici, görüntülenmesi için gereken verileri Framebuffer arabirimi aracılığıyla mikro denetleyiciden okur ve ekran tamponu SRAM'de saklar. Aynı zamanda, LCD ekran, ekran belleği SRAM'ından ekran verilerini okur ve veri formatı dönüştürme devresi aracılığıyla veri bilgilerini gerçek zamanlı olarak doğrudan görüntüler.
2 Sistem donanım tasarımı
2.1 LCD denetleyici
LCD denetleyici, FPGA'ya dayalı olarak uygulanır. Bu program Altera'nın Cvclone (kasırga) serisi EPlC6Q240'ı kullanır. FPGA, yüksek -hızlı veri iletim G/Ç arayüzüne sahiptir, yüksek -hızlı ekran bellek okuma hızını gerçekleştirebilir, LCD ekranın kare hızını büyük ölçüde iyileştirir. Aynı zamanda FPGA, karmaşık mantık işlemlerini gerçekleştirebilen ve karmaşık kontrol zamanlaması sağlayabilen programlanabilir bir mantık cihazıdır. LCD ekran, LQ035Q3DG01 tipi TFT-LCD likit kristal ekranı benimser, çözünürlük 320×240 ve görüntü sinyali RGB formatındadır.
SRAM daha yüksek bir okuma ve yazma hızına sahip olduğundan, bu tasarımın ekran önbelleği 1 parça IS61LV51216AL SRAM'ı benimser, kapasitesi 512 KB'dir ve okuma ve yazma hızı yaklaşık 10ns'dir. Ve bir görüntü çerçevesi görüntüleme boyutu 125 KB'dir (320x240x2/l024), FPGA okuma ve ekran belleğine yazma hızı yaklaşık 200 ns'dir, bu nedenle sistem gereksinimlerini karşılar. Şekil 2, LCD denetleyici devre bağlantı şemasını göstermektedir.
LCD likit kristal ekran için uygun kontrolör tasarım şeması
2.2 ARM9 mikrodenetleyici
Bu sistem tasarımının ana kontrol ünitesi, MCU olarak ATMEL şirketi AT9lRM9200'ü (9200 olarak kısaltılır) benimser, bu işlemci ARM920T çekirdeğine dayanmaktadır, çalışma frekansı 180 MHz'dir. Performans 200 MI/s'ye ulaşabilir ve sistem açık kaynaklı LINUX işletim sistemini benimser. Ancak, sistemin kontrol terminali olan ARM9'un bilgi toplama, işleme ve dış iletişim gibi birçok görevi tamamlaması gerekir ve eğer LCD denetleyici de ekran için bellekten veri okursa, bu işlemciye yük binmesine neden olacaktır. ekran önbelleğini azaltma Veri okuma hızı, LCD'nin gerçek-zaman görüntüsünü etkiler. Bu nedenle, burada LINUX OS altında Framebuffer arayüzüne dayalı bir uygulama yöntemi önerilmiştir; bu, ekran belleğinden veri okuma oranını büyük ölçüde artırır ve böylece tüm görüntüleme sisteminin gerçek-zaman performansını iyileştirir. Şekil 3, AT91RM9200 arayüz devre bağlantısını göstermektedir.
LCD likit kristal ekran için uygun kontrolör tasarım şeması
3 Sistem yazılım tasarımı
Sistemin yazılım tasarımı temel olarak iki bölüme ayrılmıştır: FPGA tabanlı LCD denetleyici tasarımı ve LINUX OS altında Framebuffer sürücü tasarımı.
3.1 LCD kontrolör tasarımı
3.1.1 LCD denetleyicinin bileşimi
Bu tasarım şemasının LCD denetleyicisi, temel olarak önbellek okuma ve yazma, MCU arayüzü ve LCD zamanlama kontrolü gibi modüllerden oluşur. Spesifik bileşim Şekil 4'te gösterilmektedir.
LCD likit kristal ekran için uygun kontrolör tasarım şeması
3.1.2 LCD denetleyicinin tasarım ilkesi
TFT-LCD likit kristal ekranın görüntüleme prensibine göre, görüntüleme için gereken ana kontrol sinyalleri piksel saat sinyali, hat/alan senkronizasyon sinyali ve etkinleştirme sinyalini içerir. Bu şemanın ekran çözünürlüğü 320x240'tır ve LCD ekranın yenileme frekansının 60 Hz olacak şekilde tasarlanması gerekir, yani alan senkronizasyon sinyali (VSYNC) 60 Hz'dir. Bir hat senkronizasyon sinyalinden oluşur, daha sonra bir hat senkronizasyon sinyalinin periyodu 1/(60x240) s'dir ve ardından hat senkronizasyon sinyali (HSYNC) 15 kHz'dir. Aynı şekilde piksel saat sinyali (CK) 5MHz'dir.
FPGA'nın yerleşik -faz-kilitli döngü IP modülü (PLL), FPGA 50 MHz saat sinyali F_CLK'yi 5 MHz piksel saat sinyaline 10'a bölmek için kullanılır. Durum makinesi yöntemini uygulayarak, zamanlama kontrol modülünü tasarlamak için Verilog donanım tanımlama dilini kullanarak, LCD'ye zamanlama gereksinimlerini karşılayan VSYNC, HSYNC ve ENAB kontrol sinyalleri sağlar. Tasarım tamamlandıktan sonra QuatuslI ortamında zamanlama simülasyonu tamamlanır ve elde edilen simülasyon sonuçları zamanlama gereksinimlerini karşılar. Simülasyon şeması Şekil 5'te gösterilmiştir.
LCD likit kristal ekran için uygun kontrolör tasarım şeması
SRAM bir video bellek modülüdür. Şekil 2'den, LCD kontrolör ile mikrodenetleyici arasındaki veri aktarımının ARM'nin saat kontrolü altında okunduğu, LCD ekranın ise piksel saat sinyali CK kontrolü altında SRAM'den okunduğu görülmektedir. Veri alın. Farklı saat alanları arasında veri iletimi sorununu hedefleyen bu çözüm, tamamlamak için asenkron FIFO'yu uygulamak için FPGA tasarımını benimser.
3.2 Çerçeve arabelleği sürücü tasarımı
Framebuffer, Linux çekirdeğinde görüntü aygıtlarını çerçeve arabellekleri olarak eşleyen bir sürücü arabirimidir. Platform Linux 2. 6.25 çekirdeğini kullanır. Linux 2.6 çekirdeğinde, genellikle hiyerarşik bir sürücü tasarım çerçevesi kullanılır. Aygıtların hiyerarşik ve sınıflandırılmış yönetimi, sürücünün alt katmanı veri yolu sürücüsü ve üst katman belirli aygıt sürücüsüdür. Framebuffer sürücüsünde, yazılım tasarım süreci aşağıdaki gibidir: İlk olarak, veri yolu türünü kaydedin ve belirli aygıt ve donanım bağlantısı için sistem veri yolu kaynaklarına başvurun; ikinci olarak, belirli aygıt sürücüsünü veri yolu bağlantı listesine ve aygıt sürücüsüne göre Linux çekirdeğini kaydedin Sağlanan algılama işlevi veri yolu aygıtının türünü algılar; son olarak, belirli cihaz tipinin kaydı, sürücü algılama işlevinde gerçekleştirilir. Aşağıdaki özel uygulama sürecidir.
1) Kaynak uygulaması Sistemde 9200, harici bus arayüzünün BANK7 üzerinden FPGA FIFO arayüzüne bağlanır ve FIFO verileri 16 bit statik bus modunda yazılır. Sürücü tasarım çerçevesine göre, sürücü tasarımının ilk adımının, sistem çağrı platformu_cihaz_kayıt işlevi aracılığıyla veri yolu kaynakları için uygulanması gerekir. Kod aşağıdaki gibidir:
LCD likit kristal ekran için uygun kontrolör tasarım şeması
2) Sürücü, sürücü modülünün ve platformun yükleme ve boşaltma yöntemlerini tanımlamak için _init makrosu ve modülü_çıkış modülü kullanılarak belirli aygıt sürücüsüne kaydedilir{{3} }sürücü_kayıt işlevi modül kayıt işlevinde belirli aygıtın platform_sürücü yapısını sistem veri yolu bağlantı listesine, platforma kaydetmek için kullanılır_sürücü Sondayı sağlayın ve kaldırın veri yolu için belirli cihazların çalışma yöntemleri. Şematik kod aşağıdaki gibidir:
LCD likit kristal ekran için uygun kontrolör tasarım şeması
LCD likit kristal ekran için uygun kontrolör tasarım şeması
3) Çerçeve arabelleği aygıt kaydı Linux'ta çerçeve arabelleği aygıt bilgisi fb_bilgi yapısı aracılığıyla tanımlanır. fb_info'da, fb_var_scree-ninfo, fb_var_screeninfo ve fb daha önemli yapılardır. _işlemler. Bunların arasında, fb_var_screeninfo, ekran çözünürlüğü de dahil olmak üzere kullanıcı tarafından değiştirilebilen ekran denetleyicisi parametrelerini kaydeder; fb_fix_screeninfo, ekran arabelleğinin fiziksel adresi vb. gibi kullanıcı tarafından değiştirilemeyen ekran denetleyicisi parametrelerini kaydeder; fb_ops, belirli görüntüleme cihazı IO işlemlerinin uygulama yöntemini kaydeder. Sürücü, fb_bilgisi tarafından kaydedilen görüntü aygıtı bilgilerini, kayıt_-framebuffer işlevi aracılığıyla Framebuffer aygıtı bağlantılı listesine kaydeder.
Linux dosya sisteminde, Framebuffer cihazının ana cihaz numarası 29'dur ve ikincil cihaz numarası, çerçeve arabelleği sıra numarasıdır. Framebuffer cihazı kaydedildikten sonra, mknod komutu aracılığıyla sistem dev dizininde Framebuffer cihazı dosya düğümü oluşturulur ve uygulama katmanı programı Framebuffer cihazının erişimini ve çalışmasını Framebuffer cihaz dosyası aracılığıyla gerçekleştirebilir.
4. Sonuç
Bu tasarımın LCD denetleyicisi, saniyede en az 25 kare görüntüleyerek gerçek -zaman ve görüntü kare hızı gereksinimlerini karşılar. FPGA tasarımına dayalı LCD kontrol teknolojisi, geniş uygulama, güçlü taşınabilirlik, kısa geliştirme döngüsü ve düşük maliyet avantajlarına sahiptir ve LCD sıvı kristal ekran gerektiren birçok sistem veya duruma uygulanabilir.

