基于FPGA的信道编码技术的研究_第1页
基于FPGA的信道编码技术的研究_第2页
基于FPGA的信道编码技术的研究_第3页
基于FPGA的信道编码技术的研究_第4页
基于FPGA的信道编码技术的研究_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章 绪论随着电子技术的快速发展,对通信系统功能的要求不断提高。基于同样的硬件环境,由软件来完成不同的通信功能的方式趋于成熟。于是,可编程高速器件如DSP、ARM、 FPGA 等成了现代通信系统的主要角色 1。FPGA 即现场可编程门阵列,它是在 PLA、GAL 、EPLD 等可编程器件的基础上进一步发展的产物,是一种高度集成的可编程逻辑器件,它是作为 ASIC 领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路有限的缺点 2。FPGA 的结构灵活,其逻辑单元、可编程内部连线和 IO 单元都可以由用户编程,可以实现任何逻辑功能,满足各种设计需求。其速度快,功耗低,通用性强,特别适用于复杂系统的设计。使用 FPGA 还可以实现动态配置、在线系统重构(可以在系统运行的不同时刻,按需要改变电路的功能,使系统具备多种空间相关或时间相关的任务)及硬件软化、软件硬化等功能。数字调制解调是无线通信中一个重要技术之一。FPGA 的基本特点主要有: 1)采用 FPGA 设计 ASIC 电路,用户不需要投片生产,就能得到合 成的芯片; 2)FPGA 可做其它全定制或半定制 ASIC 电路的中试样片; 3)FPGA 内部有丰富的触发器和 IO 引脚; 4)FPGA 是 ASIC 电路中设计周期最短、开发费用最低、风险最小的器件之一; 5) FPGA 采用高速 CHMOS 工艺,功耗低,可以与 CMOS、TTL 电平兼容。 可以说,FPGA 芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。FPGA 是由存放在片内 RAM 中的程序来设置其工作状态的,因此,工作时需要对片内的 RAM 进行编程。用户可以根据不同的配置模式,采用不同的编程方式。与传统的DSP 或 GPP 相比,FPGA 在某些信号处理任务中表现出非常强的性能,具有高吞吐率、架构和算法灵活、并行计算、分配存储以及动态配置等优势,因此能够解决设计者在通信领域尤其是无线通信方面需要一个高速通用硬件平台来实现并验证自己通信系统和相关算法的需求 3。通信系统的目的是将信息从发送端高效、可靠、安全地传送到接收端。因而就引出了衡量通信系统性能的两个主要指标有效性和可靠性。通常,有效性用传输速率R(比特 /信道符号)衡量,可靠性用错误比特率(BER) 衡量。但是,实际信道中噪声的存在总会对传输信息产生干扰,从而可能降低通信可靠性 4。为了保证通信的可靠性,需要采取一定的措施来减少干扰的影响,信道编码就是一种保证通信可靠性的重要技术。对于数字通信系统,其具体做法为:在消息序列中加入一定的冗余,使得编码器输出序列之间满足一定的约束关系,接收端可以根据这些约束关系将受干扰而出现的错误检测或纠正过来。因此,消息从发送端发出后,首先要经过信道编码,之后再经过调制才能发送出去;当然,接收端在解调后,也要经过译码才可以恢复出原始消息。可见作为通信系统的重要一环,信道编码是较合理的解决通信有效性和可靠性这对矛盾的关键,也是实现通信系统经济性所必需的 5。本课题正是基于 FPGA 的开发周期短、使用灵活、采用高速(HCMOS)工艺、功耗低且可与 CMOS 电平、TTL 电平兼容等优点,利用 FPGA 技术来研究信道编码。通过课题的研究深入了解 FPGA 技术以及信道编码技术,同时锻炼了完整的系统设计能力。本论文安排如下:第一章概括的叙述了 FPGA 和信道编码的有关内容;第二章详细的介绍了信道编码的知识,特别是线性分组码、CRC 码、卷积码和 RS码;第三章介绍了 FPGA 技术和 Verilog 语言以及开发工具 Quartus;第四章对信道编码的 FPGA 实现进行了理论验证。第二章 信道编码2.1 信道编码2.1.1 信道编码的简介移动传输信道中存在着一定的噪声和衰落,必然会对其中传输的信息引入失真和信号判决错误,因此需要采用信道差错控制码来检测和纠正这些错误比特。信道编码器的作用就是在信息序列中嵌入冗余码元,提高其纠错能力。与信源编码不同,经过信道编码添加冗余码元的目的是为了减小传输中发生的信号和码元错误,在有限信号功率、系统带宽和硬件复杂性的要求下提高系统的可靠性 6。2.1.2 信道编码的基本思想信道编码的基本思想是将每 k 个连续的信息比特分成一组,经过适当的数字运算(编码)后得到 n 个比特的输出,这 n 个比特组成的序列就被称为一个码字。好的纠错编码所产生的码字应具有的特性是:在所有的码字集合中,所有码字之间的区别尽可能大,从而使通信系统中无法纠正或检测的信道错误尽可能少。定义: nkR其中 R 为编码速率,简称为码率。从 20 世纪 40 年代以来,已经相继提出了乘积码、代数几何码、分组码、卷积码、Turbo 码和低密度校验码(LDPC)等编码方法,序列译码、Viterbi 译码、软判决译码和迭代译码等译码方法,以及编码与调制相结合的 TCM 技术。2.1.3 信道编码的分类信道编码可以从不同的角度进行分类,主要有以下两类:从功能上分,信道编码可以分为以下三类:(1)仅具有发现差错功能的检错码,如循环冗余校验 CRC 码、自动请求重传 ARQ等;(2)具有自动纠正差错功能的纠错码,如循环码中的 BCH 码、RS 码及卷积码、级联码、Turbo 码;(3)既能检错又能纠错的信道编码,最典型的是混合 ARQ,又称为 HARQ。从结构和规律上分,信道编码编码可以分为两类:(1)线性码:监督关系方程是线性方程的信道编码,称为线性码。目前大多数实用化的信道编码均属于线性码,如线性分组码、线性卷积码都是经常采用的信道编码;(2)非线性码:一切监督关系方程均不满足线性规律的信道编码称为非线性码。2.2 线性分组码2.2.1 线性分组码的概念既是线性码又是分组码的编码称为线性分组码。线性分组码中信息码元和监督码元是用线性方程联系起来的。线性码建立在代数学群论基础上,线性码各许用码组的集合构成代数学中的群,因此,又称群码。(2-1)021 aan式 2-1 称为监督方程式。式中,a n-1-a1 为信息码元,a 0 为监督码元。2.2.2 线性分组码的主要性质(1)封闭性:任意两许用码组之和(模 2 和)仍为一许用码组;(2)码的最小距离等于非零码的最小重量。2.2.3 线性分组码的基本原理下面以(7,3)分组码为例介绍线性分组码的基本原理。1.编码方程设输入的信息码元为:(2-2))( U210,输出的码组为:(2-3),( 6543210 CC输出码组中信息位为:(2-4)210,监督位:(2-5)UC2160514203将式 2-4 和式 2-5 写成相应的矩阵形式为:1 0 0 1 1 1 0 (2-6)0 1 0 0 1 1 1 =UG ),(),( 2106543210C0 0 1 1 1 0 1 若 G=(I :Q) ,其中 I 为单位矩阵,则称 Q 为系统(组织)码。G 为生成矩阵,可见,如已知信息码组 U 与生成矩阵 G,即可生成码组。2监督方程组将式 2-6 中后 4 位监督方程组改为: C20203U2114005 21216将上述线性方程改写成为下列矩阵形式为:C011 0 1 1 0 0 0 0 21 1 1 0 1 0 0 = 0 (2-7)31 1 0 0 0 1 0 041 1 1 0 0 0 1 0C56式 2-7 可以表示为:HC T=0T。称 H 为监督矩阵,若 H=(P I)其中 I 为单位矩阵,则称C 为系统(组织)码。3.校正子方程若在接收端,接收信号为:Y=(y0,y1,yn-1)=X+n=Ce (2-8) 式 2-8 中:C=(C 0,C 1,,C n-1) 为发送的码组,e=(e 0,e1,en-1)为传输中的误码,由HCT=0T 可知,若传输中无差错,即 e=0,则接收端必然要满足监督方程 HCT=0T,若传输中有差错,即 e0,则接收端监督方程应改为:(2-9)SeCeYTTTT HH)(由式 2-9 求得校正子 S 为: (2-10)eHCYHSTTTT )()2.3 循环冗余校验码(CRC 码)2.3.1 循环冗余校验码的概念CRC(Cyclic Redundancy Check)又叫循环冗余校验码。是常用的校验码,在早期的通信中运用广泛,因为早期的通信技术不够可靠,如电磁波通信时受雷电等因素的影响。不可靠的通信就会带来“确认信息”的困扰。对通信的可靠性检查就需要“校验” ,校验是从数据本身进行检查 8。2.3.2 循环冗余校验码的编码规则CRC 码是由两部分组成,前部分是信息码,就是需要校验的信息,后部分是校验码,如果 CRC 码长共长 n 个 bit,信息码长 k 个 bit,就称为(n,k)码。它的编码规则:移位:将原信息码(kbit)左移 r 位(k+r=n) 。相除:运用一个生成多项式 g(x)(也可以看成二进制数)用模 2 除上面的式子,得到的余数就是校验码。生成多项式应满足以下原则:(1)生成多项式的最高位和最低位必须为 1;(2)当被传送信息(CRC 码)任何一位发生错误时,被生成多项式做模 2 除后应该使余数不为 0;不同位发生错误时,应该使余数不同;(3)对余数继续做模 2 除,应使余数循环。2.3.3 CRC 码校验的原理CRC 校验的基本思想是利用线性编码理论,串行传送的信息 M(x)是一串 k 位二进制序列,在它被发送的同时,被一个先选择“生成多项式”相除, “生成多项式”长r+1 位,相除后得到 r 位的余数就是校验位,它拼接到原 k 位有效信息后面,即形成了CRC 码 9。CRC 码到达接受方时,接受方的设备一方面接受 CRC 码,一方面用同样的方法与“生成多项式”相除,如果正好除尽,表示无信息差错,接受方去掉 CRC 码后面的 r 位校验,收下 k 位有效信息;如果不能除尽时,说明有信息的状态发生了转变,即出错了,一般要求重新传送一次或者立即纠错。2.4 卷积码2.4.1 卷积码的概念卷积码(又称为连环码)首先由麻省理工学院的 Elias 于 1955 年提出。卷积码不同于分组码之处在于:在任意给定单元时刻,编码器输出的 n 个码元中,每一个码元不仅和此时刻输入的 k 个信息元有关,还与前面连续 m 个时刻输入的信息元有关 10。2.4.2 卷积码的编码原理卷积码通常用(n,k,m)表示,它是把 k 个信息比特编成 n 个编码比特,通常 k 和n 很小,特别适宜于以串行方式传输信息,延时小。m 为编码约束长度,说明编码过程中互相约束的码段个数。卷积码编码后的 n 个码元不仅与当前组的 k 个信息比特有关,而且与前 m-1 个输入的信息比特有关,这样编码过程中相互关联的码元有 个。定nm义为卷积码的码率,码率和约束长度是衡量卷积码性能的两个重要参数。nkR2.4.3 卷积码的描述方法卷积码的编码描述方法分为两大类型:解析表示法和图形表示法。1.解析表示法解析表示法包括离散卷积法、生成矩阵法、码多项式法等。下面以(2,1,2)卷积码为例,详细介绍离散卷积法。其余方法可参考相关文献,在此不再赘述。通常卷积码通过移位寄存器组成的网格结构来描述, (2,1,2)卷积码是由 k=1 即一个输入端,n=2 即两个输出端,m=2 即两级移位寄存器所组成的有限状态的有记忆系统。如图 2-1 所示。图 2-1 (2,1,2)卷积码的编码框图若输入信息序列为:(2-11),.)10(u则对应输出为两个码字序列:(2-12),.)(21021c其相应编码方程可写为: (2-13),(21211cgu其中“ ”表示卷积运算,g 1 g2 表示编码器的两个脉冲冲激响应,即编码可由输入信息序列 u 和编码器的两个脉冲冲激响应,即编码可由输入信息序列 u 和编码器的两个冲激响应的卷积得到。由于编码器有 m=2 级寄存器,当输入信息为 u=(100)时,所观察到的两个输出序列的冲激响应至多可持续到 k=m+1=2+1=3 位,且可写成:=(111) (2-14)1=(101) (2-15)g2若输入信息序列为: u=(10111)则有:(2-16))1,0,1(),( (0)(21211Cg2图形表示法-状态图法利用 FPGA 设计中常用的有限状态机来描述卷积码的编码过程。首先,说明卷积编码器的状态。卷积编码器在下一时刻的输出取决于编码器当前的状态以及下一时刻的输入,是一种典型的米利状态机。其中编码器的当前状态就是目前各个移位寄存器中所存储的内容,随着信息序列的不断输入,编码器就不断地从一个状态跳转到另一个状态,并输出相应的码序列。因此,编码器的可能状态数为 2mk个。对于一个(2,1,2)卷积码编码器,已知 k=1,m=2,mk=2,则其可能的状态数是22=4 个。假设 si 表示某状态,i=0,1,2,3 。在某 j 时刻,卷积码的输出可以表示为:(2-17)ucjjj jjjj2211由 2-17 式可知卷积码的输出取决于 uj uj-1 uj-23 个值,其中 uj是当前的输入值,uj-1 和 uj-2 是以前输入的两个值。如果要求出下一时刻的输出值,则需要知道当前的 uj以及 uj-1的值,当输入下一时刻的 uj+1值时,就可以求出 以及 的值。所以为决cj1j21定下一时刻编码器的输出。用当前时刻状态 表示即可,如表 2-1 所示。),(1sjj表 2-1 寄存器状态表j j1j 0 0 a0 1 c1 0 b1 1 d下面给出二元(2,1,2)卷积码的状态图,如图 2-2 所示。图 2-2 卷积码状态图图 2-2 中圆圈中的数字表示状态,状态之间的连线与箭头表示转移方向,成为分支,分支上的数字表示由一个状态到另一个状态时的输出码字,而括号中数字表示相应的输入信息位。例如,若当前的状态为 11,即 d 状态,则当下一时刻的输入信息位u1=0 时,输出码字 c1=01,下一个状态为状态 c。如输入信息位 u1=1,则输出码字为c1=10,下一时刻的状态为 d。2.5 RS 码2.5.1 有限域的基本概念定义 设 F 是一个非空集, F 的成员叫作元素或简称元。假设在 F 中规定了加法和乘法两种运算,对于 F 中任意两个元素 a 和 b,记加法运算的结果为 a+b,叫作他们的和,记乘法运算的结果为 ab,叫作它们的积,F 对于加法和乘法运算是自封闭的,即要求:(1)对任意 a,bF,有 a+bF ;(2)对任意 a,bF,有 abF 。如果以下运算规则都成立:1.对任意 a,bF,有 a+b=b+a(加法交换律);2.对任意 a,bF,有(a+b)+c=a+(b+c)(加法结合律 );3.F 中有一个元素,把它记作 0,具有性质 a+0=a,对一切 aF;4.对任意 aF,F 中有一个元,把它记作 -a,具有性质 a+(-a)=0;1.对任意 a,bF,有 ab=ba(乘法交换律);2.对任意 a,bF,有(ab )c=a(bc) (乘法结合律 );3.F 中有一个不为零的元,把它记作 1,具有性质 a1=a;4.对任意 aF,而 a0,F 中有一个元,把它记作 a-1,具有性质 aa-1=1;对任意 a,b,cF ,有 a(b+c)=ab+ac(分配律)。则称 F 对于所规定的加法运算和乘法运算是一个“域” 13。由上述定义可知,域是集合元素间的一种代数结构。域中任意两个元素的和仍是域中的元素,并且满足交换律和分配律。域中必定包括一个零元素(记作 0)和一个单位元素(记作 1)。域中每一个元素都有唯一的负元素使得任一元素与它的负元素之和为零。域中任意一个非零元素都有唯一的一个逆元素,使得任何元素与它的逆元素的积等于 1。域 F 中元素的个数叫作 F 的阶,如果 F 的阶是无限的,就把 F 叫作无限域。如果F 的阶是有限的,就把 F 叫作有限域。有限域又称为伽罗华( Galois)域。同样我们可以看出,由 0 和 1 两个元素组成的二元集对模 2 加法和乘法来说也是一个域,并且是十分重要的有限域。可以证明,任何有限域元素的个数一定是某一素数的幂。2.5.2 有限域举例有限域也叫伽罗华域,它的元素个数一定是 pn,p 是素数,通常记为 GF(p n)。模 p(p 是素数)运算的剩余构成有限域 GF13。设 p 是一个给定的素数。令 Fp表示所有小于 p 的非负整数的集合即:Fp=0,1,2,p-1虽然,对于普通的加法和乘法,F p不封闭,所以它不是域。但是对于模 p 加法和乘法运算即:ab=(a+b)p a b=(ab)p可见对所有的整数进行模 p 运算,只有 p 种余数,即 0,1,2,p-1,当 p 时素数时,可以证明 Fp 是一个域。它正好包含 p 个元素,所以它是一个 p 元有限域。特别当 p=2 时,就得到我们前面提到的二元有限域 F2。可以证明,若 q 不是素数,则 Fq对模 q 加法和乘法也不是域。2.5.3 有限域的乘法群定义 1.设 G 是一个非空集,假定在 G 中规定了一种通常叫做乘法的运算,并设a,bG,记此种运算是 ab,叫做它们的积。要满足:abG,对任意 a,b G即 G 对于所规定的乘法运算是封闭的,我们就称 G 对于所规定的乘法运算是一个交换群。如果以下运算规则成立:(1)对任意 a, bG,有 ab=ba;(2)对任意 a, b,c G,有(ab)c=a(bc);(3)G 中有一个元,把它记作 1,具有性质 a1=a,对一切 aG;(4)对任意 a G,G 有一元,把它记 a-1作,具有性质 aa-1=1。上述(1)(2)(3)(4)运算规则往往被称作交换群公理。若去掉(1)就称为一般群的公理。显然,任意一个域 F 中的全体元组成的集,对于 F 中的加法运算来说是一个交换群,这个交换群叫作域 F 的加法群。而域 F 中不为零的元所组成的集对于 F 中的乘法运算来说也是一个交换群,这个交换群叫作域 F 的乘法群,并用符号 表示。与域的情况相似,若 G 含有无限多个元素,则 G 叫作无限交换群。若 G 仅含有限个元素,则G 就叫作有限交换群。G 中元素的个数就叫作 G 的阶。定义 2.设 G 是交换群,而 a 是 G 中任意一个元素,如果对于任意一个元素,如果对于任意整数 n,都有 an=1,a 就叫做一个有限阶元素,而具有性质 an=1 的最小正整数n 就叫做 a 的阶。可以证明,若 G 是有限交换群,则 G 中任一元素都是有限阶的。如果 a 是 G 中的一个n 阶元素,那么下面这 n 个元素:na13210 , 就是 G 中的 n 个不同元素,并且:a= n1210,对于 G 中的运算来说是一个 n 阶交换群。定义 3.若 G 是一个 n 阶交换群,并且 G 中有一个 n 阶元素 a 存在,则G=a= a1210,就叫做(n 阶)循环群,而 a 就叫做 G 的一个生成元。不难证明,任一有限域的乘法群都是循环群。而将有限域乘法群的生成元成为这个有限域的本原元。2.5.4 多项式域 GF( )中元素间的关系2n为了表示 GF( )中元素间的关系,首先要介绍本原多项式的概念。设 p(x)是 n 次不可约,如果 p(x)的根就是 和 +1,因为将 (和 +1)代入 p(x)均等于零,事实上从乘法表可知 = = 1。再根据加法表可得2p(x)= 1= 1 1=0而且它的根 (或 +1)的阶是 ,即 =1,是本原元,所以 x2+x+131-232就是本原多项式。有限域 GF(2 n)的元素可以用所有次数低于 n 的多项式来代表;有限域 GF(2 n)中的 2n -1 个非零元素又可以用本原元的各次(从 12n -1)幂来代表。2.5.5 一个有关多项式的定理设有多项式 f(x)= 。式中系数是二元域的元素axaxnn 011(即 =0 或 1;i=0,1,n)。对于任意正整数 l 均有: ai=)(2fl)f2.5.6 最小多项式设 为有限域 GF(2 n)中任一元素,则具有二元域系数并以 为根的最低多项式 m(x)就称为 的最小多项式。对于 GF(2 n)中的任一元素都有一个次数等于或小于 n的最小多项式,并且这个多项式是既约的又是唯一的,也就是说 必定是二元域系数的某一多项式的根。以 GF(2 4)域为例,来说明最小多项式的求法。先求元素 的最小多项式:3 , )()( 348924312426223 3可以看出根的序列从 开始重复,因此 的最小多项式的全部根是412963,也就是说 的最小多项式是四次的。并且:3 )()()( 129633 xxxm利用表 2-2 将上式展开得 24同样可求得 最小多项式1)(1x最小多项式525最小多项式7)(347x表 2-2 GF(2 4)的非零元素231425)( 326)( 13437 )( 1228 )(329)( 124310 )( 321)( 123234312 )( 2323 )( 11334314)(5)(2.5.7 BCH 码BCH 码是一类最重要的循环码,能纠正多个随机错误。BCH 码具有纠错能力强,它的特点是将纠错能力 t 与生成多项式发生关系。这种关系是通过近代代数理论,找出多项式的根与码距的确定关系。二进制 BCH 码的主要参数由两个正整数 m 和 t 决定,t 大于= = 大于等于 右移?: ?: 等同于 if-else 3.3.4 Verilog HDL 语言的特点既能进行全面综合的电路设计,又可用于电路的模拟仿真。能够在多个层次上对所设计的系统加以描述,从开关级、门级、寄存器传输级(RTL)到行为级等,都可以胜任,设计的规模是任意的,语言不对设计的规模施加任何限制。灵活多样的电路描述风格,可进行行为描述,也可进行结构描述或数据流描;支持混合建模,在一个设计中各个模块可以在不同的设计层次上建模和描述。Verilog HDL 的行为描述语句,如条件语句、赋值语句和循环语句等。 内置各种基本逻辑门,如 and、or 和 nand 等,可方便的进行门级结构描述;内置各种开关级元件,如 pmos、nmos 和 cmos 等,可进行开关级的建模。用户定义原语(UDP )创建的灵活性。用户定义的原语既可以是组合逻辑,也可以是时序逻辑:可通过编程语言接口(PLI)机制进一步扩展 Verilog HDL 语言的描述能力。PLI 是允许外部函数访问Verilog HDL 模块内信息,允许设计者与模拟器交互的例程集合。3.4 Quartus设计流程利用 Verilog 完成软件编程后,必须借助 EDA 工具中的综合器、适配器、时序仿真器和编辑器等工具进行相应的处理,才能使此项设计在 FPGA 上完成硬件实现,并得到硬件测试。1创建工程准备工作任何一项设计都是一项工程(Project),都必须首先为此工程建立一个放置与此工程相关的所有设计文件的文件夹。此文件夹将被 EDA 软件默认为工作库。在建立了文件夹后就可以将设计文件通过 Quartus的设计文本编辑器进行编辑并存盘,步骤如下:新建一个文件夹。这里以卷积码 conv 为例,在 D 盘中,路径为 D:,输入源程序。打开 Quartus,选择 File-New 命令。在 New 窗口中的 Design Files 栏中选择编译文件的语言类型,这里选择 Verilog HDLFile 选项,如图 3-1 所示,然后在 Verilog 文本编译窗口中输入卷积码 conv 的程序,如图 3-2 所示。图 3-1 语言选择图 3-2 输入源程序文件存盘。选择 File-Save As 命令,找到已经建立的文件夹 D:conv,存盘文件名应该与实体名一致,即 conv.v。出现如图 3-3 所示窗口时选择“是”按钮,则直接进入创建工程流程。图 3-3 文件存盘2.创建工程(1)建立工程。按上述如图 3-3 所示点击“是”按钮后会出现如图 3-4 所示窗口,在第二行“What is the name of this project? ”中点击后面的“”按钮,选择刚刚编译好的 conv 文件,然后选择“next”按钮。图 3-4 创建工程(2)将设计文件加入工程中。如图 3-5 所示,选择“Add All”按钮,将设定的工程目录中的文件加到工程中,然后选择“next”按钮。图 3-5 添加文件(3)选择目标芯片。如图 3-6 所示,首先在 Device family 下拉列表中选择芯片,根据本次毕业设计选择 Cyclone系列的 EP2C5Q208C8。可以通过“Show inAvailable devicelist”中的参数设置来快速找到所需的芯片,其中 Package 选择 PQFP,Pin count 选择 208,Speed grade 选择 8。然后选择“next”按钮。图 3-6 选择芯片(4)工具设置。由于本次毕业设计需求需要进行功能仿真,所以要更改 Quartus的默认设置。在工具栏中选择 Assignments-settings,如图 3-7 所示在“Simulation mode”栏中选择 Functional 进行功能仿真,然后选择“OK”。图 3-7 仿真模式的选择(5)结束设置。在如图 3-8 所示窗口选择“Finish”即完成了本次工程的设定。图 3-8 结束设置3.编译前设置(1)选择 FPGA 目标芯片。在工具栏中选择 Assignments-Settings 命令,如图 3-9 所示,在弹出的窗口中选择 Device,目标芯片为 EP2C5Q208C8。图 3-9 选择芯片(2)选择配置器件的工作方式。单击 Device and Pin Options 按钮,会出现如图 3-10 所示的对话框,首先选择 General 选项卡,在 Options 栏内选中 Auto-restart configuration after error 复选框,使对 FPFA 的配置失败后能自动重新配置,并加入JTAG 用户编码。图 3-10 器件引脚“通用”选项选择配置器件和编程方式。在如图 3-11 所示的图中选中 Configuration 选项卡,选中 Generate compressed bitstreams 复选框,就能产生用于 EPCS 的 POS 压缩配置文件。在 Configuration 选项卡中选择配置器件型号为 EPCS4。图 3-11 器件引脚“配置”选项选择目标器件引脚端口状态。如图 3-12 所示选中 Unused Pin 选项卡,在 Resreve all unused pins 后的框中选择“As input tri-stated” 保持不用的 IO 口满足三态输入。图 3-12 器件引脚“不用引脚”选项4.全程编译当编译成功后会出现如图 3-13 所示对话框 : 图 3-13 编译成功界面第四章 信道编码的 FPGA 实现4.1 线性分组码的 FPGA 实现例如:用 Verilog 实现一个(7,4)汉明码的编码电路,其编码矩阵如下:1 0 1 1 0 0 0 1 0 0 01 1 0G= 1 1 1 0 1 0 0 0 1 0 00 1 11 1 0 0 0 1 0 0 0 1 01 1 10 1 1 0 0 0 1 0 0 0 11 0 1经过 Quartus8.1 仿真后可得到如示 RTL 结构图:010010010100100100100c0c1c3c5c6c8c9c11c12resetu3.0c6.0c2上图给出了在 Simulation 中的仿真结果从图中可以看出:输入序列: =1001u3210,得到的输出为 =1001011cc6543210,满足 = 1 0 0 01 1 0c6543210, u0 1 0 0 0 1 10 0 1 0 1 1 10 0 0 1 1 0 1 即1 0 0 1 0 1 1= 1 0 0 1 1 0 0 0 1 1 00 1 0 0 0 1 10 0 1 0 1 1 10 0 0 0 1 0 1 上式满足(7,4)线性分组码的编码方程。4.2 CRC(循环冗余校验码)的 FPGA 实现例如:实现 CRC-16 码,CRC-16 码采用的生成多项式为 G(x)= X16+x15+x2+1,其逻辑实现结构如下图所示。初始化时每一位寄存器清零,然后每输入一个数据,16 位移位寄存器按照异或逻辑由低到高移动一位,直到一组校验数据结束。此时,16 位移位寄存器的内容就是该组数据的 CRC-16 的校验位。经过 Quartus8.1 得到如下图所示的 RTL 结构。+A3.0B3.0ADDERD QPREENACLRD QPREENACLRDENAQPRECLR=A31.0B31.0EQUALSELDATADATAB OUT0MUX21SELDATADATABOUT0MUX21cnt3.0crc_enc0crc_enc2crc_enc15clkxcrc_scrc_reg15.0cnt3.04 h0 -Equal028 h0000000 -32 h00000000 -crc_sreg0crc_reg15.0reg0crc_reg15.016 h0000 -Add04 h1 -reset同时,通过 simulation 仿真得到如下图所示的仿真结果。验证 0000001010101000 1000010101010101crc-enc15=crc-reg14 crc-reg15x;即 1=001 满足;crc-enc14:3=crc-reg13:2;即 000001010101=00000110100101 满足;crc-enc2=crc-reg1crc-reg15x;即 1=001 满足;crc-enc1=crc-reg0;即 0=0 满足;crc-enc0=crc-reg15x ;即 1=01 满足。4.3 卷积码的 FPGA 实现用 Verilog 实现(2,1,2)卷积码编码器经过 Quartus8.1 得到如下图所示的 RTL 结构。clkresetstate.s0state.s1state.s2state.s3xs3s2s1s0clkclk1next_state:s0next_state:s1next_state:s2next_state:s3resets3s2s1s0DENAQPRECLR010D QPREENACLRSEL3.0DATA3.0OUTSELECTORSEL3.0DATA3.0OUTSELECTOR01 DENAQPRECLRSELDATADATAB OUT0MUX21next_statestateclk1clk10 enc_out1.0Selector4Selector5y0yreg0enc_out1.02 h0 -clkresetxyx=1同时,通过 Simulation 仿真得到如下图所示的仿真结果。验证输入 10111 输出 11,10,00,01,10,01,11由(2,1,2)编码器可知两个脉冲冲激响应 g0 =(111) g1=(101) 将两个冲激响应进行交织构成生成矩阵g10120120G= g012001g200120C=UG=1 0 1 1 1 1 1 1 0 1 1 =11 10 00 01 10 01 111 1 1 0 1 11 1 1 0 1 11 1 1 0 1 11 1 1 0 1 1与仿真结果相吻合,所以正确。4.4 RS 码的 FPGA 实现使用 Verilog 实现 RS(10,8)的编码电路。Quartus8.1 得到如图所示的 RTL 结构。+A3.0B3.0ADER DQPREENACLR DQPREENACLR010010010010=A3.0B3.0EQUAL=A3.0B3.0EQUAL=A3.0B3.0EQUAL DQPREENACLR01001001010SELDATADATBOUT0MUX21SELDATADATBOUT0MUX21 SELDATADATBOUT0MUX21SELDATADATBOUT0MUX21SELDATADATBOUT0MUX21SELDATADATBOUT0MUX210Ad04 h1 - cnt3.0 D13.0D11D14D16D18D19D110D11D112qual04 h0 -Equal14 h8 -Equal24 h9 - x_in3.0x_in0x_in1x_in2x_in3x_in4x_in5x_in7cnt3.04 h0 -cnt7.44 h9 - D116.134 h0 -x_in1.84 h0 -y3.0 y7.4clkresetx3.0y3.0x_in6同时,通过 Simulation 仿真得到如图所示的仿真结果。验证输入1 2 3 4 5 6 7 8 输出1 2 3 4 5 6 7 8 8 0。RS(10,8)是 RS(15,13)的缩短码,RS(10,8)是利用 8 个信息符号得到长度为 10的编码。码元符号取自域 GF(24)即 m=4;域 GF(24)的本原多项式为 a4+a+1;RS 码的生成多项式为 g(x)=(x+a)(x+a2)=x2+(a2+a)x+a3=x2+6x+8。输入符号为1 2 3 4 5 6 7 8,则信息段多项 d(x)=x7+2x6+3x5+4x4+5x3+6x2+7x+8;由于码元取自域 GF(24),所以一个符号可以由 4 个比特表示,x 2d(x)的二进制表示为0001 0010 0011 0100 0101 0110 0111 1000 0000 0000。计算 x2d(x)/g(x)得到余式r(x)的二进制表示为1000 0000,因此校验位为8 0,则生成码字为1 2 3 4 5 6

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论