Ich würde gerne den ADS8365 über einen FPGA ansteuern und natürlich die Bitstreams dann auch auslesen. Bisher hatte ich nur mit ADCs zu tun, wo ich nur ein CLK vorgeben muss. Bei diesem hier sind aber auf Grund der 6 Channel diverse Timings einzuhalten und die entsprechenden Signale zum auslesen zu geben. Vorest will ich nur 2 Channel nutzen. Muss ich das über states in VHDL machen oder welche Möglichkeiten habe ich das in VHDL zu realisieren.
Dennis Lindner schrieb: > Muss ich das über states in VHDL machen oder welche Möglichkeiten habe > ich das in VHDL zu realisieren. Wenn du das in VHDL machen willst, wirst du auf jeden Fall eine State-Machine brauchen. Denn nur so kannst du schrittweise irgendwas nacheinander machen. Alternativ könntest du einen Prozessor auf dem FPGA als Soft-Core implementieren und die Ansteuerung in Assembler oder C machn. Aber das ist nur eine sehr umständliche Schreibweise für "technischer Overkill"... ;-) Dennis Lindner schrieb: > Bei diesem hier sind aber auf Grund der 6 Channel diverse Timings > einzuhalten Das hat nichts direkt mit irgendwelchen Kanälen zu tun. Es hat damit nur damit zu tun, dass die Statemachine im ADC so aufgebaut ist. > Bisher hatte ich nur mit ADCs zu tun, wo ich nur ein CLK vorgeben muss. Wenn du bisher nur Nägel kanntest, dann ist eine Schraube schon eine technische Herausforderung. Der Knackpunkt ist aber einfach: du brauchst ein anderes Werkzeug. Im Fall des ADC heißt das: du braucht die FSM, damit du nacheinander die nötigen signale an den ADC anlegen kannst. Welche Signale und in welcher reihenfolge, das steht im Datenblatt.
Ich hab jetzt mal was zusammen geschrieben, wahrscheinlich überhaupt nicht elegant, aber ich denke es müsste funktionieren, konnte ich bisher noch nicht testen, weil der ADC noch nicht fertig ist. Ich habe es erstmal nur für 2 Channel geschrieben und zum Teil schon die Erweiterung auf 6 Channel mit Kommentaren eingefügt, jedoch werden einige Teile bei 6 Channel sehr lang, wahrscheinlich fehlt mir da gerade die passende Idee, wie ich das eleganter umsetzen kann. Verbesserungsvorschläge nehme ich gerne an.
Dennis Lindner schrieb: > konnte ich bisher > noch nicht testen, weil der ADC noch nicht fertig ist. Genau aus diesem Grund gibt es VHDL Simulatoren ...
Klaus Falser schrieb: > Genau aus diesem Grund gibt es VHDL Simulatoren ... Den VHDL-Code debuggt man mit dem Simulator. Das Design debuggt man mit dem Oszi und dem Logic-Analyzer. Es bringt nichts, den VHDL-Code direkt auf der Hardware debuggen zu wollen.
Ok, würd ich ja auch gern, hab bisher noch nicht herausgefunden wie oder mit was das in Quartus II 10.0 funktioniert.
Gutes Stichwort, Danke, habs damit hinbekommen und auch gleich ein paar Fehler gefunden :D Hab gleich noch ne Frage zu diesem Teil hier:
1 | .
|
2 | .
|
3 | .
|
4 | when adress => if (channel=2 AND gelesen=0 AND A="000011") then |
5 | A0 <= '0'; |
6 | A1 <= '0'; |
7 | A2 <= '0'; |
8 | daten_channel <= 1; |
9 | A(0) <= '0'; |
10 | end if; |
11 | if (channel=1 AND gelesen=0 AND A="000001") then |
12 | A0 <= '0'; |
13 | A1 <= '0'; |
14 | A2 <= '0'; |
15 | daten_channel <= 1; |
16 | A(0) <= '0'; |
17 | end if; |
18 | if (channel=1 AND gelesen=0 AND A="000010") then |
19 | A0 <= '1'; |
20 | A1 <= '0'; |
21 | A2 <= '0'; |
22 | daten_channel <= 2; |
23 | A(1) <= '0'; |
24 | end if; |
25 | if (channel=2 AND gelesen=1 AND A="000010") then |
26 | A0 <= '1'; |
27 | A1 <= '0'; |
28 | A2 <= '0'; |
29 | daten_channel <= 2; |
30 | A(1) <= '0'; |
31 | end if; |
32 | .
|
33 | .
|
34 | .
|
channel gibt die anzahl der auszuwertenden kanäle an, gelesen die bereits ausgelesenen und in A steht, je nachdem an welcher stelle eine 1 ist, welcher channel noch auszulesen ist. Das ganze funktioniert so ja nicht, wie kann ich das lösen?
Dennis Lindner schrieb: > Das ganze funktioniert so ja nicht, wie kann ich das lösen? Das sieht mir irgendwie kompliziert aus. Ich würde da einfach alle Kanäle nacheinander wandeln, und wenn ich damit fertig bin, habe ich alle Kanäle gewandelt... ;-)
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.