P
plasmaphase
Guest
Jeg forsøger en fuld VHDL baseret driver til lan91c111 del.Jeg
har fået temmelig langt og har skrevet en state maskine til at læse / skrive registre.Som jeg fremskridt gennem initialisering kravene i den del, jeg indså, at jeg er nødt til at "efterligne" SPI gennem et register (Bank 3, Offset
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Kølig" border="0" />
.Jeg har fundet driveren til denne del skrevet i C-kode, og fandt de læse og skrive PHY register funktioner.Jeg skrev VHDL baseret på denne kode, men jeg er ikke i stand til at læse registre (og ikke rigtig ved, hvis jeg skriver til dem på grund af min manglende evne til at læse).C-kode føreren grundlæggende bygger en array med de relevante MDO og MDOE bits, så ure dem ud i slutningen af funktion.Dette ur proces er vist nedenfor:
Code:
/ / Clock alle 64 cyklusser
for (i = 0; i <sizeof (bits) i)
(
/ / Clock Lav - outputdata
e-> bank_3.np_mgmt = mii_reg | bits ;
sft_loop_delay (1);/ / Clock Hi - inputdata
e-> bank_3.np_mgmt = mii_reg | bits | MII_MCLK;
sft_loop_delay (1);
bits | = e-> bank_3.np_mgmt & MII_MDI;
)
har fået temmelig langt og har skrevet en state maskine til at læse / skrive registre.Som jeg fremskridt gennem initialisering kravene i den del, jeg indså, at jeg er nødt til at "efterligne" SPI gennem et register (Bank 3, Offset
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Kølig" border="0" />
.Jeg har fundet driveren til denne del skrevet i C-kode, og fandt de læse og skrive PHY register funktioner.Jeg skrev VHDL baseret på denne kode, men jeg er ikke i stand til at læse registre (og ikke rigtig ved, hvis jeg skriver til dem på grund af min manglende evne til at læse).C-kode føreren grundlæggende bygger en array med de relevante MDO og MDOE bits, så ure dem ud i slutningen af funktion.Dette ur proces er vist nedenfor:
Code:
/ / Clock alle 64 cyklusser
for (i = 0; i <sizeof (bits) i)
(
/ / Clock Lav - outputdata
e-> bank_3.np_mgmt = mii_reg | bits ;
sft_loop_delay (1);/ / Clock Hi - inputdata
e-> bank_3.np_mgmt = mii_reg | bits | MII_MCLK;
sft_loop_delay (1);
bits | = e-> bank_3.np_mgmt & MII_MDI;
)