Hallo, ich weiss das viele Ähnliche fragen dieser Art schon beantwortet
wurden, aber ein Forenbeitrag hilft mir machmal meine Probleme zu lösen.
ich versuche schon seit einiger Zeit den
Avalon OpenCores 10/100 Ethernet MAC:
http://www.niosforum.com/pages/project_details.php?p_id=115&t_id=18
auf meinen NIOS-II EPM Demo Board zu betreiben.
Der MAC auf deisem Board ist zum glück mit MII angebunden, aber ich
habe immer noch probleme ihn anzuklemmen:
1. Ich weiss nciht wozu der ausgang padOE gedacht ist (den gibt es im
Schaltplan
des Demo Board nicht.)- kann ich den einfach offen lassen?
2. MDIO ist ein Bidirektionaler pin, wie wurstel ich den an den
ip-Core(Md_pad_from_ocm und Md_pad_to_ocm).
Liebe Grüsse
Beim Kompilieren bekomme ich die Fehlermeldung:
Error: Cannot use value BYPASS of parameter CLOCK_ENABLE_INPUT_A with
device family Cyclone in altsyncram megafunction
Ich habe jetzt einfach mal die "Bypass" durch "Normal" ersetzt:
altsyncram_component.clock_enable_input_a = "NORMAL",
altsyncram_component.clock_enable_input_b = "NORMAL",
altsyncram_component.clock_enable_output_a = "NORMAL",
altsyncram_component.clock_enable_output_b = "NORMAL",
Ich behersche keine Verilog und weiss nciht was das für auswirkungen
haben kann.
Die Zeile
CLOCK0_component.address_reg_b = "CLOCK0",
hatte ich falsch gepostet, es muss
altsyncram_component.address_reg_b = "CLOCK0",
heissen.
hmm jetzt hänge ich an der nächsten stellt-
es geht um einen Treiber für den TDK 78Q2120C Phy um ihn mit dem
OpenCores MAC zubetreiben.... hat da jemand erfahrungen mit?
Laut dokumentation werden ja nur diese 4 Phys von dieser
eth_ocm_phy_init();
auf anhiep unterstütz:
1.The Intel LXT972A 10/100 Ethernet PHY.
2.The Marvell 88E1111 10/100/1000 Ethernet PHY (used on the StratixIIGX
Audio/Video development board).
3.The National Semiconductor DP83848C 10/100 PHY (used on the Cyclone
III embedded development kit).
4.The Vitesse 8641 10/100/1000 Ethernet PHY.
ok- ich versuche jetzt selbst einen treiber zu schreiben-
dabei ist mir aufgefallen das ich die register des Phy nicht
auslesen kann.
Diese werden doch über die diesen MDIO gelesen, der
eigendlich wie eine sPI schnittstelle funktioniert.
da der OpenCores MAC keinen Bidirektionalen MDIO hat,
sondern einen MDI und MDO wird wohl dieser MDOE nach dem ich
oben gefragt hatte, dafür
sein festzulegen wann geschrieben wird, und wann gelesen wir (????)
ich habs jetzt einfach mal mit VHDL so verdrahtet:
if (mOE = '0') then mio <= mO; else mI <= mio; end if;
> ich habs jetzt einfach mal mit VHDL so verdrahtet:> if (mOE = '0') then mio <= mO; else mI <= mio; end if;
das funktioniert so nicht, da der Ausgangstreiber nicht abgeschaltet
wird.
Mach es so, als concurrent statement:
oh-- danke das war mir nicht richtig klar..
es wurde zwar übersetzt, aber der wert den ich dann aus dem
register gelesen habe war immer 1 ... :-P
wenn ich ihn hochomig schalt wie du geraten hast bekomm ich aber
trotzdem einen festen wert (7FEF) für alle register... ?!??!
ich vermute ich hab da noch einen groben fehler....
ja genau- es muss eine 1 sein-
bekomme aber trotzdem nur FFFF aus dem register geliefert , da
er immer die selbe adresse liest....
mI <= mio;
mio <= mO when mOE = '1' else 'Z';
führt zu folgendem ergebniss-
das kann doch nicht ganz sein.... oder?
Hallo!
entschuldige die späte Rückmeldung- aber ich musste erst ein paar Sachen
austesten-
Ich bin fast ab verzweifeln.
Oben der Trace war falsch- wenn ich allerdings auf moE='1' reagiere
sieht das ergebnis- nicht besser aus (Anhang)
Das komische ist, das es hin und wieder funktioniert- ich hab schon das
Datenblatt von dem Phy rauf und runter gelesen, und alles mögliche
versucht...
Es geht mal, und mal liest er nur 0xFFFF aus dem Phy Register.
Ich hab sogar mal ein Oszi an den MIO angeschlossen, und da kommt
wirklich nichts raus,
genau wie im trace -- komisch ist nur, das ich zwischen takt 382 und 408
so ein komisches rauschen (bis 50 mVolt)auf dem MIO pin hab - wo er ja
eigentlich auf "hochohmig" geschaltet sein sollte...
ich denke mal es liegt am Phy? ich hab schon den resetausgang von dem
Phy auf den Ausgang geführt, und den Mac und den Phy gleichzeitig
Resetet.
Ich habe verschiedene Netzteile probiert... ich weiß nicht mehr was ich
noch testen soll...
Als ausgangstandart für MIO hab ich LVTTL 3,3 Volt ... könnte es damit
irgendwie zusammenhängen?
Im Phy Datenblatt steht CMOS....
Hallo!
jetzt hab ich die lösung gefunden --> eine kombination aus falschem
datenblatt
und meiner Dummheit.
Die haben den quarz für den 25 Mhz takt von dem Phy einfach waggelassen
(im datenblatt ist er aber eingezeichnet!)
wenn ich ihn mit ner PPL vom FPGA takte geht es dann ohne probleme....
...ich fragm ich nur warum es vorher auch manchmal funktioniert hat...
;o)
Das sieht schonmal ganz gut aus....
eth_ocm_phy_init(ÐCHIP)
meldet:
[eth_ocm_phy_init] Found THK 78Q2120C PHY.
[eth_ocm_phy_init] Waiting on PHY link...OK. x=5558, PHY STATUS=782d
[eth_ocm_phy_init] Full Duplex is 0
ich frag mich jetzt wie es weiter geht----
Bevor ich einen Stack darauf aufsetzte sollte ich da nicht
besser versuchen von hand ein packet zu verschicken und
es z.B mit etherReal zu emfangen.....
so- ich hatte das controllregister des TDK phy falsch beschrieben?
ich habe ihn jetzt auf halb Duplex und 100 Mbit/s gestellt- dann ist
zumindest dieser fehler weg- aber das ergebniss ist das selbe, es gibt
irgendwann einen pufferüberlauf: