qiaoning6666

解交织技术的实现(原创)

0
阅读(4454)

通信系统中为了抗干扰,常引入信道编码的技术,如汉明编码、循环码、卷积码等。但是诸如汉明编码等的信道编码的纠错能力十分有限,尤其是当有连续的突发错误的时候,其纠错能力十分受限,因此,为了增加系统的抗干扰能力,并且发挥信道编码的优势,故引入了交织技术,交织的核心思想就是把原来的信息码元顺序打乱,如果在某一时刻有比较强的突发干扰,造成连续的误码时,由于引入了交织技术,故可把误码均匀化,而对于信道编码来说,其处理均匀化的错误非常有优势,所以提高了通信系统的抗干扰性能。下表示出了交织以后数据的顺序,数据的个数一共是195个,发送数据的顺序为由上到下,由左到右,即经过交织后,现在发送数据的顺序为:(按原来数据的编号)第13个、26个…..第12个、25个…...第1个、14个……183个。

   13     12   11    10   9     8      7     6      5      4     3     2     1

    26    25   24   23   22   21   20  19   18   17   16   15    14

    39     38    37    36    35   34   33   32    31    30    29   28   27

    52     51    50    49    48    47    46    45    44     43    42    41     40

    65      64     63      62    61      60    59    58    57    56    55    54     53

    78      77     76      75    74      73    72    71    70    69    68    67     66

    91     90      89      88    87      86    85    84    83    82    81    80    79

   104   103   102   101   100    99    98    97    96    95    94    93    92

   117   116   115   114   113   112   111   110   109   108   107   106   105

   130   129   128   127   126   125   124   123   122   121   120   119   118

   143   142   141   140   139   138   137   136   135   134   133   132   131

   156   155   154   153   152   151   150   149   148   147   146   145   144

   169   168   167   166   165   164   163   162   161   160   159   158   157

   182   181   180   179   178   177   176   175   174   173   172   171   170

   195   194   193   192   191   190   189   188   187   186   185   184   183

       在接收端应该对接收的数据进行解交织处理,处理以后的数据顺序应该为正常的顺序:即第1个、第2个、…..第195个。

本模块的功能就是完成解交织的功能,将接收到的数据还原到正确的位置上,以下是解交织的模块示意图。

图1 模块示意图

data_in(2:0)是数据输入端,clk是系统时钟,data_in_valid是输入数据有效信号,高电平有效,rst_n是系统复位信号,低电平有效,data_out(2:0)是输出信号,data_out_valid是数据有效信号,高电平有效。

      简单说一下模块的设计方案,首先设立一个195*3bit的RAM单元,将进来的信号存到RAM块中,但是在存的时候要控制RAM写地址线,比如第一个数据是第13个位置上的数据,这时就把写地址线控制为12(首地地址是0,故为13-1=12),第二个数据来的是第26个位置上的数据,故把地址线设为25,依次类推….,当195个数据全部存完以后就可以按照正常的顺序将数据读出来了,直接控制读地址线,使其从0依次加1,一直到194。仔细观察一下,写地址线是有一定规律的,从12开始,第次加13,当满15个以后就再从11开始,然后依次加13,再满15个以后再从11开始,再依次加13….

实现的时候可以用两个计数器,一个是计行的,一个是计列的,用以控制写地址线的操作。具体的功能逻辑仿真图如下所示:

图2 逻辑功能仿真图(一)

图3 逻辑功能仿真图(二)

图4 逻辑功能仿真图(三)

图5 逻辑功能仿真图(四)

       在仿真中为了节省时间,将数据读入的速率扩大,在实际的通信系统中,数据的读入速率远小于系统的工作时钟频率,所以FPGA有足够的时间去处理。

       以下的附件是完整的文档及仿真结果,有需要的同学可以下载,仅供交流参考。