TFT řadič s CPLD (s UARTem)
Všechny předchozí pokusy
s generováním jednoduchých obrazců na TFT sloužily pouze k ověření komunikace s TFT.
Hlavní záměr ovšem byl navrhnout pro tento TFT display kompletní řadič s video-RAM.
Protože se mi na první pokus nechtělo drátovat s paralelní sběrnicí k jednočipu, pořešil jsem
pro začátek zápis obrazových dat přes sériovou linku, se kterou se celkem pohodlně pracuje. 1. Interface pro TFT a UART 640x480x18-bit TFT modul je připojen stejně, jako byl minule, tj. přes 100R tlumící rezistory na portu D. Jejich hodnota závisí na délce a typu káblíku k TFT, ale bez nich to téměř jistě nepůjde, protože hrany z CPLD mají příliš vysokou strmost.
TFT modul je připojen se statickým ENABLE signálem, takže viditelná oblast modulu začíná
na pevné pozici dle datasheetu (pomocí tohoto signálu lze posouvat začátek řádků). Protože paměť je stejně jen
16-ti bitová, je display připojen jen v 16-bit módu. 2. SRAM interface 640x480 obrázek v 16-bit barvách vyžaduje 600kiB paměti, takže jsem vybral dvojici 8-bit SRAM 512kB zapojenou jako 512k x 16-bit. Rychlost jsem volil 10ns, protože pomalejší modely nejsou o moc levnější a časování by bylo podstatně náročnější. Paměť je připojena na portu B, kde je minimum speciálních pinů (jen jeden GSR).
Vzhledem k tomu, že jsou paměti připojené krátkými spoji, obešlo se to tentokrát
bez tlumících rezistorů.
3. Program pro CPLD
Nabízí se v podstatě dvě možnosti, jak řadič realizovat. Ta primitivnější varianta předpokládá
použití dvou zcela oddělených RAM pamětí, kdy je jedna používána pro obnovování TFT a do druhé je možné libovolně
zapisovat/číst. Pak lze jednoduše řídícím signálem obě paměti prohodit (double buffering).
Výhodou této koncepce je jednoduchá struktura v hradlovém poli a rychlá komunikace s procesorem bez nutnosti používat WAIT signál.
Nevýhoda ovšem je potřeba dvou RAM a hlavně PLA s velkým počtem I/O a ty jsou dost drahé. Časování jak by teoreticky mělo vypadat, ukazuje následující graf.
Jak vypadá časování ve skutečnosti netuším (a raději to snad ani nechci vědět), ale komunikace se zdá být bez chyb.
Považuji to docela za úspěch, protože takt paměti je v tomto uspořádání špičkově cca 50MHz (polovina její propustnosti) a to je,
vzhledem k primitivnímu dvou-fázovému časování, docela dobrý výsledek. Pro finální verzi, bude-li nějaká, by ale asi
bylo rozumné používat jemnější dělení cyklu, tj. ideálně 100MHz master clock. Zdrojáky ke stažení: CoolRunner2_TFT_serial.zip (1524kB). 4. Jak to chodí
Pár fotek, jak to vypadá za chodu: A malá video ukázka: (c) 2012, Stanislav Mašláň - Všechna práva vyhrazena.
|