这里提醒一下,如果你的想上osii操作系统的话,timer是必须要加的,而且必须要给timer分配中断,不然会出现下面这样的错误:
DescriptionResourcePathLocationType make: *** [hello_osii.elf] Error 1hello_osii C/C++ Problem
解决的办法就是给timer分配一个中断。说完了IP核的,再来说说这个MAC芯片88E1111和生成的软核系统的连线。
我把MAC芯片配置成RGMII模式;
MAC芯片和软核的连线框图:这个图在官方手册ug_ethernet.pdf上
时钟问题:由图可知,rx_clk是由mac芯片提供,但是gtx_clk和tx_clk需要分别提供125mhz。
这个gtx_clk比较特殊,88E1111手册上有关于rgmii模式下的gtx_clk的描述:
翻译:在RGMII模式下,TXD[3:0]用作TD[3:0]; TXD[3:0]工作在双数据速率下,GTX_CLK高电平采集bit[3:0]
低电平采集bit[7:4],TXD[7:4]位被忽略。
换句话说发送的时候时钟的高低电平都会有数据传输,那么这个GTX_CLK就需要被提供双数据速率的时钟。
那这种双速率的时钟怎么提供呢?
添加叫ATLDDIO OUT的ip核。
在手册ug_altddio.pdf上文章标题就是Double Data Rate I/O (ALTDDIO_IN, ALTDDIO_OUT,
and ALTDDIO_BIDIR) IP Cores User Guide
即双速率接口。
The ALTDDIO_OUT IP core transmits data on both edges of the reference clock;手册上给它的定义。
ALTDDIO ip核可以提供双速率数据的输出时钟。
关于这个核接口更详细的解释自己去看手册。
PHY Management (MDIO)连接问题:
ug_ethernet.pdf手册上有解释什么是MDIO,如果想访问外部的PHY部件并连接MAC功能就要在配置三速以太网的时候选中这选项,当不选中时IP核就不会包括MDIO的接口逻辑或信号。这个时候你需要额外的添加这个MDIO的核。
有一点应该注意,MDIO的频率<=2.5MHZ,
在配置三速以太网时这个选项是默认等于40,系统时钟100MHZ,Host clock divisor=40,主机时钟分频40,就是100/40=2.5mhz,刚好不超过2.5mhz,这是这个选项默认40的原因。
关于MDIO的连接:
这就要用到一个ip核叫做:LPM_bustri
这个核可以创建单向和双向的总线控制器。可以去看手册《LPM quick reference guide》去看具体的描述。
LPM_WIDTH设置为1,比照着图连线就可以了。
复位问题:
复位有:nios软核复位,mac复位,cfi-flash的复位。
我记不清是在88e1111还是在三速以太网的手册上有说过,mac复位不能立即复位,要等nios系统复位之后再复位,复位信号要持续一小段时间,目的是让mac准确复位。
所以你的*.bdf文件中还要添加一个复位延迟的模块,这个模块是由*.v文件生成的,复位延迟代码自己写,也可以联系我跟我要。
来个全面直观的感受:
软核部分就先说到这,下面是eclipse工程web server(rgmii)模板的修改。