Forum: FPGA, VHDL & Co. VDHL register konfigurieren


von Franz (Gast)


Lesenswert?

Hallo,

ich habe ein kleines Problem. Ich bastel gerade an einem FPGA rum und 
muss den Output von 1.5V auf 3.3V hochsetzen. Laut Anleitung muss ich 
einfach nur zwei Register setzen. Ich sehe spontan keine andere 
Möglichkeit, als das mit VHDL zu lösen (glaube ich zumindest). Ich habe 
aber überhaupt keine Ahnung von VHDL.

Ich habe mir ein paar Tutorials und Beispiele im Netz angeschaut, werde 
aber irgendwie nicht daraus schlau, möchte jetzt allerdings auch nicht 
Stunden investieren, um die Sprache zu lernen, wegen einer Kleinigkeit.

Also, ich will nur die Register 0x8 auf den Wert 0x80 setzen und das 
Register 0x0 auf den Wert 0x00.

Kann mir da jemand helfen? :)

von Klaus (Gast)


Lesenswert?

Bahnhof?

von Gustl B. (-gb-)


Lesenswert?

Wie wäre es mit ein paar mehr Informationen?

Das hier ist vielleicht auch sinnvoll:

http://www.mikrocontroller.net/articles/FPGA

Viele FPGAs haben aber schon 3,3V CMOS an den Pins.

von Christian R. (supachris)


Lesenswert?

Ein FPGA mit Registern um eine Spannung einzustellen? Wohl kaum. Da ist 
wohl ein externer ADC dran? Meine Glaskugel sagt, dass der per SPI 
angeschlossen ist und eben entsprechend einzustellen ist. Aber die 
Glaskugel ist sehr trüb heute, schwer zu erkennen....

von Ingenieur (Gast)


Lesenswert?

Da möchte jemand die Bankspannung ändern, denke ich.

von Christian R. (supachris)


Lesenswert?

KAnn auch sein, wobei 1,5V schon recht unüblich sind. Und über welches 
Register bitte soll das gehen? Da müsste ja ein programmierbarer 
Spannungsregler die VCCIO speisen.

von Franz (Gast)


Lesenswert?

Oje, ich hatte schon befürchtet, dass meine Erklärung voll Unwissenheit 
hinten und vorne nicht reicht.

Der Ingenieur hat schon Recht, ich möchte die Bankspannung ändern.
Ich benutze ein Spartan-3A DSP von Xilinx.
An die Pins der Bank komme ich nicht ran, sonst könnte ich einfach die 
3.3V Ausgänge benutzen. Zur Zeit ist der Augang auf einem justierbaren 
Voltage Rail: FMC expansion connector (ich weiß nichtmal genau was das 
bedeutet).

Hier mal der Auszug aus dem Handbuch, der mich zu meiner Frage getrieben 
hat:

To set the appropriate voltage on the FMC connector, an I²C digital pot 
must be set to a specific value. The value should be written to the 
volatile register of the digital pot. This register is located at 
address 0x00. To write to the volatile section of the digital pot make 
sure that address 0x08
is set to 0x80.

Aus dem Rest des Buches habe ich mir zusammengereimt, dass ich dies in 
VHDL machen müsste, aber wie gesagt, vielleicht habe ich das Ganze auch 
falsch verstanden.

von Christian R. (supachris)


Lesenswert?

Oha, da hast du dir ja was vorgenommen. Dazu musst du einen I2C 
Controller in dein System implementieren, das ist ohne Vorkenntnisse 
gelinde gesagt, schwierig. Was genau ist denn das für ein Board? FMC ist 
der "FPGA Mezznine Card" Verbinder, der ist üblicherweise auf neueren 
Xilinx Demo-Boards zu finden. Aber Spartan 3 und FMC hab ich noch nicht 
gesehen. Poste doch mal den Link zu dem Board, und erklär, wieso du die 
Boardspannung ändern willst/musst. 1.5V klingt für mich nicht nach 
ungefähr, kann es sein, dass da ein Mobile DDR RAM dran hängt?

Edit: Hab das Board gefunden, ist das XtremeDSP™ Development Platform 
Spartan-3A DSP 3400A, oder?

Da geht die Spannung offenbar wirklich nur zu den FMC Steckern. Naja, 
dann siehe oben. Ein I2C Controller muss dran. Was läuft denn auf dem 
FPGA? VIelleicht sogar ein MicroBlaze Prozessor?

von Drill-Tutor (Gast)


Lesenswert?

Christian R. schrieb:
> Oha, da hast du dir ja was vorgenommen. Dazu musst du einen I2C
> Controller in dein System implementieren, das ist ohne Vorkenntnisse
> gelinde gesagt, schwierig.

Falls es der einzige IC an diesem I2C ist und du nur diese beiden 
Register setzen willst, brauchst du keinen kompletten I2C Controller, da 
genügt es per FSM einen paar bits im richtigen timing rauszushiften.

Gruß

von Christian R. (supachris)


Angehängte Dateien:

Lesenswert?

Richtig. Ich häng mal den Simpel-I2C Core an, der in der FPGA 
Implementierung des Apple II verwendet wird, um den Sound-Controller 
beim Start einzustellen. Du könnte man simpel anpssen. Da werden auch 
bloß einmalig ein paar Register beschrieben...

von Franz (Gast)


Lesenswert?

Christian R. schrieb:

> Edit: Hab das Board gefunden, ist das XtremeDSP™ Development Platform
> Spartan-3A DSP 3400A, oder?
>
> Da geht die Spannung offenbar wirklich nur zu den FMC Steckern. Naja,
> dann siehe oben. Ein I2C Controller muss dran. Was läuft denn auf dem
> FPGA? VIelleicht sogar ein MicroBlaze Prozessor?

Genau dieses Board ist es.
Micro- oder PicoBlaze, gute Frage. Könnte ich erst am Montag wieder 
nachschauen.

Als ich das Board in die Hand gedrückt bekam, war es schon auf 1.5V 
eingestellt, ich weiß nicht, was damit vorher gemacht wurde. Ich muss 
eigentlich nur einen Bitstrom aus einem Gerät auslesen, protokollieren 
und weitergeben. Das weiterverarbeitende Gerät kann aber nur mit 3.3V 
arbeiten.

Wie mir das aussieht, bin ich wohl doch schneller, wenn ich den Kasten, 
wo das Board drin ist aufschraube, die Bank manuel auf 3.3V ändere und 
dann das Ganze wieder zusammenbastel.

Trotzdem vielen Dank für die Hilfe, ich werde mich mal ein wenig in den 
Code vom I2C Controller einlesen, vielleicht komm ich damit noch ein 
wenig weiter.

von Christian R. (supachris)


Lesenswert?

Hm, das sind ja wieder tolle Aufgabenbeschreibungen. Also die 
Bank-Spannung an diesem Board kannst du niht manuell ändern. Dazu muss 
man das Digital-Poti einstellen. Wenn da ein *blaze drauf ist, ist 
sicherlich schon irgendwo eine I2C Funktion implementiert, das machts 
dann einfacher.

von Fritz J. (fritzjaeger)


Lesenswert?

Christian R. schrieb:
> Richtig. Ich häng mal den Simpel-I2C Core an, der in der FPGA
> Implementierung des Apple II verwendet wird, um den Sound-Controller
> beim Start einzustellen. Du könnte man simpel anpssen. Da werden auch
> bloß einmalig ein paar Register beschrieben...

Ist ein bißchen komplizierter als nötig.
Picoblaze odergar Microblaze ist IMHO auch zu viel des Guten.

Im wesentlichen braucht es ein schieberegister das seriell ca. 2x27 bit 
auf SDA rausschiebt (Address&rw&ACK&data&ACK&DATA&ACK) (siehe Philips 
I2C specification S. 13), dazu um eine viertel  periode versetzt SCL 
klappern lassen (S.9) . Dazu eine kleine Statemachine die die Start/Stop 
condition (SDA wechsel während SCL High) realisiert und abschliessend 
auf Tristate schaltet.


Idealerweise nimmst du für Xilinx ein paar vorinitialisierte SRL16 
Macros für ROM und schieben, dann sollteset du mit wenigen Slices (10 
-25? (grobe Schätzung)) auskommen.

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