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? :)
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.
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....
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.
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.
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?
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ß
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...
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.