Ich bin am Entwickeln eines Cyclone II Boards (incl. Mikrocontroller).
Nun bin ich mir am Überlegen, wie ich die Configuration-Schnittstelle am
besten implementiere. Da ich an meinem Microcontroller etwas unter
Pinmangel leide (die meisten Pins sind schon anderweitig vergeben), habe
ich mir überlegt, ob ich die FPGA-Config-Pins so beschalten kann:
Es gibt am MC noch eine nicht belegte Portleitung. Die verbinde ich mit
nConfig -> wenn der FPGA configuriert werden soll kann die Portleitung
auf 0 gezogen werden.
Die Pins nStatus, CONF_DONE, DCLK und DATA0 verbinde ich einfach mit
schon belegten Leitungen. Dann muss ich halt gleich nach dem Reset dafür
sorgen, dass der FPGA configuriert wird. Danach darf man doch die Pegel
an den Leitungen beliebig verändern, oder? Im Manual steht zwar, dass:
- DATA0 nach der Configuration normalerweise auf High gezogen wird
- DCLK entweder auf High oder Low verbleiben sollte, ein umschalten aber
nichts bewirkt.
Nun, was meint ihr hierzu? Kann man das so machen oder wäre es ggf.
besser, wenn ich eigene Portleitungen für diese Config-Pins hätte?
Kann man so machen. Man muss nur aufpassen, was nStatus, CONF_DONE für
Ausgänge sind. Wenn Open Drain, dann sollte es passen. Wenn Push_pull,
einen Längswiderstand einfügen.
MfG
Falk
@Falk:
Heeey, war ja klar dass du wieder mal der erste bist :D
danke für die Info. nStatus und CONF_DONE sind open-drain. In diesem
Fall sieht das gut aus... :)
Falk Brunner wrote:
> Kann man so machen. Man muss nur aufpassen, was nStatus, CONF_DONE für> Ausgänge sind. Wenn Open Drain, dann sollte es passen. Wenn Push_pull,> einen Längswiderstand einfügen.>> MfG> Falk
Das sehe ich aber anders! Der Zustand von DCLK und DATA0 darf nach der
Konfiguration in PS Modus NICHT geändert werden. Zitat:
"To ensure DCLK and DATA0 are not left floating at the end of
configuration, the MAX II (Master) device must drive them either high or
low,which ever is convenient on your PCB."
Seite 13-25 Cyclone II Handbuch.
Man kann aber Konfigurationsinterface mit nCS deaktivieren. Dann
reagiert der FPGA nicht auf die Transitionen dieser Signale.
Gruß,
fpga-dev
Hmm.
http://www.altera.com/literature/hb/cyc2/cyc2_cii51013.pdf
Seite 64 pp.
nStatus: "Driving nSTATUS low after configuration and initialization
does not affect the configured device."
CONF_DONE: "Driving CONF_DONE low after configuration and initialization
does not affect the configured device."
DCLK: "Toggling this pin after configuration does not affect the
configured device."
DATA0: Keine explizite Aussage, ist aber ein reiner Eingang.
Ergo. Ausser an nCONFIG können alle Siganle klappern wie sie wollen.
MFG
Falk
Falk Brunner wrote:
> Hmm.>> http://www.altera.com/literature/hb/cyc2/cyc2_cii51013.pdf>> Seite 64 pp.>> nStatus: "Driving nSTATUS low after configuration and initialization> does not affect the configured device.">> CONF_DONE: "Driving CONF_DONE low after configuration and initialization> does not affect the configured device.">> DCLK: "Toggling this pin after configuration does not affect the> configured device.">> DATA0: Keine explizite Aussage, ist aber ein reiner Eingang.>> Ergo. Ausser an nCONFIG können alle Siganle klappern wie sie wollen.>> MFG> Falk
Nix ergo!
Die Passage von DCLK bezieht sich auf die Konfiguration in AS-Modus! Im
PS-Modus darf man die DATA0 und DCLK-Signale nicht ändern. Heisst ja
auch einen Satz vorher an der von Dir zitierten Stelle:
"If your design uses a control host, drive DCLK either high or low."
Das stimmt überein mit dem was im vorherigen Posting zitiert habe.
Ansonsten gibt's noch das schöne Bildchen 13-12 und da heißt es unter
(4)
"In user mode, drive DCLK either high or low when using the PS
configuration scheme, whichever is more convenient."
und unter (5)
"Do not leave the DATA pin floating after configuration. Drive it high
or low, whichever is more convenient."
Gruß,
fpga-dev
@ Valerij Matrose (fpga-dev)
>Nix ergo!
Bleib mal locker, Tawarisch.
>Die Passage von DCLK bezieht sich auf die Konfiguration in AS-Modus! Im>PS-Modus darf man die DATA0 und DCLK-Signale nicht ändern. Heisst ja
Das interpretierst du falsch.
>"Do not leave the DATA pin floating after configuration. Drive it high>or low, whichever is more convenient."
Hier nur die Rede davon, dass die Pins nicht floaten sollen, wie alle
digitalen Eingänge. Trotzdem dürfen sie klappern/togglen. Steht
explizit in der Tabelle.
MFg
Falk
@ Falk:
>> Bleib mal locker, Tawarisch.>
Vorschlag abjelehnt, Jenosse!
Bleiben wir sachlich: Meine Suche in der Altera Knowledge Data Base nach
"DCLK" hat ein paar Antworten ans Tageslicht befördert, die Dir recht
geben. Damit wäre der Fall abgeschlossen.
Gruß,
fpga-dev
Tobias Plüss wrote:
> @Valerij:> Ja nu was denn? Dürfen alle Pins toggeln, wie sie wollen, ausser halt> eben nCONFIG? Ich verstehe deine Aussage grad nicht.>> Grüsse> Tobias
Ja, so ist es. Nach der Konfiguration darf man die Pegel an den
Konfigurationseingängen ändern. Ausnahmen : nCONFIG.
Gruß,
Valerij
Ah gut, danke.
Noch eine andere Frage:
Ich habe grade gemerkt, dass das JTAG-Interface des FPGAs noch einen Pin
weniger benötigt. Was würdest du preferieren: Konfiguration des FPGAs
über PS oder über JTAG? Die JTAG-Pins könnte man dann natürlich
immernoch auf einen separaten Stecker führen, damit man mit dem
ByteBlaster noch drankommt.
@ Tobias Plüss (hubertus)
>Ich habe grade gemerkt, dass das JTAG-Interface des FPGAs noch einen Pin>weniger benötigt. Was würdest du preferieren: Konfiguration des FPGAs>über PS oder über JTAG?
PS. JTAG ist vom Protokoll wesentlich aufwändiger.
> Die JTAG-Pins könnte man dann natürlich>immernoch auf einen separaten Stecker führen, damit man mit dem>ByteBlaster noch drankommt.
Tu das.
Low Cost FPGA Konfiguration
Mfg
Falk
Wäre es eigentlich theoretisch auch geschickt, die nCONFIG-Leitung mit
RESET des MCs zu verbinden? Der MC, den ich verwende, hat einen
bidirektionalen RESET-Pin (OC). Wird der Pin extern auf Low gezogen,
wird resetiert (standard), mittels speziellem Assembler-Befehl (RESET
halt) kann der Pin vom MC selber auf Low gezogen werden. RESET ist ja im
normalfall immer auf high. Beim POR ist es low, der FPGA wird dann also
auch quasi zurückgesetzt und kann nach seinem eigenen POR (100 ms)
configuriert werden. Und wenn ich neue Config-Daten laden will, kann ich
den RESET-Befehl benutzen, der den RESET-Pin für 512 Taktzyklen (347 us)
auf LOW zieht.
Macht das Sinn?
hey, @Falk:
kurze Frage.
Darf ich während der Configuration auch mal nCE auf High haben? Oder
muss nCE während der ganzen Prozedur 0 sein?
Ich möchte nämlich die Pins vom Microcontroller noch für eine andere
Anwendung einsetzen, sodass ich zwischendurch den FPGA 'deaktivieren'
sollte, damit der nicht fälschlicherweise Daten einlies, die gar nicht
für ihn bestimmt gewesen wären.