datasheet

基于DSP的网络通信接口设计方案

2014-08-11来源: dzsc关键字:DSP  网络通信  接口设计

  1 通信协议的制定

  协议是用来管理通信的法规,是网络系统功能实现的基础。由于DSP可以实现对网卡的直接操作,对应于OSI网络模型,网卡包含了物理层和数据链路层的全部内容,因此,规定了数据链路层上数据帧封装格式,就可以为基于DSP的局域网络中任意站点之间的通信提供具体规范。因为以太网是当今最受欢迎的局域网之一,在以太网中,网卡用于实现802.3规程,其典型代表是Novell公司的NE2000和3COM公司的3C503等网卡,所以研究工作中的具体试验平台是以DSP为核心构成的以太局域网,主要用于语音的实时通信,所使用的网卡为Novell公司的NE2000网卡。NE2000网卡的基本组成请见参考文献[2],其核心器件是网络接口控制器(NIC)DP8390.该器件有三部分功能:第一是IEEE802.3MAC(媒体访问控制)子层协议逻辑,实现数据帧的封装和解封,CSMA/CA(带碰撞检测功能的载波侦听多址接入)协议以及CRC校验等功能;第二是寄存器堆,用户对NE2000网卡通信过程的控制主要通过对这些寄存器堆中各种命令寄存器编程实现;第三是对网卡上缓冲RAM的读写控制逻辑。DP8390发送和接收采用标准的 IEEE802.3帧格式。IEEE802.3参考了以太网的协议和技术规范,但对数据包的基本结构进行了修改,主要是类型字段变成了长度字段。所以,以 DSP为核心的局域网内通信数据包基本格式如图1所示。

  DSP读出数据包和打包从目的地址开始。目的地址用来指明一个数据帧在网络中被传送的目的节点地址。NE2000支持3种目的地址:单地址、组地址及广播地址。单地址表示只有1个节点可以接收该帧信息;组地址表示最多可以有64个字节接收同一帧信息;而广播地址则表示它可以被同一网络中的所有节接收。源地址是发送帧节点的物理地址,它只能是单地址。目的地址和源地址指网卡的硬件地址,又称物理地址。 在源地址之后的2个字节表示该帧的数据长度,只表示数据部分的长度,由用户自己填入。数据字段由46~1500字节组成。大于1500字节的数据应分为多个帧来发送;小于46字节时,必须填充至46字节。原因有两个:一是保证从目的地址字段到帧校验字段长度为64字节的最短帧长,以便区分信道中的有效帧和无用信息;二是为了防止一个站发送短帧时,在第一个比特尚未到达总线的最远端时就完成帧发送,因而在可能发生碰撞时检测不到冲突信号。NE2000对接收到的从目的地址字段后小于64字节的帧均认为是“碎片”,并予以删除。在数据字段,根据系统的具体功能要求,用户可以预留出若干个字节以规定相应的协议,以便通信双方依据这些字节中包含的信息实现不同的功能。

  2 基于DSP的网络通信程序设计

  如果基于网络操作系统,用户可以利用一些软件对网络操作系统的支持,很容易地编写出优秀的网络通信程序,但这些程序必须依附于网络操作系统。而在DSP环境下,必须深入了解网络接口控制器(NIC)的工作原理[2],通过对网络直接编程,实现局域网内任意站点之间的通信而完全抛开网络操作系统。 DSP对网卡的通信过程控制就是DSP对DP8390中各种寄存器进行编程控制,完成数据分组的正确发送和接收。DP8390的所有内部寄存器都是8位,映像到4个页面。每个页面有16个可供读写的寄存器地址(RA=00H~0fH)。页面的选择由命令寄存器CA控制。第0页寄存器用于收发过程,第1页寄存器主要用于DP8390的初始化,第2页寄存器则用于环路诊断。DSP对寄存器的操作是将寄存器作为DSP的端口设备,其实际物理端口地址(PPA)为网卡基本I/O端口地址(BIOA)与寄存器地址(RA)之和(即PPA=BIOA+RA)。应注意的是,PPA与寄存器间并不存在一一对应关系,对 PPA的读操作与写操作并不一定是对同一寄存器进行的,这种情况在第0页尤其明显。用户数据分组在DSP和网卡交互是通过网卡的数据端口实现的,既可以用 DMA方式也可以用PIO方式读入数据分组或将数据分组送至网卡RAM缓冲区。在本系统中,DSP采用DMA方式对网卡进行数据读写。网卡的数据端口地址(NDPA)为网卡基本I/O地址(BIOA)加偏移地址10H(即NDPA=BIOA+10H)。 网卡通信过程控制可分为网卡初始化、接收控制和发送控制。下面分别予以讨论。

  2.1 网卡初始化

  网卡初始化的主要任务是设置所需的寄存器状态,确定发送和接收条件,并对网卡缓冲区RAM进行划分,建立接收和发送缓冲环。具体过程请参阅参考文献 [2].需要说明的是,每一块网卡被赋予一个物理地址,以便通信站点的标识。这个物理地址存在网卡的PROM(存储地址为0000~0005H)六个单元中,在网卡初始化时,通过远程DMA读入DSP内存中,并送入网卡物理地址寄存器。在一步的意义在于:一方面,如果能正确读出网卡的物理地址,则说明网卡硬件基本没有问题,网卡的上电复位和DSP对网卡的初始化顺利通过;另一方面,这个物理地址可以用于DSP网络系统中的点名、包的过滤丢弃等服务,也就是说,在链路层根据数据帧携带的源地址和目的地址确定数据报从哪里来,是否接收或丢弃。网卡初始化时另一个重要的工作就是接收缓冲环的设置,为了有效利用缓冲区,NIC将接收缓冲区RAM构成环形缓冲结构,如图2所示。

  接收缓冲区RAM分成多个256字节的缓冲区,N个(N最大为256)这样的缓冲区通过指针控制链接成一条逻辑上的缓冲环。缓冲环的开始页面地址存入 PSTART寄存器,环页面结束地址存入PSTOP寄存器。PSTART和PSTOP确定了接收缓冲环的大小和边界。为便于缓冲环读写操作,还需要2个指针:当前页面指针CURR和边界指针BNRY.CURR确定下一包放在何处,起着缓冲环写页面指针作用;BNRY指向未经DSP取走处理最早到达的数据包起始页面,新接收的数据包不可将其覆盖,起着缓冲环读页面指针的作用。也就是说,CURR可以告诉用户网卡接收的数据分组当前放到了什么位置,而BNRY 则用于确定DSP读缓冲环到了什么地方。由于接收缓冲区为环形结构,BNRY和CURR相等时,环缓冲区可能满也可能空。为了使NIC能辨别这两种状态,规定当BNRY等于CURR时,才认为环缓冲区满;当缓冲区空时,CURR比BNRY指针值大1.因此,初始化时设置:BNRY=PSTART,CURR=PSTART+1.这时读写指针不一致,为了保证正确的读写操作,引入一软件指针NEXTPK指示下一包起始页面。显然,初始化时NEXTPK=CURR.这时,缓冲环的读指针对NEXTPK,而BNRY只是存储分组缓冲区的起始页面边界指示,其值为 NEXTPK-1.

  2.2 接收控制过程

  DSP完成对DP8390的初始化后,网卡就处于接收状态,一旦收到分组,就自动执行本地DMA,将NIC中FIFO数据送入接收缓冲环,然后向主机申请 “数据分组接收到”中断请求。DSP如果响应中断,则启动网卡远程DMA读,将网卡缓冲区中的数据分组读入学生机存储区,然后对接收缓冲环CURR、 NEXTPK、BNRY指针内容进行修改,以便网卡能从网上正确接收后续分组。DSP响应网卡接收中断后,接收控制过程如下: ①设置远程DMA的起始地址;RSAR0=00H,RSAR1=Nextpk. ②设置远程DMA操作的字节数,这个长度在46~1500字节范围内根据具体要求自己确定。 ③0AH送命令寄存器CR,启动远程DMA读。 ④从网卡数据端口依序读入数据分组,注意,最先读入的4字节非数据分组内容,第1字节为接收状态,第2字节为下一包页地址指针,3与4字节为接收字节数。第2字节内容应该送入Nextpk,其它字节根据用户要求处理。 ⑤修改边界指针BNRY=Nextpk-1. ⑥清除远程DMA字节数寄存器RBCR0和RBCR1.

  2.3 发送控制过程

  DSP先执行远程DMA写操作,将内存中的数据分组传至网卡发送缓冲区,然后启动发送命令进行数据分组发送。发送控制过程如下: ①设置远程DMA的起始地址为网卡发送缓冲区起始地址; ②设置远程DMA操作的字节数; ③12H送命令寄存器CR,启动远程DMA写; ④依序送出数据分组至网卡发送缓冲区; ⑤清除远程DMA字节数寄存器; ⑥设置发送字节数寄存器TBCR0和TBCR1; ⑦12H送命令寄存器CR,启动数据分组发送。

  3 发送方发送频率的控制

  发送方发送频率的正确控制主要保护两点:一是有一个最小发送时间间隔,否则会因为接收方不能及时接收而导致系统瘫痪;二是发送频率能够足具体的功能实现要求。譬如在语音的实时通信中,发送频率就取决于声卡的采样频率。在8kHz采样频率时,声卡每秒钟采样8000字节,采用1024字节需用时128ms,如果通信协议规定发送1次传送1024字节有效数据,则必须每128ms发送一次才能保证缓冲区有新数据待发送,也才能保证接收方有新数据播放。 128ms是一个理论计算数值,在实际的操作中采样速度和发送频率之间总是不能完全匹配,而存放数据的缓冲区大小是有限的,如果没有良好的控制技巧来实现正确发送,就会造成声音抖动和延时。解决的办法是双缓冲技术和双指针控制,并且根据采样速度和发送频率之间的匹配情况送入不同的发送通信进行处理后发送。正确发送的含义有两方面,一是每次发送的都是新数据,二是能满足接收方总在播放新数据的需求。

  4 接收方防止数据包的丢失

  由于DSP通过中断请求判断是否有数据分组到来,如果中断繁忙而两个数据包到来时间相差非常短,DSP有可能只响应一次中断,从而导致丢包的发生。分析网卡接收数据过程,当网卡收到数据分组时,首先执行本地DMA,将NIC中FIFO数据送入接收缓冲环,并将本地DMA操作的起始地址存放在当前页寄存器(CURR)和当前本地DMA寄存器(CLDA0、CLDA1)中,DSP从网卡接收缓冲环读出数据到存储器则称远程DMA操作,用软件指针Nextpk 来指示远程DMA的起始页面。因此通过比较网卡本地DMA和远程DMA的当前地址,即在中断服务子程序中比较CURR和Nextpk指针,或比较 CLDA0、CLDA1和Nextpk指针,就可以保证当前数据分组放到了哪里就读出到哪里,从而防止丢包的发生。

  5 结论

  DSP芯片是专门为实现各种数字信号处理算法而设计的、具有特殊结构的微处理器,其卓越的性能、不断上升的性价比、日渐完善的开发方式使它的应用越来越广泛。将计算机网络技术引入以DSP为核心的嵌入式系统,使其成为数字化、网络化相结合,集通信、计算机和视听功能于一体的电子产品,必须大大提升DSP系统的应用价值和市场前景。将DSP技术与网络技术相结合,必须解决两个关键问题:一是实现DSP与网卡的硬件接口技术,二是基于DSP的网络通信程序设计。

关键字:DSP  网络通信  接口设计

编辑:什么鱼 引用地址:http://www.eeworld.com.cn/qrs/2014/0811/article_17878.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:基于DSP的以太网通信接口设计方案
下一篇:基于Modelsim FLI接口的FPGA仿真技术

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

realme X搭汇顶新一代光感屏下指纹,加入DSP加速引擎

今天早上,realme官微爆料了了即将发布的新机realme X将搭载汇顶新一代光感屏下指纹,加入DSP加速引擎,识别速度更快。        结合realme之前曝光的信息,realme X此次将采用索尼IMX586,4800万像素,大光圈F1.7,支持超级夜景。而且采用超高屏占比全面屏+升降式前置摄像头的设计,屏占比达到了91.2%。据悉,realme X在升降方案的选择上,采用了更新的中置方案,具有更好的对称性,海报显示,realme X前置升降摄像头可连续使用超过20万次,假设每天自拍50次,也可以保证前置摄像头使用超过10年。另外其屏幕材质为AMOLED,在显示效果上也更有保证
发表于 2019-05-12
realme X搭汇顶新一代光感屏下指纹,加入DSP加速引擎

汽车音频工程师的DSP开发方法论

当“汽车”与“电子”这两个词开始出双入对,就注定了DSP成为乘客的命运,毕竟哪里有电子,哪里就大概率有数字信号,而哪里有数字信号,哪里就是DSP的舞台。如今,DSP已经广泛应用于汽车的各个功能。比如在发动机上,DSP可获取并分析各气缸内压力数据,然后输出控制信号,使发动机处在最佳点火时刻和空燃比的状态;在底盘上,DSP可获取ABS系统数据,进而保证车辆的稳定性;在安全气囊上,DSP可以实现对点火电流的反馈控制,使安全气囊在准确的时间点展开;在新能源汽车上,DSP可对电池进行管理…… 随着汽车电子的发展,DSP在汽车上的应用场景越来越多。而汽车上有一个较为传统的应用场景,也随着DSP技术的发展而不断进化,那就是影音娱乐
发表于 2019-03-26
汽车音频工程师的DSP开发方法论

物联网处理的最佳选择:DSP +CPU

一般认为,在需要数字信号处理时(在调制解调器的物理层、智能扬声器的麦克风波束形成或跟踪设备的地理定位时)要使用DSP。如果需要数字控制(运行协议栈或管理音频编解码器或GNSS的控制方面 ),则要使用MCU。由于典型的物联网设备需要这两种功能,因此必须使用两个或更多内核。对于对续航时间要求不高的高利润设备,这也许不是什么大问题,但对许多物联网应用而言这可能是一个严重缺点。对于这类应用,经优化的复合处理器可以更经济高效地满足这两种需求,并延长设备续航时间。我们对此进行了非常详细的分析;我们认为这样的解决方案不仅可行,而且在各种物联网应用中具有很强的竞争力。想想共享单车或共享踏板车。这些设备显然需要跟踪,因此嵌入式设备必须能够
发表于 2019-03-14

BISTel全新AI系统连接MindSphere,加快客户智能制造之旅

深圳和上海,2019年1月18日BISTel是智能制造的自适应智能(AI)解决方案的领先供应商,它已加入MindSphere合作伙伴计划,西门子的工业物联网解决方案和技术提供商合作伙伴计划。预计BISTel应用程序将在MindSphere平台Q1 2019上提供.BISTel将通过宣布推动中国智能制造业增长的新型人工智能产品,讨论该公告的重要性以及如何帮助其扩展在中国的业务。 1月18日在深圳和1月21日在上海举行的两场新闻发布会上,BISTel高级管理人员将宣布重大投资和扩展计划,以帮助中国发展其智能制造市场或工业4.0。 BISTel的高级数据分析平台eDatalzyer®及其设备实时健康监测和预测维护
发表于 2019-03-05

STM32F4学习笔记1——如何使用DSP库

配置 1、 安装DSP库文件 2、 配置编译环境, 上述添加是在project→options→C/C++→Define中添加,并且分割用逗号,即__FPU_PRESENT=1,__FPU_USED=1,ARM_MATH_CM4,__CC_ARM3、 在需要调用DSP函数的文件中加上#include "arm_math.h" 4、 需要在project中添加用到的.c文件,看你用的是哪个函数,就添加哪个.c文件。.c文件目录为 XXX\Drivers\CMSIS\DSP_Lib\Source
发表于 2019-02-19
STM32F4学习笔记1——如何使用DSP库

STM32F4xx FPU/DSP使用注意事项

__CC_ARM。以使用sin,cos 运算举例,需要调用arm_sin_f32()以及arm_cos_f32(),这两个函数定义在arm_sin_f32.c 和arm_cos_f32.c中,需要在工程中加入这两个c 文件。* 在 ST 库文件包中的文件目录如下:\stm32f4_dsp_stdperiph_lib\STM32F4xx_DSP_StdPeriph_Lib_V1.1.0\Libraries\CMSIS\DSP_Lib\Source\FastMathFunctions* 在keil 安装目录下的文件目录如下:\Keil\ARM\CMSIS\DSP_Lib\Source\FastMathFunctions当用到更多数学运算, 如开根号
发表于 2019-02-15
STM32F4xx FPU/DSP使用注意事项

小广播

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved