宽带载波电力线通信协议中信道交织的FPGA实现
扫描二维码
随时随地手机看文章
摘要 介绍了宽带载波电力线通信协议中用到的信道交织。在此协议的基础上,提出了基于FPGA信道交织模块的设计方案。文中对信道交织的物理层实现方法进行了介绍,该方法是通过ROM读操作和RAM的读写操作来实现信道交织过程,较好地满足了资源和时延的双重要求。
关键词 信道交织;FPGA;宽带载波电力线通信
随着通信技术的不断发展,出现了各种各样的通信,一般有线通信和无线通信之分,有线通信一般是通过光缆电缆进行的通信,而无线则是通过电磁波进行空中信息传递的通信。虽然无线通信省缺了有形的传输媒介,通过空中接口进行通信,但无线通信在传输容量和传输质量都不如有限通信。电力线网络覆盖范围广,是其他网络无法比拟的,而且是有限通信,通过电力线进行通信则成为研究重点,但电力线的初衷只是用来进行电力传输,还没有考虑到用电力线进行信息的传递,所以原有电力线的铺设导致电力线信道特性较差、干扰大、时变性差,不仅存在多径时延问题,且存在频率选择性衰落的现象。随着信号处理技术和信道调制技术的不断发展,现在已经能克服这种电力线信道差的问题。其中的关键技术就是正交频分复用(Orthogonal Frequency Division Multiplexing,OFDM),这是一种复用技术,同时是一种用多个相互正交的子载波来传送信息的一种多载波调制技术。该技术可以解决电力线通信信道差的问题,大幅提高了平铺利用率,并可实现电力线的有效通信。
图1是基于FFT的OFDM实现框图。发送端:从数据链路层接收数据,经过一系列的信号处理和变换,以OFDM调制方式通过将信号发送到电力线。接收端:从电力线检测到信号后,做相应的反向处理,最终将电力线上的载波信号还原为数据,送到数据链路层。在电力线通信系统中采取信道交织技术,在时间的维度上离散信道的突发差错,从而使得有记忆信道可近似转变为无记忆信道,使得设计的纠随机差错的纠错码同样适用于多径衰落信道。
1 信道交织的基本理论
信道交织的理论建立在香依理论的基础上。Claude.E.Shannon提出:对于任意给定的有噪声信道至少存在一种复杂的编码方法,可使信道的传输速率无限逼近信道容量而同时保证传输差错率达到任意小。而信道交织就是逼近这一相同理论的一种较好的实现方式。
信道交织的实质是一种置乱器,仅通过改变信息的结构来提高数据传输的可靠性。信道交织是通过把连续的比特信息分散开以避免突发差错事件。这样就能把错误的范围尽量控制在纠错电路的能力范围之内。在接收端经过纠错译码电路后,将这种置乱顺序信息还原就能最大限度的的正确译码出发送的信息。
按照信道交织技术对于数据次序的改变规律,信道交织码可分为周期交织和伪随机交织两类。周期交织又分为分组交织和卷积交织,周期交织指交织规律有明确的周期性,序列内数据之间的交织间隔恒定。所谓伪随机交织,指交织不采用唯一的单个交织深度值而采用有变化的交织深度值,但变化仍有一定的规律。
2 电力线通信协议的信道交织实现
宽带载波电力线通信协议中的信道交织过程包括信息位的交织、校验码交织、信息码和校验码之间的交织,半字节移位4个步骤。具体的信道交织的过程如下:首先设定K代表信息bit的数量,N-K代表校验bit的数量,K个信息bit会分成4个子块,每个子块的大小为K/4 bit,N-K个校验bit会分成4个子块,每个子块的大小为(N-K)/4 bit,然后就是按步骤依次操作。
(1)信息位的交织。将信息bit存入一个K/4行4列的矩阵,依次把每列存满。进行交织时每行的4个bit是同时读出的。从这个矩阵读出数据时,从第0 行开始,从第二次开始每次读时行地址加上参数StepSize,这样第一轮读的行地址顺序为(0,StepSize,2×StepSize,… [K/4]-StepSize),当读了[K/4]/StepSize行之后,就读到了矩阵的尾部,然后读下一轮的行地址初始化为1,之后每次读取时行地址加上参数StepSize,当读了[K/4]/StepSize行之后又到了行尾,这样第二轮读的行地址顺序为(1,1+StepSize,1+2 ×StepSize,…[K/4]-StepSize+1),然后第三轮的行地址加1为2,依次类推,经StepSize轮后全部行均已读出。
(2)校验码交织。校验码的交织与信息位的交织类似,只是每次读行地址时均加一个偏移量。因此,校验bit第一次读从参数offset定义的行开始,步长参数还是StepSize,文中定义T=(N-K)/4,第一轮读出的行的顺序为(offset,(offset+StepSize)mod T,(offset+2×StepSize)mod T,…(T-StepSize+offset)mod T),然后第二轮第一行的指针加1,再重复作StepSize-1轮,最后经过StepSize轮,每轮读出了T/StepSize行数据,一共读出T行数据。表1列举了信道交织中3种传输块用到的参数。
(3)信息码和校验码之间的交织。输出的前4 bit为信息码,接着4 bit为校验码,以此类推。
(4)半字节移位。半字节移位以4 bit为单位进行移位,无论信息bit还是校验bit,每2个半Byte调整一次顺序,表2列举了具体移位模式。并且整体以32 bit为一个循环进行半字节移位操作。
3 电力线通信协议中信道交织设计
在宽带载波电力线通信协议中信道交织处理的数据单元块有3种:PB16,PB136和PB520。FPGA中信道交织主要有两种实现方式:一是通过计数器和逻辑控制单元来实现;另一种是通过存储在ROM中的信道交织表来实现。通过计数器和逻辑控制单元来实现,其中会涉及到大量的除法和取模运行,时间延迟大且不易控制。但采用存储在ROM中的信道交织表来实现的话,只需通过Matlab计算出信道交织表的映射关系,然后将Matlab中的数据导出生成HEX 文件作为ROM的初始值。最后按ROM中存储的地址写到RAM即可实现信道交织。其中ROM和RAM直接调用Altera的IP核。考虑到后者只用通过 ROM读和RAM读写就实现了信道交织,且逻辑简单、时延小,所以本设计方案采用后者。且每种数据单元块对应一张信息交织表,因此只需信道交织表就能满足系统的要求。宽带载波电力线通信协议中信道交织的FPGA实现就是采用存储在ROM中的信道交织表来实现的方式。
为了对数据进行连续处理,设计采用两个RAM同时工作的方式,实现框图如图2所示。具体做法就是通过对两个RAM的乒乓操作来实现数据的缓存和发送。在第 1个传输周期,在输入端通过选择器1将数据写入RAM1。在第2个传输周期,在输入端切换选择器1将数据写入RAM2,在输出端同时将RAM1中的数据通过选择器2读出。在第3个传输周期,在输入端切换选择器1将数据写入RAM1,在输出端同时将RAM2中的数据通过选择器2读出。如此循环便可实现对数据的连续缓存和读出。
对其中一片RAM实现信道交织具体的实现过程就是通过控制ROM的读出和控制RAM的读写来实现:在ROM中存放交织地址表,将RAM作为存放数据的缓存器,先将计数器的输出送至ROM地址总线,选择器再选择从ROM读出的交织地址送至RAM的地址线完成交织;然后按计数器的顺序地址将RAM中的数据读出,即为交织后的输出结果。详细的信道交织流程如图3所示。
4 仿真结果分析
本文用Verilog HDL语言编程实现信道交织,并通过QuanusⅡ和Modelsim软件进行仿真验证。图4为截取的一段仿真波形,波形显示的是先按信道交织表的地址将输入数据写入RAM,输入数据是连续的256个0,1比特流,最后按计数器的顺序地址读出交织后的数据,交织后的结果是前64个数据均为0,接着64个数据均为1,然后接着64个数据均为0,最后64个数据为1,与Matlab中的仿真结果一致,证明了该实现方案的正确性。
5 结束语
本文在宽带载波电力线通信协议的基础上,给出了基于FPGA的信道交织模块的物理层实现方法。该方法从实际出发,权衡资源和时延的要求,实用性较强。其中,采用双RAM可实现流水线操作,解决了单RAM等待的时延的问题;采用信道交织表的方式,相比单纯采用逻辑控制的方式,可操作性和可移植性强。该方案已成功应用于某宽带载波电力线通信模块中,证明该方案切实可行。