1、通信系统电路设计练习:M序列编码/解码器的设计作业的背景及训练目的为了给通信专业的同学们提供一个设计实践的机会,在最短的时间段内掌握数字设计的动手能力,提高Verilog语言的使用能力,所以专门设计了这样一个难度适中的数字通信系统设计练习。本练习是根据工程实际问题提出的,但为了便于同学理解,对设计需求指标做了许多简化。希望同学们在设计范例和老师的指导下,一步一步地达到设计目标。期望同学们能在两至三周内,参考设计范例,独立完成自己的设计任务,在这一过程中学习用Verilog编写RTL代码和仿真验证用测试代码技术,以及用综合器进行综合的技术、并熟练掌握较复杂数字系统的多层次的仿真验证的方法,以逐步
2、提高同学在设计工作中的自信心。矚慫润厲钐瘗睞枥庑赖。11 M序列介绍:M序列是PN(pseudo noise)伪随机噪声中最广为人知的一种,主要用在扩频率通信中,先简要介绍一下扩频通信工程的原理,然后分析M序列的数学特性从而回答即为什么要选择M序列,然后再谈谈M序列在扩频应用中的局限性。有了一定的理论基础后,我们就可以开始讨论怎样用具体的硬件实现应用M序列的扩频通信的发射端和接收端电路。聞創沟燴鐺險爱氇谴净。1.2扩频通信的短暂的历史有关扩频通信技术的观点是在1941年由好莱坞女演员Hedy Lamarr 和钢琴家George Antheil提出的。基于对鱼雷控制的安全无线通信的思路,他们申请
3、了美国专利#2.292.387。不幸的是,当时该技术并没有引起美国军方的重视,直到20世纪八十年代才引起关注,将它用于敌对环境中的无线通信系统。残骛楼諍锩瀨濟溆塹籟。扩频通信技术解决了短距离数据收发信机、如:卫星定位系统(GPS)、3G移动通信系统、WLAN (IEEE802.11a, IEEE802.11b, IEE802.11g)和蓝牙技术等应用的关键问题。扩频技术也为提高无线电频谱的利用率(无线电频谱是有限的因此也是一种昂贵的资源)提供帮助。酽锕极額閉镇桧猪訣锥。1.3扩频技术理论证明在Shannon和Hartley信道容量定理中可以明显看出频谱扩展的作用:C = B Log2 (1+
4、S/N)式中:C是信道容量、单位为比特每秒(bps),它是在理论上可接受的误码率(BER)下所允许的最大数据速率;B是要求的信道带宽,单位是Hz;S/N是信噪比。C表示通信信道所允许的信息量,也表示了所希望得到的性能,带宽(B)则是付出的代价,因为频率是一种有限的资源,S/N表示周围的环境或者物理特性(障碍物、干扰发射台、冲突等)。 用于恶劣环境(噪声和干扰导致极低的信噪比)时,从上式可以看出:为了提高信息的传输速率C,可以从两种途径实现,既加大带宽W或提高信噪比S/N。换句话说,当信号的传输速率C一定时,信号带宽W和信噪比S/N是可以互换的,即增加信号带宽可以降低对信噪比的要求,当带宽增加到
5、一定程度,允许信噪比进一步降低,有用信号功率接近噪声功率甚至淹没在噪声之下也是可能的。扩频通信就是用宽带传输技术来换取信噪比上的好处,这就是扩频通信的基本思想和理论依据。1.4扩频技术的优点彈贸摄尔霁毙攬砖卤庑。1、抗干扰性强,误码率低如上所述,扩频通信系统由于在发送端扩展信号频谱,在接收端解扩还原信息,产生了扩频增益,从而大大地提高了抗干扰容限。根据扩频增益不同,甚至在负的信噪比条件下,也可以将信号从噪声的淹没中提取出来,在目前商用的通信系统中,扩频通信是唯一能够工作于负信噪比条件下的通信方式。2 、易于同频使用,提高了无线频谱利用率无线频谱十分宝贵,虽然从长波到微波都已得到开发利用,仍然满
6、足不了社会的需求。为此,世界各地都设计了频谱管理机构, 用户只能使用申请获得的频率,依靠频道划分来防止信道之间发生干扰。由于扩频通信采用了相关接收这一高技术,信号发送功率极低(1W,一般为1100mW),且可工作在信道噪声和热噪声背景中,易于在同一地区重复使用同一频率,也可以与现今各种窄带通信共享同一频率资源;.3、 抗多径干扰在无线通信中,抗多径干扰问题一直是难以解决的问题,利用扩频编码之间的相关特性;在接收端可以用相关技术从多径信号中提取分离出最强的有用信号,也可把多个路径来的同一码序列的波形相加使之得到加强,从而达到有效的抗多径干扰。 4、 扩频通信是数字通信,特别适合数字话音和数据同时
7、传输,扩频通信自身具有加密功能,保密性强,便于开展各种通信业务。扩频通信容易采用码分多址、语音压缩等多项新技术,更加适用于计算机网络以及数字化的话音、图像信息传输;.5、 扩频通信绝大部分是数字电路,设备高度集成,安装简便,易于维护,也十分小巧可靠,便于安装,便于扩展,平均无故障率时间也很长;6、 另外,扩频设备一般采用积木式结构,组网方式灵活,方便统一规划,分期实施,利于扩容,有效地保护前期投资。謀荞抟箧飆鐸怼类蒋薔。1.5频谱的扩展的实现和直接序列扩频频谱的扩展是用数字化方式实现的。在一个二进制码位的时段内用一组新的多位长的码型予以置换,新码型的码速率远远高出原码的码速率,由傅立叶分析可知
8、新码型的带宽远远高出原码的带宽,从而将信号的带宽进行了扩展。这些新的码型也叫伪随机(PN)码,码位越长系统性能越高。通常,商用扩频系统PN码码长应不低于12位,一般取32位,军用系统可达千位。目前常见的码型有以下三种:1) M序列,即最长线性伪随机系列;2)GOLD序列;3)WALSH函数正交码。厦礴恳蹒骈時盡继價骚。2M序列的产生调制和解调原理M序列是对最长线性反馈移位寄存器序列的简称,它是一种由带线性反馈的移位寄存器所产生的序列,并且具有最长周期。茕桢广鳓鯡选块网羈泪。带线性反馈的移位寄存器设定各级寄存器的初始状态后,在时钟触发下,每次移位后各级寄存器状态都会发生变化。观察其中一级寄存器(
9、通常为末级)的输出,随着移位时钟节拍的推移会产生一个序列,称为移位寄存器序列。可以发现序列是一个周期序列,其周期不但与移位寄存器的级数有关,而且与线性反馈逻辑有关。在相同级数情况下,采用不同的线性反馈逻辑所得到的周期长度不同。此外,周期还与移位寄存器的初始状态有关。鹅娅尽損鹌惨歷茏鴛賴。一般情况下,用于产生M序列的n级线性反馈移位寄存器的结构图如下:表示模2相加图中的作为输出信号所得到的就是我们需要的M序列了,可以看出一个完整的n级M序列是由一个相应的线性反馈逻辑表达式来得到的:籟丛妈羥为贍偾蛏练淨。将左边的移到等号右边可以写成为:为了便于计算我们通常将上式与一个多项式项(即本原多项式)对应起
10、来以简便得到M序列:基于不同级的线性反馈逻辑表达式,我们可以得到不同长度的M序列的本原多项式如下(表1):n代数式3456从表1中我们可以查到5级M序列所对应的本原多项式为,从而得到其线性反馈逻辑表达式为a4=a1 a0,更进一步得到下面的M序列产生的结构图:預頌圣鉉儐歲龈讶骅籴。可以看出我们在这里只需要设定好a4 到a0初始值(不能为00000),就能够得到一组5级31位的M序列了。在此我们将其初始值设为10000(a4a3a2a1a0),通过上面结构图的推算可以得到其31位M序列编码为: 0010110011111000110111010100001(由右至左依次按顺序生成),发送端需要调
11、制的信号,与这31位数进行异或运算。我们实际在发送信号的时候采用相位调制(PSK)方法,即将1相应的调制为1,0调制为-1;则可以得到传输中的M序列。以需要发送的信号是1为例,具体调制解调步骤如下(假设没有噪声情况下):渗釤呛俨匀谔鱉调硯錦。1、1分别与31位M序列进行异或运算,得到1101001100000111001000101011110铙誅卧泻噦圣骋贶頂廡。2、将第一步得到的M序列中的1相应的调制为01(1),0调制为11(-1)后输出01,01,11,01,11,11,01,01,11,11,11,11,11,01,01,01,11,11,01,11,11,11,01,11,01,1
12、1,01,01,01,01,11,而输出的顺序依次为11,01,01,0111,01,01。同理可知0经过调制得到的序列会与1经过调制得到的序列相反。擁締凤袜备訊顎轮烂蔷。3、接收端知道发送端的M序列为 0010110011111000110111010100001(a30 a29a2a1a0),将收到的第一个数的符号位与a0相比较如果是相同则在基值(为了方便讨论基值可取0)上加上一个正数(为接收端接收到的数的绝对值)不同的话则减去一个正数,同理第二个数的符号位与a1比较若相同则在上一个累加值上相加一个正数,不同的话则减去一个正数,依此类推,当第31个数与a30比较完后,若发送端的发送数据1的
13、话此时的累加值为31,若发送端的发送数据0的话此时的累加值为-31,通过判断在第31个数时的累加值,我们可以知道发送是1还是0,当第31个数与a30比较过后,第32个数与a0比较,就这样依此规律,每隔31个数就判断输出是1还是0。贓熱俣阃歲匱阊邺镓騷。但实际的通信信道中有各种各样的噪声,通常有加性噪声信道,线性滤波器信道,以及线性时变滤波器信道,上述的三个信道数学模型,足以概括实际应用中遇到的大多数物理信到特性。在本文中主要考虑的是加性噪声信道。并且通过实验程 序证明,上文中所提到的M序列有抗干扰性强,误码率低这一特性。坛摶乡囂忏蒌鍥铃氈淚。通信系统最简单的数学模型就是加性噪声信道,在此模型中
14、,发送信号s(t)受到加性随机噪声过程 n(t)的损伤。送物理意义上看,加性噪声过程可能来自通信系统接收端的电子元件和放大器等,也可能来自无线信号传送过程遇到的干扰。如果噪声主要是由接收机的电子元件和放大器引起的,则它具有热噪声的性质,这类热噪声都具有高斯噪声过程的统计特性,因而信道的数学模型通常称为加性高斯噪声信道,接收端接收信号的表达式为:r(t)= s(t)+(t)(不考虑信道衰减)。蜡變黲癟報伥铉锚鈰赘。在下面将要介绍的实验中加入随机噪声信号,此信号的最小值为-2,最大值为2,但通过仿真我们可以发现解调后误码率很小。買鲷鴯譖昙膚遙闫撷凄。从频域上解释M序列有抗干扰性强,误码率低这一特性
15、,是由于在发送端PN码序列用来将携带信息的基带信号扩展至宽带信号以便在信道上传输。在接收端,接收的信号与PN码一个同步的副本相乘,得到解扩的窄带信号,与此同时各种干扰信号将扩展至宽带。最终的影响是干扰信号功率降低了W/R,正好等于扩频系统的处理增益。綾镝鯛駕櫬鹕踪韦辚糴。PN码序列的的副本只对特定的接收机已知,不知道该PN码序列的接收机不能解调信号。因此,PN码序列的使用提供了普通调制无法实现的隐秘(安全)性。这种安全性以及抗干扰性能增益是以信道带宽和通信系统复杂程度的增加来换取的。驅踬髏彦浃绥譎饴憂锦。3具体的FPGA实现对于不同级别的M序列来说,抗噪声能力是不一样的,级数越高所能承受的外界
16、干扰幅度越大。在这次实验设计中我们选取的是从2倍噪声中将5级31位M序列信号恢复出来。利用Verilog分别编写 coder、 add_noise、 decoder、 correct 、Correct_Decoder、 top 这六个模块,其中coder 、decoder、 correct 、是可综合模块,其中decoder、 correct 这两个模块组成为Correct_Decoder,add_noise,是不可综合的,用以模拟信道的加性噪声,top是测试文档。具体各个模块的作用如下:猫虿驢绘燈鮒诛髅貺庑。coder模块:此模块的基本功能按照上文所说的方法将待调信号与 M序列的每一位进行异
17、或,到达扩频的目的,而后为了实际需要将扩频结果的1调制为01(1)0调制为11(-1)。但是一个工程系统只有这个基本功能是不够的,由于我们面对的是非理想的信道模型必需还要有一些附加的功能:1、在发送数据之前先发11111111110用与给接收端捕捉同步头。2、每发送512个字节,就发送0000,来检测接收双方是否依旧保持同步。3、在介绍M序列的产生原理及具体的调制和解调原理时,知道通过扩频可以在有噪信道中大大降低误码率,但是仍有误码,具体是传1万个2位的十六进制数就有50多个错误的数据。能不能进一步减少误码率呢?。为了减少误码率,通过分析数据,我们可以发现误码分布的比较散,所以选择汉明码就能达
18、到纠错的目的。在每发送四位信息位(a6a5a4a3)后我们发送三位监督位(a2a1a0)从而达到纠错的目的。汉明码是一种能纠一位错的线性分组码,由于它的编译码简单,在数据通信和计算机存储系统中广泛应用,如在蓝牙技术和硬盘阵列中。它的最小码距为3,可以纠正一位错误,但对于两位错不能检测,还可能会造成误纠。尽管发生一位错的概率相对最高,但在一些要求较高的应用中汉明码不能满足要求。锹籁饗迳琐筆襖鸥娅薔。用一个例子说明汉明码的具体原理及方法:我们用a0 a1 a2 a3 a4 a5 a6 表示七个码元,用S1 S2 S3表示由三个监督方程式计算得到的校正子,并假设S1 S2 S3三位校正子码组与误码位
19、置的对应关系如下表所示:構氽頑黉碩饨荠龈话骛。 表A S1 S2 S3 误码位置 S1 S2 S3 误码位置 001 010 100 011 a0 a1 a2 a3 101 110 111 000 a4 a5 a6 无错由表可知,当误码位置在a2 a4 a5 或 a6时,校正子S1=1;否则S1=0。因此有 S1=a6+a5+a4+a2 (1)(以下运算均为模二运算)当误码位置在a1 a3 a5 或 a6时,校正子S2=1;否则S2=0。因此有 S2=a6+a5+a3+a1 (2)同理,有 S3=a6+a4+a3+a0 (3)在编码时,a6 a5 a4 a3 为信息码元,取决于被传输的信息。由
20、(1)(2)(3)可知,监督码元a2 a1 和 a0应根据以下监督方程确定:輒峄陽檉簖疖網儂號泶。 a6+a5+a4+a2=0 a6+a5+a3+a1=0 a6+a4+a3+a0=0 即 a2=a6+a5+a4 a1=a6+a5+a3 a0=a6+a4+a3由此得到的16个许用码组列于表中 表B 信息位 监督位 信息位 监督位 a6a5a4a3 a2a1a0 a6a5a4a3 a2a1a0 0000 0001 0010 0011 0100 0101 0110 0111 000 011 101 110 110 101 011 000 1000 1001 1010 1011 1100 1101 1
21、110 1111 111 100 010 001 001 010 100 111接收端收到每个码组后,计算S1 S2 和S3,如不全为0,则可按表A确定误码位置,然后予以纠正。例如,接收码组为0000011,可以算出S1S2S3=011,可知在a3位置上有一误码。由于(7,4)码的最小码距为Dmin=3,它能纠正一个误码或检测两个误码,如超过纠错能力,则反而会因“乱纠”而增加新的误码,在本例中若测出a2 a1 或a0有错,信息位 a6a5a4a3继续保持原值。若通过计算S1 S2 S3的值,得到信息位有错,则将相应的出错位的值取反,在上例中由于a3上有误码,所以只要将a3的值取反即可。由于汉明
22、码只能纠正单个错误,在实际的运用中,若出现多个错误的情况,可采用BCH码,BCH码是循环码的一个重要子类,它具有纠多个随机错误的能力。 尧侧閆繭絳闕绚勵蜆贅。Add_noise模块:此模块是一行为模块,模拟的是实际传输过程。这个模块相对比较简单:将前一个coder模块多产生的M序列串(unnoised_data)读入之后加入带符号的2倍噪声(noise=random % 3产生最大值为2的随机数),这样所得到的就是加入噪声的接收端信号(noised_data)。noised_data = unnoised_data + noise。识饒鎂錕缢灩筧嚌俨淒。Correct_Decoder模块:此模
23、块包括两个可综合模块decoder模块和 correct模块,实现的最基本的功能是解调,以31为一个循环,将接收到的信号的符号位与存储器中的31位M序列依次相比,来判断是加上一个正数还是减去一个正数,每输完31个数将此时的累加值与我们所设定的阀值相比较,大于此阀值的话取1,否则取0。比较完31个数后和将累加的值重新设为初始值。除了解调这个基本功能以外,还有一些附加的功能,如同步头的捕捉,核对同步检测信号,对错误数据进行纠错。其过程如流程图所示:凍鈹鋨劳臘锴痫婦胫籴。 在具体的实现过程中,累加器所赋的初始值都为50。这样做的目的很简单,为了方便计算和相应的判断。因为输入的信号可能是正的也可能是负
24、的;所做的运算也可能是加法和减法。如果我们把基准值都赋为0,那么在电路实现的过程中会遇到一些麻烦,举个很简单的例子:9位的累加结果寄存器如果为0(二进制表示为2b000000000),加上输入信号-2(即带符号的3b110),本应当产生-2的结果,但是在实际硬件实现的时候却不能得到我们所要的答案,它的运算方法为:恥諤銪灭萦欢煬鞏鹜錦。sum:9b000000000 ( 0 )indata:+3b 110 (-2 )sum:9b000000110 ( 3 )可以从上边的运算结果中清楚的看出,直接在0的基础上进行加减运算会出现预料之外的结果。这种方法只有通过相应的扩位运算才可以达到我们所要的结果。
25、也就是说对于输入的3位信号(indata),我们必须将其扩充成为相应的9位值才可以跟sum进行加减运算。还是以上边数据为例,我们在indata(2b110)数据一进来就将其扩展成为带符号位9位的数据(9b111111110),两者都是表示带符号位的数据-2,但是后者和sum进行加减时就不会出现上边的问题:鯊腎鑰诎褳鉀沩懼統庫。sum:9b000000000 ( 0 )indata:+9b111111110 (-2 )sum:9b111111110 ( -2 )但是这种方法,远不如我们直接将累加器sum的初始值设定为50方便,因为这样一来我们就只在正数的范围内进行考虑。同样的到达同步解码状态后,
26、实际也不是将0定为判断基准,而是50。通过下边的图像可以看出来(图3.7):硕癘鄴颃诌攆檸攜驤蔹。图3.7上边的图形是在找到同步头之后进行同步解码的开始情况。最上边两个信号是输入信号indata和将输入信号经过绝对值运算得到的结果psumi,将带符号的3位信号转化为不带符号的2位数据,再根据与第j位+M序列符号位与输入数据符号位的比较,选取相应的加法或者减法运算。阌擻輳嬪諫迁择楨秘騖。从上图中还可以看出,累加器sum的开始的基准值为50。每进入一个数据就在50的基准上进行加减法运算。最后当计数器j从0累加到31之后,就做一次相应的判决输出:如果sum值大于50就输出信号为1,如果小于50就输出
27、为0。见下图(图3.8):氬嚕躑竄贸恳彈瀘颔澩。图3.8图中在计数器j达到30的时候,对应的sum值为12(小于50),于是outdata进行判断输出,输出信号为0(低电平)。这样就完成了计数累加判断的过程。釷鹆資贏車贖孙滅獅赘。上述过程只是完成了最基本的功能,在coder模块中我们提到一个工程系统只有这个基本功能是不够的,由于我们面对的是非理想的信道模型必需还要有一些附加的功能,相应的解调模块还需要有些附加功能。怂阐譜鯪迳導嘯畫長凉。1、 同步头的捕捉。为了捕捉同步头我们在发送端发送11111111110,用于接收端来捕捉同步。在介绍M序列的特性时,我们提到PN码序列的的副本只对特定的接收机
28、已知,不知道该PN码序列的接收机不能解调信号。理想情况下接收到的第一个数据与接收端的M序列的第一位相比较,但是在非理想情况下,接发双方的时钟频率及相位都会有差异,有可能出现实际上接收到的第一个数据是与接收端的M序列的第二位相比较这样一来会有灾难性的后果,几乎不能正确译码。若有同步头的捕捉这个功能,即使发生接收信号与解调端的M序列不同步,也能正确解调。将顺序不同的31个M序列储存在31个寄存器中,捕捉同步头时输入的数据同时与这31个M序列作用进行累加,通过与阀值比较大小,从而在顺序不同的31个M序列中找出与接收数据同步的序列。具体的过程读者可以通过实验好好体会。在寻找同步的过程中,如果接收到的3
29、1个信号和本地的31位M序列没有完全同步,那么由于M序列的性质使得累加的结果比较小,一般小于10,即使在噪声的干扰下也不会超出20的水平;但是如果两者完全同步,累加的结果应当在30左右。所以我在这里所选取的阈值为28,又由于为了方便计算我们将累加器的初始数值设为50 当累加器的值大于或等于78时,我们则认为同步,当收到0时我们则认为用于捕捉同步的头文件传完。进入实际的数据传输阶段。在本实验程序中用了31个加法器并行计算。如果我们称一个数经过调制后为一个M序列组,通过移位累加判断找同步头有一个弊端就是会挪用到别的组的M序列位。虽然最后是通过31次累加判断阀值,只要我们保证“大主流”不是挪用其它组
30、的M序列就可以,但是不可否认的是在没有挪用其它组的M序列位而找到同步头的误码率最低。谚辞調担鈧谄动禪泻類。例如在实验中当Decoder .en实际上是en_coder时,sum0处取得最大值时的误码率最小。若在非理想情况下如en为en_coder 1此时就不是sum0处取得最大值,此时误码率比理想情况下大。嘰觐詿缧铴嗫偽純铪锩。总之同步头捕捉这个功能使我们的这个小通信系统强健(Robust)。2、 上文提到,当收到0时我们则认为用于捕捉同步的头文件传完。进入实际的数据传输阶段,当实际过程中由于噪声的影响,有可能使同步头的0不能正确译出,无法正确判断出传输数据从何时开始,至使输出数据全部错位。为
31、了避免此情况发生我们在发完11111111110先传输数据0000再传输待传数据,接受端收到0000,后才认为开始接收到正确数据,否则认为不同步。而且在实际应用中收发双方的晶体振荡器不可能完全一样,于是就造成了接收双方的时钟频率不相等,传输一定数后会由于累积误差使收发双方无法同步,所以需要每传输一定的数据后,都要传送一些收发双方约定好的信息,来检测是否维持在同步状态。这里收发双方约定每传512bit信息位(64个字节)后就发送双方约定好的信号(0000),如果每隔512个信息位后,接收端没有收到0000,则将asyn_flag置为高电平,从而告诉接收系统已经无法正确的接收信号。在给出的程序中在
32、我们是把收发双方的时钟周期设为相等,读者可以试试将其改为不等,如:在Top模块中做以下改动:熒绐譏钲鏌觶鷹緇機库。always #100 coder_clk_31=coder_clk_31; always #100.001 decoder_clk_31=decoder_clk_31; always #(31*100) coder_clk_1=coder_clk_1; always #(31*100.001) decoder_clk_1=decoder_clk_1; 鶼渍螻偉阅劍鲰腎邏蘞。(注意:此时要将timescale 1ns/1ns 改为timescale 1ns/1ps ) 纣忧蔣氳頑莶
33、驅藥悯骛。改动后再仿真我们可以发现从第229个数就开始出错,第257个数后由于不同步接收端无法正确的收到同步检测信号(0000),故asyn_flag置为高电平,从而告诉接收系统已经无法正确的接收信号。此时接收端asyn_flag信号发给发送端,从而发送端和接收端重新置位,并且通过软件控制将上64个数据重发。颖刍莖蛺饽亿顿裊赔泷。读者还可以按照Top模块所给的提示,试试接发双方的时钟相位不一样的情况。3、 为了进一步减小误码,我们在coder模块中采用了汉明码用于纠错,相应的在解调端的correct模块每收到四个信息位(a6a5a4a3)和三个监督位(a2a1a0)后根据:濫驂膽閉驟羥闈詔寢賻
34、。S1=a6+a5+a4+a2 (1) S2=a6+a5+a3+a1 (2) S3=a6+a4+a3+a0 (3) 这三个式子分别算出S1 S2 S3 ,通过下表可知具体是那一位出错,若是监督位出错不予理会,若是信息位出错,则判断具体是那一位出错再将其取反即可。銚銻縵哜鳗鸿锓謎諏涼。读者可以试着把纠错功能去掉,在理想同步解调的情况下(即解调端捕捉同步头时sum0处取得最大值)去掉纠错功能将会发现传输一万个字节有七十多个错误。而在同样的条件下有纠错功能的话传输了四万个字节才发现一个错误。由此可见在此系统中利用汉明能满足降低误码率的要求。 挤貼綬电麥结鈺贖哓类。 S1 S2 S3 误码位置 S1
35、S2 S3 误码位置 001 010 100 011 a0 a1 a2 a3 101 110 111 000 a4 a5 a6 无错Top模块:此模块是不可综合模块,用于产生激励信号,以及通过和发送端的输入信号相比判断解调信号是否正确。程序中每次生成一个字节即八位二进制数然后通过移位的方式将数一个个输出作为待调制的数据,而将解调输出的数据,转化为一个字节的数与原输入数据进行比较。所以有了这个比较过程就可以很方便的知道解调出来的数是否正确。赔荊紳谘侖驟辽輩袜錈。4后仿真的实现本实验后仿真均在Quartus II 4.1上完成,具体而言分为两步1) 首先对coder模块进行后仿真,选用的器件为:F
36、LEX10KE。仿真结束后,将生成的coder.vo和其它的XXX.v文件在ModelSim SE 5.7下进行后仿真,观察结果coder模块的后仿真正确,从而完成coder模块的后仿真。塤礙籟馐决穩賽釙冊庫。2) Corrected_Decoder模块的后仿真选用器件为:APEX20KE。仿真完成后生成Corrected_Decoder.vo,将其它的XXX.v文件和Corrected_Decoder.vo在ModelSim SE 5.7下进行后仿真,观察结果Corrected_Decoder.vo模块的后仿真正确,从而完成Corrected_Decoder.vo模块的后仿真裊樣祕廬廂颤谚鍘
37、羋蔺。5 总结此FPGA实验中的M序列收发装置是一个非常简易的通信模型,真正的一个可靠的通信系统不光有数字电路部分还有模拟电路部分,它的完成是要依靠成百上千人的辛勤工作和互相配合。仓嫗盤紲嘱珑詁鍬齊驁。这里提供的只是一个通信模型的数字部分和实际的接收装置相比省去了很多部分,例如在实际发送装置中用M序列完成扩频后,还要对数字信号进一步调制如:二进制幅度键控(2ASK)、二进制频移键控(2FSK)、二进制差分相移键控(2DPSK)来实现数字信号的载波传输,所以在空间信道里传输的是模拟信号。而在解调端首先要有一个天线通过在空间中捕获特定频率的波来获得传输的模拟信号,而后需要把模拟信号转化为数字信号。
38、由于本实验系统中缺少这些部分,所以只能采取一些简化,如在本实验中的Decoder模块的en信号实际就是coder模块中的en_coder。绽萬璉轆娛閬蛏鬮绾瀧。虽然这里提供的只是一个简化的M序列收发装置,但通过此实验还是能够帮助我们建立许多通信系统方面的概念,这也是我们设计这个实验的目的,毕竟任何一个复杂的系统都是由许许多多的简单的思想构建设的。希望做完此实验,读者能明白:骁顾燁鶚巯瀆蕪領鲡赙。1、 M序列扩频通信的原理。2、 捕捉同步头的这个功能使我们的系统更强健(Robust)。3、 通过引入纠错码,大大减少了误码率。4、 通信系统中每传输一定的数据后,都要传送一些收发双方约定好的信息,来检测是否维持在同步状态。5、 在整个设计系统中,测试模块的作用也很重要。最后希望同学们在完成此实验后能有所收获。-瑣钋濺暧惲锟缟馭篩凉。6参考文献John G.Proakis 和 Masoud Salehi著,叶芝慧和赵新胜等译, 通信系统工程(第二版),电子工业出版社,2002鎦诗涇艳损楼紲鯗餳類。曹志刚和钱亚生, 现代通信原理,清华大学出版社,2002(注:第一部分很大一部分内容来自网上,作者不详)