0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于MVME2700单板机实现DSP系统实时通信控制的方案研究

牵手一起梦 来源:网络整理 作者:佚名 2020-01-22 11:00 次阅读

分析在Apex软件环境下,SHARC处理器阵列板与MVME2700单板机基于VME总线的交互通信机制;利用该机制在VxWorks操作系统下,实现MVME2700单板机对DSP阵列板的被动触式工作时序控制。

目前,许多信号处理系统DSP都采用Analog Device公司的SHARC系列产品。随着DSP计算能力与应用范围的不断增强和扩大,越来越要求DSP具有实时控制能力以及具备多种通信接口。特别随着网络威廉希尔官方网站 的不断发展,基于网络控制的DSP应用已成为主流;而嵌入式单板机(Signal Board Computer)显然在实时控制与多通信接口及网络应用方面具有及大的优势。因此,通常在DSP处理机前端利用单板机设置通信控制器,加强对DSP系统的实时控制与外围通信接口扩展。DSP系统与其前端通信控制器之间是否具有良好的实时通信,决定了其整体性能的优良程度。本文利用Motorola公司的MVME2700单板机作为DSP信号处理机的前端通信控制器,实现了对DSP系统的实时通信控制。

1 、DSP及其前端控制

在需要高强度信号处理能力的领域,一般可采用多块具有拓扑结构的SHARC处理器VMEBus阵列板作为信号处理机。各阵列板通过连接线连接,具有很强的信号处理 能力。SHARC阵列板虽具有强大的计算功能,但是却不适合加载实时操作系统,因此其自身管理功能并不强大,并且通信接口扩展性较差,不利于功能扩展和网络控制。为了对其实施合理的工作时序控制并增强外围通信功能,在其前端配置一块单板机,利用VxWorks作为操作系统,并安装控制程序对SHARC阵列板实施控制。由于单板机具有良好的通信接口扩展性,该单板机作为信号处理系统的前端机可以外接网络接口、视频接口、I/O接口等等,使得信号处理机可作为一个完整的分系统接入控制网络;利用单板机的强大的实时控制功能和网络功能,使信号处理机发挥最大功效。下面给出SHARC阵列板与其前端的单板机组成的通信处理系统,如图1所示。

基于MVME2700单板机实现DSP系统实时通信控制的方案研究

嵌入式系统基于标准的VME总线结构,SHARC处理器为ADSP21060,其时钟频率为40MHz,晶体振荡器的频率为25.6MHz。每一个SHARC处理器都支持高达240MB/s的高速通信。对SHARC的软件开发采用Apex(Advanced parallel excutive),即高级并行执行指令,由Signal Spectrum公司开发的SHARC指令高级开发语言。

Apex提供了性能优良的、灵活的并行处理器指令集,以及对DSP硬件的便捷访问功能。同时,Apex还提供了基于VME总线的通信机制,允许从主机下装SHARC代码到客户机,并且具备在主机和客户机之间进行数据传输的功能。本文采用美国Motorola公司生产的单板机MVME2700,中央处理器PowerPC MPC750作为Melbourne的前端通信控制器。MVME2700是一个高度集成计算机系统,适用于要求高度实时控制管理的系统环境。它所使用的操作系统就是嵌入式的实时操作系统中的佼佼者VxWorks。VxWorks是具有高性能的实时操作系统内核。该内核使用中断驱动、抢占优先级的任务调配机制,这种机制使得VxWorks具有高性能的实时特性。MVME2700的通信控制程序通过Tornado软件在Windows环境下进行程序开发。

2 、SHARC的VME总线通信机制分析

如果要实现MVME2700对SHARC的实时控制,则必须了解SHARC是如何基于VME总线对外访问的。由于MVME2700对SHARC阵列板起着程序下载、引导和控制作用,在Apex开发环境下视其为主机,而SHARC阵列板则称为目标机。对于SHARC阵列板而言,一般只有根部SAHRC处理器参与VME总线通信。Apex支持两类主机与SHARC系统进行VME通信的方式:一类方式是在主机应用程序和SHARC阵列板根部处理之间进行的较低层的数据块拷贝,类似于简单的本地数据拷贝标准C程序当中的memcpy;另一类则以客户端/服务端交互的形式在主机与SHARC之间建立通信,利用中断实现同步,并且可以多路传输。下面对这两种方式加以分析。

2.1 同存块拷贝方式

Apex提供主机与SHARC目标机的任何内存地址拷贝数据的函数:cpy_to_SHARC()和cpy_from_SHARC()。给出SHARC阵列板上SHARC-0(根部处理器)的本地地址和主机上的本地址,即可进行内存块拷贝。本质上,这是一种基于VME总线的共享内存DMA方式,函数cpy_to_SHARC()和cpy_from_SHARC()自动将主机与目标机的本地址释放成VME总线地址,通过共享内存进行数据传输,因此可以不必关心低层具体的VME总线映射关系,而将重点在上层数据传输。不过,某些情况下需要获得VME映射关系的时候,例如主机需要通过VME总线对SHARC的控制寄存器进行操作,此时应当利用VxWorks的函数sysLocaltoBusAddr()来主动获得该寄存器的VME地址映射,对该VME地址进行位操作。要做到这一点,在NT操作系统下则显得要麻烦得多。由于SHARC与MVME2700的数据拷贝通过VME总线传输,其数据传输速率是非常高的;同时,由于采取了DMA方式,几乎不需要CPU介入,从而可提高程序执行效率。

2.2 客户/服务的阻塞交互方式

该方式要求每次客户端申请获得服务的时候,向系统提供一个服务请求。该请求包括标签和一同发送的数据包,其结构体数据格式如下:

typedef struct{

INT32 tag; /*服务标签*/

INT32 param; /*客户服务程序参数*/

INT32 data; /*数据包指针*/

INT16 length; /*数据包长度*/

INT16 max_len; /*返回包的最大长度*/

} Server_packet

客户端提完申请之后就会进入阻塞状态等待服务端的回答。服务端截获该申请之后,根据服务标签启动相应的服务模块,完成相应的服务之后向客户端发送回复,此时客户端才能停止阻塞恢复运行,如图2所示。申请和回复这两种数据包具有同样的结构,每次最大数据传输量不能超过4KB。客户端与服务端之间的实时响应由系统发送中断自动完成,不需要人为干预,具有较高的实时性和安全性。

该方式实质是构架于VME总线中断之上的。在客户端发送申请包的时候包含了一个VME总线中断,由该中断驱动服务端的服务循环模块,然后服务循环模块再调用相应的客户服务程序,从而实现两路通信握手。该方式将底层的VME总线中断驱动机制封装起来,在上层建立了规范的服务循环模块并且允许添加个人服务程序,对于软件的规范与维护有利。当然,如果需要更高的实时性,可以不采用该方式,而是由客户端直接发送VME总线中断来实现握手,但必须对于底层的中断寄存器直接操作,不易维护。需要指出的是,对于具有拓扑结构的SHARC芯片组而言,只能由根端SHARC处理器作为客户端,内存拷贝也只能在根部SHARC处理器与服务端处理机之间进行。

基于MVME2700单板机实现DSP系统实时通信控制的方案研究

2.3 Apex通信机制在单板机控制中的应用

一般来说,进行高强度运算的信号处理机都应该具有严格的工作时序,在每个工作时序进入相应的工作状态,这有利于其它分系统的相关处理以及信号处理机运算流程的合理安排。因此,对于信号处理机可以采取被动触发控制,即信号处理机完成当前工作时序之后向通信控制器提交下一工作时序请求,通信控制器可根据外部指令(通过网络)决定何时执行,这期间信号处理机应当处理阻塞状态等待回答。那么通信控制器可以利用Apex提供的第二类交互方式,作为服务端实时响应SHARC的服务申请,并根据整体系统工作时序决定信号处理机的阻塞时间;同时,该方式提供每次4KB的传输量,可以用来下发工作参数和其它命令。这样既可避免繁琐的中断同步设置,又有利于软件的范也维护;而进行大指数据传输应当第一类方式。考虑到采取该方式缺乏握手机制,故应当在交互方式以及VxWorks的多任务协调与约束下进行避免数据传输发生冲突与覆盖。

3 、被动触发控制实现

3.1 阻塞式时序控制

要实现对信号处理机的被动触发控制,必须在通信控制器上建立面向SHARC阵列板的服务模块。Apex提供一个SHARC_system对象,所有的服务都基于该对象建立,包括Melbourne引导。该类中的成员函数SHARC_system::transaction的作用是初始化一个双向通信管道,客户端/服务端的交互通道都通过该通道进行。完成管道初始化之后,调用相应的成员函数SHARC_system::service_loop建立服务循环,如下面的程序所示:

/*服务循环线程*/

int service_thread(SHARC_system *sys){

int status;

printf(“service thread running.。.”);

sys-》service_loop(Timeout(ENVER));/*启动服务循环*/

sys-》exit_status(%26;amp;status); /*退出服务循环*/

exit(status);

return status;

}

利用VxWorks的任务产生函数taskSpawn(),将service_thread服务循环派生成一个独立的线程来处理SHARC的申请。当SHARC的程序退出后,通信控制器的循环也将自动终止。

由于服务端必须根据客户端提供的服务标签调用相应的服务,这就要求为SHARC_system类加载个人的服务程序。首先,定义系统标准类Service_group的继承类Custom_group。然后,在这个类当中添加自己的成员函数,即通信控制器SHARC的服务程序;同时,再定义一个向量表table[],将不同成员函数名称顺次列在其中编制成服务标签,如下所示:

Custom_call Custom_group::table[]={

/*在向量表里添加服务标签,第一个对应的标签序号为0

(table[0]),第二个为1(table),以后的以此类推*/

executCommand1,

executCommand2,

……

};

void Custom_group::executCommand1(Server_packet *pkt){

/*在这里用户写入自己的服务代码*/

}

当服务端接收到了申请后,会立刻自动调用Custom_group::call_service()。该函数的作用是读取服务标签号码,并从table[]当中取出相应的客户服务程序执行它,如下所示:

void Custom_group::call_service(Server_packet *pkt){

int tag=MINOR_TAG(pkt-》tag); /*读取申请包里的标签序号*/

if(tag》=0 %26;amp;%26;amp; tag*(table[tag]))(pkt); /*根据标签调用相应的服务*/

}

……

}

此时可将需要下达的指令装载在回复包,当客户服务程序执行完毕之后,该回复包立刻被自动发送出去,因此,可在允许信号处理机进入下一工作时序的时候将客户服务程序返回。在Custom_group类当中可以添加各项控制服务项目,例如Melbourne开机/关机、工作参数下发等等。

基于MVME2700单板机实现DSP系统实时通信控制的方案研究

3.2 非阻塞数据拷贝方式

由于这种客户/服务交互通信采用了阻塞模式,即SHARC必须等待通信控制器的回复才可以继续执行,但在某些情况下SHARC不需要等待。例如,SHARC提出申请,通知通信控制器将计算完毕的数据取走,而SHARC不必等待通信控制器将数据拷贝完毕才执行后面的计算。为了避免一直阻塞,可在相应的客户服务程序当中设置一个信号灯,当该程序被调用的时候即释放该信号灯,由信号灯驱动其它的模块进行数据拷贝,而该客户服务程序立刻返回使SHARC解除阻塞状态,如图3所示。

要实现该功能,可采取如下的程序代码

void Custom_group::executCommand1(Server_packet *pkt){

semGive(semId); /*信号灯驱动数据拷贝模块*/

return;

}

/*数据拷贝模块*/

void SharcDataCopy(void){

semTake(semId); /*等待获得信号灯*/copy_from_SHARC(localBuffer,SHARCBufferAddress,dataLength); /*从SHARC拷贝数据*/

}

通过以上代码,当SHARC提出申请后,通信控制器立刻响应该申请,并在客户服务程序当中释放信号灯。驱动数据拷贝模块向Melbourne的根部处理器提取数据,客户服务程序迅速返回,解除信号处理机的阻塞状态。

4、 结论

通过以上的步骤,MVME2700作为服务端可以随时响应SHARC的服务请求,利用阻塞特性执行相应的时序控制操作;同时,也可以执行非阻塞数据拷贝,从而在VxWorks环境下建立起通信控制器与SHARC之间完整的被动触发控制模式。实际上,也可以由SHARC作为服务端,MVME2700作为客户端,建立的方法与上述基本一致。这种模式下,阵列板的任何一块SHARC处理器均可以作为服务端,而并非仅有根部处理器。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    19265

    浏览量

    229671
  • dsp
    dsp
    +关注

    关注

    553

    文章

    7987

    浏览量

    348781
  • 控制器
    +关注

    关注

    112

    文章

    16339

    浏览量

    177851
收藏 人收藏

    评论

    相关推荐

    SBC8100单板机介绍

    SBC8100单板机介绍产品概述? OMAP3530应用处理器集成600-MHz ARM Cortex-A8核及430-MHz TMS320C64x DSP核 板载128MByte DDR
    发表于 11-19 10:46

    请教各位高手:单板机开发问题

    请教各位高手:要求开发一个低于2000元项目,在运动员训练场安装摄像头,视频通过以太网传到pc机,系统可得到运动员的x和y坐标。应用什么样的单板机或计算模块?多大内存和cpu要求?视频应用720P还是1080P?应用什么软件捕捉和解压视频?应用什么软件追踪运动员?应用什么
    发表于 11-11 11:36

    单片机与单板机的区别

    单板机的名称较早,系指将一个计算机的主要部件都放在一块电路板上的专用计算机。单板机上设备部件星罗棋布。单片机一词出现在超大规模芯片制造之后,系指将一台计算机的主要部件都放到一块芯片之中的计算机。由于
    发表于 09-25 05:02

    ATMEL MYS-SAM9X5 系列单板机(ARM926EJ-S内核)

    开发。※应用领域  MYS-SAM9x5系列单板机应用领域:便携式数据终端、汽车控制、工业控制、医疗设备、家庭自动化、自动化资讯娱乐设备、安防系统、教学仪器、测试与测量仪器等。※功能区
    发表于 10-15 15:22

    80C188单板机的资料分享

    描述RetroBrew SBC-188 3.2版(80C188单板机
    发表于 07-07 07:23

    基于unix下MVME2431单板机与单片机的通信

    本文结合中科院高能物理研究所的BEPCⅡ工程项目中控制系统的需要,介绍一下采用AT89C52 单片机控制板与MVME2431 通过 RS485 接口标准进行
    发表于 08-04 08:17 13次下载

    SBC8100单板机设计及使用指南

    SBC8100单板机设计及使用指南 SBC8100单板机为开发者使用OMAP35x系列处理器提供了完善的硬件及软件开发环境,支持linux-2.6.22操作系统及WinCE6.0操作系统
    发表于 03-09 09:27 40次下载

    单板机控制彩灯电路图

    单板机控制彩灯电路图:随着人们文化生活水平的提高,彩灯装饰用途日益广泛,要求越来越高,如图所示电路是一种利用TP-801型单板微机控制彩灯的
    发表于 12-26 19:07 1051次阅读
    <b class='flag-5'>单板机</b><b class='flag-5'>控制</b>彩灯电路图

    单板机自动复位电路图

    单板机自动复位电路图
    发表于 05-30 15:55 1170次阅读
    <b class='flag-5'>单板机</b>自动复位电路图

    DS-BC6000X工业级单板机概述

    工业级单板机
    发表于 05-28 18:02 61次下载
    DS-BC6000X工业级<b class='flag-5'>单板机</b>概述

    米尔科技推出物联网/工业4.0最佳平台MYS-6ULX系列单板机

    米尔科技近期隆重推出MYS-6ULX系列单板机平台,该产品基于NXP公司I.MX6UL/I.MX6ULL系列处理器(ARM Cortex-A7,528MHz),采用紧凑且稳定可靠的硬件设计并配套丰富的软件及文档资源,为物联网应用、工业控制
    发表于 04-27 18:58 1821次阅读

    OK3399 C单板机开源

    电子发烧友网站提供《OK3399 C单板机开源.zip》资料免费下载
    发表于 11-16 14:44 1次下载
    OK3399 C<b class='flag-5'>单板机</b>开源

    创龙科技推出全新业务-“工业单板机

    创龙科技10多年来一直专注于ARM、FPGA、DSP异构多核威廉希尔官方网站 开发,为了满足客户更多应用场景的“嵌入式工业平台”需求,创龙科技正式推出全新业务线-“工业单板机”!
    的头像 发表于 12-21 11:15 556次阅读

    e络盟现货供应新款BeagleV-Fire单板机

    e络盟 宣布其单板机产品组合增加新成员,引入了BeagleBoard新推出的BeagleV-Fire单板机。作为开源单板机领先企业,BeagleBoard致力于为更广泛的受众提供RISC-V架构。
    的头像 发表于 12-28 13:54 717次阅读

    基于模块电源的船舶集控系统嵌入式单板机电源设计

    基于模块电源的船舶集控系统嵌入式单板机电源设计 引言 某船集控系统采用SBS公司VME总线嵌入式单板机作为中央控制台主控计算机,需要供给电压
    的头像 发表于 12-17 14:43 187次阅读
    基于模块电源的船舶集控<b class='flag-5'>系统</b>嵌入式<b class='flag-5'>单板机</b>电源设计