基于fpga的曼彻斯特编码器的设计-毕业设计论文正文终稿_第1页
基于fpga的曼彻斯特编码器的设计-毕业设计论文正文终稿_第2页
基于fpga的曼彻斯特编码器的设计-毕业设计论文正文终稿_第3页
基于fpga的曼彻斯特编码器的设计-毕业设计论文正文终稿_第4页
基于fpga的曼彻斯特编码器的设计-毕业设计论文正文终稿_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

电子科技大学毕业设计电子科技大学毕业设计(论文)题目:基于FPGA的曼彻斯特编码器的设计专业:电子信息工程目录TOC\o"1-3"\h\u101421绪论141061.1选题的依据和意义 1149381.2项目研究内容和任务 1234741.3论文内容及结构 2301592FPGA原理及开发工具283472.1FPGA原理 3105282.2QuartusⅡ及开发语言 4229473曼彻斯特编码原理316063.11553B数据总线 8175653.2曼彻斯特编码原理 10172064系统总体设计182884.1系统设计要求 11205124.2系统设计思路 11301244.3系统设计框图 1218295系统模块设计188325.1并串转换器的设计 13261715.2曼彻斯特编码器设计 14192436系统仿真及结果分析305796.1并串转换器仿真及结果分析 19321286.2曼彻斯特编码器仿真及结果分析 26138536.3系统总体仿真及结果分析 29106657结论及展望 3415815参考文献 358283致谢 366729附录A 373121附录B 41基于FPGA的曼彻斯特编码器的设计摘要电子技术与航空产业飞速发展,已成为我国支柱产业之一。我国政府高度重视航空航天产业发展,“十二五”期间将进一步加大政府支持力度,促进航空航天产业快速发展。在飞机制造中,航空电子系统是其中重要的组成部分,而航空电子系统中数据总线是关键技术之一。11553B作为一种通用的军事标准协议,它对数据总线的电气和协议特性进行严格的规范和约束,现已广泛运用于航空电子综合系统。该标准对航空飞机所需的数字/命令/响应,分时复用等数字总线技术提出了一系列的要求,其中包括数据总线的传输和协议格式。本文首先对FPGA和曼彻斯特编码相关原理进行概述,尤其是航空数据总线MIL-STD-1553B。其次是对其系统组成的介绍,本次设计主要包括两大部分,并串转换器、曼彻斯特编码器。最后着重讲述该系统在quartusⅡ软件下的运行和仿真。1553B总线协议中对传输的字类型进行了规范和分类:分别是命令字、状态字和数据字。本次论文的设计主要着重于该协议总线接口内部的曼彻斯特码编码器,作为总线接口的重要组成部分,曼彻斯特编码器担负着码型编写、奇偶校验等重要任务,使数据能够以1553B所定义的标准形式在数据总线中进行传输。关键词:FPGA曼彻斯特编码1553B总线串并转换电子科技大学毕业设计PAGE42DesignofManchesterEncoderBasedonFPGAAbstractElectronicsandAviationtechnologyindustrydevelopedrapidly.Ourcountryattachesgreatimportancetothedevelopmentofaerospaceindustry.IntheperiodofTwelfthofFive-YeargovernmentwillsupportfurtherincreaseAviation,itwillPromotetherapiddevelopmentoftheaerospaceindustry.Inaircraftmanufacturing,AvionicsSystemisanimportantpartoftheAviation.Theavionicssystemisthekeytechnologyofdatabus.1553Btakesonekindofmilitarystandard,ithascarriedonthestrictstandardandtherestrainttotheelectricityandtheprotocolcharacteristicofdatabus,andithasalreadywidelyusedintheaviationelectronsystem.ThisstandardproposeaseriesofrequeststothedigitalbustechnologywhichareobligatorytotheaviationairplanenumeraI/Order/response,timesharingmultipleuse,includingdatabusinformationflowandfunctionformat.ThisarticlefirstintroducesabouttheFPGAandManchesterEncoder,especiallyMIL-STD-1553B.Nextistheintroductionofitstwocompositionunit,ItincludingStringandconvertandManchesterEncoder.FhentheonethattoldemphaticallyisquartusⅡofOperationandSimulation,inthe1553B'sprotocol,thewordtypeswhichtransmittedinthe1553Bbushascarriedonthestandardclassification,theyaretheorderword、thestatuswordandthedataword.thedesignforthispapermainlyemphaticallyintheprotocolbusinterfaceinteriorManchestercodeencodegasthebusinterfaceimportantconstituent,theencoderisshoulderingtheparallel\serialIxansformation,thecodecompilation,theparitycheckandsoontheimportanttask,enablesthedataaccordingtothestandardformwhichdefinesby1553Btocarryonthetransmissioninthedatabus.Keywords:FPGAManchesterEncoder1553BStringandconvert1绪论1.1选题的依据和意义航空航天产业是国家综合国力的集中体现和重要标志,是国家先进制造业的重要组成部分,是国家科技创新体系的一支重要力量。促进航空航天产业快速发展。在飞机制造中,航空电子系统是其中重要的组成部分,而航空电子系统中数据总线是关键技术之一。MIL-STD-1553B是目前广泛适用于航空电子领域的协议标准,它具有传输稳定、抗干扰、负荷轻、速率高等优点。其主要被欧美军方用于军事系统,在战斗机、航天设备、驱逐舰等军用设施上得到了非常多的运用和实践。为了适应现代军事斗争的需要,近年来,我国在新型战斗机、驱逐舰的研制中已开始采用1553B标准。但是,由于该标准的核心技术为欧美公司所垄断。因此,自主研发基于MIL-STD-1553B总线标准的协议芯片及产品具有重要的战略意义。目前,此类器件在国内还较少出现,对于整个1553B体系架构的把握尚未形成,我们急需改变这种不利情况。自主研发1553B相关产品首先必须解决曼彻斯特码的编码、解码。本文的主要工作就是研究1553B曼彻斯特码编码器的设计及实现。曼彻斯特码编码器是1553B总线接口中最为重要的器件之一,它直接关系到总线数据能否严格按照MIL-SID-1553B标准协议来进行传输,是其三种类型字传递的门户端口器件。本课题设计就是基于FPGA的曼彻斯特编码器的设计。1.2项目研究内容和任务本项目主要研究MIL-STD-1553B上的曼彻斯特码编码器的软件设计和实现。技术上采用FPGA作为硬件平台,为了使FPGA器件能顺利完成曼码的编码任务,它应该包括这样几个部分:1.并串转换器的设计并串转换器的主要工作是将16位由前端输入的并行数据转换为曼彻斯特能够编码的串行数据。它主要由时钟信号、转换使能信号控制。2.曼彻斯特编码器的设计在每个周期的开头加同步字头,数据输入时间持续16个周期,期间对数据进行编码。若输入的数据信元为“1”,编码就通过输出一个下降沿来表示,当输入数据为“0”时,编码则输出一个上升沿。数据位输入结束后,编码器将对输入的数据信元进行奇偶校检,如果在输入的数据信元中“1”的个数为奇数,编码器输出一个上升沿,反之若数据信元中“1”的个数为偶数则输出一个下降沿。3.软件设计的仿真QuartusⅡ借助EDA工具中的编译器、综合器、适配器、时序仿真器和编程器等工具进行相应的处理,才能使已完成的设计在FPGA上进行硬件实现并得到测试结果。EDA工具有多种途径完成目标系统的输入,如HDL文本输入方式、原理图输入方式、状态图输入方式以及混合输入方式等。相对而言,HDL文本输入方式是最基本也是最直接的输入方式。将通过实例具体介绍基于QuartusII的VHDL文本输入流程,包括设计的输入、综合、适配、仿真测试和编程下载等。1.3论文内容及结构介绍了FPGA的有关原理,及它的设计流程,vhdl语言的概述等;第三章介绍了曼彻斯特编码的有关知识,尤其介绍了1553B数据总线;第四章对本文框架进行了讲述,有设计思路的比较和设计框图;第五章介绍了主要的两大模块:串并转换模块和曼彻斯特编码模块;第六章对该系统功能进行了仿真验证;第七章是对本次设计的小结和展望。2.FPGA原理及开发工具2.1FPGA原理FPGA(Field-ProgrammableGateArray),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。 PIPI IOBIOB图2.1FPGA的基本结构目前以硬件描述语言(Verilog或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA上进行测试,是现代IC设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。

FPGA采用了逻辑单元阵列LCA(LogicCellArray)这样一个新概念,内部包括可配置逻辑模块CLB(ConfigurableLogicBlock)、输出输入模块IOB(InputOutputBlock)和内部连线(Interconnect)三个部分,如图2.1。FPGA的基本特点主要有:

1.采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。

2.FPGA可做其它全定制或半定制ASIC电路的中试样片。

3.FPGA内部有丰富的触发器和I/O引脚。

4.FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。

5.FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。

可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。目前FPGA的品种很多,有XILINX公司的Virtex系列、TI公司的TPC系列、ALTERA公司的Stratix系列等。

FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。FPGA提供了一种“自顶向下"的全新的设计方法。这种设计方法首先从系统设计入手,在顶层进行功能方框图的划分和结构设计,在图表级进行仿真、纠错,并用硬件描述语言对高层次的系统行为进行描述,在系统级进行验证。然后用综合优化工具生成具体门电路的网表,其对应的物理实现级可以是印刷电路板或专用集成电路。由于设计的主要仿真和调试过程是在高层次上完成的,这不仅有利予早期发现结构设计上的错误,避免设计工作的浪费,而且也减少了逻辑功能仿真的工作量,提高了设计的一次成功率。2.2QuartusⅡ及开发语言QuartusII是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。一、VHDL语言的发展历史本次毕业设计就是应用VHDL语言,是一种用于数字电路设计的高级语言。VHDL全名是Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage,诞生于1982年。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。自IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。此后VHDL在电子设计领域得到了广泛的认可,并逐步取代了原有的非标准的硬件描述语言。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,(简称93版)。现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。有专家认为,在新的世纪中,VHDL与Verilog语言将承担起大部分的数字系统设计任务。VHDL语言是一种用于电路设计的高级语言。它在80年代的后期出现。最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言,它的应用主要是应用在数字电路的设计中。目前,它在中国的应用多数是用在FPGA/CPLD/EPLD的设计中。当然在一些实力较为雄厚的单位,它也被用来设计ASIC。二、QuartusII下的FPGA设计QuartusII为硬件电路的设计提供了很大的方便。FPGA之所以能够广泛应用于电路设计中,就是因为它们有使用相当方便的开发软件工具包,通过编程工具和软件的配合使用,对器件芯片可以进行流畅的开发、校验。FPGA特别适用于正向设计,即从电路原理图或各种硬件描述语言到芯片成品的设计,在这些设计流程中,设计人员对特别底层的硬件知识并不需要特别的了解和掌握,完全可以从功能应用出发,根据任务需求,自顶向下地进行电路设计。下面我们来看看FPGA的设计流程,QuartusII环境下的FPGA设计过程主要包括5个步骤:●设计输入运用电路原理图输入、HDL文本输入等方式,表达设计思想,指定所用HIGA器件的型号,分配其外部管脚。●综合将原理图、HDL语言等设计输入翻译成由基本电路逻辑单元组成的连接网表,供布局布线器进行实现。●布局布线根据连接网表文件,进行布局布线的分析和优化,完成FPGA器件内、外的虚拟连接。●仿真仿真分为功能仿真和时序仿真。功能仿真验证电路功能是否符合设计要求;时序仿真包含了延时信息,能较好反映芯片的工作情况。●编程和配置成功编译后,将生成的编程文件下载到目标FPGA系统中调试;调试成功后,烧写到FPGA的配置芯片中。建立项目文件建立项目文件建立设计文件建立设计文件原理图输入文本输入原理图输入文本输入有错有错编译综合编译综合无错无错有错有错软件仿真软件仿真无错无错选芯片,映射管脚选芯片,映射管脚无错无错有错编译下载有错编译下载实验成功实验成功图2.2软件开发流程三、QuartusⅡ的仿真仿真分为功能仿真和时序仿真。通常,功能仿真用于验证电路的功能是否正确。本次设计主要是在quartusⅡ软件中进行功能仿真验证。仿真的一般步骤如下:●新建波形编辑文件;●设置仿真时间区域;●保存文件;●导入欲观察的信号节点;●编辑激励信号;●设置数据格式;●设置仿真器参数;●启动仿真和观察仿真结果。3曼彻斯特编码原理3.11553B数据总线数据总线是为不同的系统之间提供数据和信息交换的媒介,这就类似于个人计算机和办公自动化系统之间局域网式的互连,MIL-STD-1553B总线协议是在1978年诞生于美国国防部的,它早前作为的是一种定义了数据总线电气和协议特性的军事标准。一、1553B的历史发展与应用MIL-STD-1553B是一种在航空电子系统中广泛运用的总线协议,它的全称是飞机内部时分命令多路响应数据总线,它的发展可以追溯到1968年。美国政府军事部门经过三年的修订,于1973年8月公布了MIL-STD-1553,这个内部标准的第一个使用者就是F-16战斗机。而美国国防部1975年4月30日所发布的MIL-STD-1553A就是在此基础上不断发展衍变而来,并为F-16战斗机和AH-64AApache直升机所首先运用。在此之后,通过一系列现实操作所积累起来的经验,在1553A的基础上,SAE又加入了许多定义和额外的应用能力于其中,这就是1553B标准协议,它于1978年9月21日由SAE公布,一直沿用至今。不过1553B也在不断进行着一些改动。为了将该标准仅仅应用于空军系统,1980年美国空军曾经对1553B标准的应用选择实施了诸多限制,但是工业界却普遍认为这样的做法大大低估了1553B的应用能力,它应该拥有更广泛的使用权限。现在的MIL-STD-1553B在军用航空电子系统中应用范围非常广泛,比如卫星通信系统、国际空间站的空间地址探寻、大规模交通控制、航空燃料补给等等,甚至包括在了一系列的发射器和服务器中,比如飞行器和发射器的基本接口。除此以外,海军的舰艇、潜水艇、陆军的直升机和坦克,这些都用到了1553B总线协议;对商业领域来说,地铁、产品制造生产线也已运用到了该标准协议。二、1553B数据总线规则1553B总线上的信息是以消息(Message)的形式调制成曼彻斯特码进行传输的。每条消息最长由32个字组成,所有的字分为三类:命令字、数据字和状态字。每类字的长度为20位,有效信息位是16位,每个字的前3位为单字的同步字头,而最后1位是奇偶校验位。有效信息(16位)及奇偶校验位在总线上以曼彻斯特码的形式进行传输,传输一位的时间为1S(即码速率为1MHz)。同步字头占3位,先正后负为命令字和状态字,先负后正为数据字。在这三种类型的字中,命令字位于每条消息的起始部分,其内容规定了该次传输的具体要求。1553B总线曼彻斯特码编码器的主要功能就是把来自外部的并行二进制数据转化为1553B总线上传输的串行信息,并且对这些串行数据进行曼彻斯特码编码,再加上同步头和奇偶校验码,使之成为能够以1553B总线协议所要求的格式在总线中传输的数据。0-2位中间3-18位数据位19位0-2位中间3-18位数据位19位前三位同步字头中间16位数据位最后第20位奇偶校验位图3.11553B的数据格式三、1553B总线的传输1553B总线能挂31个远置终端,1553B总线采用指令/响应型通信协议,它有三种终端类型:总线控制器(BC)、远程终端(RT)和总线监视器(BM);信息格式有BC到RT、RT到BC、RT到RT、广播方式和系统控制方式;传输媒介为屏蔽双绞线,1553B总线耦合方式有直接耦合和变压器耦合;1553B总线为多冗余度总线型拓扑结构,具有双向传输特性,其传输速度为1Mbps传输方式为半双工方式,采用曼彻斯特码进行编码传输。采用这种编码方式是因为适用于变压器耦合,由于直接耦合不利于终端故障隔离,会因为一个终端故障而造成整个总线网络的完全瘫痪,所以其协议中明确指出不推荐使用直接耦合方式。状态字只能由RT发出,它的内容代表RT对BC发出的有效命令的反馈。BC可以根据状态字的内容来决定下一步采取什么样的操作。数据字既可以由BC传输到某RT,也可以从某RT传输至BC,或者从某RT传输到另一RT,它的内容代表传输的数据。1553B总线上消息传输的过程是:总线控制器向某一终端发布一个接收/发送指令,终端在给定的响应时间范围内发回一个状态字并执行消息的接收/发送。BC通过验收RT回答的状态字来检验传输是否成功并做后续的操作。消息是构成1553B总线通讯的基本单位,如果需要完成一定的功能,就要将多个消息组织起来,形成一个新的结构叫做帧(Frame)。完成一个消息的时间称为消息时间,两个消息之间的间隔称为消息间隔时间,完成一个帧的时间称为帧时间。在实际应用中这三种时间都是可以通过编程设置的。3.2曼彻斯特编码原理曼彻斯特编码,也叫做相位编码(PE),是一个同步时钟编码技术,被物理层使用来编码一个同步位流的时钟和数据。在曼彻斯特编码中,用电压跳变的相位不同来区分1和0,即用正的电压跳变表示0,用负的电压跳变表示1。因此,这种编码也称为相应编码。由于跳变都发生在每一个码元的中间,接收端可以方便地利用它作为位同步时钟,这种编码也称为自同步编码。曼彻斯特编码电平跳变的规则是:低电平的中间时刻跳变表示‘0’,用高电平中间时刻的跳变表示‘1’,如下图3.2所示。因而这样防止时钟同步的丢失,或来自低频率位移在贫乏补偿的模拟链接位错误。在这个技术下,实际上的二进制数据被传输通过这个电缆,不是作为一个序列的逻辑1或0来发送的。它具有自同步能力和良好的抗干扰性能。但每一个码元都被调成两个电平,所以数据传输速率只有调制速率的1/2。下跳为‘1’上跳为‘下跳为‘1’上跳为‘0’图3.2曼彻斯特编码下面是一段数据串行信号"1000100111",在上图中可以看出曼彻斯特编码信号的跳变都发生在中间时刻,它按照曼彻斯特的编码规则,可以表示"1001100111"。如下图3.3所示。图3.3信号的曼彻斯特编码4系统总体设计4.1系统设计要求本课题的设计要求和技术指标:1.MIL-STD-1553B总线上的数据以双相曼彻斯特编码的方式传输。2.编码器把来自外部的并行二进制数据转化为串行信息。3.对串行数据进行曼彻斯特码编码,再加上同步头和奇偶效验位。4.能够以1553B总线协议所要求的格式在总线中进行传输。本毕设毕业圆满的完成了上述任务。4.2系统设计思路根据系统的设计要求,需要解决外部数据的并串转换和数据编码问题,而曼彻斯特编码器是本文的设计重点,思路如下:发送数据命令在每个周期的开头加同步字头,数据输入时,输入时间将持续16个编码周期,若输入的数据信元为“1”,编码就通过输出一个下降沿来表示,当输入数据为“0”时,编码则输出一个上升沿。数据位输入结束后,编码器将对输入的数据信元进行奇偶校检,如果在输入的数据信元中“1”的个数为奇数,编码器输出一个上跳变电平,反之若数据信元中“1”的个数为偶数则输出一个下跳变电平,如图4.1所示。发送数据命令检查周期码型转换生成同步字头移位及奇偶校验检查周期码型转换生成同步字头移位及奇偶校验图4.1编码器设计思路4.3系统设计框图根据上述系统的设计要求,系统主要由两大模块组成:并串转换器、曼彻斯特编码器。在系统外部由16位并行信号线供给,经过系统的两个模块后输出曼彻斯特编码信号。在信号的编码方面本设计经过很多次修改,编码没有信号的丢失,并且奇偶校验位的数据匹配,完全满足系统设计的四点要求,系统框图如4.2所示。FPGA系统FPGA系统并行数据输入并行数据输入系统数据输出端曼彻斯特编码并串转换模块系统数据输出端曼彻斯特编码并串转换模块图4.2系统原理框图5系统模块设计5.1并串转换器的设计串并转换主要工作是将16位并行数据转换为曼彻斯特能够编码的串行数据。它主要由时钟信号、转换使能信号控制。当sl信号高电平时就开始输出当前十六位并行数据。它的流程图如图5.1所示。开始开始是判断Sl由低变高电平是判断Sl由低变高电平否 储存当前输入数据是移16位完成储存当前输入数据是移16位完成否否否判断结束否判断结束移位否否是判断结束是判断结束是是结束结束图5.1并串转换流程图程序代码如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entityp_to_sisport(sl,clkl:instd_logic; datain:instd_logic_vector(15downto0); q:outstd_logic);endp_to_s;architecturebehavofp_to_sissignaltmpreg:std_logic_vector(15downto0);beginq<=tmpreg(15);process(sl,clkl)begin if(clkl'eventandclkl='1')then if(sl='0')then tmpreg<=datain; else foriin15downto1loop tmpreg(i)<=tmpreg(i-1); endloop; tmpreg(0)<='0'; endif; endif;endprocess;endbehav;在quartusⅡ中生成相应的并串转换模块如图5.2所示。端口有时钟信号、并串转换使能信号、16位并行数据输入端和一位串行数据输出端。图5.2并串转换器图5.2曼彻斯特编码器设计曼码编码过程可分为三部分:1)检测编码周期是否开始,产生同步字头;2)进行输入数据的曼彻斯特编码3)产生奇偶校验位并对其进行编码,编码周期结束。编码器的设计流程如图5.3所示:当使能信号为高电平时,编码周期开始,当同步选择信号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的个数奇数偶数下降沿上升沿下降沿上升沿否判断结束否判断结束是是结束结束图5.3曼彻斯特编码流程上述的流程图中ss为同步选择信号,din为数据输入信号。曼彻斯特编码器的代码如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;EntityencodeiSport(rst:instd_logic;--复位信号clk:instd_logic;--基准时钟信号ss:instd_logic;--同步选择信号In_en:instd_logic;--输入选择信号Date_in:instd_logic;--编码信元输入端Date_out:outstd_logic;en_out:bufferstd_logic);--编码信元输出端endencode;ArchitecturebehaveofencodeisSignaltem_register:std_logic_vector(5downto0);Signalcounter:std_logic_vector(5downto0);Signalin_counter:std_logic;Signalbit_temp:std_logic;Signalodd_bit:std_logic;--奇偶校检信号BeginDate_out<=tem_register(5);process(rst,clk)beginifrst='0'thentem_register<="000000";counter<="000000";in_counter<='0';odd_bit<='0';bit_temp<='0';en_out<='0';--各信号初始化elsif(clk'eventandclk='1')thenifin_en='1'thenifcounter="000000"thenen_out<='0';ifss='1'thentem_register<="111000";--命令同步字产生elsetem_register<="000111";--数据同步字产生endif;elsifcounter="100110"thenifodd_bit='1'thentem_register(5)<='0';elsetem_register(5)<='1';endif;elsifcounter="100111"thenifodd_bit='1'thentem_register(5)<='1';elsetem_register(5)<='0';--奇偶校检的产生endif;elsetem_register(5downto1)<=tem_register(4downto0);ifin_counter='0'thenifdate_in='1'thentem_register(0)<='1';bit_temp<='0';odd_bit<=notodd_bit;elsetem_register(0)<='0';bit_temp<='1';--对输入数据进行编码endif;elsetem_register(0)<=bit_temp;endif;in_counter<=notin_counter;endif;counter<=counter+'1';ifcounter="101000"thencounter<="000000";odd_bit<='0';en_out<='1';endif;endif;endif;endprocess;endbehave;在quartusⅡ中生成相应的曼彻斯特编码器模块。输入端口有时钟信号、复位信号、输入使能信号、串行输入信号端、和编码信号输出端及输出使能信号。图5.4曼彻斯特编码器6系统仿真及结果分析6.1并串转换器仿真及结果分析打开QuartusⅡ软件,新建一个工程为"encode",如图6.1所示。图6.1新建工程文件encode单击"Finish"按钮完成"encode"工程的新建。新建完工程文件后,就建立并串转换模块。选择"File"→"New"命令或是单击新建图标,在弹出的"New"对话框中选择"VHDLFile"选项,单击"OK"按钮,如图6.2所示。图6.2新建并串转换VHDL文件新建完VHDL文件以后就开始输入VHDL代码,在quartusⅡ中,如下图6.3所示。图6.3并串转换VHDL代码输入在输入完代码以后,就保存当前文件,点保存快捷方式,命名为"p_to_s"文件名。下一步就是开始编译,在编译前要在"projectnavigator"框中点击p_to_s的右键"setastop-levelEntity"。接下来就是对并串转换进行编译。可以在quartusⅡ中直接点击编译快捷方式。结果如图6.4所示。图6.4并串转换编译结果工程编译成功后,必须对其功能和时序特性进行仿真测试,以了解设计结果是否满足原设计要求。QuartusII提供的波形文件为"VectorWaveformFile",即VWF。新建波形文件进行仿真,选择"File"→"New"命令或是单击新建图标,选择"VectorWaveformFile"项。如下图6.5所示。 图6.5新建并串转换的波形文件在向量波形文件的"Name"下方的空白处,双击鼠标左键,弹出"InsertNodeorBus"对话框如图6.6所示,单击"NodeFinder"按钮,弹出"NodeFinder"对话框,如图6.7所示。

图6.6添加端口对话框图6.7NodeFinder选择对话框在弹出的图6.7框中点击"list"按钮,再点击》按钮,最后点"OK"按钮。这波形文件的端口都已经添加进去了。然后就是设置端口的波形。在编译之后就是对模块进行仿真,在quartusⅡ软件中点击"processing"菜单中的"simulatortool"。然后加载之前创建的波形文件”p_to_s“。在下图6.8所示图中点"generatefunctionsimulationnetlist"按钮。创建完网表文件之后就可以点击"start"按钮。图6.8并串转换simulatortool图6.9并串转换仿真结果在图6.8所示的图中,仿真运行之后就可以点击report按钮。结果如图6.9所示。图6.10并串转换结果分析图在datain端口中输入"1101001110100110"十六位的并行数据。q为十六位串行数据的输出端,q端高电平为'1',低电平为'0'。从图中q端的结果可以读出q的输出信号为"1101001110100110",所以并串转换器满足并串转换的要求。6.2曼彻斯特编码器仿真及结果分析在同一个工程文件下,建立曼彻斯特编码模块。选择"File"→"New"命令或是单击新建图标,在弹出的"New"对话框中选择"VHDLFile"选项,单击"OK"按钮,如代码输入后如图6.10所示。图6.10(a)曼彻斯特编码器代码输入图6.10(b)曼彻斯特编码器代码输入在输入完代码以后,就保存当前文件,点保存快捷方式,命名为"encode"文件名。下一步就是开始编译,结果如图6.11所示。图6.11曼彻斯特编码器编译在编译成功后,必须对其功能和时序特性进行仿真测试,以了解设计结果是否满足原设计要求。新建波形文件进行仿真,然后就是添加输入端口和按照要求对输入信号进行编辑。仿真结果如图6.12所示。图6.12曼彻斯特编码仿真结果图6.13曼彻斯特编码结果分析从图6.13中的结果可以看出一个字的长度为20位,date_in的两个时钟周期电平为一个数据比特,从电平中可以看出输入为"1101001110100110"。前面3位为同步字头,111000为同步字头。而后面的16位数据位为"1101001110100110"。因为数据位有9个‘1’所以输出的奇偶校验位为‘0’。上图中两个时钟周期为一个数据比特,上跳变为‘0’,下跳变为‘1’。从上面分析可以看出设计出曼彻斯特编码器满足曼彻斯特编码的要求。6.3系统总体仿真及结果分析在完成上述的两个模块的仿真和运行以后进行总体的功能仿真。在并串转换器和曼彻斯特编码器中分别选择"File"→"Create/Update"→"CreateSymbolFilesforCurrentFile"编译文件并为该文件生成模块文件如图6.14。图6.14并串转换器封装创建结果然后再新建原理图文件。选择"File"→"New"命令或是单击新建图标,在弹出的"New"对话框中选择"BlockDiagram/SchematicFile"选项,单击"OK"按钮,图略。在原理框图文件的空白处,双击鼠标左键,在弹出的"Symbol"对话框中选择"Project"→"encode"模块,如图6.15所示。单击"OK"按钮退出"Symbol"对话框,适当位置放置"encode"模块。同理放入"p_to_s"模块,如图6.16所示。图6.15encode模块Symbol图6.16p_to_s模块Symbol双击原理框图文件的空白处,在弹出的"Symbol"对话框的"Name"文本框中输入"INPUT",单击"OK"按钮退出"Symbol"对话框,在适当位置放置INPUT模块,使用同样的方法再加入一个INPUT和OUTPUT模块。各个模块连接如图6.17所示,保存原理框图文件为"mancodec.bdf"。图6.17系统模块框图经过了原理和代码的输入之后,就开始进行编译。首先点击quartusⅡ中的projectnavigator框中的mancodec.bdf文件图标,再点右键选择"setastop-levelentity",再按编译按钮。编译完成后,然后开始新建波形文件。波形文件的结果如图6.18所示。编辑波形文件再保存,保存名为"mancodec"。图6.18系统波形文件输入图图6.19系统仿真SimulatorTool在编译之后就是对模块进行仿真,在quartusⅡ软件中点击"processing"菜单中的"simulatortool"按钮。然后加载之前创建的波形文件"mancodec"。在图6.19所示图中点击"generatefunctionsimulationnetlist"按钮。创建完网表文件之后就可以点击"start"按钮。图6.20系统仿真结果在点击上图的"report"按钮之后就会弹出系统的总体仿真结果。如图6.20所示。图6.21系统输出结果分析图从上图6.21中的结果可以看出一个字的长度为20位,date_in的两个时钟周期电平为一个数据比特,在datain中有十六位数据线。从15位数据线到0位它的输入为"1101001110100110"。前面3位为同步字头,"111000"为同步字头。而后面的16位数据位为"1101001110100110"。因为数据位有9个‘1’所以输出的奇偶校验位为‘0’。上图中两个时钟周期为一个比特,上跳变为‘0’,下跳变为‘1’。从上面分析可以看出设计出曼彻斯特编码器满足曼彻斯特编码的要求。7结论及展望本次设计实现了任务书中规定的要求,系统结构包括:并串转换器,曼彻斯特编码器。满足了课题规定中的任务书的要求。FPGA是我们的一门专业选修课,本人学习这门课程也才半年的时间,但是在本次毕业设计中学到了很多知识。在毕设的过程中,我参考了很多教材和网上的资料。我相信对我以后不管是就业还是继续学习深造都有很大影响。目前,1553B总线协议正被越来越多的军用与民用客户所接受。1553B协议数据的曼码编码器也因此渐显其重要性。在接下来的工作中,我们还可以运用类似的设计思路进行曼码解码器的开发,使之成为完整的1553B协议曼彻斯特编/解码体系结构。致谢时光飞逝,大学学习生活即将结束,我也即将走向工作岗位和社会。大学学习生活,它给了我很多难忘的回忆。对知识的渴望让我付出过很多也得到了很多,曾经我也对本专业产生过怀疑,但是随着专业课的学习我渐渐发现我离不开自己从专科到本科依依不舍专业。我相信在以后工作的日子里我会走得更远,对专业的热情和执着是我一直学习的动力,在自考的学习生活中每当我遇到困难时都有人支持我、帮助我,是同学和老师的鼓励我,在这里我要对他们的表示感谢!我会在未来的工作过程中,以更加优秀的成绩来答谢这些关心、帮助和支持我的所有老师、家人、同学和朋友们。感谢在百忙之中对我的论文进行评审并提出宝贵意见的老师们。参考文献1.徐志军,EDA技术与VHDL设计[M].北京:电子工业出版社,20092.潘松、赵敏.EDA技术及其应用[M].北京:科学出版社,20083.李洪伟等,基于QuartusII的FPGA/CPLD设计[M].北京:电子工业出版社,20064.杨凯,MIL-STD-1553B总线曼彻斯特码编码器的设计与实现[D].四川大学,20065.唐剑、王勇,MIL-STD-1553B总线曼彻斯特码编码器的CPLD实现[J].技术与市场,2008,26.石红梅、刘泳,采用FPGA实现1553B总线接口专用芯片设计[C].第十三届全国遥测遥控技术年会论文,20047.解传军、王海滨,基于FPGA的航空总线协议接口设计[J].电子设计工程,20098.郑友泉、现场可编程门阵列[J].世界电子元器件,2005,109.周密,金惠华,李化云.1553B总线协议IP核设计与实现.电子器件,200710.徐欣,于红旗.基于FPGA的嵌入式系统设计[M].北京:机械。工业出版社.200511.罗志强.航空电子综合化系统[M].北京:北京航空航天大学出版社,1990附录A程序清单A1串并转换:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entityp_to_sisport(sl,clkl:instd_logic; datain:instd_logic_vector(15downto0); q:outstd_logic);endp_to_s;architecturebehavofp_to_sissignaltmpreg:std_logic_vector(15downto0);beginq<=tmpreg(15);process(sl,clkl)begin if(clkl'eventandclkl='1')then if(sl='0')then tmpreg<=datain; else foriin15downto1loop tmpreg(i)<=tmpreg(i-1); endloop; tmpreg(0)<='0'; endif; endif;endprocess;endbehav;程序清单A2曼彻斯特编码:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;EntityencodeiSport(rst:instd_logic;--复位信号clk:instd_logic;--基准时钟信号ss:instd_logic;--同步选择信号In_en:instd_logic;--输入选择信号Date_in:instd_logic;--编码信元输入端Date_out:outstd_logic;en_out:bufferstd_logic);--编码信元输出端endencode;ArchitecturebehaveofencodeisSignaltem_register:std_logic_vector(5downto0);Signalcounter:std_logic_vector(5downto0);Signalin_counter:std_logic;Signalbit_temp:std_logic;Signalodd_bit:std_logic;--奇偶校检信号BeginDate_out<=tem_register(5);process(rst,clk)beginifrst='0'thentem_register<="000000";counter<="000000";in_counter<='0';odd_bit<='0';bit_temp<='0';en_out<='0';--各信号初始化elsif(clk'eventandclk='1')thenifin_en='1'thenifcounter="000000"thenen_out<='0';ifss='1'thentem_register<="111000";--命令同步字产生elsetem_register<="000111";--数据同步字产生endif;elsifcounter="100110"thenifodd_bit='1'thentem_register(5)<='0';elsetem_register(5)<='1';endif;elsifcounter="100111"thenifodd_bit='1'thentem_register(5)<='1';elsetem_register(5)<='0';--奇偶校检的产生endif;elsetem_register(5downto1)<=tem_register(4downto0);ifin_counter='0'thenifdate_in='1'thentem_register(0)<='1';bit_temp<='0';odd_bit<=notodd_bit;elsetem_register(0)<='0';bit_temp<='1';--对输入数据进行编码endif;elsetem_register(0)<=bit_temp;endif;in_counter<=notin_counter;endif;counter<=counter+'1';ifcounter="101000"thencounter<="000000";odd_bit<='0';en_out<='1';endif;endif;endif;endprocess;endbehave;附录B图B1顶层原理图图B2系统仿真结果图基于C8051F单片机直流电动机反馈控制系统的设计与研究基于单片机的嵌入式Web服务器的研究MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究基于模糊控制的电阻钎焊单片机温度控制系统的研制基于MCS-51系列单片机的通用控制模块的研究基于单片机实现的供暖系统最佳启停自校正(STR)调节器单片机控制的二级倒立摆系统的研究基于增强型51系列单片机的TCP/IP协议栈的实现基于单片机的蓄电池自动监测系统基于32位嵌入式单片机系统的图像采集与处理技术的研究基于单片机的作物营养诊断专家系统的研究基于单片机的交流伺服电机运动控制系统研究与开发基于单片机的泵管内壁硬度测试仪的研制基于单片机的自动找平控制系统研究基于C8051F040单片机的嵌入式系统开发基于单片机的液压动力系统状态监测仪开发模糊Smith智能控制方法的研究及其单片机实现一种基于单片机的轴快流CO〈,2〉激光器的手持控制面板的研制基于双单片机冲床数控系统的研究基于CYGNAL单片机的在线间歇式浊度仪的研制基于单片机的喷油泵试验台控制器的研制基于单片机的软起动器的研究和设计基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究基于单片机的机电产品控制系统开发基于PIC单片机的智能手机充电器基于单片机的实时内核设计及其应用研究基于单片机的远程抄表系统的设计与研究基于单片机的烟气二氧化硫浓度检测仪的研制基于微型光谱仪的单片机系统单片机系统软件构件开发的技术研究基于单片机的液体点滴速度自动检测仪的研制基于单片机系统的多功能温度测量仪的研制基于PIC单片机的电能采集终端的设计和应用基于单片机的光纤光栅解调仪的研制

温馨提示

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

最新文档

评论

0/150

提交评论