基于FPGA的伪随机码的曼彻斯特编译码_第1页
基于FPGA的伪随机码的曼彻斯特编译码_第2页
基于FPGA的伪随机码的曼彻斯特编译码_第3页
基于FPGA的伪随机码的曼彻斯特编译码_第4页
基于FPGA的伪随机码的曼彻斯特编译码_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

基于FPGA的曼彻斯特编译码设计与实现摘要随着科学技术的进步,现代战争样式向信息战形式发展。现代战争胜负对于信息获取的依赖程度前所未有的提高。在现代战争中,若己方的通讯交流方式早敌军破获,则地方将获取己方部队动向或实施信息干扰。将会使部队陷入极其危险地境地中。因此,信息战对通讯加密手段的要求极高。

伪随机序列(Pseudo-noise

Sequence)又称伪噪声或伪随机码,具有类似随机信号的一些统计特性,但又是有规律的,容易产生和复制的。最大长度线性移位寄存器序列(m序列)是保密通信中非常重要的一种伪随机序列,它具有随机性、规律性及较好的自相关和互相关性,而且密钥量很大。利用m序列加密数字信号,使加密后的信号在携带原始信息的同时具有伪噪声的特点,以达到在信号传输的过程中隐藏信息的目的;在信号接收端,再次利用m序列加以解密,恢复出原始信号。这样,通过对m序列的应用,将大大的提高通讯的保密程度和防窃取能力。这样的通讯手段被称为扩展频谱通信关键词:伪随机码;曼彻斯特编译码;FPGA前言曼彻斯特码(Manchestercode),又称裂相码,双向码,是一种自同步的编码方式,即时钟同步信号隐藏在数据波形中,亦即在传输代码信息的同时,也将时钟同步信号一起传输到对方。另外,曼彻斯特码每位编码中有一跳变,不存在直流分量。因此该码具有自同步能力和良好的抗干扰性能。曼彻斯特编码(ManchesterEncoding),也叫做相位编码(PE),是一个同步时钟编码技术,被物理层使用来编码一个同步位流的时钟和数据。曼彻斯特编码被用在以太网媒介系统中。曼彻斯特编码提供一个简单的方式给编码简单的二进制序列而没有长的周期和转换级别,因而防止时钟同步的丢失,或来自低频率位移在贫乏补偿的模拟链接位错误。FPGA采用了逻辑单元阵列LCA(LogicCellArray)这样一个概念,内部包括可配置逻辑模块CLB(ConfigurableLogicBlock)、输入输出模块IOB(InputOutputBlock)和内部连线(Interconnect)三个部分。现场可编程门阵列(FPGA)是可编程器件,与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构。FPGA利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程。系统设计理论分析本次课程设计是基于FPGA曼彻斯特码编码器的软件设计和实现。技术上采用FPGA作为硬件平台,为了使FPGA器件能顺利完成曼彻斯特码的编码任务,它应该包括这样几个部分:伪随机码产生器曼彻斯特编码器曼彻斯特译码器四分频器QuartusⅡ借助EDA工具中的编译器、综合器、适配器、时序仿真器和编程器等工具进行相应的处理,才能使已完成的设计在FPGA上进行硬件实现并得到测试结果。EDA工具有多种途径完成目标系统的输入,如HDL文本输入方式、原理图输入方式、状态图输入方式以及混合输入方式等。相对而言,HDL文本输入方式是最基本也是最直接的输入方式。将通过实例具体介绍基于QuartusII的VHDL文本输入流程,包括设计的输入、综合、适配、仿真测试和编程下载等。方案论证及选择3.1方案一实现上述四个模块可以用Quartus软件中的原理图编辑功能进行各个模块的设计,然后进行元件封装进行连接实现系统整体设计。但是由于Quartus软件所提供的基本元件有限不能满足本次课程设计要求。故不采用原理图方案。3.2方案二由VHDL硬件描述语言的强大功能可以运用VHDL语言对各个模块的功能进行功能描述,使得各个模块能够实现各自的子功能。与原理图编辑类似,将用VHDL语言描述的各个子模块进行元件封装以便用例化语句进行调用。此方案可以减少原理图设计时的线路连接的繁琐工作,可以方便的进行功能的改变和错误检查。故本次设计选择VHDL语言进行功能描述完成设计要求。系统模块设计与分析4.1伪随机序列模块由实验要求需要产生的伪随机序列满足特征方程:f=1+x^2+x^3+x^4+x^8。由特征方程的表达式可知线性反馈移位寄存器的抽头位置分别在c0,c5,c9。并且c5和c9进行异或运算作为输入输入给D8。根据功能要求用VHDL语言进行描述。在进行软件设计时可以通过使能端控制对c0--c8进行初始设置,并且在时钟控制下按照程序设置运行程序,并进行波形仿真以验证程序功能的正确性。根据设计要求本次所需的M序列序列原理图如图4.1.1。 图4.1.1线性反馈移存器的一般组成原理图实验程序波形如图4.1.2 4.1.2M随机序列波形在M序列的程序设计中,在时钟信号CLK上升沿下,在使能端LED为高电平的条件下对输入端进行初始设置。在时钟第一个上升沿且在使能端为高电平的条件下将初始值设置为Z=“000000001”。在第二个时钟上升沿的条件下按照程序设计即M序列产生规则进行M序列编码。在初始值为Z=“000000001”的条件下,理论分析可得第二个时钟上升沿到第十七个时钟上升沿M序列输出为10000000011001100110在每一个时钟上升沿后各个移位寄存器的输出逻辑位移矢量为[000000001][100000000][110000000][011000000][001100000][100110000][110011000][011001100][001100110][000110011][100011001][110001100][011000110][101100011][110110001][011011000]有仿真图分析可得所设计的模块输出与理论分析相同。故可以验证程序描述正确。M序列编码程序见附录一。4.2曼彻斯特编码模块曼彻斯特编码电平跳变的规则是:低电平的中间时刻跳变表示‘0’,用高电平中间时刻的跳变表示‘1’,如下图所示。因而这样防止时钟同步的丢失,或来自低频率位移在贫乏补偿的模拟链接位错误。在这个技术下,实际上的二进制数据被传输通过这个电缆,不是作为一个序列的逻辑1或0来发送的。它具有自同步能力和良好的抗干扰性能。但每一个码元都被调成两个电平,所以数据传输速率只有调制速率的1/2。由曼彻斯特解码规则可将程序设置上跳为‘0’下跳为‘上跳为‘0’下跳为‘1’图4.2曼彻斯特编码曼码编码过程可分为三部分:1)检测编码周期是否开始,产生同步字头;2)进行输入数据的曼彻斯特编码3)产生奇偶校验位并对其进行编码,编码周期结束。编码器的设计流程如图4.2.1所示:当使能信号为高电平时,编码周期开始,当同步选择信号SS为“1”,输出信号为命令同步,若为“0”,表示输出信号为数据同步,当输入数据使能信号send为“1”时,表明允许数据输入,输入时间将持续16个编码周期,若输入的数据信元din为“1”,编码就通过输出一个下降沿来表示,当输入数据为“0”时,编码则输出一个上升沿。数据位输入结束后,编码器将对输入的数据信元进行奇偶校检,如果在输入的数据信元中“1”的个数为奇数,编码器输出一个上升沿,反之若数据信元中“1”的个数为偶数则输出一个下降沿。开始开始'0''0''1'判断ss'1'判断ss命令同步数据同步命令同步数据同步'0''1'判断din'0''1'判断din下降沿上升沿下降沿上升沿1的个数奇数偶数1的个数奇数偶数下降沿上升沿下降沿上升沿否判断结束否判断结束是是结束结束图4.2.1曼彻斯特编码流程曼彻斯特编码的实验波形如图4.2.2图4.2.2曼彻斯特编码波形程序设计中同样是在时钟信号控制下进行二进制的编码。仿真所用的输入信号也是时钟信号,但是与时钟控制信号的频率不同即控制信号的时钟频率是输入信号的时钟频率的两倍。这样使得理论上编码输出的是‘0’和‘1’交替的曼彻斯特码。这样便于分析仿真波形。有理论分析在输入为‘0’时,输出为“01”;输入为‘1’时,输出为“10”。通过分析仿真波形可知,仿真输入与输出的关系满足曼彻斯特编码要求,且与理论分析相同,从而验证了程序描述的系统功能的正确性。曼彻斯特编码程序见附录二。4.3曼彻斯特解码模块与曼彻斯特编码类似,可以根据曼彻斯特解码的规则可将程序设置为在输入两个码元后,对两个码元所组成的码组进行判别从而输出相应的单个的二进制码元。在曼彻斯特解码的过程中为保证在输入两个码元后在进行判别需要用到两个不同频率的时钟信号。控制进行曼彻斯特解码输入的时钟信号时钟频率是进行码组判别的时钟信号时钟频率的4倍。因此需要对同一个时钟信号进行4分频。曼彻斯特译码波形如下:图4.3.1曼彻斯特译码译码波形在解码模块的程序设计中要求在输入端输入两个二进制码员得条件下,通过判断二进制码元所组成的码组来进行解码输出。解码输出要求为当输入的两个二进制码元所组成的的码组为“10”使判断输出一个二进制码元‘1’;当输入的两个二进制码元所组成的码组为“01”使判断的输出为一个二进制码元‘0’。这样可以进行正确译码。满足上述解码要求需要使得控制码元输入的时钟信号的频率是进行码组判断的时钟信号频率的四倍。通过分析仿真波形图,从而验证了程序描述的系统功能的正确性。曼彻斯特解码程序见附录三。4.4四分频模块为了减少在一个实验中用到多个外接时钟信号,可以通过将一个时钟信号进行分频获得满足要求的不同频率的时钟信号。为满足曼彻斯特解码对输入时钟信号的要求,需要对同一时钟信号进行四分频。四分频仿真波形如下: 图4.4.1四分频程序波形四分频的程序设计是将输出的时钟信号频率变为输入时钟信号频率的四分之一。可以通过程序描述为在每隔四个输入时钟上升沿,输出端输出一个上升沿。这样就可获得所需要的输出信号。程序仿真波形验证了程序设计的正确性。四分频产生程序见附录四。系统总体设计按照以上各个子系统模块以及整体连接可以完成实验基本要求。编码速率可以通过调节时钟CLK1的频率来改变。对于实验要求的伪码数据率为10-100kbps,可以调节时钟CLK1的时钟频率在10KHZ-100KHZ之间。系统结构框图如图5.1在Quartus软件中进行整体软件设计程序仿真,通过仿真波形图分析输入数据和输出数据可以验证系统满足实验要求。(下图中三个框均向上引出箭头,什么意思)图5.1系统整体结构框图结果分析通过以上各子模块设计,在Quartus中将上述各子模块的子程序进行元件封装。在系统整体程序编写中运用元件例化语句将封装后的各个模块进行调用,使得系统成为一个整体模块,完成系统整体功能。系统整体程序见附录五。总结本论文讨论了曼彻斯特编解码器的实现。为了达到设计要求,在设计要求的指导下设计出伪随机序列产生器、曼彻斯特编解码器、曼彻斯特解码器及四分频产生器,报告讨论了各个子模块的工作原理,分析了在设计中所需要解决的关键问题,确定了实现方案,重点介绍了伪随机序列、曼彻斯特编解码仿真及实现。经过仿真波形分析该曼彻斯特编解码器及差分曼彻斯特编解码器都能够完成编解码功能,并且性能稳定。通过整体仿真分析验证设计满足整体功能要求。通过本次课程设计熟悉了曼彻斯特码的基本原理,并用VHDL语言进行系统功能的描述,通过软件完成本次设计。参考文献[1]潘松、黄继业EDA技术实用教程--VHDL版[M].北京:科学出版社,2008[2]李洪伟等,基于QuartusII的FPGA/CPLD设计[M].北京:电子工业出版社,2006[3]郑友泉、现场可编程门阵列[J].世界电子元器件,2005,10[4]张力军、钱学荣等通信原理[M].高等教育出版社附录附录一M序列产生程序libraryieee;useieee.std_logic_1164.all;entityMisport(clk,led:instd_logic;z:instd_logic_vector(8downto0);MOT:outstd_logic_vector(8downto0);MO:outstd_logic);endentity;architectureM1ofMis signalreg:std_logic_vector(8downto0); signalcy,A,B,C:std_logic;beginprocess(clk)beginif(clk'eventandclk='1')and(clk'last_value='0')thencaselediswhen'1'=>reg(8downto0)<=z(8downto0);when'0'=>reg(7downto0)<=reg(8downto1);cy<=reg(0);A<=reg(5)xorreg(0);B<=reg(6)xorA;C<=reg(7)xorB;reg(8)<=C;endcase;endif;endprocess; MO<=cy;MOT(8downto0)<=reg(8downto0);endM1;附录二曼彻斯特编码程序libraryieee;useieee.std_logic_1164.all;entityMCisport(clk,MCI:instd_logic;MCOV:outstd_logic_vector(1downto0);MCO:outstd_logic);endentity;architectureMC1ofMCissignala,b,d,e:std_logic; signalc:std_logic_vector(1downto0);beginu1:process(clk,MCI) begin if(clk'eventandclk='1')and(clk'last_value='0') then b<=MCI; a<=notMCI; c(1downto0)<=a&b;e<=c(0); endif; endprocess; MCO<=e;MCOV(1downto0)<=c(1downto0);endarchitectureMC1;附录三曼彻斯特解码程序 libraryieee;useieee.std_logic_1164.all;entityMCJisport(clk1,clk2,MCJI:instd_logic;MCOJV:outstd_logic_vector(1downto0); MCJO:outstd_logic);endentityMCJ;architectureMCJ1ofMCJis signala,c:std_logic_vector(1downto0);signalb:std_logic;beginprocess(clk1,MCJI)variableJ:std_logic_vector(1downto0); begin if(clk1'eventandclk1='1')and(clk1'last_value='0') then J(1):=J(0); J(0):=MCJI; J(1downto0):=J(1)&J(0); endif;a(1downto0)<=J(1downto0);endprocess;c(1downto0)<=a(1downto0);process(clk2,c(1downto0))variableh:std_logic; begin if(clk2'eventandclk2='1')and(clk2'last_value='0') then casec(1downto0)is when"10"=>h:='1'; when"01"=>h:='0'; whenothers=>h:=h; endcase; b<=h; endif; endprocess; MCJO<=b;MCOJV(1downto0)<=c(1downto0);endarchitectureMCJ1;附录四四分频程序libraryieee;useieee.std_logic_1164.all;entityEFPisport(clk:instd_logic;clk0:outstd_logic);endentityEFP;architectureclofEFPissignala:integer:=0;beginprocess(clk) begin if(clk'eventandclk='1')and(clk'last_value='0') then ifa=3 then a<=0; clk0<='1'; else a<=a+1; clk0<='0'; endif; endif; endprocess; endarchitecturecl;附录五系统整体程序libraryieee;useieee.std_logic_1164.all;entityZHisport(ZHL,ZHC:instd_logic;ZHJ:outstd_logic;ZHJV,ZHBV:outstd_logic_vector(1downto0);ZHZ:instd_logic_vector(8downto0);ZH

温馨提示

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

评论

0/150

提交评论