基于FPGA的电力线载波通信的信道交织方法及系统与流程

文档序号:14737120发布日期:2018-06-19 20:43阅读:230来源:国知局
基于FPGA的电力线载波通信的信道交织方法及系统与流程
本发明属于电力线载波通信领域,尤其涉及一种基于FPGA的电力线载波通信的信道交织方法及系统。
背景技术
:目前,业内常用的现有技术是这样的:近20年来,低压电力线载波通信已经广泛应用于电力系统监控、远程抄表、家庭自动化等领域。目前,随着智能电网、能源互联网、“四网合一”等概念的发展,低速电力线通信已经不能满足社会需要。宽带电力线载波通信是指带宽在2~30MHz,传输速率在1Mbps以上的系统。宽带电力线载波通信系统,其物理层以正交频分复用为核心。电力线设计的初衷只是用来电力传输,并没有考虑到用电力线进行数据传输,不是专用的通信信道。低压电力线上连接着繁杂的用电设备,网络拓扑结构复杂,设备随机接入和切出,其信道特性恶劣。电力线信道上电力线上的噪声可以分为有色背景噪声、突发性噪声、随机脉冲噪声和周期脉冲噪声等,其中脉冲噪声对电力线的通信质量影响最大,被认为是电力线介质进行数据传输时产生突发错误的主要原因。电力线信道的频率选择性衰落和脉冲噪声会导致成串的比特错误,而信道交织目的是为了分布传输的信息比特,最大限度地改变信息结构,使信道的突发错误在时间上得以扩散,配合纠错码,可以降低突发错误,因此,设计合适的信道交织方法意义重大。目前常用的交织方法是分组交织,分组交织是将纠错编码输出的信号均匀分成m个码组,每个码组含有n段数据,排列成m行n列的矩阵,然后以列的方式从左到右依次读出。现如今,对于宽带电力线载波通信系统,要求能提供的应用越来越丰富,因此,要求电力线载波传输速率的提高。针对于此,Turbo码也被应用于电力线载波通信系统中,也要求有更适应系统、可靠性更高的信道交织方法来满足系统需要。综上所述,现有技术存在的问题是:(1)目前,电力线信道特性差,容易出现突发差错,系统误码率高。(2)目前常用的信道交织方法是分组交织,分组交织可以改变信息的结构,但是只是在时域或频率上一维上进行交织,对于m×n的分组交织器,周期为m比特干扰影响了传输过程的话,产生错误的m比特解交织后将变成连续比特进入纠错码译码,势必导致译码失败,从而产生较高误码率。(3)宽带电力线通信中,其带宽较大,速率较高,可用子载波数目较多,分组交织并不能最大程序地改变信息的原始结构,交织不够充分导致相邻数据可能会仍然处于同一子信道或相邻子信道,依然会产生连续错误。导致连续错误后,纠错码不能正确纠错,系统误码率较高,不能满足宽带电力线通信的需要。解决上述技术问题的难度和意义:现如今,随着智能电网、能源互联网、“四网合一”等概念的发展,对于宽带电力线载波通信系统,要求能提供的应用越来越丰富。高速率的宽带电力线通信系统,其带宽大、速率高、可用子载波数目较多。电力线信道特性差、高速率的要求以及系统的复杂,对系统性能提出了要求。而信道交织势必带来系统的延时,综上因素,如何在延时和性能之间找到平衡,提高系统可靠性是信道交织方法设计的困难之处。现有的分组交织方法,不能够充分打乱原始信息结构,依然能产生连串比特错误,不适合宽带电力线信道环境。本发明提出的信道交织方法,有四级交织,在尽可能引入小的延时的前提下,最大化改变了信息的原始结构,使得相邻比特尽量落在不同可用子载波上以及有效将相邻比特映射到星座图中相对重要和次等重要的位置上,经过多级交织处理,在时域维度上对信息离散化,可以近似地将有记忆信道转化为无记忆信道,可以有效降低连续错误的发生,能够满足高速电力线通信的需要,实现高速速率传输。技术实现要素:针对现有技术存在的问题,本发明提供了一种基于FPGA的电力线载波通信的信道交织方法及系统流程图。本发明是这样实现的,一种基于FPGA的电力线载波通信的信道交织方法,进行检验码的交织、信息码的交织、信息码和检验码的混合交织以及循环移位;交织处理后,将相邻比特分配到不同子载波上进行传输,将相邻比特映射到星座图中相对重要和次等重要的位置上;同时,在时域维度上对信息离散化,将有记忆信道转化为无记忆信道,再与纠错码配合降低误码率。进一步,所述基于FPGA的电力线载波通信的信道交织方法具体包括:步骤一,对检验码进行交织处理;步骤二,对信息码进行交织处理;步骤三,对信息码和检验码之间进行混合交织;步骤四,进行循环移位处理。进一步,所述步骤一具体包括:将检验码的第一块(n-k)/4比特输出到区块1中,第二块(n-k)/4比特输出到区块2中,第三块(n-k)/4比特输出到区块3中,第四块(n-k)/4比特输出到区块4中;等价于将检验码存入到一个(n-k)/4列4行的矩阵,其中,第一行代表区块1,第二行代表区块2,第三块代表区块3,第四行代表区块4;写入数据时,按行顺序写入数据;读出数据时,按列将四行的数据同时读取,首先从第0列开始读取,在首地址上加上一个读取步长S,第一轮读出的列的顺序为(0,2*S,3*S,……),第一轮一共读取((n-k)/4)/S列;接着,进行第二轮,读取首地址加1,从第1列开始读取,在首地址上加上一个读取步长S,第二轮读出的列的顺序为(1,2*S+1,3*S+1,……),第二轮一共读取((n-k)/4)/S列,以此类推,通过S轮的读取,读出全部检验码。进一步,所述步骤二具体包括:将信息码的第一块k/4比特输出到区块1中,第二块k/4比特输出到区块2中,第三块k/4比特输出到区块3中,第四块k/4比特输出到区块4中;等价于将信息码存入到一个k/4列4行的矩阵,其中,第一行代表区块1,第二行代表区块2,第三块代表区块3,第四行代表区块4;写入数据时,按行顺序写入数据;读出数据时,按列将四行的数据同时读取;其中,T=k/4,对于信息码的交织,从一个偏移值offset列开始读取,首先从第offset列开始读取,之后在首地址上加上一个读取步长S,第一轮读出的列的顺序为(offset,(offset+S)modT,(offset+2*S)modT,……),第一轮共读取(k/4)/S列;接着,进行第二轮,读取首地址加1,从第1列开始读取,之后在首地址上加上一个读取步长S,第二轮读出的列的顺序为(offset+1,(offset+S+1)modT,(offset+2*S+1)modT,……),第二轮一共读取(k/4)/S列,以此类推,通过S轮的读取,读出全部信息码。进一步,所述步骤三具体包括:检验码交织后,输出为(n-k)/4比特,信息码交织后,输出为k/4比特,(n-k)/4比特与k/4比特进行混合交织;输出结果为前4比特为信息码,接着4比特检验码,以此类推,完成检验码和信息码之间的交织过程;所述串并转换,包括:将k比特信息码经过串并转换后变成k/4个位宽为4比特的数据,将(n-k)比特检验码经过串并转换后变成(n-k)/4个位宽为4比特的数据;将这n/4个数据交替输出,信息码在前,接着检验码,以此类推;所述步骤四具体包括:将第步骤三处理后的数据,按照0到7循环编号,每两个半字节调整依次顺序,对于标号为0和1,不处理直接输出,对于标号2和3,循环右移1位,对于标号4和5,循环右移2位,对于标号6和7,循环右移3位;之后再进行并串转换输出。本发明的另一目的在于提供一种实现所述基于FPGA的电力线载波通信的信道交织方法的计算机程序。本发明的另一目的在于提供一种实现所述基于FPGA的电力线载波通信的信道交织方法的信息数据处理终端。本发明的另一目的在于提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行所述的基于FPGA的电力线载波通信的信道交织方法。本发明的另一目的在于提供一种基于FPGA的电力线载波通信的信道交织系统包括:检验码交织单元,利用RAM和乒乓结构对检验码交织;信息码交织单元,利用RAM和乒乓结构对信息码交织;混合交织单元,用于串并转换,对信息码和检验码之间进行混合交织;循环移位操作单元,用于进行循环移位操作,之后并串变换。本发明的另一目的在于提供一种搭载有所述基于FPGA的电力线载波通信的信道交织系统的信息数据处理终端。综上所述,本发明的优点及积极效果为:本发明进行检验码的交织、信息码的交织、信息码和检验码的混合交织以及循环移位。交织处理后,有效地将相邻比特分配到不同子载波上进行传输,同时有效将相邻比特映射到星座图中相对重要和次等重要的位置上,可以有效降低频率衰落对系统的影响。本发明经过多级交织处理,在时域维度上对信息离散化,可以近似地将有记忆信道转化为无记忆信道,再与纠错码配合可以降低系统误码率,提高系统可靠性。对于m×n的分组交织器,周期为m比特干扰影响了传输过程的话,产生错误的m比特解交织后将变成连续比特进入纠错码译码,势必导致译码失败。相比于m×n的分组交织器,本发明具有较多优点,分组交织和本发明的技术对比如表1所示:表1目前行之有效的方法是利用正交频分复用(OFDM)系统,利用多载波进行数据的传输。电力线信道具有频率选择性,当某一个频段干扰大时,该频段的子载波上数据都会发生错误,会产生频率选择性衰落,导致连串的比特均会产生错误。本发明的基于FPGA的信道交织方法可保证相邻的比特在经过OFDM调制后会落在不相邻的子载波上了,同时可以使得相邻比特映射到星座图相对重要和次重要的星座图上。经过交织后,最大化分散了原有连续比特,当经过解交织处理后,错误分散,依然在纠错码的纠错范围之内,从而减轻衰落信道对系统性能的影响。本发明针对电力线载波通信信道传输特性恶劣,利用FPGA资源,提出信道交织方法,在时域维度上,可以离散信道的突发差错,近似地将有记忆信道转化为无记忆信道,使得纠随机差错的纠错码可以用于电力线载波通信系统中。通过信道交织的处理,再配合相应的纠错码,可以克服电力线载波通信信道特性差的缺点,大幅度提高频谱利用率,从而利用电力线进行有效的通信传输。本发明的仿真实验表明,输入信息码和检验码采用特殊比特,信息码为0,1交替的128比特,检验码也是0,1交替的128比特,parity_out是检验码交织结果,data_out是信息码交织结果,da_pa_out是信息码和检验码混合交织的结果,DP_ND是交织最终输出结果。输出时钟CLK3是输入时钟CLK1的两倍,可以看到交织结果先是64比特的0,再是64比特的1,接着又是64比特的0,然后64比特的1,结果与Matlab结果一致,是正确的。附图说明图1是本发明实施例提供的基于FPGA的电力线载波通信的信道交织方法流程图。图2是本发明实施例提供的基于FPGA的电力线载波通信的信道交织系统示意图。图3是本发明实施例提供的检验码交织器硬件实现框图。图4是本发明实施例提供的信息码交织器硬件实现框图。图5是本发明实施例提供的信息码和检验码混合交织器硬件实现框图。图6是本发明实施例提供的循环移位硬件实现框图。图7是本发明实施例提供的整体仿真结果图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。现有技术中,电力线信道特性差,容易出现突发差错;系统误码率高。下面结合具体分析对本发明作进一步描述。如图1所示,本发明实施例提供的基于FPGA的电力线载波通信的信道交织方法,利用Verilog程序实现信道交织,所述信道交织方法的实现主要包括以下几个步骤:第一步,对检验码进行交织处理。第二步,对信息码进行交织处理。第三步,对信息码和检验码进行混合交织。第四步,进行循环移位处理。所述的电力线载波通信的信道交织方法的FPGA实现包括以下步骤:步骤一,利用RAM和乒乓结构对检验码交织。步骤二,利用RAM和乒乓结构对信息码交织。步骤三,串并转换,对信息码和检验码之间进行混合交织。步骤四,进行循环移位操作,之后并串变换。所述步骤一具体包括:假设信道信道编码后是信息码和检验码分别传输出来,信息码长度为k比特,检验码长度为(n-k)比特。本设计主要针对码率为1/2。本步骤针对(n-k)比特检验码进行交织处理。将检验码的第一块((n-k)/4比特)输出到区块1中,第二块((n-k)/4比特)输出到区块2中,第三块((n-k)/4比特)输出到区块3中,第四块((n-k)/4比特)输出到区块4中。等价于将检验码存入到一个(n-k)/4列4行的矩阵,其中,第一行代表区块1,第二行代表区块2,第三块代表区块3,第四行代表区块4。写入数据时,按行顺序写入数据。读出数据时,按列将四行的数据同时读取,首先从第0列开始读取,之后在首地址上加上一个读取步长S,这样第一轮读出的列的顺序为(0,2*S,3*S,……),第一轮一共读取((n-k)/4)/S列;接着,进行第二轮,读取首地址加1,即从第1列开始读取,之后在首地址上加上一个读取步长S,第二轮读出的列的顺序为(1,2*S+1,3*S+1,……),第二轮一共读取((n-k)/4)/S列,依次类推,通过S轮的读取,即可读出全部检验码。其中,相关参数见表1。步骤二具体包括:本步骤针对k比特检验码进行交织处理。将信息码的第一块(k/4比特)输出到区块1中,第二块(k/4比特)输出到区块2中,第三块(k/4比特)输出到区块3中,第四块(k/4比特)输出到区块4中。等价于将信息码存入到一个k/4列4行的矩阵,其中,第一行代表区块1,第二行代表区块2,第三块代表区块3,第四行代表区块4。写入数据时,按行顺序写入数据。读出数据时,按列将四行的数据同时读取。为方便描述,定义T=k/4。对于信息码的交织,不是从第0列开始读取,而是要从一个偏移值offset列开始读取,首先从第offset列开始读取,之后在首地址上加上一个读取步长S,这样第一轮读出的列的顺序为(offset,(offset+S)modT,(offset+2*S)modT,……),第一轮一共读取(k/4)/S列;接着,进行第二轮,读取首地址加1,即从第1列开始读取,之后在首地址上加上一个读取步长S,第二轮读出的列的顺序为(offset+1,(offset+S+1)modT,(offset+2*S+1)modT,……),第二轮一共读取(k/4)/S列,依次类推,通过S轮的读取,即可读出全部信息码。其中,相关参数见表2。表2信息码(比特数)偏移值步长1281645767216步骤三具体包括:检验码交织后,输出为(n-k)/4比特,信息码交织后,输出为k/4比特,对二者进行混合交织。输出结果应为前4比特为信息码,接着4比特检验码,依次类推即可完成检验码和信息码之间的交织过程。利用串并转换,将k比特信息码经过串并转换后变成k/4个位宽为4比特的数据,将(n-k)比特检验码经过串并转换后变成(n-k)/4个位宽为4比特的数据。现在的处理就是要将这n/4个数据交替输出,信息码在前,接着检验码,依次类推。利用一个位宽为4,深度为n/2的简单双口分布式RAM(DRAM),将n/2个数据有规律写入,之后顺序读出即可。具体来说,写入地址的产生是顺序的,采用模n/2计数器即可,但是写入内容dina是交替变化的,dina先是信息码,之后是检验码,依次类推。步骤四具体包括:将第步骤三处理后的数据,按照0到7循环编号,每两个半字节调整依次顺序,对于标号为0和1,不处理直接输出,对于标号2和3,循环右移1位,对于标号4和5,循环右移2位,对于标号6和7,循环右移3位。之后的数据依次按此规律处理。之后再进行并串转换输出。具体规则如表3所示。表3输出半字节序号移位模式0或1b0b1b2b32或3b3b0b1b24或5b2b3b0b16或7b1b2b3b0电力线载波通信中,目前行之有效的方法是利用正交频分复用(OFDM)系统,利用多载波进行数据的传输。本发明的基于FPGA的信道交织方法可保证相邻的比特在经过OFDM调制后会落在不相邻的子载波上了,同时可以使得相邻比特映射到星座图相对重要和次重要的星座图上,从而减轻衰落信道对系统性能的影响。如图2,本发明实施例提供一种基于FPGA的电力线载波通信的信道交织系统包括:检验码交织单元,利用RAM和乒乓结构对检验码交织;信息码交织单元,利用RAM和乒乓结构对信息码交织;混合交织单元,用于串并转换,对信息码和检验码之间进行混合交织;循环移位操作单元,用于进行循环移位操作,之后并串变换。下面结合具体实施例对本发明作进一步描述。假设信道编码采用的是128比特长度,码率为1/2的编码方式,输出结果中,信息码和检验码是并行输出的。如图1所示,本发明的实现需要经过以下步骤:步骤一:对128比特的检验码进行交织。具体来说,常见分组交织的实现一般利用RAM的读写来调整顺序实现交织功能,采用“乱序写入,顺序读出”或“顺序写入,乱序读出的”的方法。本发明中,较为方便的是采用“顺序写入,乱序读出”方式。以CLK1为时钟,利用位宽为1,深度为128的RAM,将输入的检验码按照顺序存入RAM中,即依次存入RAM的地址0~地址127中,写入地址的生成单元waddGenerator可由模128计数器产生。读取地址采取“乱序读出”的方法,当读取地址使能拉高时,进行读取地址的计算。基于上述分析,检验码交织器设计的硬件实现框图如图3所示。RAM读取地址的生成是整个设计的关键和难点。根据检验码交织思路以及规律的寻找,可以设计出读取地址生成单元raddGenerator。核心设计如下式:wadd=cnt1+4cnt2+32cnt3\*MERGEFORMAT(1)其中,cnt1位宽为2,cnt2位宽为3,cnt3位宽为2。cnt1、cnt2、cnt3的初始值均为0。cnt3的变化为0,1,2,3,然后继续按此规律循环,当cnt3为3时,cnt2加1,cnt2的变化为0,1,2,3,4,5,6,7,然后cnt2继续按此规律循环,当cnt2为7时,cnt1加1,cnt1的变化为0,1,2,3,此时实现了128个读取地址的计算。此时根据该公式可以计算出读取地址,其关键Verilog代码如下:当读取地址计算使能拉高时,开始进行读取地址wadd的计算。通过该代码设计,可以计算出读取地址为0,32,64,96,4,36,68,100……31,63,95,127与设计思路相符合。由于采用“乱序写入,顺序读出”的设计,因此,在一帧数据未完全写入时,则不能进行新的数据写出,否则读出的数据将可能会受到新写入数据的影响而产生错误,因此会产生无法处理连续数据的问题。考虑到这个问题,解决的方法就是采用流水线结构,利用“乒乓结构”,采用两个位宽为1,深度为128的简单双口RAM,命名为RAM0和RAM1,通过对RAM0和RAM1写使能和读使能的控制,实现如下过程:当对RAM0进行写入数据时,同时对RAM1进行读取,当对RAM0进行读取时,同时对RAM1写入数据,这样可以保证数据的连续处理,并且不会产生错误。步骤二:对128比特信息码进行交织。信息码交织与检验码的交织非常相似,信息码交织器设计的硬件实现框图如图4所示。主要区别在于RAM读取地址的计算有些许不同。信息码交织的读取地址的计算的核心公式依然是:wadd=cnt1+4cnt2+32cnt3\*MERGEFORMAT(2)不过,由于信息码交织中,由于存在交织偏移值16,因此,根据设计思路,其实现上与检验码交织有一定的不同。cnt1位宽为2,cnt2位宽为3,cnt3位宽为2。cnt1、cnt3的初始值均为0,而cnt2的初始值为4。cnt3的变化为0,1,2,3,然后继续按此规律循环,当cnt3为3时,cnt2加1,cnt2的变化为4,5,6,7,0,1,2,3,然后cnt2继续按此规律循环,当cnt2为3时,cnt1加1,cnt1的变化为0,1,2,3,此时实现了128个读取地址的计算。除了cnt2初始值不同,其他计算读取地址代码与检验码相同。因此,当读取地址计算使能拉高时,开始进行读取地址wadd的计算。通过该代码设计,可以计算出读取地址为16,48,80,112……15,47,79,111与设计思路相符合。为了处理连续数据,同样利用“乒乓结构”进行处理。步骤三:信息码和检验码混合交织。(3a)当输入时钟为CLK1时,利用串并转换,将128比特信息码经过串并转换后变成32个位宽为4比特的数据,将128比特检验码经过串并转换后变成32个位宽为4比特的数据。现在的处理就是要将这64个数据交替输出,信息码在前,接着检验码,以此类推。(3b)利用一个位宽为4,深度为64的简单双口分布式RAM(DRAM),将64个数据有规律写入,之后顺序读出即可。具体来说,写入地址的产生是顺序的,采用模64计数器即可,但是写入内容dina是交替变化的,dina先是信息码,之后是检验码,依次类推。经过处理后的数据是64个半字节数据,便于下一阶段的循环移位处理。写入DRAM和读取DRAM的时钟为CLK2,CLK2是CLK1的二分频。通过以上分析,信息码和检验码交织器设计如图5所示。步骤四:循环移位处理。(4a)输入时钟为CLK2,进行半字节移位处理。对于标号为0和1,不处理直接输出,对于标号2和3,循环右移1位,对于标号4和5,循环右移2位,对于标号6和7,循环右移3位。之后的数据依次按此规律处理。(4b)并串转换。由于信道交织输出的数据要进一步给调制模块使用,而调制方式并不固定,可能是QPSK、16QAM等,因此,信息交织输出的数据应该是串行比特流。将移位后的数据,进行并串变换后,输出串行比特流。输出时的时钟为CLK3,其频率为CLK2的四倍,为CLK1的两倍。根据以上分析,循环移位的硬件实现框图如图6所示。经过以上四步骤,利用FPGA中的RAM的写入和读取,利用串并转换、移位、并串转换等操作即可实现信道交织的整个系统。利用这些,具有逻辑简单、时延小的优点。下面结合仿真实验对本发明作进一步描述。如图7所示,给出了Verilog仿真图。该图是截取的一段仿真波形,为了便于验证是否正确,输入信息码和检验码采用特殊比特,信息码为0,1交替的128比特,检验码也是0,1交替的128比特,parity_out是检验码交织结果,data_out是信息码交织结果,da_pa_out是信息码和检验码混合交织的结果,DP_ND是交织最终输出结果。输出时钟CLK3是输入时钟CLK1的两倍,可以看到交织结果先是64比特的0,再是64比特的1,接着又是64比特的0,然后64比特的1,结果与Matlab结果一致,是正确的。以上所述仅为本发明的特例,即信息码128比特,码率1/2,检验码128比特的情况,其他情况的实现类似,只需修改部分参数即可。在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用全部或部分地以计算机程序产品的形式实现,所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输)。所述计算机可读取存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘SolidStateDisk(SSD))等。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1