- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
适于底层协议栈开发的数据采集与仿真系统
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的实时数据流,在数字集群手持终端开发中进行了广泛应用,不仅降低了协议栈的开发难度,而且缩短了开发周期,有很高的实用性。
作者:黄建尧 刘开华 李 琨 来源:电子技术应用
上一篇:在FPGA中实现源同步LVDS接收正确字对齐
下一篇:接口协议智能编解码方法研究