Forum: FPGA, VHDL & Co. ARTY S7 Board, AD-Wandler,FPGA SPARTAN


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Terminus T. (mia2021)


Lesenswert?

Hallo,

vorab, ich bin was FPGAs angeht eine Anfängerin und möchte mit dem ARTY 
S7 Board arbeiten.

Es soll ein von außenkommendes Signal am AD-Wandler eingelesen werden, 
um es dann in das FPGA SPARTAN 7 (XC7S50-1CSGA324C) zu übertragen.
Das übertragene Signal an das FPGA soll dann ausgewertet werden.


Mit der Hardwaresprache VHDL (VIVADO) habe ich mich auseinandergesetzt.

Weil ich das zum ersten mal praktisch angehe, fehlen mir die Ansätze wie 
ich da vorgehen soll.

Habt ihr Ideen für die Herangehensweise ?

Viele Grüße

Mira

von chris_ (Gast)


Lesenswert?

>Weil ich das zum ersten mal praktisch angehe, fehlen mir die Ansätze wie
>ich da vorgehen soll.

Das einfachste ist, ein Beispielprojekt zu suchen, bei dem das schon mal 
gemacht wurde. Für die MAX10 FPGAs gibt es dazu einige, beim Artix weiß 
ich es nicht.

von Gustl B. (gustl_b)


Lesenswert?

Terminus T. schrieb:
> außenkommendes Signal

Welcher Spannungsbereich, welcher Frequenzbereich?

Terminus T. schrieb:
> AD-Wandler

Das Board hat nur den AD-Wandler des FPGAs, den XADC. Guck dir an wie 
der funktioniert.

Terminus T. schrieb:
> um es dann in das FPGA SPARTAN 7 (XC7S50-1CSGA324C) zu übertragen

Da der ADC im FPGA ist muss da nix übertragen werden.

Terminus T. schrieb:
> soll dann ausgewertet werden.

Und wie? Also was interessiert dich am Signal?

Was vor allem fehlt ist was dann passieren soll. Soll da was zum PC 
übertragen werden, soll eine LED blinken, ... wozu die Auswertung wenn 
dann das Ergebnis nicht verwendet wird?

Terminus T. schrieb:
> Mit der Hardwaresprache VHDL

Das ist gut.

Terminus T. schrieb:
> Habt ihr Ideen für die Herangehensweise ?

Das hängt sehr davon ab was du lernen möchtest und ob du etwas lernen 
möchtest.
Das Projekt ist schnell mit XADC, Microblaze und UART zusammengeklickt. 
Dann schreibst du noch Code für den Microblaze. Geht schnell, aber über 
FPGAs und VHDL hast du dann quasi nichts gelernt.
Was du auch machen kannst, ist das alles selber in VHDL zu schreiben. 
Den XADC kann man bequem über den DRP ansteuern, dann bekommt man die 
Daten der Abtastwerte. Die wertest du dann mit einer VHDL Beschreibung 
aus und dann geht es ebenfalls weiter in VHDL. Die Lernkurve ist 
steiler, dauert länger, aber du lernst mehr. Vor allem lernst du dann 
auch die Simulation zu nutzen und eher in Hardware zu denken.

Wenn es dir nur drum geht ein Signal zu erfassen und auszuwerten, dann 
stellt sich sonst die Frage wieso da ein FPGA gebraucht wird. Das macht 
nur Sinn wenn du diesbezüglich was lernen willst oder einen schnellen 
oder viele ADCs brauchst.

von Holger (Gast)


Lesenswert?

Terminus T. schrieb:
> Habt ihr Ideen für die Herangehensweise ?

ADC Register:
https://slidetodoc.com/module-6-analogue-digital-converter-c-28-x/

ADC Sequencer:
https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/hb/max-10/archives/ug-m10-adc-16.1.pdf
ADC Sequencer . Start  wait ... Stop ....get_result...
VHDL Code ....
https://www.embeddedrelated.com/showarticle/89.php

How to Create ADC Design in MAX 10 Device Using Qsys Tool

Gruss Holger.

von Gustl B. (-gb-)


Lesenswert?

Ähm ... es geht hier um ein Board mit Xilinx FPGA und dieser hat einen 
ADC eingebaut, den XADC. Den kann man bequem über AXI verbinden oder 
sehr einfach über DRP. DRP ist die einfachste Lösung wenn man kein 
Blockdesign oder sonstiges AXI im System hat. Schön ist auch, dass der 
XADC Wizard gleich ein Signal für die Simulation erzeugt.

Und so geht das, Ausschnitt:
1
signal drdy_xadc: std_logic:='0';
2
signal eoc_xadc: std_logic:='0';
3
signal do_xadc: std_logic_vector(15 downto 0):=(others => '0'); 
4
 
5
begin
6
7
inst_xadc : xadc_wiz_0 port map(
8
    daddr_in  => "0010011", -- Der Kanal der erfasst werden soll[1]
9
    den_in  => eoc_xadc,
10
    di_in  => (others => '0'),
11
    dwe_in  => '0',
12
    do_out  => do_xadc, -- Daten, (Abtastwert sind die 12 MSBs davon)
13
    drdy_out  => drdy_xadc, -- wird verwendet um Daten zu erfassen
14
    dclk_in  => clk,
15
    vauxp3  => xadc_vauxp3,
16
    vauxn3  => xadc_vauxn3,
17
    busy_out  => open,
18
    channel_out  => open, --channel_xadc
19
    eoc_out  => eoc_xadc,
20
    eos_out  => open,
21
    alarm_out  => open,
22
    vp_in  => xadc_p,
23
    vn_in  => xadc_n);

[1] Der Wert ist die Adresse, und zwar 
https://www.xilinx.com/support/documentation/user_guides/ug480_7Series_XADC.pdf 
Seite 38.
Binär "0010000" (dezimal 16) steht für VAUXP(0)/VAUXN(0)
...
Binär "0011111" (dezimal 31) steht für VAUXP(15)/VAUXN(15).

von chris_ (Gast)


Lesenswert?

>Ähm ... es geht hier um ein Board mit Xilinx FPGA und dieser hat einen
>ADC eingebaut,

Wobei ich aber nicht sicher wäre, ob Sie den verwenden soll. Ich weiß 
von einem Hochschulpraktikum, die das Artixboard mit externem AD-Wandler 
verwenden, damit die Studenten den Umgang mit Schnittstellen lernen.

von Holger (Gast)


Lesenswert?


von Markus W. (elektrowagi78) Benutzerseite


Lesenswert?

Der XADC ist sehr langsam und ungenau. Den kann man höchstens für 
Spannungs- und Temperatur-Überwachungen einsetzen. Das ARTY hat aber 
eine Reihe von PMOD-Eingängen, an die gute Wandler angeflascht werden 
können. Es gibt z.B. einen 4-Kanal ADC Input bis 1 MHz, sowie PMODs mit 
I2C-interface. An dieses können sehr viele externe Wandler-Chips 
angeschlossen werden.

von Gustl B. (gustl_b)


Lesenswert?

Markus W. schrieb:
> Der XADC ist sehr langsam

Markus W. schrieb:
> Es gibt z.B. einen 4-Kanal ADC Input bis 1 MHz

Der XADC kann ebenfalls 1 MHz. Der kann auch differentielle Eingänge, 
ich finde den durchaus brauchbar. Aber ja, über die PMODs kann man 
bessere ADCs anschließen.

von IQ130+ (Gast)


Lesenswert?

Holger schrieb:
https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/hb/max-10/archives/ug-m10-adc-16.1.pdf
> ADC Sequencer . Start  wait ... Stop ....get_result...
> VHDL Code ....
> https://www.embeddedrelated.com/showarticle/89.php
>
> How to Create ADC Design in MAX 10 Device Using Qsys Tool

Das ist intel/Altera hier geht es um Xilinx Artix da ist Qsys 
prinzipbedingt völlig unbrauchbar.

>Es gibt z.B. einen 4-Kanal ADC Input bis 1 MHz, sowie PMODs mit
I2C-interface.

Der ist nicht zuletzt wegen dem langsamen I2C nicht besser als die 
internen XADC (ebenfalls ein MS/sec). Wenn was externes sucht dann 
sollte man nach minimum 8bit 50 MSps über LVDS schauen. dazu braucht es 
einen FPGA, das langsame I2C/SPI transferiere kann auch ein µC.

Siehe auch:
Beitrag "FPGA Oszilloskop mit VGA Ausgang"
Beitrag "Open Source Oszi"

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.