APP下载

基于高性能DSP 平台及其开发环境的SRIO 模块的测速方法及应用研究

2020-08-13陶子然曹文君王沁喆叶文静

机电产品开发与创新 2020年4期
关键词:门铃板卡信号处理

陶子然, 曹文君, 王沁喆, 叶文静

(中国电子科技集团第三十八研究所, 安徽 合肥 230000)

0 引言

随着现代信息技术的高速发展, 数字信号处理在军用及民用领域都取得了极大发展和广泛应用, 同时日益增长的信号处理需求也对整机、 分机平台提出了越来越高的要求。 特别是在航天航空、图像处理、AI 等高科技前沿领域,信号处理实时性高,数据量大,数据交互频繁及信号处理算法繁杂度高, 传统的解决方法无法满足该类需求的情况下,基于DSP 和FPGA 的协同处理架构主流。这一系统较传统方法显著提升了系统的运算速度和数据处理能力。 处理器之间主要采用的高速通信接口包括SRIO、PCIe 等。 RapidIO 技术是一种高带宽、低延迟的基于包交换的开放式互联技术标准,2001 年由Freescale 公司发表正式规范,主要应用于嵌入式系统的高速互联,支持芯片到芯片以及板卡到板卡间的高速通信。 高速串行输入输出SRIO (Serial RapidIO) 作为新一代高速通信协议,具有非常优异的高带宽、低延迟、低功耗等特性。 本文提出了一种基于高性能DSP SRIO 模块的测试速率的方法,DSP 在信号板板内与DSP 通信以及通过交换芯片与板间的FPGA 通信的实例研究了相关研究方法。 通过该方法,可以较为准确的测算SRIO 模块的通信速率,所测结果也为架构模型提供了数据支持。

1 SRIO 模块简介

RapidIO 技术作为一种高带宽、低延迟的基于包交换的开放式互联技术,可以满足高性能嵌入式系统的需求,支持芯片到芯片以及板卡到板卡间的高速通信。 多用于多处理器、存储器及通用信号处理平台间的高速交互。 其主要特点包括灵活的系统结构,允许点对点传输;带错误检测的鲁棒传输;可拓展的频率和接口宽度;非软件密集型操作;低开销的高带宽互联;低引脚数、低功耗、低延迟。

2 硬件平台及驱动程序

基于SRIO 的驱动程序包括SRIO 模块初始化功能,DMA 数据传输功能,DOORBELL 中断功能,MESSAGE 数据传输功能和维护包传输功能。 本实验的硬件平台为基于高性能DSP 的某两型板卡,信号处理板与接口板。平台架构如图1,2 所示。

图1 接口板结构图

图2 信号板结构图

为了实现通信测速功能, 实验中涉及到DSP 端的SRIO 模块驱动编程设计主要包含以下几个方面:

(1)SRIO 模块工作模式设置。 在开发环境ECS 中,手动创建bsp 包后进入PLL 配置界面,在图形化界面中配置内核频率,在勾选相应的SRIO 控制器后,可以配置通道数和通道速率。 本文采用4x,5G 模式设置,DSP 工作于中断模式下与FPGA 进行互连通信。 在涉及到DDR 作为数据传输对象时,需设置地址映射表,不同地址映射表对应不同的索引方式, 索引方式可以选择38 位AXI 地址是如何组成的, 可以选择SourceID 或者SourceAddr,“索引号来源” 则选择38 位AXI 地址的组成方式, 如选择默认方式RIO_Addr[33:30]/SourceID[3:0],则是将SourceID 放在低4位,将RIO_Addr 放在了高34 位,实际的地址一般为32位,34 位RIO_Addr 就是将32 位的地址左移两位。AXI 地址高18 位根据需要填写。 例如若是映射到DDR0,DDR0 的基地址为0x80000000 (32 位), 将其左移2 位即得到34位RIO_Addr,这就是AXI 地址的高34 位,再加上低4 位的SourceID,就组成了完整的AXI 地址。 0x80000000(32 位)左 移 两 位 是 0x200000000 (34 位), 即 2 进 制0b1000000000000000000000000000000000,取其高18 位,即0b100000000000000000,即0x20000,将0x20000 填写在窗口中即可,也可以将0x200000000(34 位)直接右移16 位,即可得AXI 地址高18 位。

(2)SRIO 模块初始化。

初始化函数如下:

status=srio_driver_initialize(SRIOCTL,NULL);

status=srio_driver_open(SRIOCTL,NULL);

如果两个函数的返回值status 均为0,则表明DSP 与目标元件link 成功, 通常使用status|= srio_driver_initialize(SRIOCTL,NULL);来多次确认返回值的状态,保证其没有出错。

(3)交换芯片的配置。 对于直连的通信架构来说,无需对交换进行配置。在目前主流系统架构中,交换是必不可少的。对于存在交换的系统,需要根据交换的类型对其进行相应的路由配置。 本文的实验平台所使用的交换为1800,1800 配置函数为:

cps1800(slave_addr);

程序中对1800 的路由的配置在下图所示, 程序将0x11 路由到port8, 将0x12 路由到port4, 将0x21 路由到port1,将0x22 路由到port9,将0x31 路由到port7,将0x32路由到port0,将0x41 路由到port3,将0x42 路由到port11。可以根据实际使用情况进行修改。

图3 1800 路由配置

(4)读写驱动函数配置。 本文使DSP 采用DMA 模式与FPGA 进行通信,DMA 模式适合在数据量较大的传输中使用, 主设备可以主动对从设备进行读写。 SRIO 在DMA 模式中可以实现DDR 写读DDR,DDR 写读内存,内存写读DDR,内存写读内存。 DMA 模式中发送方需要配置的参数主要有:dma_param.dest_id(DestID)、dma_param.axi_37(AXI 地址37 位)、dma_param.axi_36_34(AXI 地址36~34 位)、dma_param.dma_seq (DMA 通道, 赋值0 即可)、dma_param.src_addr(源地址)、dma_param.dst_addr(目的地址)、rw_args.count (传输数目, 内核传输数目最大256K,DDR 传输数目可达1M,一个DMA 的数据包的最大数据量为256K 字)。

读写驱动函数设置如下:

srio_driver_write(deviceID,*ARG);

srio_driver_read(deviceID,*ARG);

(5)方案优化函数。 本文DSP 端通过门铃中断计数,在此过程中DSP 端需读取门铃FIFO,否则将造成DSP 无法进入MISC 中断程序的情况。 在读取周期计数时,数据量过大时会造成计数寄存器CC0 溢出的情况,需引入周期计数寄存器CC1 进行补位计算,计算公式为:

Time=(val_high_CC1*4294967296)+ val_low_CC0。

优化函数如下:

FIFO_read(deviceID,*ARG);

Cycle_get(void);

3 实验方法与验证

本文通过信号板对板间DSP 芯片和FPGA 通过SRIO 通信进行测试,记录每次数据传输首尾两个门铃中断之间的周期,多次测量取平均值。具体软件流程图如图4 所示。

图4 算法软件流程图

将信号板和接口板依次插入机箱对应槽位。 分别将接口板和信号板通过JTAG 下载器连接到测试计算机,查看信号板上位机IP 地址, 设置为10.100.39.39。 信号板、接口板上电,接口板上FPGA 和信号板上DSP 分别加载测试例程。加载完成后,DSP 程序运行,完成1800 交换芯片配置。DSP程序进入while 循环等待接收门铃中断和数据。 同时设置FPGA 程序VIO 的参数为vio_cnt_1000 为10000000,loop_cnt 为100,delay_time 为2。 测试例程包长、包数可控,典型包长为256B,每次发送100 包,循环10000000 次,传输指定格式的数据为从0 开始的递增数列。 FPGA 端测试程序发送数据的流程为:先发送一个DOORBELL 包表示开始发送, 发送25KB 的递增数据后延时4 个时钟周期再发送一个DOORBELL 包表示一次发送结束,再发送下一个25KB 递增数,依次发送10000000 次25KB 共约238.41GB 递增数据。 在接收端,DSP 每隔100 包数据,记录下两个门铃间的周期,在ECS变量窗口显示每个门铃所对应的当前周期数, 同时显示通信速率。

4 实验结果及波形

实验每次连续测试10 次,每次测试包数不小于一亿包,取接收端输出速率平均值作为板间SRIO 速率。 实验结果如表1 所示。 FPGA 实验波形如图5、6 所示。

表1 板间FPGA 与DSP 通信速率

图5 FPGA 数据波形图-1

图6 FPGA 数据波形图-2

5 结论

本文基于高性能DSP 平台的SRIO 接口模块建立DSP 与FPGA 之间的通信系统测算速率, 并提出相应的准确计数方法。在4x,5G 模式下,SRIO 模块4lane 通道整个链路的传输瓶颈不大于4×5=20Gbps 的速率(即链路速率最大理论值),在计算SRIO 包的开销以及8b/10b 的转换开销之后, 根据有效数据负载速率的通用计算公式:V有效负载最大速率=链路速率最大理论值×0.8(8b/10b 转换且包括两级开销)等于4Gbps。实验统计结果为单次100包周期为16418, 速率计算公式为100×256×8/(16418×2),经计算在该硬件平台SRIO 模块平均写速率为6.23Gbps,单通道平均速率为3.11Gbps。 由DSP 读数的平均读速率为3.29Gbps。 读写速率相当, 且达到理论最大有效速率的80%,表明该系统能够高速传输大批量数据,当数据量较大时,读写速率同步提升,通信开销占比总传输时间比例减小,整体速率超过12Gbps,传输效率较为理想。

猜你喜欢

门铃板卡信号处理
车载控制器CVRE板卡显红故障分析及处理
锤子门铃
《信号处理》征稿简则
《信号处理》第九届编委会
《信号处理》征稿简则
《信号处理》第九届编委会
门铃前的守候
基于组态王软件和泓格PIO-D64 板卡的流水灯控制
一种基于光纤数据传输的多板卡软件程序烧写技术
一种通用模拟量及开关量信号采集板卡的设计