微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > DM9000A原理及其与基带信号处理平台结合应用

DM9000A原理及其与基带信号处理平台结合应用

时间:06-19 来源:互联网 点击:
3.2.2 数据发送模块

DM9000A的发送缓冲区可同时存储两帧数据,按照先后顺序命名为帧I和帧II,DM9000A上电初始化后,发送缓存区的起始地址是00H,当前数据帧编号为帧I。两帧数据的状态控制字分别记录在DM9000A的状态寄存器03H和04H中。发送过程如下:

首先,FPGA利用写操作寄存器MWCMD(REG_F8)向DM9000A的发送缓存区中写入发送数据帧,写数据帧时需要先写入6字节的目的MAC地址,再写入6字节的源MAC地址,最后写入发送数据。

随后,FPGA利用写操作寄存器MWCMD(REG_F8)将数据帧长度写入寄存器FCH和FDH,数据长度为16位,将高8位写入寄存器FCH,低8位写入寄存器FDH。

最后,FPGA将发送控制寄存器TCR(REG_02)的bit[1]置为高电平,向DM9000A发出发送数据指令。DM9000A自动进行一些处理才将数据发送至以太网,包括:插入报头和帧起始分隔符;插入来自上层协议的数据,如果数据量小于64字节,则自动补齐64字节;根据目标地址、源地址、长度/类型和数据产生CRC校验序列,并插入校验序列位。这些处理都无需FPGA干预。处理完毕后,DM9000A即开始发送帧I。在帧I发送的同时,帧II的数据即可写入发送缓存区。在帧I发送完后,将帧II的数据长度写入寄存器FCH和FDH,最后将发送控制寄存器NSR(REG_01)的bit[1]置为高电平,即可开始帧II的发送。依此类推,下面发送的帧将会继续编号为帧I,帧II,帧I,帧II……按照同样的方式发送。

如果FPGA将中断屏蔽寄存器IMR(REG_FF)的bit[1]置为高电平,那么发送完毕后,DM9000A将会产生一个指示发送完成的中断信号。在发送过程中,FPGA可以查询寄存器标志位寄存器NSR(REG_01)中的TX1END bit[2]或者TX2END bit[3]得到数据帧的发送状态。

发送流程如图4所示。寄存器ISR中的PTS标志位是发送中断标志位,当一帧数据发送完毕,PTS=0,FPGA检测到该标志后,应清除标志位以便发送新的数据帧。这里需要注意的是,向FC、FD所写的帧长度应该是包含目的MAC地址段、源MAC地址段和有效数据的总长度。


3.2.3 接收模块

DM9000A中的接收缓存区是一个环形结构,初始化后的起始地址为0C00H,每帧数据都有4字节长的首部,然后是有效数据和CRC校验序列。首部4字节依次是01H、状态、长度低字节和长度高字节,帧结构如图5所示。


首部4字节含义如下:

第一个字节用于检测接收缓存区中是否有数据。如果这个字节是01 H,表明接收到了数据;如果为00H,则说明没有数据。但是如果第一个字节既不是01H,也不是00H,DM9000A就必须作一次软复位来从这种异常状态中恢复。
第二个字节存储以太网帧状态,由此可判断所接收帧是否正确。
第三和第四字节存储以太网帧长度。后续的字节就是有效数据。

接收过程如下:

查看中断状态寄存器。如果接收到新数据,寄存器ISR的PRS位将被置为0;
如果检测到PRS=0,清除PRS,FPGA开始读取接收缓存区数据。如果第一个字节是01H,则说明有数据;如果是00H,则说明无数据,需要进行复位;
根据获取的长度信息,判断是否读完一帧。如果读完,接着读下一帧,直到遇到首字节是00H的帧,说明接收数据已读完。FPGA可以重新查看中断状态寄存器,等待新的有效数据帧。接收流程如图6所示。


4 结束语

本文对以太网控制器DM9000A的原理和功能进行介绍,并结合自行开发的SDR接收机平台。基于FPGA设计实现了100 M以太网接口。其设计思路新颖,硬件连接简单。整体系统具有功耗低、体积小、运行稳定可靠等优点。SDR平台的开发融入网络设计理念,在应用中有广泛的前景,大大拓宽了SDR的功能。扩展了SDR的应用领域。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top