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
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
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
>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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.