LCD von TerAsic mit Cyclone II von Altera

#771998
Lesenswert?

Hallo ich verwende das externe Display von Terasic TRDB-LCM mit 
Spezifikationen(TPG051 Spec 1 3) im Anhang

ich habe die demo programme angeschaut(die waren in Verilog) und habe 
nach dem gleichen Schema in vhdl etwas geschrieben. Es funktioniert, 
aber jetzt will ich es richtig verstanden haben. Man verwendet ein 
controller.vhd und ein config.vhd

im controller.vhd wird bis von 0 bis 16 bits gegangen und das 
initialisierungsdata vom config.vhd wird abgelesen

im config.vhd stehen schleifen , die nach und nach 16 bit initdata zum 
controller.vhd schicken.

ich gehe davon aus, dass diese 16 bits etwas mit der spezifikationen aus 
dem TPG051 Spec 1 3. pdf file zu tun haben(seite 17 bis 25)

kann mir einer sagen wie das genau passieren soll.
im demo file fuer color pattern sind folgende 16 bits init data 
vorgegeben:

case lut_index is
    when 0 =>
      lut_data <= "000010" & "00" & "00000010";
    when 1 =>
      lut_data <= "000011" & "00" & "00000001";
    when 2=>
      lut_data <= "000100" & "00" & "00111111";
    when 3=>
      lut_data <= "001001" & "00" & "00100000";
    when 4=>
      lut_data <= "010000" & "00" & "00111111";
    when 5=>
      lut_data <= "010001" & "00" & "00111111";
    when 6=>
      lut_data <= "010010" & "00" & "00101111";
    when 7=>
      lut_data <= "010011" & "00" & "00101111";
    when others=>
      lut_data <= "000000" & "00" & "00000000";
end case;

im controller.vhd werden die bits von vorne abgeselen:

  if (mst < 17) then
  mst <= mst+1;
  end if;
  if (mst < 16) then
    msdata <= idata(15 - mst);
  end if;


danke im voraus
Angehängte Dateien:
#773072
Lesenswert?

Da hast du mit den Grossbuchstaben recht :)

Nun wegen der Simulation. Ich habe es simuliert und geschaut was da bei 
mir alles passiert und festgestellt, dass sich das Initdata in meinem 
Fall gar nicht veraendert. Es kommt gar nicht zum lut_index=1 oder 2 ...
lut_index bleibt auf 0. Ich nehme an, dass im Demoprogramm lut_index bis 
7 geht, da vermutlich wenn das Display fuer komplexere Sachen benutzt 
wird(DVD Player oder sonstiges), mehr Initdata gebraucht wird.

Wie das Spiel mit dem Initdata funktioneirt ist es mir klar. Ich kann es 
leicht vom VHDL Code mit und ohne Simulation nachvollziehen. Ich 
verstehe nur nicht, wie dieses Initdata gebaut ist.
IM PDF steht die Spezifikation drin, aber ich kann sie nicht 
nachvollziehen.
Z.B. will ich dass das Display im RGB Through Mode empfaengt, also muss 
ich eine Sequenz "10" irgendwann schicken...(da RGB Through bei 2 ist).

Und ich nehme an, dass diese 16 Bits solche Informationen enthalten, 
aber wie die Anordnung der Bits ist, wo meine 2 Bits fuer das Mode 
stehen sollen, wo die andere Bits stehen sollen, weiss ich nicht..

Mein Display so wie das Data jetzt aussieht, muss in Through Mode 
empfangen, aber das Initdata sieht so aus:

lut_data <= "000010" & "00" & "00000010";

10 kommt vor an zwei Stellen. In der Spezifikation aber ist das Mode an 
erster Stelle kodiert. Und wie die andere Konfigurationen jetzt 
eingestellt sind, weiss ich nicht. Deswegen kann ich keine 
Rueckschluesse ziehen.
Gast #773729
Lesenswert?

Ich habe mir das .pdf nicht angeschaut und weiß auch nicht, wie Dein 
Display angesteuert werden muß. Aber hier hast Du ein Beispiel 
vorliegen, wie man vhdl (bzw. Code generell) nicht schreiben sollte.

Ich guck bei mir (leider noch zu selten) nach ein paar Tagen nochmal in 
den Code, um Unklarheiten richtig zu kommentieren.

Rick

P.S.: Dein

lut_data <= "000010" & "00" & "00000010";

kannst Du auch so schreiben:

lut_data <= "0000100000000010";

Das ist alles parallel.
Gast #775940
Lesenswert?

Ok.

Schau mal auf Seite 16 in Deinem Datenblatt. Dort sieht man das "Format" 
der Konfigurationsdaten: 6 Adressbits, R/W, Hiz, 8 Datenbits.

In Register
R02 landet 0x02 (input data format = through mode, Rest = 0)
R03 langet 0x01 (select interlace mode = non-interlace, Rest = 0)
R04 landet 0x3f (powermäßig alles an, driver = 100%)
R09 landet 0x10 (Gain contrast = 0x10, ca. 0.5)
 usw. usf.

Es hat so ziemlich jedes Bit eine Bedeutung. Deine beiden Dateien sorgen 
dafür, daß das Timing von Seite 16 eingehalten wird und der Controller 
per SPI ein paar neue Konfigurationsinformationen bekommt.

Spiel doch mal ein bisschen an den Werten rum. Mit dem Kontrastregister 
z.B. dürftest Du nichts kaputtbekommen.

Rick
#790299
Lesenswert?

"schau mal auf Seite 16 in Deinem Datenblatt. Dort sieht man das 
"Format"
der Konfigurationsdaten: 6 Adressbits, R/W, Hiz, 8 Datenbits."

Wie ich davor gesagt habe, habe ich mit euerer Hilfe verstanden, wie die 
Adressierung von Konfigurationsdata funktioniert.

Aber ich weiss nicht was dieses HiZ 1 Bit bedeutet.
Und R/W ist bei 0 bzw. 1 read oder write ?

Danke

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren