Forum: FPGA, VHDL & Co. Vmod TFT Touchscreen (von Digilent) Touch implementierung probleme


von Tobi S. (hobi)


Angehängte Dateien:

Lesenswert?

Hallo Leute,

Wie im Betreff schon genannt verwende ich das Vmod TFT Touchscreen 
(http://www.digilentinc.com/Data/Products/VMOD-TFT/VmodTFT_rm.pdf) von 
Digilent mit einem Nexys3 FPGA.
Ich konnte soweit alles zum laufen bekommen doch jetzt steck ich 
ziehmlich stark fest.

OK. Ich versuche gerade den Touch einzubinden doch es passieren 
"mysteriöse" Dinge bei der Synthese.
Das Touch verwendet ein AD 7873 Wandler und dieser braucht ein paar 
Daten was er Sampeln soll und schickt diese dann zurück 
(http://www.analog.com/static/imported-files/data_sheets/AD7873.pdf) im 
Datenblat ist es besser erklärt.

Ich denke ich kann die Seriellen Daten vom Touch in ein unsigned Vector 
laden, ich habe ein paar LED's eingebunden damit ich sehen kann ob ich 
überhaupt etwas einlesen kann. Doch jetzt kommt es, ich sage:
 if dinx2(15 downto 4) >= "101000101010" then

wird mir dieser Comperator in der RTL (im Anhang) nicht angeschlossen, 
und die Synthese haut mir Fehler raus die ich nicht verstehe.
Wenn ich nun den Comperator von (>=) grösser= zu (<=) kleiner= ändere, 
entstehen zwar die gleichen Synthese Warnings aber mein Image bekommt 
schlieren, zuckt und teilweise hat es auch schwarze Balken(kommt darauf 
an wie oft Synthese gearbeitet hat).

(im Anhang befinden sich alle Fehler meldungen)
ein Fehler ist z.B:

WARNING:Xst:2677 - Node <dinx2_21> of sequential type is unconnected in 
block <Touchcontroll>.

Da aber dinx2 nur 16 Bits besitzt bin ich etwas überfragt woher nun des 
22 Bit kommt. Aber interesanter ist warum der Comperator auswirkungen 
auf mein Video Timing hat.

Im Anhang ist auch mein VHDL code, ich hoffe mir kann jemand weiter 
Helfen.

Vielen Dank Tobi

von dden (Gast)


Lesenswert?

Hallo ,
läuft das denn so??
SEHR unübersichtlich geschrieben, beim überfliegen schon einige NoGo's 
gesehen.
Mein Rat mit neuem Konzept komplett neu aufsetzen.

Interesseshalber zeig doch mal deine Simulationsergebnisse?
Wechselt den dinx2 überhaupt, da in einigen states immer auf 0 liegt?

Mfg

von Tobi S. (hobi)


Angehängte Dateien:

Lesenswert?

Hi,

anbei meine Simulation.
Rote Pfade gebe ich aus der Testbench vor. Der state hold ist nicht gut 
zu sehen ist aber da für ein paar ns.

Tut mir leid das mein Code so unübersichtlich ist bin ein wenig neu in 
der Welt der HDL. Könntest du mich bitte über die nogo's aufklären damit 
ich diese in Zukunft nicht mehr mache.

Vielen Dank Tobi

: Bearbeitet durch User
von Fpgakuechle K. (Gast)


Lesenswert?

>Tut mir leid das mein Code so unübersichtlich ist bin ein wenig neu in
>der Welt der HDL. Könntest du mich bitte über die nogo's aufklären damit
>ich diese in Zukunft nicht mehr mache.


Dir tuts leid, aber uns tut#s weh - Bitte mach das nicht noch Mal:

Besorg dir einen Editor mit syntax-highlight und code beautify für VHDL 
bspw. EMACS. Dann verwende keine Tabs sondern wandele diese in Spaces 
um.

wenn man um Hilfe bittet sollte man kein "Geschmiere" vorlegen.


Bitte lies nach was Takte und Taktnetze bedeuten und hüte Dich davor 
'event und ähnliches (rising_edge) für anderes als Taktnetze zu 
verwenden.
ferner werden takt durch externer Oscillators/interne DCM/PLL's 
generiert.

da ist einer deiner Fehler:
1
--mitten im Case:
2
  when convx=>
3
    CS                <= '0';
4
    qdin              <= 0;
5
    Data_out_tp       <= '0';
6
    diny              <= (others => '0');
7
    dclk_aktiv        <= '1';
8
    --DON'T
9
    if rising_edge(doclk) then
10
      if Busy = '0' then
11
        qdout         <= qdout-1;
12
        ffs           <= Data_in_tp;
13
        dinx2(qdout)  <= ffs;           -- sync read in, ffs to avoid metastability
14
      end if;
15
    --DON'T 
16
    elsif falling_edge(doclk) then
17
      if qdout = 0 then
18
        next_state    <= hold;
19
      else
20
        next_state    <= convx;
21
      end if;
22
    end if;
23
    start_button      <= '0';
24
    hour_glass_button <= '0';
25
--weiter im Case =>

Extra process für Einsynchronisieren ist angebracht und nachlesen was 
einsynchronisieren überhaupt bedeutet. (Kette von D-FF,)

MfG

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.