基于FPGA实现PN序列发生器的设计
近年来,扩频通信技术在移动通信、个人通信、室内无线通信以及卫星通信中得到越来越广泛的应用。对于 DS-CDMA(DirectSequence-CodeDivisionMulTIpleAccess,直接序列 - 码分多址)移动通信系统,因其具有较好的抗干扰性能而成为军事通信、民用通信以及宇宙通信的一种重要的通信体制。扩频通信的一项关键技术是扩频信号的设计,以及对它的捕捉和跟踪。在 DS-CDMA 移动通信中,也正是利用扩频码来实现用户多址,从而使多用户能同时共享同一频带进行通信。
在扩频通信中,通常在伪随机序列(Pseudo-randomNoise,PN)的基础上产生扩频码。然而,扩频码(PN 序列)的生成一直是通信工程师最关心的问题之一。随着 FPGA(FieldProgrammableGateArray,现场可编程逻辑门阵列)技术的发展,很多人采用 FPGA 来实现 PN 序列发生器。通常情况下应用 FPGA 来实现 PN 码生成器所采用的方法是利用触发器及逻辑门来组成线性反馈移位寄存器,从而产生所需的 PN 序列。然而这种方法会占用大量的触发器资源,不利于缩小芯片面积及制造成本。SRL16E 是 Xilinx 公司 VirtexII 等系列 FPGA 的 Slice 中的基本单元,应用它来实现 PN 码生成器可以大大降低 FPGA 中专用触发器的使用量,从而减少 FPGA 片上面积的占用。
基本原理
PN 码生成器的核心是 LFSR(LinearFeedbackShiftRegisiter,线性反馈移位寄存器),LFSR 序列共有(2N-1)种状态(其中 N 为 LFSR 中寄存器的个数),寄存器中的数据在每个触发时钟周期右移一位。反馈由预先确定的寄存器引出,共同经过异或逻辑后,加到 LFSR 的左端。通常寄存器的个数越多生成的 PN 序列的长度就越长,其中生成的最长的序列成为 M 序列。
要实现 LFSR 序列的填充,需要在 LFSR 的反馈路径中加入一个多路复用器,利用这个多路复用器将实现期望的状态加载进去。需要注意的是在用一个特定的序列来填充时必须事先知道合适新填充的第一位从 LFSR 中输出。新的填充序列必须在相同的时钟周期内加载到 LFSR 中,并且新序列的第一位必须在并行加载完成后的第一个时钟周期被移出。如图 1 所示 PN 码生成器的原理图,共有 17 种寄存状态。下面来看并行加载是如何实现的。如果一个并行加载发生在 T=0 时钟周期,那么在 T=17 时钟周期时,通过 fillsel 指示反馈加入。这时,移位寄存器包含反馈加入前的长度为 17 位原序列,这 17 位的原序列在反馈加入时并未受影响。在接下来的 17 个时钟周期(即从 T=17 到 T=0),原序列被移出,新的序列被移出,在 T=0 周期,新的序列移入完毕,反馈路径被断开,并在下一个时钟周期开始驱动新序列的第一位。这样,就如同新序列在一个单个的时钟周期 T=0 被并行加载一样。
图 1PN 码生成器的原理图
PN 码生成器的实现
SRL16E 是一种基于查找表的移位寄存器,可以非常方便地配置成多个触发器级联输出的形式,因此应用 SRL16E 来实现 PN 序列,是非常高效的,并且能够很大程度地减少 FPGA 资源的占用。原先 SRL16E 由于在配制时需要注册而被认为比 ASIC(ApplicaTIonSpecificIntegratedCircuit,特定用途集成电路)开销更大。现在,它已成为 FPGA 中 LUT(LookUpTable,查找表)配制模式的基本单元,可以非常方便地应用。并且这些基本单元在设计中应用得越多,那么设计所占用的专用触发器资源就越少。如图 2 所示为 Xilinx 公司 VirtexII 系列 FPGA 中的基本 Slice 结构示意图。
图 2VirtexII 中的 Slice 结构示意图
应用 SRL16E 来实现 LFSR 时,一个 Slice 就可以生成一个 16 阶的 LFSR,而用触发器来实现时,所用 Slice 的数量激增为 16 个。由此可见,应用 SRL16E 可以大大降低 FPGA 资源的占用。
假设 LFSR 多项式为 g(x)=1 x5 x17,即图 1 所示的 PN 码生成器,则应用 SRL16E 来实现 PN 码生成器的电路图如图 3 所示。
图 3SRL16E 构成 PN 码生成器的电路图
图 4 为以 SRL16E 为基本单元,使用 ISE 软件设计的 PN 码生成器所得到的模块图。其中输出 pn_out_i 对应的 LFSR 多项式为:
图 4PN 码生成器模块图
输出 pn_out_q 对应的 LSFR 多项式为:
对于图 4 所示 PN 码生成器,我们应用 ISE 软件内嵌的 XST(XilinxSynthesisTechnology)综合工具对其进行综合,得到的仿真波形如图 5 所示。
图 5PN 码生成器的 XST 仿真波形图
根据 ISE 生成的综合报告可得到图 4 所示 PN 码生成器仅仅占用 4 个 Xilinx 公司 VirtexII 系列 FPGA 的基本 Slice 单元,可见应用 SRL16E 来设计 PN 码生成器可以非常有效地节省 FPGA 资源。
结论
应用 SRL16E 来实现 PN 码生成器的方法可以大大节省 FPGA 资源的占用量,并且由于 SRL16E 是被优化设计的模块,相较于传统的方法可提高所设计 PN 码生成器的效率。同时,SRL16E 还可以用来实现滤波器、除法器以及波形发生器等,在大的系统中,例如整个 CDMA 系统,通过使用 SRL16E 可有效降低整个 FPGA 资源的占用量,从而使功耗及成本等得到进一步的降低。
扫描二维码获取