用Ax88796实现SA1110的以太网接口
摘要:讨论嵌入式微处理器SA1110与以太网控制器Ax88796在实际应用中的硬件连接问题;给出软件设计方面的一些注意事项,为SA1110的网络应用提供一种参考。
关键词:嵌入式SA1110Ax88796以太网CPUMII
Intel公司的StrongARMSA1110是一款主要面向嵌入式应用的高性能32位微处理器,目前已经被广泛应用在PDA等手持设备上。SA1110最高主频可达206MHz,具有内存管理单元(MMU)和大容量的指令/数据高速缓存(16KB/8KB),兼容SDRAM、SMROM等多种存储设备,并带有LCD和PCMCIA控制器。
1Ax88796简介
Ax88796是台湾Asix公司推出的NE2000兼容快速以太网控制器。其内部集成有10/100Mb/s自适应的物理层收发器和8K×16位的SRAM,支持MCS-51系列、80186系列以及MC68K系列等多种CPU总线类型。
Ax88796执行基于IEEE802.3/IEEE802.3u局域网标准的10Mb/s和100Mb/s以太网控制功能,并提供IEEE802.3u兼容的媒质无关接口MII(MediaIndependentInterface),用以支持在其它媒质上的应用。此外,Ax88796还提供可选用的标准打印接口,可用于连接打印设备或用作通用I/O端口。其结构框图如图1所示。
Ax88796的地址总线SA[9:0]与数据总线SD[15:0]分别与CPU的地址/数据总线相连。CPU通过I/O读写NE2000寄存器来控制Ax88796的工作状态,通过远程DMAFIFOs与Ax88796的内部缓存SRAM进行数据交换。SRAM与MAC核之间进行LocalDMA将数据发送至MAC层,再经由内部的PHY层发送至RJ45接口,或者经过MII接口送至外部的物理层芯片。
SEEPROM接口可以用来连接串行EEPROM。EEPROM可用于存储MAC地址,供Ax88796每次初始化时读取。
2硬件接口电路
Ax88796的CPU[1:0]两个输入引脚用来设置与不同CPU总线连接时Ax88796的工作模式。在Asix公司官方提供的资料中,Ax88796在与SA1110连接时,是将这两个引脚都拉低,也即设为ISA总线模式。但实际应用中发现这样设置,在对Ax88796奇地址寄存器进行8位数据宽度的访问时存在问题:无论写入何值,读出值总为00H(由于Ax88796是NE2000系列的以太网控制器,其MAC层的控制寄存器都采用8位数据宽度,因此存放地址有奇偶之分;而CPU在对Ax88796的控制中,需要对其寄存器进行8位数据宽度的读写)。
最初的怀疑是,对Ax88796的奇地址寄存器无法正确写入数据。但用示波器抓取数据总线上的信号,发现SA1110已经正确送出数据;并且当对Ax88796的奇地址寄存器进行读操作时,Ax88796在数据总线D[7:0]上送出的数据正是此前SA1110向其奇地址寄存器写入的数据。也就是说,数据已经被正确写入了Ax88796的奇地址寄存器中,但SA1110从中读取数据时出现了问题。
根据Ax88796资料中的相关说明,在ISA总线模式下,对其NE2000寄存器进行8位数据宽度操作时,高8位数据线D[15:8]是被内部拉低的。因此,数据都是在数据总线D[7:0]上进行传送的,而Ax88796由地址线A0上信号电平的高低来判断所访问地址的奇偶,如表1所列。
表1Ax88796在ISA总线模式下的读写操作
(a)ISA总线模式下的读操作
操作模式CSBHEA0IORDIOWRSD[15:8]SD[7:0]空闲模式HXXXX高阻高阻字节访问L
LH
HL
HL
LH
H无效
无效偶字节数据
奇字节数据双字节访问LLLLH奇字节数据偶字节数据
(b)ISA总线模式下的写操作
操作模式CSBHEA0IORDIOWRSD[15:8]SD[7:0]空闲模式HXXXXXX字节访问L
LH
HL
HH
HL
LX
X偶字节数据
奇字节数据双字节访问LLLHL奇字节数据偶字节数据
H-高电平,L-低电平,X-不确定
SA1110最大支持32位数据总线,它在进行不同宽度的数据读写 《用Ax88796实现SA1110的以太网接口》
本文链接地址:http://www.oyaya.net/fanwen/view/165746.html
关键词:嵌入式SA1110Ax88796以太网CPUMII
Intel公司的StrongARMSA1110是一款主要面向嵌入式应用的高性能32位微处理器,目前已经被广泛应用在PDA等手持设备上。SA1110最高主频可达206MHz,具有内存管理单元(MMU)和大容量的指令/数据高速缓存(16KB/8KB),兼容SDRAM、SMROM等多种存储设备,并带有LCD和PCMCIA控制器。
1Ax88796简介
Ax88796是台湾Asix公司推出的NE2000兼容快速以太网控制器。其内部集成有10/100Mb/s自适应的物理层收发器和8K×16位的SRAM,支持MCS-51系列、80186系列以及MC68K系列等多种CPU总线类型。
Ax88796执行基于IEEE802.3/IEEE802.3u局域网标准的10Mb/s和100Mb/s以太网控制功能,并提供IEEE802.3u兼容的媒质无关接口MII(MediaIndependentInterface),用以支持在其它媒质上的应用。此外,Ax88796还提供可选用的标准打印接口,可用于连接打印设备或用作通用I/O端口。其结构框图如图1所示。
Ax88796的地址总线SA[9:0]与数据总线SD[15:0]分别与CPU的地址/数据总线相连。CPU通过I/O读写NE2000寄存器来控制Ax88796的工作状态,通过远程DMAFIFOs与Ax88796的内部缓存SRAM进行数据交换。SRAM与MAC核之间进行LocalDMA将数据发送至MAC层,再经由内部的PHY层发送至RJ45接口,或者经过MII接口送至外部的物理层芯片。
SEEPROM接口可以用来连接串行EEPROM。EEPROM可用于存储MAC地址,供Ax88796每次初始化时读取。
2硬件接口电路
Ax88796的CPU[1:0]两个输入引脚用来设置与不同CPU总线连接时Ax88796的工作模式。在Asix公司官方提供的资料中,Ax88796在与SA1110连接时,是将这两个引脚都拉低,也即设为ISA总线模式。但实际应用中发现这样设置,在对Ax88796奇地址寄存器进行8位数据宽度的访问时存在问题:无论写入何值,读出值总为00H(由于Ax88796是NE2000系列的以太网控制器,其MAC层的控制寄存器都采用8位数据宽度,因此存放地址有奇偶之分;而CPU在对Ax88796的控制中,需要对其寄存器进行8位数据宽度的读写)。
最初的怀疑是,对Ax88796的奇地址寄存器无法正确写入数据。但用示波器抓取数据总线上的信号,发现SA1110已经正确送出数据;并且当对Ax88796的奇地址寄存器进行读操作时,Ax88796在数据总线D[7:0]上送出的数据正是此前SA1110向其奇地址寄存器写入的数据。也就是说,数据已经被正确写入了Ax88796的奇地址寄存器中,但SA1110从中读取数据时出现了问题。
根据Ax88796资料中的相关说明,在ISA总线模式下,对其NE2000寄存器进行8位数据宽度操作时,高8位数据线D[15:8]是被内部拉低的。因此,数据都是在数据总线D[7:0]上进行传送的,而Ax88796由地址线A0上信号电平的高低来判断所访问地址的奇偶,如表1所列。
表1Ax88796在ISA总线模式下的读写操作
(a)ISA总线模式下的读操作
操作模式CSBHEA0IORDIOWRSD[15:8]SD[7:0]空闲模式HXXXX高阻高阻字节访问L
LH
HL
HL
LH
H无效
无效偶字节数据
奇字节数据双字节访问LLLLH奇字节数据偶字节数据
(b)ISA总线模式下的写操作
操作模式CSBHEA0IORDIOWRSD[15:8]SD[7:0]空闲模式HXXXXXX字节访问L
LH
HL
HH
HL
LX
X偶字节数据
奇字节数据双字节访问LLLHL奇字节数据偶字节数据
H-高电平,L-低电平,X-不确定
SA1110最大支持32位数据总线,它在进行不同宽度的数据读写 《用Ax88796实现SA1110的以太网接口》