CS8900A底层操作说明

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

CS8900A底层操作说明
CS8900A底层操作说明
——华中科技大学控制系叶存奎********************.04
1.CS8900A简介
CS8900A集成了构建一个完整的以太网电路所需的全部模拟和数字电路,是一种真正的单芯片、全双工以太网解决方案。

它的主要功能模块包括:直接ISA总线接口
802.3 MAC引擎
集成的缓冲寄存器
串行EEPROM接口
完整的模拟前端(包括10BASE-T和AUI)
2.CS8900A配置
正常运行时,CS8900A执行两种基本的功能:以太网数据包的发送和接收。

在使用这两种基本功能前,必须对CS8900A进行适当的配置。

CS8900A的配置工作在上电或者复位时进行,通过向其内部的配置和控制寄存器写入不同的参数来实现。

以下7种情况会引起CS8900A内部寄存器和电路的复位:
外部复位:RESET引脚拉高至少400ns
上电复位:上电时复位,直至Vcc达到约2.5V以上时跳出复位
掉电复位:供电电压下降到低于约2.5V时复位,直至重新恢复至约2.5V 以上时跳出复位
EEPROM复位:检测到EEPROM校验和错误时复位
软件复位:RESET位(Register 15,SelfCTL,Bit 6)置1时复位
硬件待机或挂起:进入或退出待机模式或挂起模式时复位
软件挂起:进入软件挂起模式时,部分寄存器和电路复位;退出该模式时,所有电路和寄存器复位
配置参数有两种方式写入CS8900A:一是利用主机通过ISA总线写入,二是从一个外部的EEPROM自动加载。

每次复位后,CS8900A 通过检测EEDataIn 引脚电平来判断是否存在外部EEPROM。

如果检测到该引脚呈高电平,表明存在外部EEPROM,CS8900A则自动加载存储在EEPROM里的配置数据至其内部寄存器中;如果检测到该引脚呈低电平,表明不存在外部EEPROM,CS8900A 则使用默认配置并结束复位过程。

注意存在外部EEPROM时,CS8900A会在转移配置数据至相应的寄存器后执行一次校验和计算来验证复位配置数据的有效性。

一旦发现数据无效,CS8900A将开始一个部分复位过程以恢复默认配置。

如果复位完成,INITD位(Register 16,SelfST,bit 7)会被置1。

因此通过检测该位是否为1来判断复位工作是否完成。

复位工作完成后,用户可以根据实际情况对有关寄存器进行配置,或是进行任何其它必要的操作,以完成初始化过程。

3.CS8900A基本操作
3.1预备知识:PacketPage存储器
PacketPage存储器是CS8900A内部集成的一个4KB RAM,它使得CS8900A 可以以一种独特和高效的方法访问内部寄存器和缓冲存储器。

PacketPage主要用于CS8900A的内部寄存器以及发送和接收帧的临时存储。

对于PacketPage的访问有两种方式:一种是通过内存空间(Memory Space)直接访问,对应的模式成为存储器模式(Memory
Mode);而另一种是通过I/O空间(I/O Space)间接访问,对应的模式称为I/O空间模式(I/O Mode)。

在大多数情况下,存储器模式的整体性能比I/O空间模式要好,因为对前者的操作比对后者的操作需要更少的周期。

I/O空间模式是CS8900A的默认配置模式,并且一直有效。

用户可访问的PacketPage区域分为以下6段:
PacektPage地址内容
0000h-0045h 总线接口寄存器(Bus Interface Registers)
0100h-013Fh 状态和控制寄存器(Status and Control Registers) 0140h-014Fh 启动发送寄存器(Initiate Transmit Registers)
0150h-015Dh 地址过滤寄存器(Address Filter Registers)
0400h 接收帧位置(Receive Frame Location)
0A00h 发送帧位置(Transmit Frame Location)
3.2存储器模式基本操作
要配置CS8900A为存储器模式,PacketPage必须映射到主机的一个4 KB的连续内存块。

该内存块必须以X000h地址为起始边界,同时PacketPage的基址也映射为X000h。

一旦选择了存储器模式,CS8900A的所有寄存器便可以直接访问。

只有当下列所有条件都符合时,才能进行存储器访问:
在ISA系统地址总线(SA0 - SA19)上的地址位于CS8900A(或引导PROM,暂不讨论)的存储器空间范围内;
输入引脚被拉低;
MEMR引脚或MEMW引脚中的任一个被拉低。

3.2.1存储器模式发送操作
在存储器模式下,发送帧的基本操作按以下步骤进行(使用中断):
1)主机通过向TxCMD寄存器(memory base + 0144h)写入发送命令(Transmit
Command)以及向TxLength寄存器(memory base + 0146h)写入发送帧长
度,以请求帧存储空间。

如果如果发送长度不正确,该命令将被忽略,
同时TxBidErr 位(Register 18, BusST, Bit 7)被置1。

2)主机读取BustST寄存器(Register 18,memory base + 0138h)。

如果该寄存器
的Rdy4TxNow位(Bit 8)为1,发送帧可以写入;否则,主机必须等待
CS8900A缓冲存储器变得可用。

如果Rdy4TxiE位(Register B,BufCFG, Bit
8)已置1,则当Rdy4Tx位(Register C, BufEvent, Bit 8)变为1时主机将有中
断产生。

3)一旦CS8900A准备好接收帧,主机(对memory base + 0A00h)执行存储器-
存储器重复转移指令(REP MOVS),将整个帧从主机存储器转移至CS8900A存储器。

如果不使用中断,主机可以通过查询CS8900A以检查是否有可用存储器空间用于帧发送。

3.2.2存储器模式接收操作
在存储器模式下,接收帧的基本操作按以下步骤进行(使用中断通知有效接收帧的存在):
1)CS8900A接收到一个帧,触发一个被使能的中断。

2)主机读取中断状态队列(Interrupt Status Queue,memory base + 0120h),得
知已接收到帧。

3)主机读取RxStatus (memory base + 0400h),以获取接收帧的状态。

4)主机读取RxLength (memory base + 0402h),以获取接收帧的长度。

5)主机(对memory base + 0404h)执行存储器-存储器重复转移指令(REP
MOVS),将整个帧从CS8900A存储器转移至主机存储器。

如果不使用中断,主机可以通过查询CS8900A以检查是否有接收帧到达。

3.3I/O空间模式基本操作
在I/O空间模式下,PacketPage是通过8个16位I/O端口来访问的,这些端口被映射到主机系统I/O空间。

上电时,I/O基址的默认值为300h。

通过从EEPROM加载配置,或进行系统设置,I/O基址可以修改为任何可用的XXXh。

下表给出了CS8900A的I/O模式映射。

地址类型说明
0000h 读/写接收/发送数据(端口0)
0002h 读/写接收/发送数据(端口1)
0004h 写发送命令(TxCMD,Transmit Command)
0006h 写发送长度(TxLength,Transmit Length)
0008h 读中断状态队列(Interrupt Status Queue)
000Ah 读/写 PacketPage指针(PacketPage Pointer)
000Ch 读/写 PacketPage数据(端口0)
000Eh 读/写 PacketPage数据(端口1)
3.3.1I/O空间模式访问内部寄存器操作
I/O空间模式下,要访问CS8900A任何内部寄存器,主机首先要设置PacketPage指针(PacketPage Pointer),即将目标寄存器的PacketPage地址写入PacketPage指针端口(I/O base + 000Ah)。

PacketPage指针的结构如图
所示。

指针的低12位(0-B位)提
供待访问的目标寄存器的内部
地址。

接下来的3位(C-E位)只能
读并且读出的结果总是011b,写
PacketPage指针端口时可以向
这3位写入任何值。

最高位(F位)
用以指示PacketPage指针是否
自动增加至下一个双字节(word)
的位置:该位为0时指针固定,
为1时指针自动移动。

在I/O空间模式下访问CS8900A的任一内部寄存器,主机首先要向PacketPage 指针端口写入目标寄存器的PacketPage地址,这样目标寄存器的内容就会被映射到PacketPage数据端口(I/O base + 000Ch),从而可以对其进行读写操作。

如果希望连续访问一个寄存器序列块,则只需将要访问的第一个寄存器地址的最高有效位置1。

这样每次访问后PacketPage指针会自动移动至下一个双字节(word)的位置,无需重新对其设置。

3.3.2I/O空间模式发送操作
I/O空间模式下发送帧的基本操作按以下步骤进行(使用中断):
1)主机通过向TxCMD端口(I/O base + 0004h)写入发送命令以及向TxLength
端口(I/O base + 0006h)写入发送帧长度,以请求帧存储空间。

2)主机读取BustST寄存器(Register 18),检测Rdy4TxNow位(Bit 8)是否为1。

要读取BusST寄存器,主机首先要向PacketPage指针端口(I/O base +
000Ah)写入0138h以设置PacketPage指针指向正确的位置,然后才能从
PacketPage数据端口(I/O base + 000Ch)读得BusST寄存器内容。

如果
Rdy4TxNow位为1发送帧可以写入;否则,主机必须等待CS8900A缓冲
存储器变得可用。

如果Rdy4TxiE位(Register B,BufCFG, Bit 8)已置1,则
当Rdy4Tx位(Register C, BufEvent, Bit 8)变为1时主机将有中断产生。

如果
TxBidErr位为1,表明发送帧长度无效。

3)一旦CS8900A准备好接收帧,主机对接收/发送数据端口(I/O base + 0000h)
执行重复写指令(REP OUT),将整个帧从主机存储器转移至CS8900A存
储器。

如果不使用中断,主机可以通过查询CS8900A以检查是否有可用存储器空间用于帧发送。

3.3.3I/O空间模式接收操作
I/O模式下接收帧的基本操作按以下步骤进行(使用中断通知存在有效接收帧):
1)CS8900A接收到一个帧,触发一个被使能的中断。

2)主机读取中断状态队列端口(I/O base + 0008h),得知已接收到帧。

3)主机对接收/发送数据端口(I/O base + 0000h)执行重复读指令(REP IN),
将整个帧从CS8900A存储器转移至主机存储器。

注意在读取到帧数据之
前,首先获取的是RxStatus寄存器(PacketPage base + 0400h)和RxLength
寄存器(PacketPage base +0402h)的内容。

如果不使用中断,主机可以通过查询CS8900A以检查是否有接收帧到达。

4.附录:PacketPage地址映射
PacketPage
字节数读写类型说明地址范围
总线接口寄存器(Bus Interface Registers)
0000h-0003h 4 Read-only Product Identification Code
0004h-001Fh 28 - Reserved
Address
Base
I/O
0020h-0021h 2 Read/Write
Interrupt
Number(0,1,2,3) 0022h-0023h 2 Read/Write
0024h-0025h 2 Read/Write DMA Channel Number(0,1,2,3) 0026h-0027h 2 Read-only DMA Start of Frame
0028h-0029h 2 Read-only DMA Frame Count(12 Bits)
Count
002Ah-002Bh 2 Read-only RxDMA
Byte
002Ch-002Fh 4 Read/Write Memory Base Address Register(20 Bit)
Base
Address
Boot
0030h-0033h 4 Read/Write
PROM
0034h-0037h 4 Read/Write Boot PROM Address Mask
0038h-003Fh 8 - Reserved
EEPROM
Comand
0040h-0041h 2 Read/Write
Data
EEPROM
0042h-0043h 2 Read/Write
0044h-004Fh 12 - Reserved
0050h-0051h 2 Read-only Received Frame Byte Counter
0052h-00FFh 174 - Reserved
状态和控制寄存器(Status and Control Registers) [见注解3]
0100h-011Fh 32 Read/Write Configuration & Control Registers
(2 bytes per register)
0120h-013Fh 32 Read-only Status &Event Registers
(2 bytes per registers)
0140h-0143h 4 - Reserved
启动发送寄存器(Initiate Transmit Registers)
command)
TxCMD(transmit
0144h-0145h 2
Write-only
length)
TxLength(transmit
Write-only
0146h-0147h 2
0148h-014Fh 8 Reserved
地址过滤寄存器(Address Filter Registers)
0150h-0157h 8
Logical Address Filter(hash table)
Read/Write
Address
Individual
0158h-015Dh 6
Read/Write
015Eh-03FFh 674 - Reserved
帧位置(Frame Location)
status)
RxStatus(receive
Read-only
0400h-0401h 2
0402h-0403h 2 Read-only RxLength(receive length, in bytes) 0404h - Read-only Receive Frame Location
0A00h - Write-only Transmit Frame Location
注解:
1.所有的寄存器都只能以双字节(word)的形式访问。

2.如果向保留位置执行读操作将得到不确定的数据,如果向保留位置或保留位写入数
据可能会导致CS8900A不可预料的操作。

3.状态和控制寄存器分为两组:配置/控制寄存器(Configuration/Control Registors)和状
态/事件寄存器(Status/Event Registers)。

相关文档
最新文档