摘要:介绍了高速HDLC数据接收/测试仪的设计实现方案。该测试仪通过使用现场可编程逻辑电路(FPGA)技术和多线程软件结构,将硬件的高速处理特性和软件的灵活性相结合。基于PCI总线的硬件接收卡将高速数据实时传送至系统缓冲区,然后调用软件进行并行数据处理,从数据流中提取出测试信息,完成接收与测试功能。
关键词:HDLC 实时数据处理 多线程
在通信系统的测试中,经常需要实时接收和处理HDLC格式数据。使用自行开发的高速HDLC数据实时接收/测试仪可以很好地保证数据处理的灵活性,用户可以根据具体的处理环境来定制测试仪的功能和性能指标。本文结合一个通信误码率测试 仪的开发过程,介绍高速HDLC数据接收/测试处理板的设计原理和结构。
1 系统组成
该高速HDLC数据接收/测试仪共分为两部分,一部分为数据接收硬件,由一块微机插卡实现;另一部分为接收终端软件,由运行于Windows操作系统平台的软件实现。硬件板卡基于PCI总线结构,使用FPGA技术将数据读写和HDLC协议解释固化于硬件平台,以提高实时处理性能,同时在终端软件上采用多线程并行处理技术减少处理延时,完成实时数据处理和指标统计。
2 高速HDLC数据接收/测试仪硬件设计
2.1 基本技术要求
(1)可接收HDLC格式数据,也可接收同步触发模式数据,其工作状态可由软件通过计算机端口进行控制;
(2)接收板可接收的最高数据速率为10Mbit/s;
(3)可将HDLC格式数据中的空帧过滤掉,也可接收所有数据帧,其工作模式由软件控制;
(4)可工作于自发自收状态,以利于调试;
(5)接收板的兼容性要好。
2.2 接收板工作原理
数据接收板原理框图如图1所示。测试数据通过RS-422电缆传送到数字接收板的数据接收端,经电平转换后,磅给FPGA处理。接收板上由接收芯片MC3486接收RS-422电缆传输的差分信号,并转换为TTL电平输入FPGA进行信号处理。FPGA产生20位地址和写信号,将8位的数据由SDRAM左端口写入,同时将工作状态反映在状态控制端口,计算机查询端口状态,产生相应的地址和读信号,由SDRAM的右端口将数据读出。为协调数据到达的不均匀性和软件读写的均匀性,对SDRAM的读写采用“乒乓式”缓冲,即将SDRAM分为高低两区,FPGA写高区时,计算机读低区;FPGA写低区时,计算机读高区。从而保证了读写高速进行且不会发生冲突。GAL16V8的作用是对端口地址高8位进行译码,以保留FPGA管脚资源。
在实现“乒乓式”缓冲读写时,具体是读高区数据(起始地址为d8000)还是读低区数据(起始地址为d90000),要通过查询方式判定。测试软件不断查询端口201h的q5,若q5为1,则查询q7和q2,若q7=1,则读高区数据,若q2=1,则读低区数据。为了保证读取的数据不掉帧,系统应能在掉帧时发出警告信息。为此,在FPGA内做一4位计数器,对帧数计数,帧计数器的值传给端口201h的最低两位q1和q0。软件中设置一参数counter,首先使counter的值与帧计数器的值相同,以后每读一帧数据,counter加1(若counter大于3,则置其为0),同时读取帧计数器的值(即q1、q0的值),与counter比较,二者不同时则发出警告信息。
接收板的状态控制端口参数列于表1。
表1 实时HDLC数据接收板端口控制参数
端口名称 | 端口作用 | 数据流向 | 功 能 | |||
201h | 状态控制 | 双向端口 | 读入时 | Q7=1,计算机读SDRAM低区 | 写入时 | Q0=0,过滤空帧 Q0=1,接收所有帧 |
Q7=0,计算机读SDRAM高区 | Q1=0,工作于HDLC Q1=1,工作于同步 |
|||||
202h | 空帧计数器 | 只读 | 对空帧计数 | |||
203h | 数据帧计数器 | 只读 | 对数据帧计数 |
读取HDLC格式的数据时,每帧需从第四个地址单元读取数据,即D8003h和D9003h;读取固定速率突发方式的数据时,每帧需从第一个地址单元读取数据。读取的每帧数据中包含有该帧数据个数的信息,通过此信息,软件决定何时读完帧数据。测试数据通通RS-422电缆传送到插卡的数据接收端,经电平转换后,送给FPGA处理。主要是将HDLC格式和固定速度突发方式的数据解调,解调后的有效数据以乒乓方式发生一高速双口RAM,计算机通过访问RAM(地址定为D8000~D9FFFh)来读取测试数据。
3 高速HDLC数据接收/测试仪软件设计
测试仪软件负责读取缓冲区数据并实时处理和显示。软件由Visual C++编写,可运行于Win95/98/2000/NT平台。软件采用多线程并行处理构架,如图2所示。
3.1 界面线程
界面线程负责显示数据处理结果和用户交互操作。界面线程将数据处理的结果实时显示出来,包括统计结果、数据源码和数据段信息等测试内容。
3.2 缓冲区线程
缓冲区线程负责将该缓冲区内的数据及时读取并锁定至软件缓冲区,并且将数据进行初始处理。
在整个测试仪软件中,缓冲区线程负责主要的数据处理工作。在缓冲区线程中,一个处理循环在不停运行,直到界面线程的暂停和终止命令发生时停止。在该处理循环中,不停地对端口201h的q5位进行查询,以判别是否有数据到达。如果有数据,则判别缓冲区位置,并将硬件缓冲区的数据及时读至软件缓冲区,等待后续处理。为协调高速数据和后缓数据处理之间的时间矛盾,软件采用三级缓冲:第一级缓冲通过板卡将数据写入至系统内存;第二级缓冲将系统内存管理的硬件缓冲缓冲区数据移至软件缓冲区;第三级缓冲将软件缓冲区数据移至处理缓冲区。
为提高数据处理灵活性,测试仪软件提供定制缓冲区功能。通过该功能,操作者可以根据实际接收的数据情况来灵活配置测试仪。对于高频度短数据,采用较大缓冲区;反之,对于较低频度长数据,采用较小缓冲区。这样,可减少数据缓冲的时间消耗,提高实时性。
3.3 数据处理线程
数据处理线程负责根据数据协议对原始数据进行拆包、信息处理和实时统计。
对于HDLC帧格式数据,HDLC协议层数据处理已在硬件FPGA中完成,输出至缓冲区的数据直接就是透明数据。此时,数据处理线程的主要处理对象就是存于数据处理缓冲区中的数据。根据数据协议,测试仪软件首先将数据组合帧人原始数据中取出,并分离出组合帧中包含的总帧长、包含子帧数等信息。然后根据这些信息将组合帧拆分成子帧,再根据数据协议将内部包含的通信信息取出,并调用实时统计模块进行指标统计。数据处理流程如图3所示。
本文介绍的高速HDLC数据接收/测试仪具有可靠性高、运行性能稳定、功能定制灵活等优点。以它为主要框架的通信误码率测试仪已经成功应用于某卫星地面站设备的出厂测试中。在测试过程中,程序稳定可靠运行,同时,基于Windows的图形界面提供了充足的信息显示和良好的人机交互接口,提高了测试结果的可视性。今后,测试仪将从硬件和软件两个方面进一步提高响应能力,提高数据吞吐效率,使之更好地满足实际使用要求。
上一篇:一种扩散硅压力式密度静态测量系统
下一篇:采用数字信号处理器TMS320C6201构成的视频跟踪警戒装置
- 热门资源推荐
- 热门放大器推荐
- Allegro MicroSystems 在 2024 年德国慕尼黑电子展上推出先进的磁性和电感式位置感测解决方案
- 左手车钥匙,右手活体检测雷达,UWB上车势在必行!
- 狂飙十年,国产CIS挤上牌桌
- 神盾短刀电池+雷神EM-i超级电混,吉利新能源甩出了两张“王炸”
- 浅谈功能安全之故障(fault),错误(error),失效(failure)
- 智能汽车2.0周期,这几大核心产业链迎来重大机会!
- 美日研发新型电池,宁德时代面临挑战?中国新能源电池产业如何应对?
- Rambus推出业界首款HBM 4控制器IP:背后有哪些技术细节?
- 村田推出高精度汽车用6轴惯性传感器
- 福特获得预充电报警专利 有助于节约成本和应对紧急情况