>
首页 » 业界动态 » 基于FPGA的误码仪内核设计

基于FPGA的误码仪内核设计

作者:李斌,吴友宇  时间:2007-05-01 09:08  来源:

摘要:实现了一种基于FPGA的误码仪内核设计,利用FPGA芯片内部的PLL提供高速全局时钟,使用硬件编程语言VHDL编程实现了传输速率在1~20Mb/s内分段可调,29-1位、215-1位、223-1位3种序列长度的伪随机码码型可选,可手动发送误码以及智能失同步置位的误码检测等误码仪主要功能,并在最后给出了仿真结果。

关键词:误码仪;FPGA;VHDL;伪随机码

引言

数字通信系统通信质量的好坏通常由传输信道的误码率(BER)来衡量,如10l2个数据中有一个误码,则BER(误码率)为1×10-12,而如何快速准确地检测到传输信道的误码率就成为所需要解决的问题。误码仪主要由信源收发模块、液晶显示模块、打印输出模块和键盘控制模块组成。通过模拟收发通信信道数据来检测通信信道的误码率,并将检测的结果通过液晶屏显示出来或者通过打印机输出,从而得以评估待测通信系统通信质量的好坏,是新建网络检测评估以及网络故障分析的必备工具。

现场可编程门阵列(FPGA)是当今应用最广泛的可编程专用集成电路之一,特别适合于产品的样品开发与小批量生产,从而大大缩短了产品上市时间,降低了开发成本。此外,FPGA还具有静态可重复编程和动态在系统重构的特性,使得硬件的功能可以像软件一样通过编程来修改,这样就极大地提高了电子系统设计的灵活性和通用性[1]。而硬件描述语言(HDL)是一种快速的电路设计工具,其功能涵盖了电路描述、电路合成和电路仿真等3大电路设计工作。VHDL是HDL的一种,因其简单易懂而被广泛使用。因此,考虑到这些因素,笔者采用VHDL硬件编程语言对FPGA进行编程,实现了误码仪的收发模块设计,也就是误码仪的核心模块设计,功能包括模拟收发通信信道数据以及码型选择和重置等,为误码仪的硬件实现提供了基础。


设计思路

设计任务
笔者设计的内核实现的主要是误码议的信源收发模块。设计的内容包括:采用串行数据输入输出格式以适合多种信道传输;数据速率通过在芯片内设计整数分频器对20Mb/s的时钟分频,使得发送数据速率在1~20Mb/s内分段可调,可调频率为20/nMHz(n=1,2,3,4,…);有29-1位、215-1位、223-1位3种序列长度的伪随机序列码型选择发送;具有自动和手动复位以及插入误码功能;采用串行信号同步采样设计以保证接收数据的实时性和完整性;采用芯片内部的PLL(数字锁相环)提供系统所需的全局时钟。

设计选型
FPGA芯片选用的是ALTERA公司的CYCLONE系列芯片EP1C3T144C8,该芯片有144个管脚,有效I/O口有104个,内部可例化一个PLL模块,支持最高端口速率为640Mb/s(使用LVDS信号接口)。可扩展其他外部接口,例如LVDS信号接口和I2C总线通信接口。从性价比和将来功能扩展方面考虑是比较合适的一款芯片。

软件采用的是ALTERA公司的FPGA集成开发环境QUARTUSII4.1SP2,该软件带有全套的设计、编译、仿真、综合和下载功能,并带有许多的可例化的程序模块,包括PLL模块的实现。码型选择,在误码仪发送端要产生替代通信信源的码序列,这类码序列的最重要的特征是具有近似于随机信号的性能,也可以说具有噪声近似的性能。但是,因为真正的随机信号和噪声是不能重复再现和产生的,所以只能产生一种周期性的脉冲信号来近似随机噪声的性能,这称之为伪随机序列(m序列)或PN码。笔者选用m序列作为测试码,虽然它是周期信号,但它具有类似于随机信号较好的自相关特性。

内核工作原理
图1为伪随机码产生、接收原理框图。


图1 伪随机码产生、接收原理框图

通过图1可以看到,误码的发送和接收部分都是采用相同的结构,即移位寄存器的组合,图1中clk为全局时钟,rst为系统重置信号,mer为手动误码发送信号,display为输入至显示设备的信号。工作原理为发送部分产生测试码进入待测信道,经过待测信道的传输之后再进入接收部分进行检测。移位寄存器组A和异或门1(XOR1)组成发送部分,负责产生伪随机序列送入待测信道,而移位寄存器组B和异或门2(XOR2)以及灌码/自生控制器组成接收部分,接收经过信道传输的序列码后,将接收到的序列码先通过采样串行灌入接收机寄存器组B,等接收机的移位寄存器组B灌满以后,灌码/自生控制器便停止将接收到的数据灌入寄存器组B并使移位寄存器组B自循环使得自身产生与信道输入同步的正确的伪随机序列码。图2为误码检测原理图。


图2 误码检测原理图

由图2可以看到误码的检测机制,信道序列和自生的序列通过异或门3(XOR3)逐位进行对比。同时将检测的结果送到控制器,由控制器模块处理结果。

设计实现

设计框图
误码仪内核功能的设计实现可以分为4个主要模块,即时钟控制模块、发送模块、接收模块和控制模块。图3是内核模块设计框图。


图3 内核模块设计框图

图3中rst是系统重置信号,clk是外部系统时钟信号,mer是手动误码插入信号,err是产生误码脉冲,per是周期脉冲信号,每一个per脉冲表示一个完整的随机序列码周期,codesel[0..1]是码型选择信号,n是内部分频器的分频倍数。

时钟产生模块设计
时钟产生模块的设计通过QUARTUSII4.1例化FPGA中的PLL(Phase Locked Loop)模块作为全局时钟解决方案,采用20MHz的晶振提供外部时钟给芯片内PLL模块,利用该模块的分/倍频功能,可设置产生高达200MHz的内部时钟。在这里设置产生2个内部时钟源。一个作为处理时钟C0为200MHz,一个作为数据时钟C1为20MHz。

将PLL产生的内部时钟通过分频得到所需要的发送和接收的时钟频率,通过改变n的值来改变分频倍数,从而产生1~20MHz的发送频率和10~200MHz的处理频率。

发送模块设计

多码型发送模块
图4为发送模块输入输出图。当系统上电启动后,处于等待状态,当系统的rst置位为低时,发送时钟clk将会开始工作并和数据时钟C1相同,clk通过内部分频器分频为所需要的发送频率txclk后启动内部的23位移位寄存器,并通过codesel[0..1]信号来选择3种码型中的一种。当codesel[0..1]为00时,发送的码型为29-1位的伪随机序列码;当codesel[0..1]为10或者01时,发送的码型为215-1位的伪随机序列码;当codesel[0..1]为11时,发送的码型为223-1位的伪随机序列码;而最终输出的码型datatx则是加入了手动误码按钮扫描模块输入控制,当手动误码指令mer为1时将一个伪随机码反相从而插入一个比特的误码。在未来的扩展功能设计中可修改为插入一段确定长度的误码序列。


图4 发送模块输入输出图

手动误码按钮扫描模块
发送端另外一个重要的功能是实现误码插入,也就是人为地在发送序列中插入已知插入频率的误码信号,然后在接收端检测这些误码,最后可以将检测的结果与发送端已知的插入频率进行比较,以判断通信系统的误码性能。这也是检测通信系统性能的重要方法之一。该模块的输入可以直接接到一个按键输出上,由于手动按键会有抖动和不规则的时间长度,因此产生的控制信号为不确定长度的电平。该模块将按键产生不规则电平扫描为一位的标准电平,从而保证可以产生一个标准位的误码。该设计采用2个状态机实现,在第一个高电平到来时转入状态1,如果采样一直是高电平则一直保持为状态1;当高电平变为低电平时进入状态2,并同时产生一位脉宽的误码发生指令。因此,不管按键持续时间多久,按一次就产生一位的误码发送指令。

接收模块设计

信号采样设计
数据采样速率使用发送数据速率的10倍以保证位同步的准确性。接收状态机流程图如图5所示。


图5 接收状态机流程图

状态机初始状态为S0,当接收端检测到第一个高电平脉冲,即RXD=1到来时,将转入状态S1,并根据图5所示的状态机流程图工作,在接收到的脉冲的正中央输出采样时钟sclk对接收到的码元进行采样。同时,将此时钟作为本地误码产生所使用的时钟,从而得以完全同步。

灌码控制设计
接收码型的选择由与发送模块相同的codesel[0..1]信号输入控制,在本地设计一个23位寄存器,通过组合不同的寄存器组以分别适应不同的码型,然后将采样到的数据依次灌入,当灌满的时候,由灌码/自生控制器开始控制接收模块自己产生伪随机码序列,并与收到的数据进行对比,将采样结果送入控制器模块并显示出来。

控制器模块设计
有2种设计方案:①可以将该模块设计为单片机89C51控制信号的解码模块,通过设计I2C总线的总线通信与89C51进行通信,将89C51发来的信号解码为码型选择、复位和速率调节等控制信号。②也可以直接接入4个控制输入端(codesel[0..1],rst,mer)直接进行控制并将结果直接编码输出到数码管显示出来。同时,该模块还控制着整个系统的手动和自动复位,当控制模块接收到的误码数持续2个伪随机码序列周期超过整个随机码序列长度的半数以后,则判断系统处于接收不同步状态并同时将接收模块自动复位。笔者采用的是第二种设计方案。


图6 误码仪功能仿真图

波形仿真

仿真使用QUARTUSII4.1完成,图6为误码仪功能仿真图,给出了215-1位长度码型收发的模拟波形仿真结果。由图6可以看到一个带有简单的外部接口的误码仪内核波形仿真图。有时钟输入端口clk;码型选择端口codesel[0..1],值为10表示发送和接收均为215-1位长度的伪随机序列码;手动误码输入端口mer随机发出2个不规则的高电平脉冲表示手动误码输入,在误码脉冲端口err就可以看到输出的2个误码电平;重置端口rst;带有手动误码的伪随机序列输出mdata;每个伪随机序列周期产生一次的周期脉冲per;sclk为输入信号的采样时钟;数码管显示输出disply[0..6]显示收到了2个误码。

该设计作为一个基本内核设计,使用了119个逻辑单元(LES)和一个内部PLL,是所选的EP1C3T144C8的FPGA芯片所有逻辑单元的4%,因此,还留有大量的逻辑单元可作为扩展设计需要。

结论

由以上测试结果可知,作为一个误码仪内核设计,实现了误码仪的主要功能。该设计开发成本低,适应性好,可根据需要嵌入到逻辑门更少的可编程逻辑器件当中,为误码仪的整体实现提供了一个基础平台。随着外围设备的扩展和内核的改进,它将适用于更多功能和更加专业的应用。

相关推荐

没有退路的FPGA与晶圆代工业者

FPGA  晶圆代工  2014-01-03

采用FPGA的可编程电阻的设计结构分析

FPGA  电阻  2013-09-24

从FPGA的制程竞赛看英特尔与Fabless的后续变化

FPGA  Fabless  2013-07-16

物联网融合自动化推动高效生产模式变革

物联网  FPGA  SoC  2013-07-09

14纳米FPGA展现突破性优势

14纳米  FPGA  2013-06-20

高清视频监控FPGA应用迎来小高峰

视频监控  FPGA  2013-06-20
在线研讨会
焦点