dm9000a与基带信号处理平台的结合应用
引言
软件无线电(sdr)技术近年来发展迅速,在无线通信中的数字接收机领域应用尤其广泛。sdr中数据接口设计是关键的环节,以太网是目前最通用的数据接口之一,但是中低端的fpga通常不具备以太网接口,这为fpga在sdr中的应用造成了不便。如果为fpga配置以太网接口,与外部网络实现通信,将有利于sdr平台的功能延伸,方便数据传输和与现有系统接口。
本文在自行设计开发的sdr基带信号处理平台上,为实现高速解调数据的实时远程传输处理及接收机参数的远程配置,提出了采用fpga直接控制dm9000a进行以太网数据收发的设计思路,采用xilinx系列xc2v1000 fpga和dm9000a芯片,实现了一种低成本、低功耗和高速率sdr平台的网络传输功能,最高传输速率可达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接口是采用对等还是交叉连接方式而改变数据收发引脚的方向,因此,无论外部网线采用对等还是交叉方式,系统均能正常通信。
基于dm9000a的sdr基带信号处理平台网络接口设计与实现
下面以sdr基带信号处理平台的网络接口实现为例,给出dm9000a与fpga的硬件设计和软件配置方法。在sdr基带信号处理平台上,全数字接收机的中频模拟信号经过a/d转换、数字下变频、抽取滤波等解调处理后,形成连续的解调数据流,其速率为10mbps。在fpga内部,解调输出的数据流和以太网接口部分通过fifo进行缓冲,当解调数据达到规定的数据帧长度时,fpga启动以太网发送程序,将解调数据发送到dm9000a,完成数据发送过程。在接收方向,网络工作站把控制指令按照一定的帧格式组帧发送到以太网,dm9000a接收到发给自己的以太网帧并通知fpga启动以太网接收程序,fpga将相应的数据从dm9000a的接收fifo读到fpga内部ram中,利用数据中的控制命令配置接收机参数,完成网络对全数字接收机的远程控制。
与fpga的数据接口和控制接口
dm9000a的外部总线符合isa标准。可通过isa总线直接与fpga无缝连接。其硬件连接原理如图1所示。
690)this.width=690;if(this.height>690)this.height=690;>
dm9000a内部集成了phy功能,因此可与以太网接口无缝连接。
dm9000a的fpga控制
初始化模块
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],得到数据帧的发送状态。
发送流程如图2所示,寄存器isr中的pts标志位是发送中断标志位,当一帧数据发送完毕,pts=0,fpca检测到该标志后,应清除标志位以便发送新的数据帧。这里需要注意的是,向fc、fd所写的帧长度应该包含目的mac地址段、源mac地址段和有效数据的总长度。
690)this.width=690;if(this.height>690)this.height=690;>
接收模块
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以太刚接口,其设计思路新颖,硬件连接简单。整体系统具有功耗低,体积小,运行稳定可靠等优点。
Digi-Key大中华及东南亚GM:不忘初心,从未改变
vivoX9如此便一眼万年,颜值与实力都不缺!
华为用实力拿下25个5G项目全球第一
蜗轮蜗杆减速机选型_蜗轮蜗杆减速机的主要参数
站在风口 本土AI智能计算中心蓄势待发
DM9000A与基带信号处理平台的结合应用
测报工具箱是什么,它的主要作用是什么
一氧化碳检测仪有哪些性能要求
从4G和5G的发展出发 看未来天线技术的发展路线
【学习】浅谈如何监管区块链+金融?
难道诺基亚才是亲儿子?现在不止是新机诺基亚8可以安装安卓8.0,诺基亚机型都可以了
存储器和数字芯片测试的基本测试技术
威格士叶片泵有什么原理及范围?
STC12系列单片机简易编程器制作
关于智能电脑胎儿监护系统的结构浅析
西门子是哪个国家的品牌_西门子发明了什么
某高管发布“假快讯”: 全球第一个5G手机将来自联想!网友:不怕被华为抢先发打脸?
IE下如何实现全屏
无铅锡膏一般情况应该怎么保存比较好?
4.0时代即将到来 智能锁已成为消费者门锁升级换代的选择