作者:李斌,吴友宇 时间:2007-05-01 来源: | |
摘要:实现了一种基于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进行编程,实现了误码仪的收发模块设计,也就是误码仪的核心模块设计,功能包括模拟收发通信信道数据以及码型选择和重置等,为误码仪的硬件实现提供了基础。
设计任务 设计选型 软件采用的是ALTERA公司的FPGA集成开发环境QUARTUSII4.1SP2,该软件带有全套的设计、编译、仿真、综合和下载功能,并带有许多的可例化的程序模块,包括PLL模块的实现。码型选择,在误码仪发送端要产生替代通信信源的码序列,这类码序列的最重要的特征是具有近似于随机信号的性能,也可以说具有噪声近似的性能。但是,因为真正的随机信号和噪声是不能重复再现和产生的,所以只能产生一种周期性的脉冲信号来近似随机噪声的性能,这称之为伪随机序列(m序列)或PN码。笔者选用m序列作为测试码,虽然它是周期信号,但它具有类似于随机信号较好的自相关特性。 内核工作原理
通过图1可以看到,误码的发送和接收部分都是采用相同的结构,即移位寄存器的组合,图1中clk为全局时钟,rst为系统重置信号,mer为手动误码发送信号,display为输入至显示设备的信号。工作原理为发送部分产生测试码进入待测信道,经过待测信道的传输之后再进入接收部分进行检测。移位寄存器组A和异或门1(XOR1)组成发送部分,负责产生伪随机序列送入待测信道,而移位寄存器组B和异或门2(XOR2)以及灌码/自生控制器组成接收部分,接收经过信道传输的序列码后,将接收到的序列码先通过采样串行灌入接收机寄存器组B,等接收机的移位寄存器组B灌满以后,灌码/自生控制器便停止将接收到的数据灌入寄存器组B并使移位寄存器组B自循环使得自身产生与信道输入同步的正确的伪随机序列码。图2为误码检测原理图。
由图2可以看到误码的检测机制,信道序列和自生的序列通过异或门3(XOR3)逐位进行对比。同时将检测的结果送到控制器,由控制器模块处理结果。 设计实现 设计框图
图3中rst是系统重置信号,clk是外部系统时钟信号,mer是手动误码插入信号,err是产生误码脉冲,per是周期脉冲信号,每一个per脉冲表示一个完整的随机序列码周期,codesel[0..1]是码型选择信号,n是内部分频器的分频倍数。 时钟产生模块设计 将PLL产生的内部时钟通过分频得到所需要的发送和接收的时钟频率,通过改变n的值来改变分频倍数,从而产生1~20MHz的发送频率和10~200MHz的处理频率。 发送模块设计 多码型发送模块
手动误码按钮扫描模块 接收模块设计 信号采样设计
状态机初始状态为S0,当接收端检测到第一个高电平脉冲,即RXD=1到来时,将转入状态S1,并根据图5所示的状态机流程图工作,在接收到的脉冲的正中央输出采样时钟sclk对接收到的码元进行采样。同时,将此时钟作为本地误码产生所使用的时钟,从而得以完全同步。 灌码控制设计 控制器模块设计
波形仿真 仿真使用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 VHDL 伪随机码 |
用户377235 2014-5-10 19:19