面向PCIE 3.0总线的扰频和去扰频器FPGA设计
陆启立1,黄新明1,2,孙 玲1,2,谢 星1,韩赛飞1,唐天泽1
【摘 要】在分析PCI Express 3.0总线物理层协议的基础上,提出一种实现扰频器和去扰频器的设计方案。利用可综合Verilog HDL语言在Vivado平台下完成电路的设计综合并下载到FPGA开发板进行测试与验证。验证结果表明,设计满足PCI Express 3.0总线物理层的要求,占用逻辑资源少,可应用到总线物理层的总体设计中。 【期刊名称】现代电子技术 【年(卷),期】2018(041)016 【总页数】5
【关键词】PCI Express 3.0总线;扰频器;去扰频器;现场可编程门阵列;Vivado;逻辑资源 修回日期:2018?01?10
基金项目:国家自然科学基金项目(61571246)
Project Supported by National Natural Science Foundation of China(61571246)
自 PCI Express(PCIE)协议发布以来,PCIE 1.0和PCIE 2.0协议已经在PC和Server上得到广泛普及与应用[1]。但随着科学技术的飞速发展,用户追求高清视频、图片等体验的步伐加快,高速显卡、高速存储设备等需求不断挑战着数据传输的瓶颈[2]。为解决前两代协议无法更好满足需求的问题,PCIE 3.0协议孕育而生,它的数据吞吐量及带宽均比前一代翻了一番,数据传输速率[3]可达到8 Gbit/s。在PCIE 1.0和2.0协议中,8 b/10 b编码方案保证了数据的
传输密度、直流平衡及内嵌时钟,但导致了有效传输速率[4]仅为原来的80%。如PCIE 2.0标准中,5 Gbit/s的数据传输速率实际有效速率仅为5×8 b/10 b=4 Gbit/s。为实现数据传输速率较PCIE 2.0标准翻一番的目标,PCI?SIG组织在PCIE 3.0协议中取消了8 b/10 b编码方案[5]。然而,数据不经有效编码即传输会导致传输密度和直流失衡,接收端时钟恢复电路失锁等问题[6]。为此,PCIE 3.0总线物理层在发送端采用扰频器处理发送数据,随机化链路数据;在物理层的接收端则采用去扰频器处理接收数据,恢复被随机化的链路数据。 本文主要根据PCIE 3.0总线物理层标准对扰频器和去扰频器的要求,采用Verilog HDL语言完成电路设计并进行综合仿真验证。本文首先给出扰频器和去扰频器的设计方案;然后详细介绍各电路模块的设计及其在Vivado软件平台下的仿真验证,并给出在FPGA开发平台下实现的电路硬件设计与测试;最后总结全文。
1 扰频器和去扰频器的设计方案及原理
根据PCIE 3.0总线物理层标准,本文提出如图1所示的扰频器和去扰频器设计方案。其基本工作原理是:扰频器的线性反馈移位寄存器(Linear Feedback Shift Register,LFSR)产生串行扰码序列,经串并转换后对输入数据进行加扰;去扰频器的LFSR电路则产生串行解扰码序列,经串并转换后对数据通道上的加扰数据进行解扰,恢复被随机化的数据,得到对应的原始数据。发送端扰频器与接收端去扰频器的LFSR电路采用相同的先进多项式算法,电路架构也相同;发送端和接收端的串并转换、数据处理电路的设计也采用相同的电路架构。扰频器和去扰频器中这几个主要模块的详细分析如下。 1.1 LFSR电路分析
LFSR电路是产生伪随机数的重要方式之一,任何一个LFSR可以表示为如式(1)所示的多项式[7]:
式中:X为变量;系数gi(i=0,1,2,…,m)为抽头权重;gi为1表示抽头连接到输出端,即有反馈;gi为0表示断开,即无反馈;m代表多项式的级数,级数与级数之间的所有运算为模2加运算,并且是一种不带进位的二进制加法运算[8?9]。
在GF(2)域中,式(1)的电路结构如图2所示。这里,定义为第j个寄存器在第t个时钟脉冲下的状态值,该状态值[10]为0或1;图2所示的LFSR电路各寄存器在 t时刻的状态向量表示为当 t=0 时为初始状态向量,即seed值。 依据PCIE 3.0总线物理层标准,LFSR电路使用的先进多项式算法如下: 由式(2)得到本文LFSR电路在GF(2)域中的示意图如图3所示。由图3可见,系统初始化后,初始状态向量R0=[r00,r01,…,r022];t时刻的状态向量为 Rt=[rt0,rt1,…,rt22];t+1时刻的状态向量为Rt+1=[rt+10,rt+11,…,rt+122]。
状态向量Rt描述状态向量Rt+1的公式如式(3)和式(4)所示: 进一步,可以将式(3)和式(4)用矩阵描述为: 即:
式中:H表示状态转移矩阵;T表示转置。任意k个脉冲后,LFSR电路各寄存器状态向量可表示为: 当初始状态向量:
即seed=23’h1DBFBC时,由式(7)可得LFSR电路的Matlab仿真示例如图4所示。由图4可见,第k个时钟脉冲下LFSR电路的状态向量如Rk所示,