交织器解交织器的设计说明文档

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

交织器与解交织器的Verilog设计0 引言

在数字通信中由于信道固有的噪声特性以及衰落特性,信息在有干扰

信道传输时不可避免的会发生差错。为了提高通信系统信息传输的可靠性,一般采用纠错编码技术来提高通信系统抗干扰能力。但是当信道发生突发差错时,会造成连续的错误,超过纠错码的纠错能力。交织技术作为一项改善通信系统性能的方式,将数据按照一定的规则打乱,把原先连续的差错分散开来,使突发性错误转化为随机性错误,能够提高通信系统抗突发差错的能力和降低译码复杂度。

VHDL作为一种硬件设计时采用的标准语言,降低设计FPGA的难度,使整个系统的设计和调试周期缩短。本设计利用FPGA实现交织,能大大缩减电路的体积,提高电路的稳定性。

1 卷积交织和解交织的原理

交织过程可算作一个编码过程,他把经过纠错编码的数据进行一定的排列组合,提高原有纠错编码的纠突发错误的能力。数字通信中一般采取的同步交织有 2 种:

(1) 块交织

也叫矩阵行列转置法。可以表述为一个二维存储器阵列 ( N × B ) 。交织过程是数据先按行写入,再按列读出;解交织过程则相反,是数据先按列写入,再按行读出。

块交织结构简单, 但数据延时时间长而且所需的存储器比较大。

(2) 卷积交织

交织器的输入端的输入符号数据按顺序分别进入 B 条支路延时器, 每一路延时不同的符号周期。第一路无延时,第二路延时M个符号周期,第三路延时2M个符号周期,…,第B路延时( B - 1 )M 个符号周期。交织器的输出端按输入端的工作节拍分别同步输出对应支路经延时的数据。

卷积交织每条支路符号数据的延时节拍为 di = ( i - 1)M B , i = 1, 2, …, B 。解交织器的延时数与交织器相反。

图1 卷积交织器和解交织器原理图

在仔细对比块交织和卷积交织两种方法之后,考虑到缩短延时和减小器件体积,小组决定采用卷积交织的方法来设计。

然而实现卷积交织的延时方法有多种,一是采用移位寄存器法,直接利用FIFO实现每条支路的延时,这种方法实现简单,但是当B与M值较大时,需要消耗大量的寄存器(图2所示);二是利用RAM来实现移位寄存器的功能,通过控制读/写地址来实现每条支路延迟。

在做课程设计的过程,我们考虑过第一种方法,因为其设计思路和做法都相对简单,但是当需要较大的延时数时,移位寄存器变得很大,占用了大量的编译时间和芯片空间,实际中并不可取。

我们最终采用了RAM来实现移位,合理地设计读写地址按规律变化,即可实现所要的延时。下面将阐述设计细节。

2 卷积交织器和解交织器的VHDL设计

设计要求,交织深度B = 12 , M = 17 , 即有12条数据通路。本小组采用RAM来实现输入数据的时延,按照一定的读写地址规律同时读写RAM中的存储单元。实现框图如图4

其中输入的数据为16位的顺序循环序列,循环范围0--1000,方便观察仿真结果;读写使能控制信号受时钟的上升沿控制;Flag端口是通道0的标志,使输入数据直接输出。

本设计中的关键点是RAM地址的分配和读写地址的产生。所谓RAM 移位法是把RAM地址分给12支路,每一支路对RAM存储单元的读写实现类似于对移位寄存器的操作。为了使所用资源最优化,采用电路计算得到读写地址。

交织器各通道的写地址如下图所示,而读地址则在写地址的数值上加1,通过计算可以知道,第0通道无延时;第1通道延时17*1个时钟周期;第2通道延时17*2个时钟周期......依此类推,第11通道延时17*11个时钟周期。总共所需存储单元数为1 + 18 + .... + 188 = 1134,相应的要用到地址总线为11b。也就是说要用到2k的RAM。

图5. 交织器写地址

总结为数学计算公式,设第i通道的基地址为bi(base address),尾地址为ci,各通道的变址为ai,则RAM的读写地址的变化规律为:第i通道读地址: rd_add = ai + bi ;

第i通道写地址: wr_add = ai + bi - 1; 当ai ≠ 0

wr_add = ci; 当ai = 0 ;

解交织器则与此相反,RAM写地址如下

图6. 解交织器写地址

生成上述的读写地址的实现框图如下所示

图7. 读写地址产生的逻辑框图

以上所述讲解了读写生成器的实现思路,可以说成功实现这个模块,交织器就基本做完了。

下面再简单阐述一下RAM的实现过程,原本可以使用Quartus自带的RAM模块,但考虑到课程设计的学习性质,决定自己实现一个RAM。

从上述分析可知,我们需要2 个2K * 16 的RAM模块,一个用于存储交织器输出的数据,一个用于存储解交织器的输出数据。实现的方法也很简单,构造一个2048 * 16 的二维数组,16位的地址通过conv_integer从std_logic_vector[15..0]转为integer,作为数组的下标,这样就把数据存入了数组对应的存储单元,实现了RAM的功能。

最后从全局的角度看下我们设计的整个交织\解交织的系统,系统框图如下

图8. 交织\解交织系统总体框图

3 设计仿真结果

通过”seq.vhd”、”w_r_addcreat.vhd”、”ram.vhd”、”decode_add_creat.vhd”这4个文件生成5个模块电路,在quartus中连接好后,再将图形文件转化成一个vhd文件”inter.vhd”,然后在ModelSim中进行仿真,仿真波形如下所示

图9. 交织器输出读、写地址

从仿真结果可以看到交织器写地址依次输出0、1、19、54、106、175、261、364、484、621、775、946、0、2、20、55......一直这样循环重复下去,而读地址则滞后一位(第0通道除外),与设计初衷一致。

相关文档
最新文档