基于FPGA的曼彻斯特编码器设计【毕业作品】_第1页
基于FPGA的曼彻斯特编码器设计【毕业作品】_第2页
基于FPGA的曼彻斯特编码器设计【毕业作品】_第3页
基于FPGA的曼彻斯特编码器设计【毕业作品】_第4页
基于FPGA的曼彻斯特编码器设计【毕业作品】_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

基于FPGA的曼彻斯特编码器设计【毕业作品】PAGEBIYESHEJI(届)基于FPGA的曼彻斯特编码器设计(英文)DesignofManchesterEncoderBasedonFPGA所在学院电子信息学院专业班级电子信息工程学生姓名学号指导教师职称完成日期年月日基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第1页。

摘要基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第1页。 曼彻斯特编码是串行数据传输的一种重要编码方式,是一种数据通讯线性码。曼彻斯特编码被认为是一种自定时码。自定时意味着数据流的精确同步是可行的。数据和同步时钟统一编码,含有丰富的时钟信号,直流分量基本为零,接收器能够较容易恢复同步时钟,这是曼码的最大优点。 伪随机序列的电路为一反馈移位寄存器,可分为线性反馈移位寄存器和非线性反馈移位寄存器两类。由线性反馈移位寄存器产生出的周期最长的二进制数字序列称为最大长度线性反馈移位寄存器序列,简称为M序列。论文首先对课题的背景和意义进行简单介绍,然后概述了曼码的编码理论与方法、M序列的原理与实现。提出了课题的设计方案,将整个系统分为分频、M序列产生和编码等三个模块。分频模块实现了输入时钟的5分频,采用同时对输入时钟的上下升降沿计数的方法实现奇数分频。M序列产生模块则调用了QUARTUSII中的LPM模块,采用原理图方法进行设计。曼码模块采用VHDL语言进行编写。分别对每个模块进行编译仿真,验证设计的正确性。最后对整个系统进行联调,编译,仿真。经验证正确后下载至目标板。根据任务书要求,论文实现了给定特征方程的M序列产生和曼彻斯特编码,输出数据的速率为10MHz,并下载至目标板ALTERA公司的DEII平台。关键词:曼彻斯特编码,伪随机序列,M序列,VHDL基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第2页。基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第2页。Abstract Manchestercodingisakindofimportantserialdatatransmissionencoding,alsoisadatacommunicationlinearcode.Manchestercodeistobeconsideredasatypeoftheself-timingyards.Self-timingmeansthatthedataflowofprecisesynchronizationisfeasible.Dataandsynchronousclockunifiedcode,whichcontainedrichclocksignal,andDCcomponentbasiciszero,receivercanmoreeasilyrestoresynchronousclock,thatisthebiggestadvantageofManchestercoding.Pseudorandomsequencecircuitisamoveforfeedbackshiftregister,whichdividedintolinearfeedbackshiftregisterandthenonlinearfeedbackshiftregistertwokinds.Bylinearfeedbackshiftregistercreatesthelongestsequenceofbinarydigitscyclecalledmaximumlengthlinearfeedbackshiftregistersequence,knownasMsequence.Thepaperfirstmakesasimpleintroductionaboutbackgroundandsignificanceofthesubject,andthensummarizestheManchestercodingtheoryeandmethod,Msequenceofprincipleandrealization.Putsforwardthesubject,thedesignofthewholesystemisdividedintoseparatefrequency,Msequenceproduceandcodingthreeparts.Pointsfrequencymoduleimplementsinputclockfrequencyofthefivepoints,theinputoftheclockatthesametimeontherisingorfallingedgeiscountedinordertoachieveanoddnumberofpointsfrequency.MsequencetakesapartcalledtotheQUARTUSIILPM,theprinciplediagramdesignmethod.ManchestercodingbyVHDLlanguagetowrite.Eachmodulerespectivelyoncompilethesimulation,verifythecorrectnessofthedesign.Finally,thewholesystemshouldbealignment,compiled,andsimulation.Downloadtothetargetboardafterthecorrecttest.Accordingtotheprojectrequirements,thepaperrealizesagivencharacteristicequationsofMsequenceproduceandManchestercoding,therateofoutputdatafor10MHz,anddownloadtothetargetboardofALTERAcompanyDEIIplatform.基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第3页。KeyWords:Manchestercoding,Pseudorandomsequence,Msequence,VHDL基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第3页。目录1引言 11.1课题背景及意义 11.2课题内容与论文组织结构 12曼彻斯特编码技术概述 32.1曼彻斯特编码技术的原理 32.2曼彻斯特编码技术的优缺点 42.3曼彻斯特编码技术的实现 43伪随机信号概述 63.1伪随机序列 63.2m序列 73.2.1m序列产生原理 73.2.2m序列性质 103.3m序列发生器实验验证 124基于FPGA的曼彻斯特编码器设计 134.1分频设计模块 144.2m序列信号发生器的设计模块 174.3曼彻斯特编码设计模块 204.4系统联调 224.4.1顶层设计 234.4.2仿真与下载 245调试及分析 256设计总结和展望 26致谢 27参考文献 28基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第4页。基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第4页。1引言1.1课题背景及意义曼彻斯特编码是一种由串行数据传输所构成的重要编码方式。它是一种数据通讯线性码。曼彻斯特编码也被认为是一种自定时码。自定时意味着数据流的精确同步是可行的。每一个比特都准确的在一预先定义的时间中被传送。曼彻斯特编码最大的优点是同步时钟和输入信号统一编码,曼彻斯特码的直流分量基本为零并且含有十分丰富的时钟信号,接收器恢复同步时钟较容易,解调数据也能够同步完成,有良好的抗干扰性能,所以适合信道的传输[1]。IEEE802.4的总线标准采用了此种传输技术。曼彻斯特编码被作为一个以太网局域网的物理表层,对于一个以太网局域网用同轴电缆作为传输介质,额外的带宽不是重要的问题。曼彻斯特码由于其特殊的性能,已经被许多高效率且被广泛使用的电信标准所采用,例如以太网电讯标准。曼彻斯特编码是一种超越传统数字传输的信道编码技术,由于其具有隐含时钟、去除了零频率信号的特性使得它在石油勘探测井中也得到广泛的应用。在许多领域得到广泛的应用,如电信业,工业控制,航天军事领域,石油勘探测井等等。在工业现场控制网络中,曼彻斯特码由于带有时钟信息、无直流,且实现简单,常被用作高速的基带数传[2]。曼彻斯特码在测井系统中应用广泛,目前,在实际的工程应用测井中,常常采用曼彻斯特编译码器把测量数据通过边译码器转换为曼彻斯特码和曼彻斯特码解码为数据,由于其发送的数据输入和接受数据输出均为串行方式,因为曼彻斯特编解码的基本单位是16位数据,所以逻辑上要求使用16位的并行输入串行输出的移位寄存器和16位的串行输入并行输出的移位寄存器与单片机接口,但这样的硬件结构复杂,仪器成本高。考虑到测井数据传输速率不高,可用单片机软件来实现曼彻斯特编解码功能。基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第5页。基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第5页。1.2课题内容与论文组织结构围绕课题,主要进行了以下工作:1)根据课题要求,查阅相关资料,完成文献综述、翻译和开题报告。2)查阅伪随机信号的编码原理与应用,熟悉M序列原理及实现方法,尤其是采用线性移位寄存器实现给定特征方程的M序列设计。3)安装QUARTUSII软件,熟悉基于QUARTUSII的开发流程。包括源程序的设计输入、编译、仿真、综合和下载等。掌握基于VHDL语言的QUARTUSII开发。熟悉DEII平台、CYCLONEII系列FPGA的使用。4)通过查阅资料,提出本课题的设计方案。将整个系统划分为分频、M序列产生和曼码的编码等三大模块。5)分别实现奇数分频、基于线性移位寄存器的M序列产生和基于VHDL语言的曼码编码。对每个模块进行仿真,观察输出波形,验证设计的正确性。6)设计顶层文件,进行系统联调,观察仿真波形。7)结合DEII平台的实际电路连接情况,锁定相关引脚,进行最终的编译,下载目标文件至DEII平台。 论文的第一章为引言,主要介绍本课题的背景及意义,概括设计所做的工作及论文的组织结构;第二章概述曼码编码技术及实现方法;第三章主要介绍M序列的设计原理;第四章为本文重点,详细阐述设计的实现过程及验证,并给出相应的分析;第五章记录并整理了设计中出现的典型问题和解决方法;第六章对设计工作进行总结。基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第6页。基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第6页。2曼彻斯特编码技术概述2.1曼彻斯特编码技术的原理曼彻斯特编码(ManchesterEncoding),也叫做相位编码(PE),是一种与时钟信号同步的编码[2]。在曼彻斯特编码中,每位的中间应有一跳变,而每一位中间的跳变即为时钟信号,又为数据信号;从高到低的跳变表示“1”,从低到高的跳变表示“0”。由于跳变都发生在每一个码元的中间,接收端可以方便地利用它作为位同步时钟,因此,这种编码也称为自同步编码[3]。但每一个码元都被调成两个电平,所以数据传输速率只有调制速率的1/2。曼彻斯特编码的数据流中包含时钟和数据,在传输信息代码的同时,也将时钟信号一起同步传输到对方,每位编码中均有跳变,且不存在直流分量,因此曼彻斯特编码具有自同步能力和良好的抗干扰性能。曼彻斯特编码是局域网传输中常用的一种编码格式。它的编码方式如图2-1所示。图2-1曼彻斯特编码原理广义曼彻斯特编解码不区分数据格式,不须要检测编码周期是否开始,并辨别同步字(命令/数据),不须要识别数据位、附加奇偶校验位。编解码时把任何信号当成有效数据[4]。基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第7页。在一些应用中实际对曼彻斯特编解码器设定了固定的格式,并要求编码器产生同步字、校验位功能,相应解码器有识别同步字、校验位功能。例如在油田测井领域广泛用到的PCM3508信号就是狭义上的曼彻斯特码数据。基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第7页。编码的一种典型格式为每帧信息由同步头、数据及校验位三部分组成共20位。同步类型有两种,都占用3个位周期。先高电平后低电平的为命令同步,各自平宽度均为1.5个周期,反之则为数据同步;中间是数据占16位,在每个位的中间有跳变,高到低跳变表示“1”,低到高跳变表示“0”;最后有一位校验位[5]。2.2曼彻斯特编码技术的优缺点曼彻斯特编码技术的最大优点是数据和同步时钟统一编码,编码中含有丰富的时钟信号,直流分量基本为零,接收器能够较容易恢复同步时钟,并同步解调出数据,具有很好的抗干扰性能,这使它更适合于信道传输。由于在编码过程中,一位数据有两个比特,所以数据传输效率降低,这是曼彻斯特编码的缺点。2.3曼彻斯特编码技术的实现2.3.1基于CPLD/FPGA的曼彻斯特编码设计编码的过程主要有两部分。首先检测编码周期是否开始,以决定产生正跳变沿。然后对串行的数据进行编码并传输。给定编码器的时钟输入信号,当输入原始数字信号为高电平时,开始产生正跳变沿,并使时钟使能信号为高电平,这样,正跳变沿产生完成即开始编码过程[6]。当给定的时钟输入信号为高电平时,在原始数字信号每个码元中间位置产生跳变,即将原始数字信号转换成相应的曼彻斯特码。最后,原始数字信号为低电平时,以使时钟输入信号为低电平,结束编码过程。基于CPLD/FPGA的曼彻斯特码设计进行了多个文件的分块设计,然后将这些文件映射到顶层文件进行综合,并运用VHDL对单个文件进行编写、仿真和优化。最终将每个模块联调、仿真,最终实现曼彻斯特编码设计[7]。基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第8页。此方案具有一定的通用性,逻辑大部分只涉及到编码器本身;并且接口简单。另外,由于选用器件资源比较丰富,故对其进行功能添加也十分方便,只需添加电路设计而不必对原有电路进行修改。基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第8页。2.3.2基于AVR单片机的曼彻斯特编码设计AVR单片机中曼彻斯特编解的实现曼彻斯特编码的子程序流程如图2-2所示。该程序仅对一个数据字节编码,循环调用此程序就可完成所有数据字节的编码。在编码前定义一个缓冲区encode[],用来存放编码后的曼码数据,在调用编码程序前对其清零。其中:data[j]数组为未编码的帧数据,j为本次被编码数据的次序(数组下标)。图2-2编码程序流程数据编码完成后,采用定时器控制方式经通用I/O口发送数据。I/O口与发射芯片的输入引脚相连,发射芯片把数据调制后发射。MCU把位数据送到I/O口后开定时器,并立即进入省电模式。定时时间到引发定时器溢出中断唤醒MCU发送下一个位数据。这样就保证了数据传输波特率的准确性,并节省功耗[8]。基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第9页。与其它的数据传输方法和曼彻斯特编解码方式相比,该方案十分灵活方便,可以自适应射频发射机电池电压变化引起的数据传输波特率的变化。可处理的码速率也很高,极限码速率与所采用的单片机的速度和振荡器的频率以及采用的编程语言都有关系。基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第9页。 3伪随机信号概述随机噪声在通信技术领域中由于损害通信信道的质量而被人们越来越受到重视。随机噪声存在于信道中会使得模拟信号产生失真,也可能使数字信号在解调后出现码元错误;在某些情况下,随机噪声对信道容量的限制也是一个不可忽视的问题。因此,人们最早企图设法消除或减小通信系统中随机噪声。但是,有时人们也希望获得随机噪声。例如,在实验室中对通信设备或系统进行测试时,有时要故意加入一定的随机噪声,这时则需要产生它[9]。3.1伪随机序列20世纪随着科学技术的不断发展,现代通信技术理论也不断得到完善和发展。40年代末,香农(Shannon)就曾指出,在某些特定的情况下,为了实现通信的有效性,就应该采用白噪声统计特性的信号。同时,在通信的过程中为了实现高保密通信的可靠性,我们也希望产生并利用随机噪声。但是,随机噪声的产生和利用最大困难是它很难重复产生和处理。直到60年代,伪随机噪声理论的提出和广泛应用才解决了这一困难。伪随机噪声与随机噪声的一些统计特性非常类似,所以具有很多共性,同时又便于快捷的重复产生和处理。由于它具有随机噪声的优点,又避免了它的缺点,因此获得了日益广泛的实际应用。如果一个序列,一方面它是可以预先确定的,并且是可以重复地生产和复制的;一方面它又具有某种随机序列的随机特性(即统计特性),我们便称这种序列为伪随机序列[10]。通常反馈移存器是由伪随机序列的电路产生的。反馈移存器又分为线性反馈移存器和非线性反馈移存器两类。由线性反馈移存器产生出的二进制数字序列并且周期最长的称为最大长度线性反馈移存器序列,通常简称为m序列。伪随机序列具有类似白噪声的相关特性,有两个电平,其幅度概率分布也不再服从高斯分布[11]。它应具有如下特性:(1)在每一个周期内0和1出现的次数近似相等。基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第10页。(2)在每一个周期内,长度为n比特的游程出现的次数比长度为n+1比特游程次数多一倍(游程是指相同码元的码元串)。基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第10页。(3)对于狭义伪随机序列,将给定随机序列位移任何一个非零数目个元素,所得的序列将和原序列有一半的元素相同,一半的元素不同[12]。对于一个纯随机过程来说,若其期望和方差均为常数,则称之为白噪声过程。白噪声过程的样本实称成为白噪声序列,简称白噪声。白噪声是一种随机的过程,其瞬时值服从正态分布,自相关函数和功率谱密度有极好的相关性,伪随机序列是针对白噪声演化而来的,只有“0”和“1”两种电平,所以伪随机编码概率分布不服从正态分布形式。但当序列长度足够长时,根据中心极限定理,它类似于正态分布,综上所述,伪随机序列定义如下所示:(1)狭义伪随机序列是具有如下自相关函数(3-1)形式。(3-1)(2)第一类广义伪随机序列是具有如下自相关函数(3-2)形式的。(3-2)(3)第二类广义伪随机序列是具有如下互相关系数(3-3)形式的。或(3-3)(4)满足以上(3-1)式、(3-2)式和(3-3)式三者之一的序列,我们统称为伪随机序列。由上面四种定义可以看出,狭义伪随机序列是第一类广义伪随机序列的一种特例[13]。3.2m序列3.2.1m序列产生原理基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第11页。m序列是最长线性反馈移存器序列的简称,它是由带线性反馈的移存器产生的周期最长的一种序列,称为最大长度线性反馈移存器序列,通常简称为m序列。多级移位寄存器或其他延迟元件通过线性反馈产生的最长的码序列。由于m序列容易产生、规律性强、有许多优良的性能,在通信领域中最早获得广泛的应用。基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第11页。如图3-1所示为一典型的线性反馈移存器组成。图中一级移存器的状态用ai表示,ai=0或1,i为整数。反馈线的连接状态用ci表示,ci=1表示此线接通(参加反馈),ci=0表示此线断开。不难想象,反馈线的连接状态不同,就可能改变此移存器输出序列的周期p。由于反馈的存在,移存器的输入端受输出信号的控制。不难看出,若初始状态为全“0”,则移位后得到的仍为全“0”,因此应避免出现全“0”状态,又因为n级移存器共有2n种可能的不同状态,除全“0”状态外,剩下2n-1种状态可用。每移位一次,就出现一种状态,在移位若干次后,一定能重复出现之前某一状态,其后的过程便周而复始了。反馈线位置不同将出现不同周期的不同序列,我们希望找到线性反馈的位置,能使移存器产生的序列最长,即达到周期P=2n-1。设n级移位寄存器的初始状态为:a-1a-2…a-n,经过一次移位后,状态变为a0a-1a-2…a-n+1。经过n次移位后,状态为an-1an-2…a1a0,图3-1所示就是这一状态。再移位一次时,移位寄存器左端新得到的输入an,按图中线路连接关系,可以写为:(模2)(3-4)该式称为递推方程。图3-1线性反馈移位寄存器上面曾经指出,ci的取值决定了移位寄存器的反馈连接和序列的结构。现在将它用下列方程表示:(3-5)基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第12页。这一方程被称为特征多项式。式中xi仅指明其系数ci的值(1或0),x本身的取值并无实际意义,也不需要去计算x的值。例如,若特征方程为f(x)=1+x+x6则它仅表示x0,x1和x6的系数c0=c1=c6=1,其余都为零。经严格证明:若反馈移位寄存器的特征多项式为本原多项式,则移位寄存器能产生m序列。所谓“本原多项式”,即必须满足以下条件:基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第12页。(1)为既约的;(2)可整除,;(3)除不尽,。图3-1中示出了n级移位寄存器,其中有若干级经模2加法器反馈到第1级。不难看出,在任何一个时刻去观察移位寄存器的状态,必然是2n个状态之一,其中每一状态代表一个n位的二进制数字;但是,必须把全0排斥在外,因为如果一个进入全0,不论反馈线多少或在哪些级,这种状态就不会再改变。所以,寄存器的状态可以是非全0的2n-1状态之一。这个电路的输出序列是从寄存器移出的,尽管移位寄存器的状态每一移位节拍改变一次,但无疑是循环的。如果反馈线所分布的级次是恰当的,那么,移位寄存器的状态必然各态历经后才会循环。这里所谓“各态历经”就是所有2n-1个状态都经过了。由此可见,应用n级移位寄存器所产生的序列的周期最长是2n-1[14]。同时由于这种序列虽然是周期的,但当n足够大时周期可以很长,在一个周期内0和1的排列有很多不同方式,对每一位来说是0还是1,看来好像是随机的,所以又称为伪随机码;又因为它的某一些性质和随机噪声很相似,所以又称为伪噪声码(PN码)。基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第13页。要用n级移位寄存器来产生m序列,关键在于选择哪几级移位寄存器作为反馈。将移位寄存器用一个n阶的多项式表示,这个多项式的0次幂系数或常数为1,其k次幂系数为1时代表第k级移位寄存器有反馈线;否则无反馈线。注意这里的系数只能取0或1,x本生的取值并无实际意义,也不需要去计算x的值。称为特征多项式。例如特征多项式对应于图3-2所示。理论分析证明:当特征多项式是本原多项式时,与它对应的移位寄存器电路就能产生m序列。基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第13页。图3-25级移存器产生m序列由上述可见,只要找到了本原多项式,就能由它构成m序列产生器。但是寻找本原多项式并不是很简单的。经过前人大量的计算已将常用本原多项式列成表备查,如在表2-1中列出了一部分本原多项式。表3-1常用本原多项式n本原多项式n本原多项式代数式八进制数字表示代数式八进制数字表示2784353139102142310201154511400561031210123721113200333.2.2m序列性质m序列是一种性能优良的伪随机,具有如下性质:(1)均衡性在m序列的一个周期中,“1”和“0”的数目基本相等。准确地说,“1”的个数比“0”的个数多一个。(2)游程分布基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第14页。我们把一个序列中取值相同的那些相继的(连在一起的)元素合称为一个“游程”。在一个游程中元素的个数称为游程长度。基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第14页。一般来说,在m序列中,长度为1的游程占游程总数的1/2;长度为2的游程占游程总数的1/4;长度为3的占1/8……严格地讲,长度为k的游程数目占游程总数的2,其中。而且在长度为k的游程中,连“1”的游程和连“0”的游程各占一半。(3)移位相加特性m序列和它的位移序列模二相加后所得序列仍是该m序列的某个位移序列。设Mr是周期为p的m序列,Mp为r次延迟移位后的序列,那么MrMp=Ms其中Ms为Mp某次延迟移位后的序列。例如,Mr=000111101011001,Mr延迟两位后得Mp,Mp=010001111010110,再模二相加得Ms=010110010001111,可见,Ms=MrMp为Mp延迟8位后的序列。(4)自相关特性m序列具有非常重要的自相关特性。在m序列中,常常用+1代表0,用-1代表1。此时定义:设长为p的m序列,记作。经过j次移位后,m序列为,其中(以p为周期),以上两序列的对应项相乘然后相加,利用所得的总和来衡量一个m序列与它的j次移位序列之间的相关程度,并把它叫做m序列()自相关函数。记作(3-6)当采用二进制数字0和1代表码元的可能取值时(3-7)基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第15页。(3-8)基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第15页。由移位相加特性可知,仍是m序列中的元素,所以上式分子就等于m序列中一个周期中0的数目与1的数目之差。另外由m序列的均衡性可知,在一个周期中0比1的个数少一个,故得A-D=-1(j为非零整数时)或p(j为零时)。因此得(3-9)m序列的自相关函数只有两种取值(1和-1/p)。R(j)是一个周期函数,即,式中k=1,2,…,p,p=(2n-1)为周期。而且R(j)是偶函数,即。RR(j)1123-1-2-3-PP-1Pj0图3-3m序列的自相关函数3.3m序列发生器实验验证m序列码发生器是一种反馈移位型结构的电路,它由n位移位寄存器和异或反馈网络构成。其序列长度为,只有一个全0状态不可取,所以称为最大线性序列码发生器。由于其结构已定型,且反馈函数和连接结构都有规律可以遵循,因此利用查表的方式可以找到其对应m序列码。基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第16页。基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第16页。4基于FPGA的曼彻斯特编码器设计本次设计的任务是2011年全国大学生电子竞赛本科组E题的信号发生器。即产生两路数据速率为10MHz的曼彻斯特编码信号。数字信号V1为的m序列,V2为的m序列,分别对此两路信号进行曼彻斯特编码输出。设计的硬件平台是ALTERA公司的DEII电路板。其晶振为50MHz,因此本课题的主要内容包括三个模块:分频、M序列产生和曼彻斯特编码。如图4-1所示为基于FPGA的曼彻斯特编码器的设计流程。分频模块的设计编写分频程序代码两路m序列模块的设计编译及仿真编译及仿真总设计成功Y比较结果是否一致Y模块设计成功编译及仿真比较结果是否一致模块设计成功模块设计成功YYNN联调N编译及仿真N设计指标编写分频程序代码曼彻斯特编码器的设计比较结果是否一致比较结果是否一致分频模块的设计编写分频程序代码两路m序列模块的设计编译及仿真编译及仿真总设计成功Y比较结果是否一致Y模块设计成功编译及仿真比较结果是否一致模块设计成功模块设计成功YYNN联调N编译及仿真N设计指标编写分频程序代码曼彻斯特编码器的设计比较结果是否一致比较结果是否一致基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第17页。4-1设计流程图基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第17页。通过QuartusⅡ实现占空比为1/2的5分频器,产生输出信号;作为两路m序列与的输入时钟信号,经过处理得到伪随机信号,最后进行曼码的编码。4.1分频设计模块QuartusⅡ7.0软件提供完整的多平台设计环境,直接满足特定的设计需要,为FPGA/CPLD开发提供全面的设计环境。设计软件提供完整的多平台设计环境,能够直接满足特定的需要,为可编程芯片系统(SOPC)提供全面的设计环境,能够集成了一套功能强大的设计工具,可以完成多种滤波器的设计、分析和性能评估。本模块需要实现占空比为1/2的5分频器。奇数分频器的实现较为复杂,因为它需要在输入时钟的下降沿进行翻转。笔者采用设计两个计数器的方法。两个计数器分别采用时钟信号的上升沿和下降沿触发,计数模值相同。根据两个计数器的输出产生两个电平控制信号,对两个电平控制信号进行相应的逻辑运算即可实现分频信号的输出[15]。程序代码如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;entityfpsjisport(clk_in:instd_logic; clk_out:outstd_logic);endfpsj;architecturertloffpsjisconstantfpb:integer:=4;constanttemp:integer:=2;signala1,a2:integerrange0tofpb;signalctr1,ctr2:std_logic;beginprocess(clk_in) begin ifrising_edge(clk_in)then ifa1<fpbthena1<=a1+1;elsea1<=0; endif;基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第18页。 endif;基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第18页。endprocess; process(clk_in) begin iffalling_edge(clk_in)then ifa2<fpbthena2<=a2+1; elsea2<=0; endif; endif;endprocess;process(clk_in) begin ifrising_edge(clk_in)then ifa1<tempthenctr1<='1'; elsectr1<='0'; endif; endif;endprocess; process(clk_in) begin iffalling_edge(clk_in)then ifa2<tempthenctr2<='1'; elsectr2<='0'; endif; endif;endprocess;clk_out<=ctr1orctr2;end;基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第19页。程序中定义了常数fpb和temp,fpb+1为分频比,修改常数fpb的值可以改变分频比,常数temp的值应该为fpb/2。进程p1和p2分别描述了上升沿触发的计数器和下降沿触发的计数器,这两个计数器的模值均为fpb+1。进程p1和p2分别产生两个电平控制信号ctr1和ctr2。基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第19页。图4-2占空比为1/2的5分频器仿真图该程序的仿真图如图4-2所示,从仿真图中可以看出电平控制信号ctr1和电平控制信号ctr2的频率均为输入信号的1/5(1/fpb+1),占空比为2/5(temp/fpb+1),他们分别在下降沿和上升沿触发。输出信号为两个电平控制信号的或运算,频率为输入信号的1/11,占空比为1/2。由于整体设计的输出信号速率为10MHz,所以采用5分频设计,而5分频设计又是整体设计其中的一个子模块,因此需要把5分频程序经过编译之后,创建Symbol,为接下来的整体设计作基础准备。Symbol模块创建产生如下图4-3所示。基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第20页。图4-3分频模块封装基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第20页。4.2m序列信号发生器的设计模块第一个数字信号发生器的m序列特征方程为:,其中表示的系数,其余的。按这一特征方程构成的反馈移位寄存器就是下图4-4所示。图4-4设计原理图基于FPGA的m序列设计,其中的模块相当于D触发器,因此在QuartusⅡ7.0软件中首先在File选项中建立BlockDiagram文件;接着双击鼠标产生图4-5BDF文件界面基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第21页。如上图4-5所示画面,在Name栏中键入DFF,出现如下图4-6的DFF触发器元器件,因为所给m序列的特征方程为,因此它是一个8级的m序列,所以需要8个同样的DFF触发器,再加上一个4个端口的异或基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第21页。图4-6调入DFF模块门器件,可同样双击鼠标在Name栏中键入XOR4的异或门,最后将这些元件用导线连接起来。其中第二个、第三个、第四个、第八个D触发器的输出端分别接入4端口的异或门的输入端,由此异或门产生的输出再重新接入第一个D触发器的输入端,通过此级联最终产生出我们需要的m序列信号。下图4-7为特征方程是的m序列信号。图4-7信号的M序列实现基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第22页。校对各个模块无误之后,经过编译、仿真得到如图4-8的波形图。需要指出的是,若初始状态为全“0”,则移位之后得到的为全“0”,这就表示反馈移存器的初始状态应避免此状况的发生,所以对第一个D触发器给以一个输入高电平即可。基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第22页。图4-8模块的仿真波形第二个数字信号发生器的m序列特征方程为:,其中表示的系数,其余的。按这一特征方程构成的反馈移位寄存器就是下图4-9所示。图4-9设计原理图按照同样的方法分别得到电路原理图(图4-10),仿真波形图(图4-11)基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第23页。图4-10信号的M序列实现基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第23页。图4-11模块的仿真波形最后把第二部分的特征方程为:的m序列所构建的电路图与特征方程为:的m序列所构建的电路图分别经过编译之后,创建Symbol生成子模块,Symbol模块创建产生如下图4-12所示。图4-12和信号的封装4.3曼彻斯特编码设计模块曼彻斯特编码是整个设计的核心。将普通二进制数据与其位率时钟信号相异或而得,便可以得到最终的曼彻斯特编码。VHDL源程序如下[16]:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityman_codeisport(clk:instd_logic;--系统时钟输入databin:instd_logic;--基带信号输入datamout:outstd_logic);--曼彻斯特编码输出基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第24页。endman_code;基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第24页。architecturebehaveofman_codeis--com为曼彻斯特码型寄存器,值为"01"或是"10"signalcom:std_logic_vector(1downto0);signalflag:std_logic;--并串转化信号量begin--曼彻斯特码型转化进程process(clk)beginifclk'eventandclk='1'thenifflag='0'thenifdatabin='1'thencom<="10";elsecom<="01";endif;endif;endif;endprocess;--并串转化和曼彻斯特编码输出进程process(clk)beginifclk'eventandclk='1'thenifflag='1'thendatamout<=com(1);flag<=notflag;elsedatamout<=com(0);flag<=notflag;endif;endif;endprocess;endbehave;对上述程序编译后,需进行曼彻斯特编码的验证。时钟周期为10ns,给定一个输入信号datain,如下图4-13所示。基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第25页。图4-13曼码仿真界面基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第25页。保存上述波形图,点击Processing栏中的SimulatorTool选项,选择刚才保存的波形文件并选择时序仿真,最后点击,完成仿真后查看仿真报告,点击,显示仿真报告如下图4-14所示。图4-14曼码仿真波形图根据曼码的编码规则,对输出结果进行分析可得正确的数据。生成相应的Symbol子模块,如图4-15所示。图4-15曼彻斯特编码器模块封装4.4系统联调基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第26页。基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第26页。4.4.1顶层设计各个模块设计完成后建立BlockDiagram/schenmaticfile,在其中对模块进行连接制作顶层文件,由于同一5分频时钟信号经两路不同的m序列产生各自新的输出信号,再将其各自信号接入相同曼码模块,所以生成电路模块图如图4-16。然后进行编译,产生的资源报告如图4-17。图4-16系统顶层图4-17系统的资源报告基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第27页。基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第27页。4.4.2仿真与下载图4-18所示为整个系统的联调仿真波形。图中CLK为DEII电路板的时钟信号,V1_EN,V2_EN为M序列的使能信号,M1_CLK和M2_CLK为曼码的时钟信号,M1_DATATOUT和M2_DATAOUT分别是V1和V2的M序列输出信号,DATAOUT1和DATAOUT2为最终的曼码输出信号。对该仿真波形进行分析,可以验证设计的正确性。图4-18系统的联调仿真波形图仿真验证正确后,可以进行引脚锁定和下载。此部分内容比较简单,只要锁引脚时仔细些,一般不会出错,因此这些内容不再赘述。基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第28页。基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第28页。5调试及分析本节记录整理了在设计过程中遇到的问题及解决的过程,供读者参考。问题1:曼码的时钟问题。根据曼码的设计原理,输入时钟应该是数据速率的两倍。在刚开始设计时,不明白这个原理,所以仿真波形一直不对。问题2:由线性移位寄存器实现M序列的设计时输出数据始终为零。根据M序列的设计原理,笔者采用线性移位寄存器实现。由给定的V1信号特征方程设计出M序列的线性移位寄存器电路,进行仿真时,输出数据始终为零。经过查阅资料,发现对第一级的DFF必须进行必要的触发,不然每级移位寄存器的输出始终为零,最终的数据输出自然全为零了。问题3:QUARTUSII中不同的文件不能取相同的名字,尽管后缀不同。笔者在设计过程中,碰到一种特殊的编译出错问题。在设计分频器时,由VHDL语言编写程序,生成顶层模块FPSJ,然后新建一BDF文件,此BDF文件也取名为FPSJ,进行后续编译时,一直未能成功,原因是两个文件均取名为FPSJ。问题4:系统联调时,仿真波形不正确。每级的仿真均正确,最终系统联调时未出现正确的结果。经分析发现,仿真时间太短,曼码的时钟设置不正确。基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第29页。基于FPGA的曼彻斯特编码器设计【毕业作品】全文共33页,当前为第29页。6设计总结和展望本次设计的任务是设计一个曼彻斯码编码器,采用DE

II平台进行开发设计,以DE

II平台的50MHz时钟为基准。整个系统分为分频模块、M序列产生模块和Manchester编码模块三部分。分频模块的难度在于奇数分频,必须对输入时钟的上升沿和下降沿同时计数。M序列可以采用线性移位寄存器实现。曼码的实现方法有很多,笔者用VHDL语言编写代码实现。最终下载至目标板ALTERA公司的DEII平台。数据传输稳定且基本没有毛刺。基于FPGA的信号处理是目前数字信号处理的主流技术。课题只

温馨提示

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

评论

0/150

提交评论