[导读]本文为实现高速数据的实时远程传输处理,提出了采用FPGA直接控制DM9000A进行以太网数据收发的设计思路,实现了一种低成本、低功耗和高速率的网络传输功能,最高传输速率可达100Mbps。
DM9000A简介
本文为实现高速数据的实时远程传输处理,提出了采用FPGA直接控制DM9000A进行以太网数据收发的设计思路,实现了一种低成本、低功耗和高速率的网络传输功能,最高传输速率可达100Mbps。
DM9000A简介
主要特点
DM9000A实现以太网媒体介质访问层(MAC)和物理层(PHY)的功能,包括MAC数据帧的组装/拆分与收发、地址识别、CRC编码/校验、MLT-3编码器、接收噪声抑制、输出脉冲成形、超时重传、链路完整性测试、信号极性检测与纠正等。
工作原理
DM9000A可以和微处理器以8位或16位的总线方式连接,并可根据需要以单工或全双工等模式运行。在系统上电时,处理器通过总线配置DM9000A内的网络控制寄存器(NCR)、中断寄存器(ISR)等,以完成DM9000A的初始化。随后,DM9000A进人数据收发等待状态。
当处理器要向以太网发送数据帧时,先将数据打包成UDP或IP数据包,并通过8位或16位总线逐字节发送到DM9000A的数据发送缓存中,然后将数据长度等信息填充到DM9000A的相应寄存器内,随后发送使能命令,DM9000A将缓存的数据和数据帧信息进行MAC组帧,并发送出去。
当DM9000A接收到外部网络送来的以太网数据时,首先检测数据帧的合法性,如果帧头标志有误或存在CRC校验错误,则将该帧数据丢弃,否则将数据帧缓存到内部RAM,并通过中断标志位通知处理器,处理器收到中断后将DM9000A接收RAM的数据读出进行处理。
DM9000A自动检测网络连接情况,根据网速设定内部的数据收发速率是10Mbps或100Mbps。同时,DM9000A还能根据RJ45接口是采用对等还是交叉连接方式而改变数据收发引脚的方向,因此,无论外部网线采用对等还是交叉方式,系统均能正常通信。
基于FPGA和DM9000A的网络接口设计与实现
下面给出DM9000A与FPGA的硬件设计和软件配置方法。FPGA启动以太网发送程序,将解调数据发送到DM9000A,完成数据发送过程。在接收方向,网络工作站把控制指令按照一定的帧格式组帧发送到以太网,DM9000A接收到发给自己的以太网帧并通知FPGA启动以太网接收程序,FPGA将相应的数据从DM9000A的接收FIFO读出。
与FPGA的数据接口和控制接口
DM9000A的外部总线符合ISA标准。可通过ISA总线直接与FPGA无缝连接。其硬件连接原理如图1所示。
|
初始化模块
DM9000A正常工作需要在上电后对内部寄存器进行初始化,该过程通过FPGA对DM9000A外部控制总线和数据总线的读写操作完成。具体流程如下所示:
>激活PHY
设置GPR(REG_1F)CEPIO0bit[0]=0;
复位后,DM9000A恢复默认的休眠状态,以降低功耗,因此需要首先唤醒PHY。
>进行两次软复位,步骤如下:
设置NCR(REG_00)bit[2:0]=011,至少保持20μs;
清除NCR(REG_00)bit[2:0]=000;
设置NCR(REG_00)bit[2:0]=011,至少保持20μs;
清除NCR(REG_00)bit[2:0]=000;
>配置NCR寄存器;
设置NCR(REG_00)bit[2:1]=00;配置为正常模式。
通过改变该寄存器可以选择设置内部或者外部PHY、全双工或者半双工模式、使能唤醒事件等网络操作。
>清除发送状态;
设置NSR(REG_01)bit[5]=1bit[3]=1 bit[2]=1;
>设置IMR寄存器(REG_FF)PAR bit[7]=1,以肩用RX/TX FIFOSRAM读/写地址指针自动返回功能;
>通过IMR寄存器(REG_FF)PRM bit[0]/PTM bit[1],对RX/TX中断使能。如果需要在一个数据帧发送完后产生一个中断,就应该将PTM bit[1]置1,如果需要在接收到一帧新数据时产生一个中断,就应该将PRM bit[1]置1;
>设置RCR寄存器,使能数据接收功能。
通过以上步骤,可以通过LED指示灯观测到DM9000A是否已成功初始化。
发送模块
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],得到数据帧的发送状态。
发送流程,寄存器ISR中的PTS标志位是发送中断标志位,当一帧数据发送完毕,PTS=0,FPCA检测到该标志后,应清除标志位以便发送新的数据帧。这里需要注意的是,向FC、FD所写的帧长度应该包含目的MAC地址段、源MAC地址段和有效数据的总长度。
接收模块
DM9000A中的接收缓存区是一个环形结构,初始化后的起始地址为0C00H,每帧数据都有4字节长的首部,然后是有效数据和CRC校验序列。首部4字节依次是01H、状态、长度低字节和长度高字节。 首部4字节含义如下:
第一个字节用来检测接收缓存区中是否有数据,如果这个字节是01H,表明接收到了数据;如果为00H,则说明没有数据。但是,如果第一个字节既不是01H,也不是00H,DM9000A就必须作一次软复位来从这种异常状态中恢复。
第二个字节存储着以太网帧状态,由此可判断所接收帧是否正确。
第三和第四字节存储着以太网帧长度。后续的字节就是有效数据。
接收过程如下:
查看中断状态寄存器,如果接收到新数据,寄存器ISR的PRS位将被置为0;如果检测到PRS=0,清除PRS,FPGA开始读接收缓存区数据。如果第一字节是01H,则说明有数据,00H说明无数据,否则要进行复位; 根据获取的长度信息,判断是否读完一帧,如果读完,接着读下一帧,直到遇到首字节是00H的帧,说明接收数据已读完。FPGA可以重新查看中断状态寄存器,等待新的有效数据帧。
结语
本文对以太网控制器DM9000A进行了原理和功能介绍,并结合自行开发的SDR基带信号处理平台,基于FPGA设计实现了100M以太刚接口,其设计思路新颖,硬件连接简单。整体系统具有功耗低,体积小,运行稳定可靠等优点。
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
最近为什么越来越多的研究开始利用FPGA作为CNN加速器?FPGA与CNN的相遇究竟能带来什么神奇效果呢?原来,FPGA拥有大量的可编程逻辑资源,相对于GPU,它的可重构性以及高功耗能效比的优点,是GPU无法比拟的;同时...
关键字:
FPGA
可编程逻辑资源
GPU
FPGA的应用领域包罗万象,我们今天来看看在音乐科技领域及医疗照护的智能巧思。
关键字:
FPGA
科技领域
智能
最近某项目采用以太网通信,实践起来有些奇怪,好像设计成只能应答某类计算机的ICMP(ping)命令, 某类计算机指的是Windows特定系统,其他系统发送ping都不能正确识别。
关键字:
嵌入式Linux
FPGA
协议
近两年,国外厂商的FPGA芯片价格飙升,由于价格,货期,出口管制等多方面因素的影响,很多公司都在寻找FPGA国产化替代方案。我工作中正在使用的几款芯片也面临停产的风险,用一片少一片,了解到国产FPGA发展的也不错,完全自...
关键字:
FPGA
芯片
EDA
在下述的内容中,小编将会对交换机的相关消息予以报道,如果交换机是您想要了解的焦点之一,不妨和小编共同阅读这篇文章哦。
关键字:
交换机
工业交换机
以太网
本篇是FPGA之旅设计的第十二例,在前面的例程中,完成了DS18B20温度传感器数据的采集,并且将采集到的数据显示在数码管上。由于本例将对温湿度传感器DHT11进行采集,而且两者的数据采集过程类似,所以可以参考一下前面的...
关键字:
FPGA
DS18B20温度传感器
这是FPGA之旅设计的第十三例啦,本例是一个综合性的例程,基于OLED屏幕显示,和DHT11温湿度采集,将DHT11采集到的温湿度显示到OLED屏幕上。
关键字:
FPGA
OLED屏幕
新测试解决方案可快速推进 1.6 T收发信机的设计和开发
关键字:
是德科技
以太网
这是FPGA之旅设计的第九例啦!!!本例将介绍如何使用FPGA驱动OLED屏幕,并在接下来的几例中,配合其它模块,进行一些有趣的综合实验。由于使用的OLED屏是IIC接口的,对IIC接口不是很清楚的,可以参考第五例的设计...
关键字:
FPGA
OLED屏幕
这是FPGA之旅设计的第十例啦,在上一例中,已经成功驱动了OLED屏幕,本例将结合上一例,以及第四例多bytes串口通信做一个有趣的例程。
关键字:
FPGA
OLED屏
串口
这是FPGA之旅的第十一例了。在前面的例子中,已经对OLED有了一个基础的了解,本例将介绍如何在OLED上实现支符的显示,为后面的例程做准备。
关键字:
FPGA
OLED
字符
在许多高可靠性商业航空、太空、国防、汽车和工业应用中使用的系统需要获得IEC 61508安全完整性等级(SIL)3功能安全规范的认证。为了降低这一过程的成本,并加快上市,Microchip Technology Inc....
关键字:
Microchip
FPGA
W5500 芯片是一款集成全硬件 TCP/IP 协议栈的嵌入式以太网控制器,为单片机提供了更加简单、快速、稳定、安全的以太网接入方案。采用标准4线SPI接口,理论速率上可以达到 80MHz。
关键字:
嵌入式以太网控制器
以太网
本例是FPGA之旅设计的第十四例,本例将红外遥控的使用,并将红外接收器接收到红外遥控的数据显示在数码管上。
关键字:
FPGA
红外遥控信号
加利福尼亚州圣克拉拉市,2022年9月19日——高性能现场可编程逻辑门阵列(FPGA)和嵌入式FPGA(eFPGA)半导体知识产权(IP)领域的领导性企业Achronix半导体公司宣布:该公司已经收购了Accolade...
关键字:
Achronix
FPGA
Flex Logix目前在推广他们的嵌入式 FPGA 技术。它非常坚固。它已经投放市场多年,并在许多流程节点上得到广泛支持。他们看到越来越多的客户采用该技术,他们正在宣传并尝试与更多的架构师和设计师会面,与他们分享他们可...
关键字:
Flex Logix
FPGA
(全球TMT2022年9月9日讯)2022年9月5日,中国上海工业通信及工业联网领导厂商Moxa在2022台北国际自动化工业大展上揭晓时间敏感网络 (TSN) 解决方案最新研发成果,并展出 TSN 生态系统在促成统一网...
关键字:
自动化
生态系统
IEEE
以太网