微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > FPGA和CPLD > 适于底层协议栈开发的数据采集与仿真系统

适于底层协议栈开发的数据采集与仿真系统

时间:11-09 来源:互联网 点击:
2 仿真系统

仿真系统使用采集系统采集到的数据,再现通信终端中的协议栈运行状态,便于开发者随时检查程序错误,对程序进行调试。

2.1 系统框架

要想再现底层协议栈运行状态,除了保证协议栈整体输入、输出一致外,最大的难度在于系统的定时,要能够准确再现各种事件的发生时刻。基于软件无线电技术的数字通信系统大都采用过采样方式,AD/DA速率都比较高而且稳定,因而底层协议栈也大多以AD/DA的输入、输出中断作为系统定时。当通信终端作为接收机时,底层协议栈需要以AD采样数据作为其他部分(信道估计与均衡、解调、信道解码等)的驱动数据;作为发射机时,DA输出数据是底层协议栈的最终输出结果,需要仿真程序进行验证。故而仿真程序可以采用AD/DA中断来划分程序运行的最小时间片,其他各种事件的发生都通过中断个数来计时,仿真程序通过判断AD/DA数据的个数调用各程序函数来再现底层协议栈运行状况及数据流向。这样就可以在不增加开销的情况下,尽最大可能保证仿真程序与实际DSP中运行的协议栈一致,方便再现问题。

2.2 输出数据

根据1.1节所选择的数据采集点,需在DSP的底层协议栈代码中输出仿真时所用的数据: (1)需要输出的为前端AD/DA数据,以及底层协议栈与上层协议栈之间的交互数据,这是底层通信协议栈接收、发射信息时所需的输入数据与最终的输出结果; (2)其他外围设备产生的中断和输入数据也会影响底层协议栈流程,是仿真时所必须的部分;(3)底层协议栈各任务挂起、运行、结束等状态变化需要输出,以保证仿真程序运行时刻与实际情况一致。另外,在2次AD/DA中断之间会发生多次变化的全局变量也需要输出,以弥补时间片划分的不足。

2.3 数据解析

1.5节中所存储的接收数据不方便直接用于仿真,需要进行格式转换。根据2.1节中所述系统框架,所有事件通过AD/DA数据计时,故而除AD/DA数据外,其他类型数据需要记录AD/DA数据个数信息,作为时间戳,因而可将所有数据分为两大类:AD/DA数据和非AD/DA数据。为仿真方便,将这2种类型数据分别存放于2个文件中。在解析数据时,需要将1.3小节中为了与CY68013A兼容而通过FPGA拆分开的2个16位数据重新合并为1个,并将不同类型的数据分开。AD/DA数据一般长度固定,由AD/DA转换器分辨率(位数)而定,例如,AD/DA数据为16位,每次中断输出1个数据,则解析后的数据格式如表2所示。



非AD/DA数据根据程序需求,长度不固定,可在协议栈程序输出数据中包含长度信息,也可在接收程序与输出程序中提前规定好数据长度。例如,非AD/DA数据以字为单位,数据长度为N,则解析后的数据格式如表3所示。



由于底层协议栈需要兼顾外围硬件控制,各种外部中断比较多,很可能会打断数据输出,因而在解析数据时,需要考虑各种数据之间的嵌套。为此,可以对每种数据采用单独的缓冲区,待解析到1条完整数据之后再存入文件中,同时还要保证文件中各种非AD/DA数据按照发生时间的先后顺序排列。其流程如图3所示。



2.4 系统仿真

系统仿真之前,首先要将运行于DSP中的底层协议栈代码转换为PC机上可运行的代码,一般DSP大多采用C语言和汇编语言相结合的方式进行开发,C代码基本上不需要进行大量修改,而汇编代码需要根据其工作原理,转译成C代码。系统仿真时采用2.3节中解析后的数据文件作为输入,按照2.1节定义的仿真系统框架,以AD/DA数据为驱动,通过判断非AD/DA数据的发生时刻(AD/DA数据计数值)来调动底层协议栈各部分任务运行,以达到再现协议栈运行状况、调试程序的目的。仿真流程如图4所示。有些硬件操作需要底层协议栈控制,仿真时可以按照“[发生时间] 硬件操作内容”的格式写到文件中作为仿真程序的输出。这样通过查询输出文件,各种硬件操作的先后关系一目了然,更形象化,有利于发现硬件控制上的逻辑错误。

本文设计了一种专门用于底层协议栈开发的数据采集与仿真系统,利用USB高速传输特点以及物理连接的便利性,采用CY68013A进行数据传递,充分利用其GPIF资源,使用FPGA进行格式转换。文中对仿真系统的整体框架和数据转换细节进行了详细说明。该系统可用于各种类型协议栈调试,便于追踪、再现问题。经过实验验证,系统可承受100 Mb/s的实时数据流,在数字集群手持终端开发中进行了广泛应用,不仅降低了协议栈的开发难度,而且缩短了开发周期,有很高的实用性。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top