ADS8365 über FPGA ansteuern

OP #2324433
Lesenswert?
• ▲
▼
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.
Moderator (Firma: Titel) Persönliche Seite #2324521
Lesenswert?
• ▲
▼
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.
OP #2327163
Lesenswert?
• ▲
▼
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.
Angehängte Dateien:
OP #2327324
Lesenswert?
• ▲
▼
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?

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