卷积码编码器的设计 (1)汇总
卷积码编码器的设计1汇总

湖南文理学院课程设计报告学生姓名: 指导教师:完成时间:2014-11-18报告成绩:课程名称: 通信系统课程设计 专业班级:通信工程11102班09朱涛 侯清莲、设计要求 二、设计作用与目的 三、所用设备及软件 四、卷积码编码的概念五、EDA 设计方法及工具软件QUARTUB7.1 VHDL 设计的优点与设计方法八、心得体会 九、参考文献目录4.1卷积码的编码描述方法4.3 4.44.2 卷积编码 卷积码的树状图 卷积码的网格图六、 改变卷积编码器的参数仿真以及结论6.1 不同回溯长度对卷积编码器性能的影响 6.2 不同码率对卷积编码器误码性能的影响 6.3不同约束长度对卷积编码器的误码性能影响七、 卷积码编码器的VHDL 设计与仿真7.2卷积码编码器的VHDL 实现10 10 11卷积编码器的设计三、所用设备及软件(1) QUARTUS ⑵PC 机四、卷积码编码的概念4.1卷积码的编码描述方法编码描述方法有5种:冲激响应描述法、生成矩阵描述法、多项式乘积描述法、状态图描述法和网格图描述法。
卷积码的纠错能力随着N 的增加而增大,而差错率随着 N 的增加而指数下降。
在编码器复杂性相同的情况下,卷积码的性能优于分组码。
分组码有严格 的代数结构,但卷积码至今尚未找到如此严密的数学手段。
分组码的译码算法可以由其代 数特性得到。
卷积码虽然可以采用适用于分组码的门限译码(即大数逻辑译码),但性能 不如维特比译码和序列译码[2]。
以二兀码为例,输入信息序列为 u = ( U 0,U 1,…),其多项式表示为u(x) = U 0+U 1X +…+…。
编码器的连接可用多项式表示为 g 1,1)(x) = 1+X+X 2和g (1,2)(x) = 1+x 2,称为码的子生 成多项式。
它们的系数矢量g (1,1)=(111)和g (1,2)=(101)称作码的子生成元。
以子生成多项式 为阵元构成的多项式矩阵 G(x) =[ g (1,1)(x), g (1,2)(x)],称为码的生成多项式矩阵。
卷积码编码器

• 信道编码的基本原理:
5
BUPT Information Theory & Technology Education & Research Center
7.1.2. 信道编码的分类
1. 从功能上看可以分为三类
仅具有发现差错功能的检错码,比如循环冗 余校验CRC码、自动请求重传ARQ等。 具有自动纠正差错功能的纠错码,比如循环 码中BCH码、RS码以及卷积码、级联码、 Turbo码等。 既能检错又能纠错的信道编码,最典型的是 混合ARQ,又称为HARQ。
传输中无差错,即e=0,则接收端必然要满足监督方程 H· Cτ=0τ ,若传输中由差错,即e≠0,则接收端监督方 程应改为:
HYT H(C e)T HCT HeT HeT ST (7.2.11)
• 由上式还可求得
S (S ) (HY ) YH CH eH eH
4
BUPT Information Theory & Technology Education & Research Center
• 信道编码的意义:
由于实际信道存在噪声和干扰,使发送的码字与信道传 输后所接收的码字之间存在差异,称这种差异为差错。 信道编码的目的是为了改善通信系统的传输质量。 基本思路是根据一定的规律在待发送的信息码中加入一 些多余的码元,以保证传输过程的可靠性。信道编码的 任务就是构造出以最小冗余度代价换取最大抗干扰性能 的“好码”。
移项 • 并将它进一步改写为: C0 C2 C3 0 C C C C 0 0 1 2 3 C0 C1 C3 0 C1 C2 C6 0 • 将上述线性方程改写为下列矩阵形式为:
基于VHDL的卷积码编解码器的设计报告

长沙理工大学《通信电路EDA》课程项目报告系别计通系专业通信工程班级通信1203班指导教师单树民项目组组长历洋学号201254080312 项目组成员刘鼎新学号201254080330 项目组成员陈士怡学号201254080324 项目组成员侯耀文学号201254080323完成日期2014年11月5日目录1 引言 (3)1.1项目背景 (3)2 卷积码编解码器的结构概述 (4)2.1 卷积码编码器的结构 (4)2.2 卷积译码器的结构 (4)3 卷积码编解码器的VHDL设计 (5)3.1 VHDL设计的优点与设计方法 (5)3.2 卷积码编解码器的VHDL实现 (6)3.2.1 卷积编解码器顶层建模的VHDL描述 (7)3.2.2 用MAX+PLUSⅡ编译后生成的编解码器图形符号错误!未定义书签。
3.2.3 卷积编解码器VHDL仿真波形 (9)4 后记 (11)基于VHDL的卷积码编解码器的设计1 引言1.1项目背景现代数字通信有两个基本的理论基础,即信息论和纠错编码理论,它们几乎是同时在第二次世界大战结束后不久诞生的。
前者首先由Shannon以他的不朽名著“通信的数学理论”为标志建立起来的,而后者则以Hamming的经典著作“纠错和检错编码”为代表。
Shannon信息论主要讨论信息的度量,以及对于信息表示和信息传输的基本限制。
信道编码定理告诉我们,只要信息传输速率小于信道容量,则信息传输可以以任何小的错误概率进行。
但是,Shannon信息论并没有告诉我们如何去实现这一点。
Hanmming提出的纠错编码理论正是为了解决这个问题。
科学技术的发展使人类跨入了高度发展的信息化时代。
在政治、军事、经济等各个领域,信息的重要性不言而喻,有关信息理论的研究正越来越受到重视。
20世纪50年代信息论在学术界引起了巨大的反响。
20世纪60年代信道编码技术有了较大进展,成为信息论的又一重要分支。
信道编码技术把代数方法引入到纠错码的研究,使分组码技术的发展到了高峰,找到了大量可纠正多个错误的码,而且提出了可实现的译码方法。
卷积自动编码器

卷积⾃动编码器卷积⾃动编码器如果要处理图像,⽬前为⽌的⾃动编码器都⽆法很好的⼯作(除⾮图像⾮常⼩),卷积神经⽹络⽐密集⽹络更适合处理图像。
如果要为图像构建⾃动编码器(例如,⽤于⽆监督预训练或降维),则需要构建卷积⾃动编码器。
编码器是由卷积层和池化层组成的常规CNN。
它通常会减⼩输⼊的空间尺⼨(即⾼度和宽度),同时会增加深度(即特征图的数量)。
解码器必须进⾏相反的操作(放⼤图像并减少其深度到原始尺⼨),为此可以使⽤转置卷积层(或者可以将上采样层与卷积层组合在⼀起)以下构建适⽤于Fashion MNIST的简单卷积⾃动编码器:from tensorflow import kerasimport tensorflow as tffashion_mnist = keras.datasets.fashion_mnist(X_train_all, y_train_all), (X_test, y_test) = fashion_mnist.load_data()X_valid, X_train = X_train_all[:5000] / 255., X_train_all[5000:] / 255.y_valid, y_train = y_train_all[:5000], y_train_all[5000:]conv_encoder = keras.models.Sequential([yers.Reshape([28, 28, 1], input_shape=[28, 28]),yers.Conv2D(16, kernel_size=3, padding='same', activation='gelu'),yers.MaxPool2D(pool_size=2),yers.Conv2D(32, kernel_size=3, padding='same', activation='gelu'),yers.MaxPool2D(pool_size=2),yers.Conv2D(64, kernel_size=3, padding='same', activation='gelu'),yers.MaxPool2D(pool_size=2)])conv_decoder = keras.models.Sequential([yers.Conv2DTranspose(32, kernel_size=3, strides=2, padding='valid', activation='gelu'),yers.Conv2DTranspose(16, kernel_size=3, strides=2, padding='same', activation='gelu'),yers.Conv2DTranspose(1, kernel_size=3, strides=2, padding='same', activation='sigmoid'),yers.Reshape([28, 28])])conv_ae = keras.models.Sequential([conv_encoder, conv_decoder])conv_pile(loss='binary_crossentropy', optimizer=keras.optimizers.Adam())history = conv_ae.fit(X_train, X_train, epochs=10, validation_data=(X_valid, X_valid), batch_size=32)Epoch 1/101719/1719 [==============================] - 12s 7ms/step - loss: 0.3013 - val_loss: 0.2745Epoch 2/101719/1719 [==============================] - 11s 7ms/step - loss: 0.2734 - val_loss: 0.2672Epoch 3/101719/1719 [==============================] - 11s 6ms/step - loss: 0.2684 - val_loss: 0.2637Epoch 4/101719/1719 [==============================] - 11s 6ms/step - loss: 0.2655 - val_loss: 0.2614Epoch 5/101719/1719 [==============================] - 11s 6ms/step - loss: 0.2636 - val_loss: 0.2597Epoch 6/101719/1719 [==============================] - 11s 6ms/step - loss: 0.2623 - val_loss: 0.2588Epoch 7/101719/1719 [==============================] - 11s 7ms/step - loss: 0.2613 - val_loss: 0.2577Epoch 8/101719/1719 [==============================] - 12s 7ms/step - loss: 0.2605 - val_loss: 0.2572Epoch 9/101719/1719 [==============================] - 12s 7ms/step - loss: 0.2599 - val_loss: 0.2567Epoch 10/101719/1719 [==============================] - 11s 7ms/step - loss: 0.2593 - val_loss: 0.2563可视化重构import matplotlib.pyplot as pltdef plot_image(image):plt.imshow(image, cmap='binary')plt.axis('off')def show_reconstructions(model, n_images=5):reconstructions = model.predict(X_valid[:n_images])fig = plt.figure(figsize=(n_images * 1.5, 3))for image_index in range(n_images):plt.subplot(2, n_images, 1 + image_index)plot_image(X_valid[image_index])plt.subplot(2, n_images, 1 + n_images + image_index)plot_image(reconstructions[image_index])show_reconstructions(conv_ae)。
卷 积 码

1.3 卷积码的译码
1. 维特比译码
图 10.10 维特比译码格图
2. 序列译码 当m很大时,可以采用序列译码法。
译码先从树图的起始节点开始,把接收到的第一个子码的n个 码元与自始节点出发的两条分支按照最小汉明距离进行比较, 沿着差异最小的分支走向第二个节点。在第二个节点上,译 码器仍以同样原理到达下一个节点,以此类推,最后得到一 条路径。若接收码组有错,则自某节点开始,译码器就一直 在不正确的路径中行进,译码也一直错误。因此,译码器有 一个门限值,当接收码元与译码器所走的路径上的码元之间 的差异总数超过门限值时,译码器判定有错,并且返回试走 另一分支。经数次返回找出一条正确的路径,最后译码输出。
用码多项式表示: Ci (x)=S(x) × gi(x)
例:卷积码(2,1,2)的编码器 g1=(1 1 1); g1 (x)=x2+x+1 g2=(1 0 1); g2 (x)=x2+1
若: S = ( 1 1 0 1 0) ; S(x)=x4+ x3+ x 则: C1 = S * g1= ( 1 1 0 1 0) * (1 1 1)=(1 0 0 0 1 1 0)
11 10
00 a 11
10 b 01
11 c 00
a b c d a
11 b
b 01
数码
起点 a
01 d 10 c 00 d
11 a 11 a
10
c 00
10 b 01
b c
11 b
d
01
11 c 00
aห้องสมุดไป่ตู้
01
b
d 10
01 d 10
c
d
数码
卷积编码

卷积编码作者:韩丽君来源:《卷宗》2013年第11期摘要:空时格型码是建立在卷积码的基础上设计出来的,文中通过三种方法来说明卷积码的编码过程,为我们设计出高性能的空时码字提供理论依据。
关键词:空时格型码;卷积码;多输入多输出系统1 引言卷积码是把信源输出的信息序列,以k0个码元分为一段,通过编码器输出长为n0(≥k0)一段的码段。
该码段的n0﹣k0个校验元不仅与本组的信息元有关,而且也与其前m 段的信息元有关,称m为编码存贮,表示为,码率。
卷积码是一种重要的差错控制编码,由于其性能优且编码运算较简单,因此在mimo系统中获得了广泛的采用。
卷积编码过程的描述方法有很多,为了更容易理解卷积码的编码原理,下面就分别通过状态图方法、树图方法、网格图方法这三种方法来详细说明卷积码的编码过程。
2 状态图表示方法状态图可以清晰的反映卷积编码器的状态转移过程。
例如图1,(2,1,2)卷积码编码器:图1 (2,1,2)卷积编码器由于k0=1且码器由m=2级移位寄存器组成,所以移位寄存器中的存数只有四种可能:00,10,01,11。
相应于编码器有四个状态:。
随着信息序列的不断送入,编码器就不断地从一个状态转移到另一状态,并输出相应的码序列。
由编码器电路图可得到编码器状态图,如图2:图2 (2,1,2)卷积编码器状态图图2中,实线表示0输入,虚线表示1输入时的状态转移。
虽然状态图能表示卷积编码器在不同输入的信息序列下,编码器各状态之间的转移关系,但并不能表示出编码器状态转移随时间的关系。
因此我们可以用码树图和网格图来表示。
3 树图表示方法卷积码的生成矩阵和生成多项式表示方法可以使人深入了解卷积编码原理,而树图表示方法很形象,此外,卷积码的各种距离度量,也往往与树图发生密切关系,因此卷积码的树图表示是一种非常重要的描述卷积码的方法。
对一般的二进制编码器来说,每次输入的是k0个信息元,有个可能的信息组,这相应于从码树每一节点上分出的分支数有条,相应于种不同信息组的输入,并且每条都有n0个码元作为与此相应的输出子码。
卷积码的设计与实现

卷积码的设计与实现卷积码是一种线性编码技术,广泛应用于通信和数据传输领域。
它通过将输入数据编码为卷积码的形式,提高了数据的纠错能力和传输效率。
本文将介绍卷积码的设计与实现。
一、卷积码的设计1、编码器设计卷积码的编码器由多个移位寄存器和模2加法器组成。
编码器的设计取决于两个参数:约束长度和生成多项式。
约束长度是指编码器中移位寄存器的数量,它决定了卷积码的纠错能力。
生成多项式则决定了编码器的结构。
在设计编码器时,需要选择合适的约束长度和生成多项式,以实现所需的纠错能力和编码效率。
常用的生成多项式有G(D) = (1+D+D^2)和G(D) = (1+D^2),其中D表示延迟。
2、解码器设计卷积码的解码器通常采用最大似然解码算法,如维特比算法或概率解码算法。
这些算法通过搜索所有可能的路径,找到最可能的路径作为解码结果。
在设计解码器时,需要选择合适的算法,并优化算法的复杂度和性能。
常用的优化方法包括剪枝、动态规划、并行计算等。
二、卷积码的实现1、硬件实现卷积码的硬件实现通常采用数字电路和集成电路技术。
通过将编码器和解码器设计成硬件电路,可以实现高速、低功耗的卷积码编码和解码。
在硬件实现中,需要考虑电路的功耗、面积、速度等因素,以优化硬件性能。
常用的硬件实现方法包括ASIC、FPGA和DSP等。
2、软件实现卷积码的软件实现通常采用编程语言和算法库。
通过编写代码实现编码器和解码器的功能,可以实现灵活、可扩展的卷积码编码和解码。
在软件实现中,需要考虑代码的效率、可读性和可维护性等因素,以优化软件性能。
常用的软件实现方法包括C/C++、Python等编程语言和相应的算法库。
三、总结卷积码是一种有效的线性编码技术,具有纠错能力强、传输效率高等优点。
本文介绍了卷积码的设计和实现方法,包括编码器和解码器的设计、硬件和软件实现等方面。
在实际应用中,需要根据具体需求选择合适的卷积码参数和实现方法,以实现高效的通信和数据传输。
卷积码的Viterbi译码设计设计

摘要在数字通信系统中,通常采用差错控制编码来提高系统的可靠性。
自P.Elias 首次提出卷积码编码以来,这一编码技术至今仍显示出强大的生命力。
目前,卷积码已广泛应用在无线通信标准中,如GSM,CDMA2000和IS-95等无线通信标准中。
针对N-CDMA数据传输过程中的误码问题,本文论述了旨在提高数据传输质量的维特比译码器的设计。
虽然Viterbi译码复杂度较大,实现较为困难,但效率高,速度快。
因此本文着重分析和讨论了1/2速率的(2,1,9)卷积码编码和其Viterbi译码算法。
深入研究卷积码编码原理和Viterbi算法原理后,提出了(2,1,9)卷积码编码以及Viterbi算法的初始化、加—比—选和回溯设计方案,运用查表的方法,避免了大量繁琐计算,使得译码简洁迅速,译码器的实时性能良好。
并充分利用TMS320C54X系列DSP芯片,用汇编语言完成了(2,1,9)卷积码编码和Viterbi 译码的程序。
关键词:差错控制编码、卷积码、Viterbi译码、TMS320C54X、DSPAbstractIn digital communication systems, error control coding is usually used to improve system reliability. Since P.Elias put forward the convolutional coding the first time, the coding is still showing strong vitality.,has become widely used in satellite communications, wireless communications and many other communication systemsas a kind of channel coding method. such as GSM, CDMA2000 and has been a wireless communication standards of IS-95.In view of the error problem in the process of N-CDMA data transmission, this paper discusses the aims to improve the quality of data transmission of victor design than the decoder.Although Viterbi decoding complexity is bigger, more difficult to achieve, but high efficiency and fast speed. So this article emphatically analyzed and discussed the 1/2 rate (2,1,9) convolution code coding and its Viterbi decoding algorithm. In-depth study on principle of convolution code coding and Viterbi algorithm, proposed the convolution code coding and Viterbi algorithm (2,1,9) initialization, add - than - choose and back design, using look-up table method, to avoid a large amount of tedious calculation, the decoding and quick, good real-time performance of the decoder. Make full use of the series of TMS320C54X DSP chip, using assembly language to complete the(2,1,9)convolution code coding and Viterbi decoding process.Keywords: error control coding, convolutional code, Viterbi decoding, TMS320C54X目录摘要 (1)Abstract (2)目录 (3)1.绪论 (1)1.1 移动通信及N-CDMA背景 (1)1.2 数字通信概述 (1)1.3 卷积编码与译码的发展 (3)1.4 主要研究工作 (3)2.DSP与CCS简介 (5)2.1 DSP概述 (5)2.1.1 DSP的主要特点 (5)2.1.2 CSSU单元概述 (7)2.2 CCS概述 (8)2.3 本章小结 (8)3.卷积码的理论基础 (9)3.1 卷积码的概述 (9)3.1.1 卷积码基本原理 (9)3.1.2 卷积码的纠错能力 (9)3.1.3 卷积码的表示方法 (10)3.2 Viterbi译码的概述 (11)3.3 本章小结 (14)4.卷积编码的实现 (15)4.1 (2,1,9)卷积码编码 (15)4.1.1 (2,1,9)卷积码编码设计方案 (15)4.1.2 (2,1,9)卷积码编码流程图 (16)4.1.3 (2,1,9)卷积编码程序实现 (16)4.1.4 (2,1,9)的程序仿真 (17)4.2 (2,1,9)卷积码状态转换表 (17)4.2.1 (2,1,9)卷积码状态转换表的设计算法 (18)4.2.2 (2,1,9)卷积码状态转换表的流程图 (18)4.2.3 (2,1,9)卷积码状态表 (18)4.2.4 (2,1,9)卷积码状态表的蝶形结构 (21)4.3 本章小结 (22)5. Viterbi译码的实现 (23)5.1 Viterbi译码基础 (23)5.2 Viterbi译码算法 (23)5.3 变量定义情况 (25)5.4 初始化 (26)5.4.1 初始化流程图 (27)5.4.2 初始化程序仿真 (27)5.5 加-比-选 (28)5.5.1加-比-选流程图 (29)5.5.2加-比-选程序仿真 (30)5.6 回溯 (31)5.6.1 回溯流程图 (32)5.6.2 回溯仿真图 (33)5.7 Viterbi纠错测试 (34)5.8 本章小结 (34)总结 (36)致谢 ............................................................................ 错误!未定义书签。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
湖南文理学院课程设计报告课程名称:通信系统课程设计专业班级:通信工程11102班09 学生姓名:朱涛指导教师:侯清莲完成时间:2014-11-18报告成绩:目录一、设计要求 (1)二、设计作用与目的 (1)三、所用设备及软件 (1)四、卷积码编码的概念 (1)4.1卷积码的编码描述方法 (1)4.2 卷积编码 (2)4.3 卷积码的树状图 (3)4.4 卷积码的网格图 (3)五、 EDA设计方法及工具软件QUARTUSⅡ (4)六、改变卷积编码器的参数仿真以及结论 (4)6.1 不同回溯长度对卷积编码器性能的影响 (4)6.2 不同码率对卷积编码器误码性能的影响 (5)6.3 不同约束长度对卷积编码器的误码性能影响 (6)七、卷积码编码器的VHDL设计与仿真 (8)7.1 VHDL设计的优点与设计方法 (8)7.2 卷积码编码器的VHDL实现 (10)八、心得体会 (10)九、参考文献 (11)卷积编码器的设计一、设计要求(1)画出卷积码的原理框图,说明系统中各主要组成部分的功能。
(2)使用EDA技术及VHDL语言对卷积编码器进行设计与仿真并对结果分析。
二、设计作用与目的(1)巩固加深对通信基本知识分析以及卷积码的掌握,提高综合运用通信知识的能力。
(2)掌握采用仿真软件对系统进行仿真分析。
(3)培养学生查阅参考文献,独立思考,设计,钻研电子技术相关问题的能力。
(4)掌握相关电子线路工程技术规范以及常规电子元器件的性能技术指标。
(5)培养严肃认真的工作作风与科学态度,建立严谨的工程技术观念。
(6)了解电气图国家标准,并利用电子CAD等正确绘制电路图。
(7)培养工程实践能力,创新能力与综合设计能力。
三、所用设备及软件(1)QUARTUSⅡ(2)PC机四、卷积码编码的概念4.1卷积码的编码描述方法编码描述方法有5种:冲激响应描述法、生成矩阵描述法、多项式乘积描述法、状态图描述法和网格图描述法。
卷积码的纠错能力随着N的增加而增大,而差错率随着N的增加而指数下降。
在编码器复杂性相同的情况下,卷积码的性能优于分组码。
分组码有严格的代数结构,但卷积码至今尚未找到如此严密的数学手段。
分组码的译码算法可以由其代数特性得到。
卷积码虽然可以采用适用于分组码的门限译码(即大数逻辑译码),但性能不如维特比译码和序列译码[2]。
以二元码为例,输入信息序列为u=(u0,u1,…),其多项式表示为u(x)=u0+u1x+…+…。
编码器的连接可用多项式表示为g(1,1)(x)=1+x+x2和g(1,2)(x)=1+x2,称为码的子生成多项式。
它们的系数矢量g(1,1)=(111)和g(1,2)=(101)称作码的子生成元。
以子生成多项式为阵元构成的多项式矩阵G(x)=[g(1,1)(x),g(1,2)(x)],称为码的生成多项式矩阵。
由生成元构成的半无限矩阵。
4.2 卷积编码卷积码的编码器一般都比较简单。
图4.1 卷积码编码器图4.1是一般情况下的卷积码编码器框图。
它包括NK级的输入移位器,一组n个模2和加法器和n级的输出移位寄存器。
对应于每段k比特的输入序列,输出n个比特。
由图可知,n个输出比特不但与当前的k个输入比特有关,而且与以前的(N-1)k个输入信息比特有关。
整个编码过程可以看成是输入信息序列与由移位寄存器和模2加法器的连接方式所决定的另一个序列的卷积,卷积码由此得名。
本文采用的是冲击响应描述法编码思想。
图4.2(2,1,3)卷积编码器如图4.2是卷积码(2,1,3)卷积编码器的一个框图。
左边是信息的输入。
下面分别是系统位输出和校验位输出。
其中间是3个移位寄存器和一个模2加法器。
简单的说就是信息位经过移位寄存器和一个模2加法器产生一个系统位和校验位加在一起输出。
可以看出:每输入一个比特,移位寄存器中就向右移动一个位子。
原来的第三个寄存器就被移出。
可见卷积编码不只与现在的输入比特有关还与前面的3-1个比特有关。
所以约束长度是3。
在这里,其中K=1,n=2所以码率R=K/n=1/2[3]。
4.3 卷积码的树状图对于图4.2所示的(2,1,3)卷积码编码电路,其树状图如下图4.3所示,这里,分别用a ,b ,c 和d 表示寄存器的4种状态:00,01,10和11,作为树状图中每条支路的节点。
以全零状态a 为起点,当输入位信息位为0时,输出码元c1c2=00,寄存器保持状态a 不变,对应图中从起点出发的上支路;当输入位为1时,输出码元c1c2=11,寄存器则转移到状态b ,对应图中的下支路;然后再分别以这两条支路的终结点a 和b 作为处理下一位输入信息的起点,从而得到4条支路,以此类推,可以得到整个树状图。
如下图4.3图4.3(2,1,3)树状图4.4 卷积码的网格图状态图可以完整的描述编码器的工作过程,但是其只能显示状态转移的过程而不能显示状态转移发生的时刻,由此引出用来表示卷积码的另一种常用方法——网格图。
网格图就是时 间与对应状态的转移图,在网格图中每一个点表示该时刻的状态,状态之间的连线表示状态转移。
通过观察网格图可以发现在网格图中输入信息x (n )并没有标出,但如观察到转移后的状态表示(x (n ),x (n -1))就可以发现输入信息已经隐含在转移后的状态中[4]。
如下图4.4是(2,1,3)卷积编码的网格图。
0000 状态 A 00 B 01 C 10 D 11 A 00 B 01 C 10D 11a ab11 110110a bc da b c d图4.4(2,1,3)卷积编码的网格图五、 EDA 设计方法及工具软件QUARTUS Ⅱ(1) 前端设计(系统建模RTL 级描述)后端设计(FPGAASIC )系统建模。
(2) IP 复用。
(3) 前端设计。
(4) 系统描述:建立系统的数学模型。
(5) 功能描述:描述系统的行为或各子模块之间的数据流图。
(6) 逻辑设计:将系统功能结构化,通常以文本、原理图、逻辑图、布尔表达式来表示设计结果。
(7) 仿真:包括功能仿真和时序仿真,主要验证系统功能的正确性及时序特性。
六、 改变卷积编码器的参数仿真以及结论6.1 不同回溯长度对卷积编码器性能的影响下面将以(2,1,3)卷积码来建立模块仿真。
将编码模块中的Traceback depth 分别设置为20,35,45并在一个图中画出这三种方式下的误码性能曲线得到下图。
从上到下的三条曲线分别是Traceback depth 为20,35,45。
可以看出:回溯长度是在Viterbi 译码过程中一个很重要的参数,他决定了译码延迟,随着他的不断变化,误码性能也随误比特率曲线可以清楚地看到,当回溯长度一定时,随着信道噪声的逐渐减小,系统的误比特率逐渐降低;当回溯长度逐渐增加,系统的误比特率随之逐渐降低,但是当回溯程度a 增加到a ≥5N 时(N 为编码的约束长度),误比特率数值趋于稳定,因此,在确定回溯长度时既要考虑到随着a 的增加误比特率随之降低的趋势,也要考虑到译码延迟会变大,在选取回溯长度时,通常取a =5N 。
状态 a =00 b =01 c =10 d =11图 6.1不同回溯长度对误码性能的影响分析不同回溯长度对卷积码无码性能的影响时用到的程序如下:x=-10:5;y=x;for i=1:length(x)SNR=x(i);sim(‘yima’);y(i)=mean(BitErrorRate);Endsemilogy(x,y);Hold on;for i=1:length(x)SNR=x(i);sim(‘yima2’);y(i)=mean(BitErrorRate);Endsemilogy(x,y);6.2 不同码率对卷积编码器误码性能的影响下面图是通过改变卷积码的码率为1/2和1/3而得到的二条对比曲线。
上面的一条曲线是码率为1/2,下面的是码率为1/3。
卷积码的码率R=k/n,他是卷积码的一个重要参数,当改变卷积码的码率时,系统的误码性能也将随之发生变化。
从图中的误比特率曲线可以看出,当码率一定时,随着信道噪声的逐渐减小,系统的误比特率也呈现出增大的趋势,也就是说码率越低,系统的误比特率就越小,误码性能就越好。
图6.2卷积码不同码率对误码性能的影响分析不同码率对卷积码误码性能的影响时用到的程序如下:X=0:5;y=x;for i=1:length(x)SNR=x(i);sim(‘yimal’);y(i)=mean(BitErrorRate);endsemilogy(x,y);hold on;for i=1;length(x)SNR=x(i);Sim(‘yima2’);y(i)=mean(BitErrorRate);endsemilogy(x,y);6.3 不同约束长度对卷积编码器的误码性能影响如下图,对于码率一定的卷积码,当约束长度N发生变化时,系统的误码性能也会随之发生变化,我们以码率R=1/2的(2,1,3)和(2,1,7)卷积码为例展开分析。
上面的曲线是(2,1,3)卷积码的误码性能曲线。
下面的曲线是(2,1,7)卷积码的误码性能曲线。
从图中的误比特率曲线可以清楚的看到,随着约束长度可以降低系统的误比特率,但是随着约束长度的增加,译码设备的复杂性也会随之增加,所以对于码率为1/2的卷积码,我们在选取约束长度时一般为3-9。
图6.3不同约束长度对卷积码误码性能的影响分析不同约束长度对卷积码误码性能影响用到的程序如下:x=0:5;y=x;for i=1:length(x)SNR=x(i);Sim(‘yima’);y(i)=mean(BitErrorRate);endsemilogy(x,y);hold on;for i=1:length(x)SNR=x(i);sim(‘yima1’);y(i)=mean(BitErrorRate);endsemilogy(x,y);通过上面从(1)回溯长度;(2)码率;(3)约束长度这三个卷积码编码器的重要参数的变化后对译码性能的分析,我们得到在卷积码的编码,译码过程中很多条件是不可能同时满足的。
所以我们要根据具体情况来选择合适的参数。
七、卷积码编码器的VHDL设计与仿真7.1VHDL设计的优点与设计方法VHDL语言采用自上至下和基于库的设计方法,其突出的优点是具有多层次描述系统硬件功能的能力,可以从系统的数学模型直到门级电路。
本设计所用VHDL设计平台是Altera的QuartusⅡEDA软件。
QuartusⅡ界面友好,使用便捷;它支持VHDL语言文本文件,原理图,以及波形与EDIF等格式的文件作为设计输入,并支持这些文件的任意混合设计:具有门级仿真器,可以进行功能仿真和时序仿真,能够产生精确的仿真结果。
7.2卷积码编码器的VHDL实现7.2.1卷积编码器顶层建模的VHDL描述library ieee;use ieee.std_logic_1164.all;entity encoder isport (clk:in std_logic;clr:in std_logic;data_in:in std_logic;c0,c1,c2:out std_logic);end;architecture behave of encoder iscomponent dff2port(d,clk,clr:in std_logic;q:out std_logic);end component;component xor2port (a,b:in std_logic;y:out std_logic);end component;component xor3port (a,b,c:in std_logic;y:out std_logic);end component;signal din,r1,r2,y1,y2: std_logic;begindin<=data_in;u0:dff2port map (din, clk, clr,r1);u1:dff2port map (r1, clk, clr,r2);u2:xor2port map (din,r1,y1);u3:xor3port map (din,r1,r2,y2);c0<=din;c1<=y1;c2<=y2;end;用QuartusⅡ编译后生成的编码器图形符号如图所示。