www.mikrocontroller.net

Forum: FPGA, VHDL & Co. VHDL Konfiguration ADC


Important 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.
Autor: Sukram (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hallo,

ich habe einen MAX V Baustein von Altera mit dem ich einen ADC mittels 
SPI ansteuere. Der ADC muss am Anfang konfiguriert werden. Dies 
geschieht über 16 Bits (Bsp. 0101011111111111). Die konfiguration soll 
die Logik übernehmen. Hierzu muss an der SDO Leitung dieser serielle 
Bitstrom erzeugt werden.  Da ich VHDL Anfänger bin ist es für mich 
momentan nich ganz einfach dies zu realisieren. Habt ihr Vorschläge wie 
das realisiert werden kann?

Viele Grüße
Sukram

Autor: Sukram (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Ich hätte noch eine weitere Frage.
Wenn ich in der Entity Eingänge und Ausgänge definiere, kann ich diese 
auch intern weiterverarbeiten oder sind diese dann direkt Ein und 
Ausgänge der Logik?

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite Flattr this
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Sukram schrieb:
> Habt ihr Vorschläge wie das realisiert werden kann?
Du brauchst also 1. eine Komponente, die SPI kann und 2. eine 
Komponente, die über diese SPI-Schnittstelle die passenden Daten 
überträgt und dazu die 1. Komponente passend ansteuert.

Sukram schrieb:
> Wenn ich in der Entity Eingänge und Ausgänge definiere, kann ich diese
> auch intern weiterverarbeiten
Ja klar. Es ist sogar der Ausnahmefall, dass die Ports einer Komponente 
an IO-Pins angeschlossen werden. Das kann nämlich nur von der 
"top"-Entity aus geschehen.
Dieses Top-Modul beinhaltet dann andere Komponenten, über deren Ports 
"interne" Entities angeschlossen werden. So z.B. in diesem einfachen 
Beispiel im Beitrag "Re: constanter Buswert in der Schematic (ISE WEBpack)" und dann 
die Links im Beitrag "Re: Aufrufen von untermodulen"

Autor: Sukram (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Von was für Komponenten sprichst du? Wäre es möglich diese 
Konfigurationsdaten über einen Zähler zu erzeugen und dann über ein 
SChieberegsiter die Daten dem AD-Wandler übertragen? Mir geht es eher 
darum wie ich diese 16 Bits erzeugen kann?

Autor: Thomas Ulrich (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Du legst einen Wert auf einen Vektor, baust eine Schleife von 1 .. 16 
und legst dann per Multiplexer die passenden Bits nacheiander raus oder 
schiebst sie raus:

ungefährt so:

process (doodle) is
begin
  if rising_edge (clk)

    if counter = 0 then
      vektor <= "001010101010101";
    elsif counter < 16 then
      vektor(14 downto 0) <= vektor (15 downto 1);
    end if;

    output <= vektor(0);

  end if;
end process

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite Flattr this
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Sukram schrieb:
> Von was für Komponenten sprichst du?
Von einem SPI-Master und einer FSM, die diesen Master mit Daten füttert. 
Denn es wird nicht reichen, dem ADC 1 einziges Konfigurationswort zu 
senden. Veilmehr wirst du jedesmal, wenn du eine Wandlung machen willst 
1 Konfigurationswort senden, und gleichzeitig die Daten passend zum 
vorher übertragenen Konfigurationswort zurückbekommen.

> Mir geht es eher darum wie ich diese 16 Bits erzeugen kann?
Sieh dich mal hier im Forum um. Dieses Problem taucht laufend auf.
http://www.mikrocontroller.net/search?query=spi+vh...

Thomas Ulrich schrieb:
> vektor(14 downto 0) <= vektor (15 downto 1);
Damit wäre das MSB speichernd und du hättest implizit einen 
arithmetischen Rechtsshift. Üblicher ist es aber, alle Bits des 
Schieberegisters zu beschreiben. Etwa so:
   vektor <= '0' & vektor(15 downto 1);
Dann könntest du auch deine implizite Variante in einen expliziten 
arithmetischen Rechtsshift umwandeln:
   vektor <= vektor(15) & vektor(15 downto 1);

Autor: Sukram (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Okay, dass muss ich mir mal anschauen versteh ich auf den ersten Blick 
nicht so ganz. Aber vielen Dank für die Hilfe. Ich denke es werden noch 
einige Fragen meiner Seite zur VHDL Programmierung auftauchen, da ich 
noch am Anfang meines Projekts bin.

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel




Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen.
Siehe Bildformate
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net