首页 | 期刊简介 | 编辑部 | 广告部 | 发行部 | 在线投稿 | 联系我们 | 产品信息索取
2024年11月21日星期四
2011年第01期
 
2010年第12期
 
2010年第11期
2010年第11期
 
2010年第10期
2010年第10期
 
2010年第09期
2010年第09期
 
2010年第09期
2010年第08期
 
2010年第07期
2010年第07期
 
2010年第06期
2010年第06期
 
2010年第05期
2010年第05期
 
2010年第04期
2010年第04期
 
2010年第03期
2010年第03期
 
2010年第02期
2010年第02期
 
2010年第01期
2010年第01期
 
2009年第12期
2009年第12期
 
2009年第11期
2009年第11期
 
2009年第10期
2009年第10期
 
2009年第9期
2009年第9期
 
2009年第8期
2009年第8期
 
2009年第7期
2009年第7期
 
2009年第6期
2009年第6期
 
2009年第5期
2009年第5期
 
2009年第4期
2009年第4期
 
2009年第3期
2009年第3期
 
2009年第2期
2009年第2期
 
2009年第1期
2009年第1期
 
2008年第12期
2008年第12期
 
2008年第11期
2008年第11期
 
2008年第10期
2008年第10期
 
2008年第9期
2008年第9期
 
2008年第8期
2008年第8期
 
2008年第7期
2008年第7期
 
2008年第6期
2008年第6期
 
2008年第5期
2008年第5期
 
2008年第4期
2008年第4期
 
2008年第3期
2008年第3期
 
2008年第2期
2008年第2期
 
2008年第1期
2008年第1期
基于FPGA的误码检测器的设计与实现

Design and Implementation of Error Code Detector Based on FPGA

兰州交通大学自动化与电气工程学院 张友鹏 王 飞



引言

在信息高速发展的今天,通信无疑己经成为人们生活中不可缺少的部分。尤其是数字通信,它以抗干扰能力强、高质量的远距离传输以及便于与计算机连接、易于加密等优势成为现代信息传输的重要手段。随着大规模集成电路的广泛应用,数字通信有了突飞猛进的发展,与此同时,其传输的可靠性则显得尤为重要。误码检测器就是通过检测数据传输系统的误码性能指标,对其传输质量进行评估。误码率是反映数据传输设备及其信道工作质量的一个重要指标。所谓误码率是指传输过程中发生误码的概率,实际工程中的计算方法是取一段足够长的传输时间,求这段时间内发生误码的码元个数与传输的总码元数之比。误码率的大小由通路的系统特性和信道质量决定,要定量了解系统的运行质量,就需要对其误码率进行测量。

本文提出了一种新型误码检测器的设计方法。它采用了美国Altera公司的Cyclone系列的FPGA(EP1C6-144T)及相关的硬件外围电路来实现误码检测功能。主控计算机可以通过FPGA内建的异步串行接口(UART)配置误码检测器并读取误码信息,由计算机完成误码分析。同时,该方案还提供了简易的数据显示,可以在脱离计算机的情况下,进行通信系统工作性能的定性分析。


系统的组成原理

数字通信系统的误码检测器分为近端测试和远端测试两种方式,如图1所示。

图1(略)

从逻辑图中可以看出,误码检测器的工作过程大致可以分成以下几个步骤:发送部分的作用是发出标准的数据信号,这个标准的数据信号就是一组组的标准数据代码,并使其通过待测通信系统构成的信道;接收部分从收到的码流中提取位同步信号,并产生与发端同频同初相的代码序列;将收到的数据流与本地产生的数据流逐位比较,并进行误码统计;根据误码码元数和接收到的总码元数,计算出相应的误码率,并输出误码显示。误码检测器整体框图如图2所示。

图2 误码检测器的系统框图(略)

图2中条形码发生器产生m序列码;位同步模块的作用是从接收到的码流中提取位同步时钟;序列同步模块实现本地码流序列和接收到的码流序列的同步,并源源不断地产生本地序列;误码检测和显示模块的作用是将本地码序列和接收到的数据码流序列进行比较,检测是否发生误码,如果检测到误码,就将误码个数加1,最后由总码元数和相应的误码码元数计算误码率,并在显示模块中显示出来。如果误码率超过规定阈值的时间达到一定长度,误码检测和显示模块将重新通知序列同步模块进行再同步。


误码检测器的逻辑结构

发送部分

发送部分实质上是一个测试码产生器,它的核心部分是一个m序列伪随机信号发生器。许多通信理论都建立在这样一个假设上,原始的信源信号为“0”、“1”等概且相互独立的随机数字序列,同样,实际数字通信系统的设计也是基于这个假设。为了使测试结果尽可能真实地反映系统的性能,发送端需要采用某种序列作为测试数据,这种数据序列“0”、“1”分布最接近实际情况。这类码序列最重要的特征应是具有近似于随机信号的性能,也可以说具有与噪声相似的性能,但是真正的随机信号和噪声是不能重复再现和产生的,所以只能产生一种周期性的脉冲信号来近似随机噪声的性能,即伪随机序列。本方案中采用的伪随机序列是m序列,这是由带线性反馈的移位寄存器产生的周期最长的一种序列。虽然是周期信号,但它具有类似于随机信号较好的自相关特性。根据ITU-T的建议,用于数字传输系统测量的m序列周期是2 15 ?1=32767,其本原多项式建议采用x 15 +x 14 +1。按照该建议设计的带线性反馈、移位寄存器组成、2 15 -1位的m序列发生器,用FPGA实现时使用原理图的方法输入后编译成一个模块。

接收部分

接收部分主要由位同步模块、状态同步模块、误码检测和显示模块组成。首先,位同步模块用于提取和跟踪位同步时钟,采用微分整流型数字锁相法。通常的想法是按照位同步原理图搭建硬件电路来实现,但基于FPGA可编程的特点,设计中采用了VHDL语言编写模块的方法实现。设计摒弃了传统的扣除脉冲和附加脉冲而不改变分频值移相 的方法,而是将模N分频器和控制电路合并为一个可变模的分频器,通过减小和增大分频值来达到扣除和附加脉冲的作用。输入码元经过位同步基准提取电路、提取位同步基准,送到可变模分频器中,在进行相位比较后,调整分频器的模值,最后在本地振荡器的作用下输出位同步脉冲。实现的框图如图3所示。

图3 位同步模块框图(略)

1)位同步基准提取包含了输入信码的边沿信息,采用微分整流器提取位同步基准。为了充分利用FPGA的内部资源,对原理电路做了改动,采用一个D触发器外加一个异或门来提取输入信码的边沿信息。以上电路可以检测到l→0、0→1的跳变,并输出一个窄的同步基准脉冲。值得注意的是,高频时钟信号的频率应远高于基带码元的速率。

2)相位比较器位同步脉冲要求能在最佳判决时刻对接收码元进行抽样判决。在一般接收的方式下,最佳判决时刻是在码元的中间位置抽样判决。设码元速率为f b ,本地振荡器频率为Nf b ,即可变模分频器的 初始分频值为N 0 。在一般接收的方式下,当位同步基准到来时,如果读取的分频器计数值为N/2,则判为同步状态;大于N/2时判为超前状态;小于N/2时判为滞后状态。超前状态时应增大分频值,滞后状态时应减小分频值,经过不断调整可变模分频器的值,最后达到相位同步。

3 )本 地振荡器与可变模分频器规 定 了本地振荡器的频率f osc =Nf b ,因此 选择本地振荡器的频率实际上就是 选 择合适的分频值,分频值的选取则与同步的精度 有关。设f b =1200b/s ,

本地振荡器 时钟为12MHz,若取 N=f osc / f b =10000,则同步精度较高,但是这将导致同步建立时间 变长,且需设计一个14位长的可变模 分 频器(计数器),使设计占用FPGA的资源较多。可以在可变模分频器 前加一个定模分频器,这里设计一个模为100的定模分频器,则可变模分频器N=100,此时只需设计一个7位长的可变模分频器。此时同步精度有所降低,但节省了资源,同时也缩短了同步建立时间。

其次,状态同步模块实质上是为本地序列和接收序列的状态同步而设置的。由于m序列是周期序列,所以本地序列和接收序列应该以一个周期的同一位置为起点开始比较。该模块的作用就是在序列比较前进行序列同步。常见序列同步方法有滑动相关法和序列相关法等,但是这些方法都有实现结构复杂、同步时间长等缺点。为了使误码检测器能在不知发端序列发生器的初始状态的情况下实现序列的快速同步,可以用序列同步模块中的电路来实现。由于m序列的下一存储器状态组合仅取决于当前的状态组合,启动测量时开关接到A点,来自待测系统的信号灌入到本地m序列发生器,一开始是个开环系统。当15个移存器存满以后,这时开关控制 电路将开关转换到B点,使本地码形发生器处于闭环状态,进行正式测量。由于m序列的下一状态仅取决于当前状态,所以如果最初接收到的l5个码元都是正确的,那么就认为达到了预同步。为了防止假同步,规定如果误码检测模块检测到的误码值在连续10个码元周期内都没有增加,那么就认为序列同步,否则需要重新进行同步操作,使开关再次接到A点,重复上述过程。采用这一方法可以大大缩短序列同 步所需的时间。

最后,误码检测和显示模块由误码计数器,单片机和显示电路组成。在同步的情况下,误码计数器开始计数。每隔1S就把计数器的计数值送入单片机中,由单片机完成误码率的计算,并通过译码显示电路将结果显示出来。如果误码率连续超过预先设定的阈值的时间达到10S,就可以认为是发生了失步,单片机就通知开关控制电路调整序列同步模块的开关,重新进入序列同步过程。


结束语

本文以FPGA为核心部件设计误码检测器,这样使得误码检测器具有更好的可移植性和再升级能力。FPGA的具体实现采用目前流行的VHDL编写,单片机的控制部分由C语言编写。该误码检测器具有体积小巧、成本低廉以及可拓展能力强等特点,它的创新之处在于可以自启动的m序列发生器、位同步模块和序列同步模块。本文中的误码仪还可以改进一下,单片机的工作可以由在PC上编写专用的程序来完成,这样算出来的误码率更加准确,同时可以把误码率以软件面板的方式直观地显示出来,省去显示电路。随着该误码检测器外部设备的不断完善和改进,它将为更多的专业用户提供更全面、更优质的 支持与服务。

《世界电子元器件》2007.10
         
版权所有《世界电子元器件》杂志社
地址:北京市海淀区上地东路35号颐泉汇 邮编:100085
电话:010-62985649
E-mail:dongmei@eccn.com