集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1013|回复: 0

基于FPGA的误码测试仪

[复制链接]
羽蒙 发表于 2014-5-15 11:21:52 | 显示全部楼层 |阅读模式
在数字通信系统中,为了检测系统的性能,通常使用误码分析仪对其误码性能进行测量。误码分析仪给工程实际应用带来了极大的便利,比如它有丰富的测试接口和测试内容,并能将结果直观、准确的显示出来。但是它的价格昂贵,并且通常需要另加外部辅助长线驱动电路才能与某些系统接口适配。这些都严重的制约了通用误码仪在实际中的应用。
基于工程的需要和实际应用中的困难性,本文提出一个基于FPGA的多功能误码测试方案。芯片采用Altera公司的ACEX1K家族的EP1K50。
误码测试
该误码仪由发送端、接收端,以及接口模块等部分组成。发送端产生测试的比特流,作为通信系统的信源数据通过接口模块发送出去,另外它还有误码插入功能;接收端模块从数据接口中接收通信系统输出的比特流,并将它与本地产生的,与发端形式相同的比特流进行比较,进行误码统计,从而完成误码测试功能。
发送端
在发送端要产生替代通信信源的码序列,那么究竟应该选择什么样的码作为测试码呢?这类码序列的最重要的特征是具有近似于随机信号的性能。也可以说具有噪声近似的性能。但是,真正的随机信号和噪声是不能重复再现和产生的。所以只能产生一种周期性的脉冲信号来近似随机噪声的性能,这称之为伪随机序列或PN码。本方案中就采用m序列作为测试码,虽然它是周期信号,但它具有类似于随机信号较好的自相关特性。
发送端另外一个重要的功能是实现误码插入。也就是人为的在发送序列中插入已知插入频率的误码信号,然后在接收端检测这些误码,最后可以将检测的结果与发送端已知的插入频率进行比较,以判断通信系统的误码性能。这也是检测通信系统性能的重要方法之一。在此可以通过一个受时钟控制的反向器实现这一功能。将传输的某一个码通过反向器,也就是强制它变为一个比特的误码,改变反向器的时钟控制信号就可以实现对误码插入率的控制。
接收端
接收端实际上可以分成三个功能子模块:本地m序列发生子模块,同步子模块,误码率计算子模块。
本地m序列发生子模块的结构与发送端相似,只是将接收到的连续r位码长的序列(其中r为发送端m序列发生器的级数)置入本地m序列寄存器中,作为其初始状态,并且收发双方已同步于这个状态,由前面对m序列的讨论知道,如果两个具有相同逻辑结构的m序列发生器在某一时刻寄存器状态相同,则由这两个m序列发生器所产生的数字数据流保持同步。这样在本地就可以产生一个与发送端结构相同且比特对齐的m序列了。
同步判断是进行误码统计的先决条件,只有对接收到的码序列与本地码序列不断地进行同步判断,确定收、发端处于同步状态,那么误码统计才有意义。在通信系统中同步的方法有很多种,但由于对于误码测试仪,发送端并不是真实的随机信息,在接收端只要确定了m序列的级数和某一时刻的寄存器状态,就能在后续的时间里产生出与发送端同步的m序列。所以通信系统中通常采用的如滑动相关法,匹配滤波法,插入导频法等方法在这里并没有用。
很容易想到,如果接收端截取的N位码序列中包含有误码,则由此产生的本地序列与发端是不同的,那么此后进行的误码统计就是毫无意义的,因此对误码测试仪收发双方进行严格同步的意义是为了避免由于将接收到的含有误码的状态作为本地初始状态而造成的“假同步”。同步判别的状态转移如图2所示。
实现了上述功能的同步模块在实际应用中已经能够保证收发双方的同步问题了,但是考虑到实际系统的处理能力及处理性能,还有必要对他做进一步的优化。观察上述系统不难发现,同步模块一旦探测到接收到的误码个数超过了预设的判决门限就认为收发双方不同步,而重新进行同步判定,这种处理方式不仅降低了误码仪对突发错误的处理能力,更严重的是会导致接收端进行反复同步,从而大大降低了处理的效率。而实际上这种由突发错误造成的“反复同步”是没有必要的。所以在实际的设计中我们又纳入了“同步保护”机制。有同步保护的状态转移如图3所示。
由图3可以看到,有同步保护的同步判别状态转移图只是在原有的四个状态的基础上增加了一个失同步检查态,增加这个状态的目的是为了在同步计数的过程中,如果有短时的大量突发误码,并不立即指示时同步信号,而是进行失同步检查,如果在后续的连续几个检测周期内都有大量的误码,那么可以判断收发端已经失同步了,立即给出失同步报警信号。此时有必要对本地m序列发生器重新加载,重新同步;而如果短时的大量误码只是由于突发误码造成的,后续的几个连续检测周期内接收端的误码并没有超过判决门限,那么就继续进行同步计数,没有必要重新进行同步判定了。
在同步模块中,判决门限的设定与采用的m序列的周期,以及误码测试的准确性要求有关。
当收发端已经判断同步以后,只要将接收信号与本地的m序列流进行同步的串行比较就可以统计误码了。误码率的计算常常又需要进行除法运算,要在FPGA中或其它的可编程逻辑器件中实现除法运算通常要消耗掉大量的逻辑资源,可以采用估算的办法大致的估计出误码率。具体的方法是:在进行测试的时候首先设定一个统计周期,对传输的码元进行一个统计,例如设定统计周期为100M信号。然后对这100M传输信号进行误码统计,给定一系列判决门限,在每个周期结束的时候,将误码统计结果与判决门限进行比较,得出误码率量级,例如:如果误码个数在5 到50 之间,则认为误码量级为10-7,在50 到500之间,就认为误码率量级为10-6,以此类推。这样估算不可避免的会造成真实误码率的偏差,但是它不仅节约了大量的逻辑资源,而且并不影响工程实际中对误码量级的判断,因此是完全可行的。
接口模块
接口模块主要是为了与通信系统传输形式相匹配,如常用的RS-232接口或RS-485接口。由于采用FPGA实现整体功能,哪怕是对非标准信道进行测试,接口形式也易于扩展,而且还有利于系统的集成化,避免了通用误码仪的外加辅助长线驱动器。
结语
在数字通信系统中,误码仪的使用是很普遍的,而现今的通信系统大量采用FPGA作为系统的核心控制器件,将物理层上的各协议层的功能集中在FPGA内部实现。本文提出的误码测试方案在一片Altera公司的EP1K50芯片上进行了试验验证,大约需要消耗1000个逻辑单元,只占到整个芯片资源的36%。今后还有很大的扩展空间。设计的仿真波形如图4和图5。另外本测试方案还可以作为某些系统的嵌入式模块,有利于系统的性能调试。■
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-12-24 00:59 , Processed in 0.053891 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表