新闻  |   论坛  |   博客  |   在线研讨会
基于SOPC的Turbo码实验平台设计
jason5324 | 2009-10-10 13:20:55    阅读:2156   发布文章

基于SOPCTurbo码实验平台设计
 
聂伟,陈奕,杨晓青
(北京化工大学通信系统实验室,北京       100029
 
摘 要:介绍了一种基于SOPC技术的Turbo码实验平台的设计方案,重点阐述了实验平台的硬件结构、系统组成以及Turbo编译码器在FPGA上的实现方法,最后给出了Nios II处理器的定制结果和实验仿真结果。
关键词:Turbo码;实验教学平台;SOPCVHDL
中图分类号:TN911.22               文献标识码:           文章编号:
 
A Turbo Codes Experimental Platform Based on SOPC
 
NIE Wei, CHEN Yi, YANG Xiao-qing
(Telecommunication System Lab, Beijing University of Chemical Technology, Beijing 100029, China)
 
Abstract:This paper introduces the designing idea of a Turbo codes experimental teaching device based on SOPC technology. It gives emphasis to expatiate on hardware configuration, system organization and implementation of Turbo encoder/decoder with FPGA. The customization of Nios II soft processor and simulation results are also discussed.
Key words: Turbo codes; experimental teaching device; SOPC; VHDL
 
 
Turbo码是一种先进的信道编码技术,已被美国空间数据系统顾问委员会(CCSDS)作为深空通信的标准,同时也被国际电信联盟(ITU-T)确定为第三代移动通信系统(IMT – 2000)的信道编码方案之一。目前很多高校都将Turbo码原理及其编译码算法作为通信原理等课程的内容,然而通信技术的快速发展要求通信专业的学生和科技人员不但要掌握扎实的理论知识,还应具有较强的工程概念和动手能力[1]。因此,本文设计并实现了一种用于实验教学的Turbo码实验平台。
目前对Turbo码的硬件实现主要基于传统的FPGA技术,但作为实验教学平台,不仅要让学生能在实验过程中控制Turbo编译码器的工作参数并通过液晶实时显示,而且要让学生能够方便地在系统上修改各模块的程序代码进行调试。在FPGA技术上发展起来的SOPC技术能够灵活地将FPGA用户逻辑与存储器、微处理器以及各种系统外设集成到一起,很好地满足了作为实验平台的需要。因此本文采用SOPC技术将Turbo编译码模块和Altera公司的Nios II软核处理器集成到FPGA内部,利用Nios II处理器控制Turbo编译码器及其它外设,可对影响Turbo码性能的两个最重要的因素——交织方式和译码算法进行选择控制,使学生不但能够对Turbo码的编译码原理加深认识,还能对使用不同交织方式和译码算法的Turbo码性能进行比较分析。在此基础上还可进一步让学生对交织方式和译码算法提出改进,用硬件描述语言编写自己的程序,从而让学生把理论知识应用到实际的设计中。该实验平台不仅能让学生通过先进的SOPC技术掌握和研究Turbo码原理及其编译码算法,而且能充分发挥学生的主观能动性,有利于教学实验从传统的验证型向研究型发展,促进创新型人才的培养。
 
1 实验平台的系统架构及功能
 
Turbo码实验平台的硬件结构如图1所示,它主要由FPGA主芯片及其外围硬件电路组成。FPGA采用Altera公司Cyclone II系列的EP2C35F672C6,它提供了33216个逻辑单元,483840bit的片上RAM,并且支持32Nios II软核处理器来构建SOPC系统。外围电路中,FLASH采用SPANSION公司32MbitS29AL032D芯片,SRAM采用ISSI公司4MbitIS61LV25616芯片,LCDCrystalfontzCFAH1602B-TMC-JP。此外,实验平台上还配置有供FPGA及其外围电路使用的电源、时钟、JTAG仿真接口以及可扩展I/O接口。
 
 
 
1 实验平台硬件结构框图
 
该实验平台是以Altera公司的Nios II软核处理器为MCU构建的SOPC实验系统,整体结构采用模块化设计。系统主要由Nios II处理器模块、信息源产生模块、Turbo编码器模块、信道模拟模块、Turbo译码器模块以及通过相应控制接口连接到Avalon总线上的SRAMFLASHUARTLCD和键盘等外设组成。实验平台的系统框图如图2所示。
 
2 实验平台系统框图
 
Nios II处理器作为软核被植入到FPGA中,它能对FPGA用户逻辑中的Turbo编译码器、信息源产生模块、信道模拟模块进行控制,也能通过相应控制接口对系统外围设备进行操作。该实验平台的JTAG仿真接口可通过下载线与PC机并口连接,将编译生成的目标镜像文件下载到FPGA或者FLASH存储芯片中。通过实验平台上的键盘,可以对Turbo码编码和译码过程中的参数进行设置以及对LCD显示模块进行翻屏操作。在实验过程中,学生可以通过键盘对信息源产生模块进行控制,对其中的移位寄存器级数进行三种不同的选择,从而可以产生三种不同周期的伪随机序列输出到编码器模块。对于Turbo编码器,可由键盘设置其交织方式为分组交织或者伪随机交织,以得到不同交织方式的Turbo码。在信道模拟模块中,可由键盘控制叠加到编码序列上的噪声图样的数值,以模拟不同信噪比情况下的信道特性。在Turbo译码器中,可由键盘选择分量译码器的译码算法,本设计预先实现的译码算法是SOVA算法和Max-Log-MAP算法,并且能设置译码迭代次数。实验过程中的,学生不仅可以在LCD上实时观察到当前Turbo编译码器所选用的交织方式、译码算法、迭代次数以及接收到误码的信息帧的数目,还能通过示波器或逻辑分析仪在实验平台的测试脚上观察相应信号的波形。在理解Turbo编译码原理的基础上,学生可以根据需要修改信息源、交织方式、译码算法等各个模块的程序代码,并下载到FPGA中检验修改后的效果。
 
2 实验平台设计与实现
 
2.1 Turbo编码器的设计与实现
    本实验平台的Turbo编码器由分量码编码器、交织器、删余矩阵以及复接器组成,如图3所示。其中,分量码选用递归系统卷积码(RSC),且两个分量编码器采用相同的生成矩阵。两个分量编码器被交织器隔开,分别对输入数据进行并行处理。为了提高码率,两路分量编码器的输出经过删余矩阵将两路校验位进行有规律的删除合并,得到信息序列的校验序列。然后将原始信息序列和校验序列送入复接器,复接器将信息序列和校验序列进行并串转换后得到编码输出序列。
 
 
3 Turbo编码器结构
 
    本文采用约束长度为5的(214RSC编码器作为Turbo码编码器中的分量编码器,其生成多项式为(37, 21),码率为1/2,共有16编码状态,生成矩阵。
经过编码后得到的输出序列中每个信息比特对应两个RSC分量编码器输出的校验比特,从而整个Turbo编码器的码率为1/3。为了提高码率,本文使用了删余矩阵来周期性地删除一些校验位。即分别删除中位于偶数位置的校验比特和中位于奇数位置的校验比特。删余后的校验比特与系统输出复接后得到的码字序列为。通过加入删余矩阵,Turbo编码器的码率从原来的1/3提高到1/2
Turbo编码器中交织器的使用是使其具有随机码特性的关键,不同的交织器生成码字的最小码重不同,而最小码重是决定纠错码性能的一个重要指标,因此交织器是Turbo码达到最佳性能的关键。本设计采用了分组交织和伪随机交织两套交织方案,以便让学生在实验中通过Nios II处理器来控制让哪一种交织器及其对应的解交织器工作,来达到不同的纠错性能。
    分组交织是将长度为的信息序列按行顺序依次存入一个矩阵(),再按列顺序依次从矩阵中读出一个新的长度为信息序列,新序列即为交织后得到的序列。分组解交织的过程类似,将长度为的已交织序列按列顺序依次存入一个矩阵,再按行顺序依次从矩阵中读出,即得到原始信息序列。
伪随机交织是一种基于查找表的交织方式,其实现方式是将长为的信息序列存入一个查找表中,并标记每个比特的位置。然后生成个之间的随机数,每个随机数对应于信息序列中相应位置的信息比特,再把随机数序列按大小顺序重新排列得到新的序列,最后按中元素的顺序从查找表中读出相应得信息比特,便完成了交织。解交织即为该过程的逆过程。
 
2.2 Turbo译码器的设计与实现
Turbo译码器主要由两个交替工作的软输入软输出(SISO)译码器DEC1DEC2以及相应的交织器和解交织器组成,交织器与编码器中所使用的交织器相同。译码时,译码器DEC1对分量码RSC1进行最佳译码,产生关于信息序列中每一比特的似然信息,并将其中的“新信息”经过交织送给DEC2,译码模块DEC2将此信息作为先验信息,对分量码RSC2进行最佳译码,产生关于交织后的信息序列中每一比特的似然信息,然后将其中的“外信息”经过解交织送给DEC1,进行下一次译码。这样,经过多次迭代,DEC1DEC2的外信息趋于稳定,似然比渐进值逼近于对整个码的最大似然译码,然后对此似然比进行硬判决,即可得到信息序列的每一比特的最佳估计值序列。
由于Turbo码译码器中的两个分量译码器的功能是完全相同的,并且本系统采用了两种译码算法以供选择,因此在整个译码器中对于两种译码算法可以分别只采用一个分量译码器电路,通过反复利用它来实现两个分量译码器的功能。控制电路的主要作用包括:控制各个RAM的读操作,控制进行SOVA译码还是Max-Log-MAP译码并决定分量译码器作为DEC1还是DEC2来使用,控制进行分组交织与解交织还是随机交织与解交织(取决于编码时所选择的交织方式),迭代次数控制以及启动硬判决输出。该控制电路在系统中与Nios II处理器的相应控制端口连接,以达到通过按键控制译码器工作的目的。考虑到译码运算的时间大大多于读取数据的时间,为了提高译码速度并使译码连续进行,本设计在算法实现部分与数据读取部分的电路中采用不同频率的时钟,其中算法部分的时钟应适当高于数据读取的时钟,从而实现译码的流水作业。本实验平台中Turbo译码器顶层实现框图如图4所示。
 
 
4 译码算法和交织方式可选择的Turbo译码器实现框图
 
实现上述Turbo译码器中软输入软输出译码器的算法目前主要有SOVA算法和MAP算法两类。SOVA算法和Max-Log-MAP算法的硬判决输出是相同的,并具有相同的分支度量函数,因此两者的最大度量路径及相应的硬判决输出也是相同的。两种算法的主要区别是对编码格图中判决路径的选取方式不同,性能差别的来源在于不同的判决信息获取方法。本设计分别实现了基于SOVA算法和Max-Log-MAP算法的SISO分量译码器,学生在实验中可通过系统选择让其中某一种译码器工作。
 
2.3 Nios II处理器的设计与实现
    Altera公司的Nios II是一种采用流水线技术、单指令流的RISC软核处理器,它采用改进的哈佛存储器结构,CPU带有分离的数据和程序存储器总线控制,并具备高速缓存、中断处理功能,其大部分指令可以在一个时钟周期内完成。本文选用标准型Nios II处理器,在此基础上增加了用于JTAG在线调试的OCI模块,可以通过JTAG进行调试。还定义了一个ROM RAM 模块,其数据宽度均为32 位,大小均为2KByteROM 用来存储GERMS Monitor程序,以便进行软件调试,RAM作为程序运行空间和变量空间。UART 为通用串行通信IP,用来外接RS232 用于系统的调试和通信。Avalon总线用来连接外部的FLASHSRAM以及用户自定制逻辑,它需要极小的FPGA资源,提供完全的同步操作。本文所定制的Nios II软核处理器如图5所示。
 
5 Nios II处理器定制结果
 
2.4 实验仿真结果
在该实验平台上进行的Turbo编码仿真结果如图6所示,编码采用伪随机交织,使用的时钟频率为100MHz,输入信号的码速率为50MHz/s,由于采用1/2码率的编码方式,所以输出信号的码速率为100MHz/s。图5中,en为异步清零端,input为输入信号,xsxp1xp2分别为系统位、分量编码器1的校验位和分量编码器2的校验位,output为输出信号。
6 编码仿真结果
7为相应的译码结果,译码接收的数据与编码输出的数据码速率相同,为100MHz/s,分量译码器选用SOVA算法进行译码,经过3次循环迭代后,硬判决输出的译码结果为dataout。由于RAM模块的读写要占用大量的时钟周期,多个RAM模块的顺序调用必将增加分量译码器的延迟,且整个译码过程又是将分量译码器循环迭代调用,故译码输出有较大的延迟,为60us
7 译码仿真结果
 
3 结束语
 
本文选用Altera公司的Cyclone II系列EP2C35F672C6芯片作为目标器件,结合在SOPC Builder中定制生成的Nios II软核处理器实现了基于SOPCTurbo码实验平台。其中MCU控制、键盘扫描及液晶显示模块的程序在Nios II IDE 6.0中用C语言实现,FPGA用户逻辑部分的程序用VHDL硬件描述语言编写并在Quartus II 6.0环境下完成了仿真、综合及下载。通过在液晶上实时显示实验过程中Turbo编译码器的工作参数及接收到误码的信息帧的数目,使学生能够清楚地理解Turbo编译码器各个环节的作用及整个实验的数据流程。SOPC的实现技术使得学生可以很容易地修改各模块的程序代码,从而实现对Turbo编译码算法的研究和改进。
 

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客