当前位置:首页 期刊杂志

基于DM9000A的存储装置的设计

时间:2024-08-31

闫亚婧 ,祖静,梁志剑,尤文斌

(中北大学 仪器科学与动态测试教育部重点实验室,山西 太原 030051)

0 引言

传统的存储装置只能实现短距离的数据存储,并且存储速度非常有限,对于长距离、快速存储的要求显得无能为力[2]。随着技术的不断发展,越来越多的测试系统、控制机构等都需要实时地并且远距离快速地传输数据。但是现在通用的数据传输接口如:USB接口、串行接口、并行接口等只能实现非常短距离的数据传输。利用以太网接口实现快速,长距离地数据传输并存储是一种非常好的解决方法[3]。

1 系统硬件方案

该存储装置具有以太网接口,计算机通过自身的网卡及网线与该存储设备相连。该存储装置的基本构成:双绞线接口RJ45口,网络变压器,以太网接口芯片,单片机,电源模块,串口读数口。此处使用了一种以高性能的以太网控制芯片DM9000A,它是中国台湾DAVICOM公司推出的一款高度集成、功能强大、少引脚、性价比高的单片快速以太网控制芯片。单片机用MSP430FG4618,网络变压器选用PH163539。系统框图如图1所示。

1.1 DM9000A工作原理

1.1.1 主要特性和总体结构

DM9000A的主要特性如下:

图1 系统硬件连接框图

支持8/16bit两种主机工作模式;适用于10Base-T和100Base-T;

10/100 M自适应,适应不同的网络速率要求;

内置16 KB的SRAM,用于收发缓冲,降低对主处理器的速度要求;

内部集成了一个 10/100M自适应PHY,可以连接到3类、4类、5类的10M无屏蔽双绞线和5类的100M无屏蔽双绞线。

通过HP认证的AUTO-Mdix(支持直接互连自动翻转)功能;

与IEEE 802.3u兼容,支持IEEE802.3x全双工,可同时收发;

具有睡眠模式,可降低功耗;

采用48引脚LQFP封装,缩小PCB面积。

该电路还集成了EEPROM接口,自举时通过EEPROM接口输入到芯片中,从而实现自动初始化。

DM9000A实现以太网媒体介质访问层(MAC)和物理层(PHY)的功能,包括MAC数据帧的组装/拆分与收发、地址识别、CRC编码/校验、MLT-3编码器、接收噪声抑制、输出脉冲成形、超时重传、链路完整性测试、信号极性检测与纠正等[4]。

1.1.2 DM9000A接口连接

DM9000A可选择EEPROM模式,将DM9000A的初始化程序以及MAC地址存入其中。本设计采用单片机直接对DM9000A进行初始化,并将MAC地址直接写入DM9000A的内部寄存器,所以EECK,EEDIO引脚保持默认的悬空状态。系统采用16位模式, 因此DM9000A的EECS引脚也保持默认的悬空状态。这样可以省去网卡的配置存储器,减少硬件平台的面积[5]。

数据线SD0-SD15直接与单片机的通用I/O口相连。DM9000A的读信号线IOR、写信号线IOW、片选信号CS分别与单片机的通用I/O引脚相连。DM9000A的INT中断引脚连接到单片机的P1口作为中断源。DM9000A的引脚连接如图2所示。

图2 DM9000A引脚连接

DM9000A上的复位引脚采用低电平复位,至少要保持20ms的复位时间,此处采用阻容电路对DM9000A进行复位。调节电阻值到10kΩ,电容值到 10μF。

1.2 单片机的复位

单片机的复位同样采用阻容复位电路,低电平复位。由于单片机复位后会对DM9000A进行初始化配置,DM9000A上电复位后至少5μs才可以对其初始化,因此单片机的复位时间必须保证比DM9000A的复位时间长,否则当DM9000A还处在复位中单片机对就DM9000A初始化配置会导致混乱。调节电阻值到87kΩ,电容值到10μF。

1.3 串口的设计

为了防止因RJ45口的损坏而导致整个装置不可用,本设计还加入了串口模块,可以直接利用串口进行读写,存储数据。

2 工作原理

2.1 工作过程

DM9000A可与单片机以8 bit或16 bit的总线方式连接,并可根据需要以单工或全双工等模式运行。

在系统上电后,单片机通过配置DM9000A内部寄存器,完成DM9000A的初始化。随后,单片机通过编程控制进入低功耗模式。DM9000A自动进入省电模式,只有探测电路工作,耗电极少。此时系统处于等待接收状态。DM9000A不断发送连接脉冲,如果没有数据则保持低功耗状态,一旦有信号出现,立即唤醒进入工作模式。当DM9000A内部的接收缓冲区接收到数据的时候就会通过中断引脚发出中断,单片机接收到中断后唤醒,启动数据接收程序接收数据。

单片机将相应的数据从DM9000A的接收FIFO通过寄存器读回,按照TCP/IP协议的内容进行解包把原始有用数据提取出来,区分命令和数据,如果是命令则进行相应的处理,如果是数据则存如内部FLASH中。存储完毕后单片机和DM9000A进入低功耗模式,系统恢复接收等待状态。

当计算机发出读数命令,单片机接收到此命令启动发数程序,先将数据从内部Flash中读出,再将数据打包成IP数据包,逐字节发送到DM9000A的数据发送缓存中,然后将数据长度等信息填充到DM9000A的相应寄存器内,随后发送使能命令。DM9000A将缓存的数据和数据帧信息进行MAC组帧,并发送出去。发送完成后,系统恢复到等待接收状态,单片机和DM9000A进入低功耗模式。若不再进行任何操作则下电[6]。

DM9000A遵循自动协商(Auto-Negotiation)机制。具有这种功能的设备会主动与对方协商,并且等待对端返回协商结果,它不仅能够协商两端的工作速度是10M,还是100M,而且还可以协商两端工作的双工方式是半双工还是全双工。所以可自动检测网络连接情况,根据网速设置内部的数据收发速率为10 Mb/s或100 Mb/s,还能根据RJ45接口连接方式改变数据收发引脚的方向,因此无论外部网线是采用对等还是交叉方式,系统均能正常通信。

2.2 DM9000A寄存器访问方法

在DM9000A中只有INDEX端口与DATA端口两个寄存器可以被处理器直接访问,其它所有内部控制和状态寄存器都是通过这两个端口寄存器间接访问的。网络控制器CMD引脚决定了处理器访问的是哪个端口寄存器:当CMD=0时,主机访问的是INDEX端口寄存器;当CMD=1时,访问的是DATA端口寄存器[7]。

实际中对DM9000A控制或状态寄存器访问的命令顺序是:

(1)写要访问寄存器的地址到INDEX端口;

(2)通过DATA端口来读/写数据。

DM9000A与单片机的数据传输是通过单片机的通用I/O口连接,因此对寄存器进行读写控制的时候一定要注意加上时序。

3 软件设计

3.1 协议实现

在单片机编程中加入TCP/IP协议才能保证数据每时每刻传输的准确性。在传输层我们抛弃了复杂的TCP协议而使用简单的UDP协议。虽然UDP是无连接的协议,它不保证数据包一定能够到达目的主机,但是在本应用中存储器跟主机通常位于同一内部局域网内,网络环境良好,数据丢失的可能性很小,并且UDP容易实现,占用资源小[8]。UDP头部包含了可选的校验和字段,而校验要涉及到伪报头,为了简化设计和减小开销,我们不使用校验,直接把该字段设为零,表示不使用校验[9]。

3.2 初始化设计

DM9000A正常工作需要在上电后对内部寄存器进行初始化。该过程是通过单片机对DM9000A外部控制总线和数据总线的读写操作完成的。具体流程如下:

(1)激活PHY

设置GPR(REG_1F) CEPI00 bit[0]=0;

由于上电复位后,DM9000A恢复默认的休眠状态以降低功耗,因此需要首先唤醒PHY。

(2)进行两次软复位,步骤如下:

设置NCR(REG_00)bit[2:0]=011;至少保持20μs;

清除NCR(REG_00)bit[2:0]=000;

设置NCR(REQ_00)bit[2:0]=011;至少保持20μs;

清除NCR(REG_00)bit[2:0]=000。

(3)配置NCR寄存器

设置NCR(REG_00)bit[2:1]=00;配置为正常模式。

通过改变该寄存器可以选择设置内部或者外部PHY、全双工或者半双工模式、使能唤醒事件等网络操作。

(4)清除发送状态

设 置 NSR(REG_01)bit[5]=1, bit[3]=l ,bit[2]=l。(5)清除所有中断标志

设置ISR(REG_FE) bit[1]=l bit[0]=l。

(6)设置IMR寄存器(REG_FF)PAR bit[7]=l;启用RX/TX FIFO SRAM读/写地址指针自动返回功能。

(7)通过IMR寄存器(REG_FF)PRM bit[0]=1对RX中断使能。此处发送中断不使能,防止在发送数据时被中断干扰。

(8)设置PAR寄存器(REG_10-15),写入MAC地址。用户自己定义MAC地址时必须注意,MAC地址的第一个字节必须为偶数,第一个字节为奇数的MAC地址为多播地址。如果把MAC地址的第一个字节定义为奇数,可能会引起网络通信错误。

(9)设置RCR寄存器,使能数据接收功能。

以上步骤完成后,可以通过LED指示灯观测DM9000A是否已成功完成初始化,就可以正常启动和收发数据包了[10]。

3.3 主流程

软件实现的主流程如图3所示。

图3 系统主流程

4 实验研究

图4为利用网络调试助手的发送端向装置发送十六进制数的过程。图5为利用IAR软件对单片机进行单步调试的结果。单片机内部Flash的存储起点是4400H,程序中把UDP包头去掉,因此只把所需要的数据保存下来。从图中看出,发送的数据和单片机内部接收到的数据是一致的。

图4 网络调试助手的发送端

图5 单片机内部Flash存储结果

5 结束语

单片机对以太网卡的驱动,是通过以太网对电器进行控制的第一步,也是非常关键的一步。在单片机中简单实现TCP/1P协议才能保证数据每时每刻传输的准确性。利用以太网控制电器设备,无需另外铺设线路,降低了成本,是现代控制发展的一条新出路。该设计方案具有硬件连接简单、功耗低、体积小、运行稳定可靠等优点。

[1]刘伟明,杜林.基于DM9000A和LPC2214的嵌入式以太网接口设计[J]. 电子测量技术,2008,31(6).86-89.

[2]杨鹏,赵琦,孔鑫,等.工业以太网的发展及其技术特点[J].微计算机信息,2006,2(1).32-33.

[3]苏绍兴,王瑞阳.工业以太网技术的发展及展望[J]. 温州职业技术学院学报,2003,3(4):53-56.

[4]DAVICOM Semiconductor,Inc. DM9000A Ethernet Controller with General Processor Interface Data Sheet [S].USA:DAVICOM Semiconductor,Inc ,2005.

[5]DAVICOM Semiconductor,Inc.DM9000A 16/8Bit Ethernet Controller with GeneralProcessor Interface Application Notes V1.20[S].USA:DAVICOM Semiconductor,Inc,2005.

[6]苏耀峰,王德刚, 魏急波. DM9000A原理及其与基带信号处理平台的结合应用[J]. 国外电子元器件,2007:53-56.

[7]谢希仁.计算机网络[M].北京:电子工业出版社,2008.

[8]吴功宜.计算机网络[M].北京:清华大学出版社,2007.

[9]刘波.基于ARM的嵌入式以太网网络接口设计[J].电子工程,2006(1):39-42.

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!