前些天和晓亮师兄一起调试Nios II系统,目标是通过Nios II内置的TSE MAC控制Micrel公司的以太网交换机芯片KSZ8893。由于KSZ8893模式,所以可以通过在TSE的源代码中添加对应KSZ8893的相关驱动来完成对其的控制。
通过参考altera公司提供的TSE MAC IP的手册得知,只需要修改altera_avalon_tse.h以及altera_avalon_tse.c两个文件即可。具体修改位置如图1、2所示。只需要在代码下方添加相应结构即可。
鉴于调试过程中遇到过的问题,在这里有几点提示:一、在altera_avalon_tse.h中枚举结构中的代码在有些PHY芯片中需要自己通过PHYID HIGH和PHYID LOW共32位换算得到,其中高22位为OUI,接下来6位为MODEL,再接下来4位为REV。二、某些PHY芯片可能有多种配置寄存器的方式,如MIIM、I2C及SPI等,它们配置寄存器的配置地址空间地址映射可能不同,所以在修改altera_avalon_tse.c结构体中的相关参数时需要注意。
下面说一下在Quartus II 11.0中使用DP83848C的一些注意事项。附图所截图是Quaruts II 11.0中的代码,通过与之前版本(如Quartus II 8.0)中DP83848C的结构体进行对比发现在11.0的版本中忽略了状态寄存器地址等信息,而是添加了一个特殊状态寄存器地址的指针,如图3所示,通过MDIO来读取状态寄存器的内容,获得speed及duplex相关信息,从而判断link的状态。所以在Quartus II 11.0中若想使用DP83848进行设计,必须在TSE中勾选MDIO选项,否则系统不能正常工作。
图1
图2
图3
文章评论(0条评论)
登录后参与讨论