资源目录
压缩包内文档预览:
编号:81025908
类型:共享资源
大小:5.62MB
格式:ZIP
上传时间:2020-05-24
上传人:QQ14****9609
认证信息
个人认证
郭**(实名认证)
陕西
IP属地:陕西
20
积分
- 关 键 词:
-
基于
FPGA
HDB3
编解码器
设计
说明书
- 资源描述:
-
基于FPGA的HDB3编解码器的设计说明书,基于,FPGA,HDB3,编解码器,设计,说明书
- 内容简介:
-
基于FPGA的HDB3编解码器设计附录2 系统顶层设计原理图专业班级学号姓名设计课题名称基于FPGA的HDB3编解码器设计比例100%审核图号A4日期图名系统顶层设计原理图共3张第1张附录3 HDB3编码器RTL视图专业班级学号姓名设计课题名称基于FPGA的HDB3编解码器设计比例100%审核图号A4日期图名HDB3编码器RTL视图共3张第2张附录4 HDB3解码器RTL视图专业班级学号姓名设计课题名称基于FPGA的HDB3编解码器设计比例100%审核图号A4日期图名HDB3解码器RTL视图共3张第3张37 XXXXXXX设计任务书课题: 基于FPGA的HDB3编解码器设计 专业学生姓名班级学号指导教师专业系主任发放日期XXX1. 毕业设计(论文)任务的内容和要求(包括原始数据、技术要求、工作要求)1、 主要内容以及技术参数HDB3(High Density Binary3)码是AMI码的一种改进型。HDB3码保持了AMI码的优点,克服了AMI码在遇到连“0”长时难以提取定时信息的困难,因而获得广泛应用。CCITT已建议把HDB3码作为PCM终端设备一次群到三次群的接口码型。 设计首先区分NRZ,AMI,HDB3码之间的联系,然后分析HDB3的编解码器的工作原理,最后采用VHDL语言实现HDB3编/解码器。在Quartus II+ModelSim仿真平台验证编解码器的功能。2、设计中要求做的工作a) 熟练掌握Quartus II与ModelSim软件。b) 灵活运用VHDL语言进行编程。c) 理解HDB3编码/解码工作原理。d) 用VHDL实现。e) 仿真调试f) 完成毕业设计论文的编写。3、 工作要求a) 对待设计工作要具有认真的态度、严谨的作风b) 要求每天按照计划保质保量地完成当天的任务c) 遵守设计场所的纪律制度,做好值日生工作2. 图纸内容及张数:1、顶层设计原理图 1张2、仿真波形图 2张3. 实物内容及要求(包括开题报告、毕业设计说明书(论文)、源程序、成果实物、资料光盘等):(1) 完成毕业实习报告一份。(2) 完成开题报告一份。写明课题研究的意义,设计或研究的思路,采用的主要器件,以及设计最终所获得的成果。详细列出在毕业设计期间各个时间段要完成的工作。(3) 完成8000字的资料摘要一份。(4) 完成与本课题相关的外文资料译文一份(3000汉字以上)。(5) 按照盐城工学院毕业设计(论文)教学工作手册中的要求完成毕业设计说明书一份。符合学校制定的本科毕业设计(论文)的格式要求、字数要求,文笔流畅、条理清晰,无原则性错误。任务书、开题报告、设计说明书等资料刻成光盘。4. 其他:无5. 参考文献: 1 宋燕辉,苏钢. 适用于RoF系统的高速串行接口的FPGA设计(本期优秀论文)J. 光通信技术. 2012(07) 2 刘速,孙伟峰,王洪君. 目标跟踪系统在FPGA上的实时实现J. 西安电子科技大学学报. 2012(05) 3 崔洲涓,胡辽林. SDH中HDB3编解码电路的FPGA实现J. 光通信技术. 2011(03) 4 韩德红,孙筱萌,张显才. 基于FPGA的HDB3编解码器的设计与实现J. 空军雷达学院学报. 2010(04) 5 吴海涛,陈英俊,梁迎春. 基于FPGA的HDB3编解码器设计J. 微计算机信息. 2008(17)6 邵钟浩,马骏,张国强. 光码分多址接入技术中单、多维编解码器的实现J. 光通信研究. 2001(06) 7 刘国驷,周浩强,蔡茂国,崔哲顺. 光纤延迟线编解码器的设计J. 光通信研究. 2000(01) 8 小型数字信号编解码器J. 国外电子元器件. 2002(05) 9 尹波,刘必晨,白瑶晨,唐敏,蒋东新. 大容量可共享光编解码器的设计与性能分析J. 半导体光电. 2007(01)6. 毕业设计(论文)进度计划起讫日期工 作 内 容备 注3月8日3月15日毕业实习以及毕业设计的前期工作,完成中文文献摘要、英文文献翻译、实习报告和设计的开题报告3月16日3月29日进行开题陈述和答辩,设计正式开题3月30日4月7日Quartus II与ModelSim软件的熟悉4月8日4月14日HDB3编解码器工作原理4月15日5月10日用VHDL语言实现5月11日5月24日仿真调试与优化5月25日6月14日撰写毕业设计说明书,准备毕业答辩6月15日6月20日完成毕业答辩以及设计资料的归档工作6月21日6月27日答辩7.教师签字: 制定日期: 年 月 日8. 审批专业系意见:专业系主任(签字) 年 月 日 XX设计开题报告课题:基于FPGA的HDB3编解码器设计专业学生姓名班级学号指导教师专业系主任撰写日期XXX课题名称: 基于FPGA的HDB3编解码器设计课题类型: () 应用型 ( ) 研究型1. 本课题的意义HDB3(High Density Bipolar 三阶高密度双极性)码是在AMI码的基础上改进的一种双极性归零码,它除具有AMI码功率谱中无直流分量,可进行差错自检等优点外,还克服了AMI码当信息中出现连“0”码时定时提取困难的缺点,而且HDB3码频谱能量主要集中在基波频率以下,占用频带较窄,是ITU-TG.703推荐的PCM基群、二次群和三次群的数字传输接口码型,因此HDB3码的编解码就显得极为重要了。目前,HDB3码主要由专用集成电路及相应匹配的外围中小规模集成芯片来实现,但集成程度不高,特别是位同步提取非常复杂,不易实现。随着可编程器件的发展,这一难题得到了很好的解决。本文利用现代EDA设计方法学和VHDL语言及模块化的设计方法,设计了适合于FPGA实现的HDB3编译码器的硬件实现方案。不但克服了分立硬件电路带来的抗干扰性差和不易调整等缺陷,而且具有软件开发周期短、成本低、执行速度高、实时性强、升级方便等特点。2. 课题的基本内容:编码器设计:把二进制码编码成两路单极性的码字输出,编码分为四个模块:判断4个连“0”位置并插入V;记相邻V码间1的个数;跟踪V码位置;编码输出。解码器设计:首先根据HDB3码的特点检测出极性破坏点,即找出4连零码中添加V码的位置(破坏点位置);其次去掉添加的V码;最后去掉4连零码中添加的B码以将其还原成单极性不归零码。3. 课题的研究方法、技术路线、设计(研究)方案:研究方法:查找和本次设计相关的资料,确定整体设计方案;学习编解码器原理及仿真程序语言;查阅基于FPGA的HDB3编解码器设计的相关文献资料。技术路线:本文使用FPGA来实现NRZ码到HDB3码的转换,基于VHDL语言编程实现,然后在Quartus上仿真,根据仿真效果进行硬件调试。设计方案:了解HDB3编解码原理;设计编解码器;仿真;硬件调试。4. 课题的效果预测系统的输入是二进制码,输出是两路单极性码;FPGA的最大工作频率是100MHZ;随机信号输入相对编码信号输出延迟了5个单位时钟,解码信号延时了11个单位时钟。5. 毕业设计(论文)进度计划起讫日期工 作 内 容备 注3月8日3月15日毕业实习以及毕业设计的前期工作,完成中文文献摘要、英文文献翻译、实习报告和设计的开题报告3月16日3月29日进行开题陈述和答辩,设计正式开题3月30日4月7日Quartus II与ModelSim软件的熟悉4月8日4月14日HDB3编解码器工作原理4月15日5月10日用VHDL语言实现5月11日5月24日仿真调试与优化5月25日6月14日撰写毕业设计说明书,准备毕业答辩6月15日6月20日完成毕业答辩以及设计资料的归档工作6月21日6月27日答辩6. 开题报告审批意见指导教师意见:指导教师(签字):年 月 日专业系意见:专业系主任(签字):年 月 日5基于FPGA的HDB3编解码器设计摘 要:在数字通信系统中,数字基带信号由信源发出,但是夹杂着低频分量和直流分量,在传输信号时会容易产生码间的干扰从而严重影响了传输的可靠性,因而要对其进行编码再进行传输。FPGA(现场可编程门阵列)作为21世纪兴起的一种可编程器件,要比传统的可编程器件的集成度要高,且编码电路直接集成在了FPGA芯片上。利用HDB3码(三阶高密度双极性码)在传输过程中可打破长连“0”、不含直流、码谱位于高频段和提取同步信号方便这一特点,本文提出了基于FPGA的HDB3编解码器设计,基于顶层设计原理,首先介绍了FPGA的开发基础和HDB3编解码的原理,其次设计HDB3编解码模块,再者通过集成了FPGA设计环境的Quartus软件中完成编解码器的编译与仿真等过程,分别对编码模块和解码模块进行仿真,最后进行了编解码模块的合成仿真,得到了与预期相符合的波形。最终结果表明,本次设计的基于FPGA的HDB3编解码器具有编解码简单、程序灵活、工作可靠性高的特点,相比其他的可编程器件而言,基于FPGA的HDB3编解码器的集成度更高,体积更小。关键词:FPGA;HDB3码;VHDL语言;编解码器The Design of HDB3 Encoder and Decoder Based on FPGAAbstract:In digital communication system,digital baseband signal is issued by the signal source with low frequency component and the dc component. This is easy to produce the interference in the process of transmission signal which can seriously affect the reliability of transmission.Therefore,it is necessary to encode before the transmission. As the rise of a programmable device of the 21st century, FPGA(field programmable gate array) have a higher level of integration than traditional programmable device, and encoding circuit is directly integrated in the FPGA chip. In the process of transmission, HDB3 code (third-order high density bipolar codes) have the characteristics of break long 0, not including dc, code spectrum at high frequencies, and easy to extract the sync signal. Use of these advantages, this paper puts forward the HDB3 encoder and decoder design based on FPGA. Based on the principle of top design, this paper firstly introduces the development foundation of FPGA and the principle of HDB3 encoder and decoder. Secondly, design HDB3 encoder and decoder module.Through Quartus software which integrationed of the FPGA design environment, complete the process of compilation and simulation of encoder and decoder. Finally,has carried on the synthesis simulation of encoder and decoder module, and expectations of the wave are obtained. Final results show that the design of HDB3 encoder and decoder based on FPGA has the characteristics of simple and flexible in application and high working reliability.Compared with other programmable devices, HDB3 encoder and decoder based on the FPGA is more integrated and smaller.Key Words: FPGA; HDB3 code; VHDL language; codecs目 录1. 概述11.1 课题的意义11.2 课题的研究背景11.3 课题的主要研究工作21.4 现代数字系统的设计方法31.5 论文结构32. FPGA开发基础42.1 Quartus II简介42.2 可编程逻辑器件简介52.3 硬件描述语言简介72.4 FPGA开发流程92.5 FPGA器件选型123. HDB3编解码原理133.1 基本码型简介133.2 HDB3码的编解码规则164. HDB3编解码器的设计与实现184.1 总体设计构思184.2 HDB3编码器的FPGA实现184.2.1 插“V”模块194.2.2 插“B”模块194.2.3 极性变换模块204.2.3 HDB3编码器的仿真214.3 HDB3解码器的FPGA实现224.3.1 +V、V码的检测244.3.2 扣V扣B模块建模244.3.3 HDB3解码器的仿真254.4 HDB3编解码器合成及验证255. 总结和展望27参考文献28致 谢29附 录30 附录1:基于VHDL语言的HDB3编解码器源程序31 附录2:系统顶层设计原理图34 附录3:HDB3编码器RTL视图35 附录4:HDB3解码器RTL视图36基于FPGA的HDB3编解码器设计1. 概述1.1 课题的意义相对于传统的AMI码来说,可以自检出传输中的编码错误,频谱能量主要在基波频率中段,其功率谱中没有直流分量,但是当信息代码在传输的过程中出现4连“0”码时,这时的AMI码就不具备了定时提取的功能,这也就是AMI的缺陷。为了克服这种编码的缺陷,人们改进了传统的AMI码,并得到一种全新的双极性归零码HDB3码,由于HDB3码是一种三阶高密度双极性码,相比于AMI码而言,它的频谱能量主要集中在基波频率的高频段,且占用较窄的频带,具有编码规则简单、便于时钟信号的提取、无直流分量、频带较窄的优点,实现的电路的结构层次也要比采用AMI码编码方式简单,是标准ITUTG.703推荐的PCM终端设备基群、二次群和三次群的标准数字传输接口码型。本文设计了基于FPGA的HDB3编解码器,运用EDA所学的设计方法,结合VHDL语言编程,最后进行系统编解码功能的时序仿真。仿真结果表明,最终设计的HDB3编解码器具有较强的抗扰动性能,且改变参数就可调整编解码器的功能,还具有软件开发简单、造价低、应变能力快、互动性强、便于改动等特点。1.2 课题的研究背景EDA(Electrical Design Automation,电子设计自动化)技术不仅是现代集成电路的基础,还是数字电子技术电路设计要用到的关键平台,作为21世纪科技创新和产业发展的关键部分,EDA技术的设计是基于大规模的可编程器件,如FPGA,表达方式有很多种,但其中最方便使用的是VHDL语言,VHDL语言是一种硬件描述语言,主要功能是实现系统硬件逻辑描述。EDA技术在开发使用中用到了很多工具,其中有计算机、大规模可编程逻辑器件,还有为其配套开发的软件以及实验系统,EDA技术最大的功能是实现电子系统向硬件系统的转变,我们可以在EDA的平台上进行软件的逻辑编译、逻辑化简与逻辑仿真,EDA也会自动完成对于FPGA芯片的适配编译、逻辑映射与编程下载等过程,这就是现代数字电路中常用的一种方法,也是一门新技术。现代集成电路技术发展迅猛,已经进入了一个全新的阶段,不管是从工艺上还是集成电路的复杂程度上,都比过去提升了很多。电子系统电路之所以成为现在发展热门的一种技术,就是由于它所使用的集成电路高度的集成化,使得电子系统成为一个复杂的系统。所以说,离开EDA技术,电子系统的设计是很困难的。21世纪是人才竞争的世纪,高素质的电子科技人才是需要培养的,一个重要的途径就是EDA教学,这也成为了IC从业人员提升自我的一个重要手段。由于EDA技术的迅猛发展,对我们国家高校的传统教学形成了无形的挑战,冲击着传统的电子技术教学,需要提升高校的教师教学水平,在革新教学思路与创新教学方法上多下功夫。近年来,国内许多高校更加注重高等人才的培养,积极探索更加适应新世纪的教学方法,电子技术的快速发展需要更多的优秀人才,高校引入并消化吸收形成了完善的电子技术教学模式,比如开设电子技术课程,注重学生的实验能力,在电子技术有独特优势的高校在获得国家重点项目支持资金后建立起了先进的实验室,有的是国家级,有的是省级。总起起来,国内高校不管是从硬件上还是从软件上都开展了一系列电子技术教学创新,借助于EDA这一现代教学方法就更加方便了教学,学生可以方便地使用EDA软件进行电子技术设计与仿真等。电子系统的设计主要依靠EDA技术来完成,一般有系统级、电路级和物理级三个层次的电路设计。EDA技术可以设计的电子电路的频段不再受局限,从低频到高频甚至更高频率的微波都在EDA设计的范畴。更重要的是,电路的线性与非线性、种类、复杂程度等也都在EDA的考虑范围内,因此,EDA所研究的对象是非常广泛的。我们试着从其他角度来看EDA的发展,比如专用集成电路(ASIC)的开发与应用角度,一个完整的电子系统的设计至少应包括以下5个子模块:设计输入子模块、设计数据库子模块、分析验证子模块、综合仿真子模块、布局布线子模块。 由此可见,EDA技术已经成为现在数字电子技术设计的有力工具。1.3 课题的主要研究工作本课题主要研究的内容是利用FPGA芯片,选择合适的一种码型对信号进行编码,设计信号传输过程中的编码器和解码器,最终进行仿真验证。本次设计采用的是HDB3码对信号进行编码,这是由于HDB3码相比较于传统的AMI码而言可以打破4连“0”,在解码环节便于同步提取,HDB3码的的各项指标都比较符合设计所需,比如在频率、频带上。鉴于HDB3码的优越特点,PCM系统的基群到三次群通常采用HDB3码作为标准接口码型,课题的主要工作是以下几点:a) 用Quartus软件实现基于FPGA的HDB3编解码;b) 在Quartus环境下构建系统总体及编解码原理图设计;c) 对系统进行时序仿真;d) 验证编解码器的功能;e) 对本次的设计进行一个总结。1.4 现代数字系统的设计方法传统设计数字系统电路的方法就是自上而下的设计方法,利用现有的元器件焊接好电路板,借助电路板来做出数字系统。设计人员在设计之初的首要工作就是选择合适的元器件,选取元器件时要注意器件的各项参数指标是否能达到要求。其次就是把我们用到的各种元器件焊接到电路板上,并用仿真软件检查电路的电气可靠性能。EDA技术的出现催生出了新的设计理论和设计方法,并且也促进了可编程逻辑器件的新发。由于可编程器件具有编写程序很灵活的特点,又利用现代EDA技术设计输入,已经成为了数字系统设计的主要方法。可编程逻辑器件在器件内部通过硬件描述语言来完成各个功能模块设计,最终实现系统整体的功能设计。设计者按照系统的需求完成内部逻辑和定义相应的功能管脚,在芯片内设计就可以完成电路板设计的大量工作,在芯片内设计灵活的组合内部功能块定义管脚等来实现数字系统的逻辑功能,可以有效的减轻电路板以及电路设计的工作量和难度,极大的提高工作效率。采用可编程逻辑器件作为芯片的设计方法,设计人员可以反复设计编程,修改错误,方便灵活研发周期短,便于更快的开发产品抢占市场,而且缩小了系统的体积,减少了芯片的使用数量,可以提高系统的可靠性能。 利用EDA软件和可编程逻辑器件芯片,可以形成专业从事IP模块生产的无芯片EDA公司,也可以形成无生产线的集成电路设计公司,设计时调用IP核减少开发量。可以说,可编程逻辑器件和EDA设计工具在现代的数字系统设计也越来越重要了。 1.5 论文结构本文主要研究的是如何搭建好一个仿真平台,首先就是对系统的整体设计进行规划,然后设计各个子模块,最后在搭建好的平台上进行模块仿真,具体章节安排如下:第一章是概述,这章介绍了本论文选题的背景及意义,以及可编程逻辑器件的发展历程和现代数字系统的设计理论与方法。第二章是EDA技术和FPGA开发基础,详细介绍了EDA技术和FPGA开发的基本原理,探析了FPGA芯片的种类和选型。第三章详细说明了HDB3编解码器的原理,首先介绍NRZ码、AMI码和HDB3码这三种基本码型及其编解码规则,其次分别介绍了HDB3编码器和解码器的编解码规则。第四章是基于FPGA芯片来实现HDB3编解码器的设计,首先画出了HDB3编解码器设计的总体框图,然后分别设计了编码器模块和解码器模块,在仿真软件中得到时序仿真波形图,然后将编码器解码器合成仿真,最终完成整体系统的时序仿真验证。第五章是全文总结,从总体上概括本次设计,写出了这次设计的成果和不足之处。2. FPGA开发基础2.1 Quartus II简介Altera公司在之前开发出了一综合性仿真平台软件,它就是Quartus II集成开发软件,该软件支持多种输入方式,自带仿真器,能自动完成硬件系统到软件的PLD设计。Quartus II同时也支持多种可操作的系统,设计流程不仅可以帮助我们直观地浏览RTL视图,它的设计方式也非常多样化,支持友好的用户界面。它的显著特点就是运行稳定、界面友好、易于初学者掌握。在Quartus II内部提供了一系列的调试查看工具,包括Technology Map、RTL Viewer、Chip Planner和TimeQuest等,并且集成了总线接口和软核,提供最新型的研发工具,载入到设计的硬件系统中,可以编写源程序以及Test bench程序。不仅如此,Quartus II可以和DSP直接连接,还可以支持DSP操作系统。另外,片上开发系统也离不开Quartus II软件的支持,可以在Quartus II平台上开发相应的系统,系统整体设计和编程开发整合在一起,因此Quartus II是一个综合性的平台。在使用Quartus II软件进行电路设计时,我们可以采用图形或者HDL编辑器进行编辑,因为这个软件本身就是模块化的编译器。一个系统整个设计过程的第一步是进行设计的输入,第二步是编写我们所能实现电路的程序,第三步是进行仿真验证。等仿真验证的结果没有问题后我们才画元器件的布局与布线图,随后在Quartus II软件中生成可下载的源文件,Quartus II软件的设计流程如图2-1所示。图2-1 Quartus II设计流程图Quartus II自带IP内核,包含模块库里面的宏功能,模块功能强大,便于用户利用,设计精简了复杂度,从而优化了设计。同时多方面支持EDA系统工具,使用户对整个设计流程都熟悉。不仅如此,Quartus II可以和DSP无缝对接,支持DSP应用系统,另外片上可编程系统也离不开Quartus II的支持,可以在Quartus II平台上开发相应的系统,系统整体设计和编程开发整合在一起,因此Quartus II是一个综合性的平台。2.2 可编程逻辑器件简介数字集成电路在最近的几十年里得到了快速的发展,从小规模的集成电路到中规模集成电路再到大规模集成电路和超大规模集成电路,这一过程也说明了数字电子技术本身迅猛的发展。此过程出现了各种类型的数字集成电路,但大体上分为以下三种。a) 标准逻辑器件。之所以称为标准器件就是因为它是中小规模集成电路,基于TTL工作原理的计数器、多路转换器、译码器、触发器等都是比较典型的逻辑器件。标准器件的特点就是产量大、价格低廉、便于编译。由于具有完整的功能,在设计标准器件时更注重提高产品的性能,因此标准器件的工作速度很快,几乎没有延迟。典型数字系统设计就要使用到标准器件,但是标准器件也有一些不足之处,那就是它的集成度不太高,在进行系统设计时,消耗的能量多,而且在印制排版时比较复杂,不容易焊接,这样对用户来说就很不方便,不方便修改,导致整个系统的可靠性能大大地降低。另外,当设计的电路中一个元器件改变,就要重新设计电路板,这就严重影响了我们的设计工作。b) 集成电路器件。21世纪电子技术的迅猛发展造就了基于软件的集成电路器件,最著名的就是单片机和PLC等。与传统的标准器件相比较而言,这类元器件实现了很多之前传统器件不能实现的复杂功能。其特点是整个电路有很高的集成度,可以在自身的平台上进行逻辑的实现,使得我们设计的整个系统更加方便可靠。但是它也有一些缺点,就是这类器件的工作速度也不高,尤其是需要高速逻辑器件的场合更加不适合使用。再者就是这类电路的组成也很复杂,这是因为它在工作时需要外围电路的帮助才能正常可靠的工作。c) ASIC集成电路。为了克服以上器件的缺点,ASIC集成电路应运而生,ASIC电路是具有实现某种特定功能的一个芯片,有了ASIC电路,我们减小了设计电路的大小,更提高了工作的稳定性。现在标准的ASIC电路分为三种,分别是全定制产品、半定制产品和可编程逻辑器件。全定制产品是指根据具体的要求设计制造,全定制电路的使用条件就是产能需求很大。半定制产品是指为了简化设计、缩短研发时间和提高产能,半定制产品就是这样一种方式。可编程逻辑器件克服了很多的问题,而且还可以再次编写程序,为设计和研发提供了方便,可以作为我们设计电路的理想器件。现代的可编程逻辑器件在实现的功能上可分为两类,一种是简单PLD,另一种是复杂PLD,两种PLD在原理上相近,使用的场合不尽相同,图2-2是PLD的分类图。图2-2 PLD的分类图对比之下,FPGA和CPLD在目前的应用更为广泛些,这是由于这些可编程器件本身的功能更为强大、集成度很高,从而能实现更为复杂、较大规模的电路设计做基础,对于二次开发更为有好处,FPGA和CPLD的区别如表2-1所示。表2-1 FPGA与CPLD的区别示意图参数指标FPGACPLD程序存储SRAM,外挂EEPROM内部的EEPROM资源类型触发器种类繁多电路组合形式多样集成度很高比较低使用场合大规模集成电路中小规模集成电路速度很快比较慢其他资源EAB无2.3 硬件描述语言简介EDA技术可以采用多种灵活的编程语言,目前应用比较广泛的就是VHDL和VerilogHDL这两种硬件描述语言。本次设计根据课题开题报告中的要求采用VHDL语言编程,故以下重点介绍这一硬件描述语言。VHDL(VeryHighSpeed Integrated Circuit Hardware Description Language,超高速集成电路硬件描述语言),VHDL语言是基于门级的逻辑设计语言,诞生于 1982 年,以后的几十年里得到了迅猛的发展,现在已经是数字系统电路的开发必不可少的工具。VHDL语言主要用于数字系统的设计和仿真,它表述了很多的结构或者开发行为,内含了一些接口模式。VHDL语言不仅具有普通编程语言的基本硬件特征外,它还能像高级语言一样,用于我们设计数字系统。在进行数字系统的硬件电路设计时,我们之前采取的办法就是首先选取合适的元器件,然后做好基于这些元器件的原理图。这种方法是先设计好系统的顶层,再设计各个子系统,这样就基本做好了系统的硬件电路结构,设计从最基本的电路原理图着手,然后一层一层逐层往上设计,最终得到想要的波形文件。VHDL语言的语法严格,描述方法对于不同的模块也会不太一样。对于不同的描述方法要采用不同的编码模块才行。因此,VHDL语言学习起来不是很简单,需要首先学习简单的语句和语法,然后认识一些典型的编程案例,进行分析,这样才能发挥出VHDL语言的强大功能。但是对于专业用户而言,VHDL是非常有用的编程语言。为了快速地研发大规模集成电路,提高生产效率,并对研发成果保护以及增加成果的可复制性,各个大规模集成电路厂家都有自己的硬件描述语言。VHDL正式由于这种强大的需求才发展起来的,VHDL以形式化方式描述电路结构,并且和高级的描述方法结合起来,可以描述硬件电路的功能,比电路的原理图更直接地显示电路关系。VHDL语言具有高级程序语言的一些特点,他的主要目的就是用来编写电路的逻辑关系,电路的性质决定了VHDL设计的逻辑模型。VHDL语言以其鲜明的特点获得了社会的认同,并广泛用于现在的大规模数字系统设计层次上,作为类似于计算机高级语言的一种编程语言,VHDL语言具有强大的功能,且用户体验效果好,可以方便地在用户之间进行交流,VHDL语言具有以下几个特点:a) 电路设计形式多样。VDHL语言可以支持灵活多样的设计方法,很多的逻辑电路都可以使用VHDL语言来实现,现在EDA软件支持很多种硬件描述语言,VHDL语言就在其中;b) 电路设计层次多样。VHDL语言对电路的功能进行逐层扫描,甚至到门级电路的标准,并且VHDL还支持更多层次系统描述的能力。此外,不同层次的结构描述语言可以和与之对应的行为描述语言一起使用;c) 实现有关工艺编程。在采用VHDL语言设计的数字系统时,我们往往使用相应的工具进行使用前的仿真验证,从而可以更方便地描述电路所显现的功能。当设计需求发生改变时,我们只需要改动相应的验证工具就可使得电路的功能发生改变,这对我们的设计是很方便的;d) 易于共享和复用。VHDL语言作为标准的硬件描述语言,以其严格的语句及语法得到了广泛的应用。当我们设计一个大规模的数字系统时,不可能像设计中小规模数字系统一样,从门级电路开始设计,而是应该首先设计出相应的子模块,通过模块的累加从而达到设计电路的要求。并且由于VHDL语言是一种基于仿真平台的综合语言,所以用VHDL语言设计出来的成果方便了用户之间的交流,从而为设计者减少了压力并大大地缩短了一个产品的研发周期。 VHDL语言主要用于描述数字电路结构上,所涉及的电路一般有以下五个层次:系统级、算法级、寄存器传输级、门级和电路级。VHDL语言不仅有描述硬件电路性质的语言,更重要的是它的语句类似于计算机的C语言。VHDL语言的特点是将一个数字电路工程分成外部和内部两个部分,在对一个实体定义了外部界面后,一旦其内部开发完成后,其他的设计就会直接调用这个实体。VHDL语言可以支持自顶向下和基于库的设计方法,还支持同步电路、异步电路、FPGA以及其他随机电路的设计,但是VHDL语言不具备描述模拟电路的能力。2.4 FPGA开发流程现代集成电路设计的主要方式是基于硬件描述语言VHDL,经过综合布线与布局,下载到FPGA中进行软件合法性测试,从而实现了基本的门电路,比如与门、或门、与非门等,更加复杂的译码器也可以得到。大多数的FPGA包含触发器,是一种记忆元件,或是一种记忆块。FPGA基于逻辑单元阵列LCA(Logic Cell Array),内部集成配置逻辑模块CLB、输入输出模块IOB和内部连线三个部分。FPGA是可编程器件,相比之前的PAL或者GAL而言,FPGA的内部结构做了很大的改动。FPGA实现组合逻辑的方法是利用查表法,每个表端指向一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间可以利用金属连线互相连接或连接到I/O模块。FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程。FPGA作为一种可编程逻辑器件的出现不是偶然的,而是可编程逻辑器件发展的必然结果,FPGA的出现同时也促进了可编程逻辑的发展。上个世纪60年代,FPGA得到了大力发展,用FPGA设计的数字系统完全颠覆了以往的设计理念,用它设计的电路工作的可靠性非常高。FPGA内部的逻辑块可以被人为的连接,就像芯片里集成了一块电路实验板一样。成品的FPGA可以根据人们的意愿改变,所以FPGA具有强大的可编写功能。FPGA虽说是专用集成电路的一部分,但是它要比专用集成电路慢,想要实现同样的功能,要比专用集成电路占用的电路面积要小很多。FPGA也有很多优点,比如从设计到成品的时间非常短,自带的程序可擦除再覆盖,具有良好的可执行性。FPGA的设计流程一般是顶层设计、模块设计、编译仿真和现场调试。可编程逻辑器件的设计过程是利用EDA开发软件和编程工具对器件进行开发的过程。可编程逻辑器件的一般设计流程如图2-3所示,包括设计准备,设计输入,功能仿真,设计处理,时序仿真和器件编程及测试等七个步骤。图2-3 可编程逻辑器件的一般设计流程a) 设计准备。设计一个系统我们首先要做的就是要进行方案论证,然后选择系统所需的元器件。根据设计的难易程度,比如系统达到的功能或是复杂程度、工作的可靠性以及综合布线等进行考量,选择好我们的方案。一般而言,设计系统我们采用的是自上而下的方法。b) 设计输入。在确定好设计的要求后将电路以VHDL语言的形式表达出来,下载到计算机中,这就是设计的输入阶段,设计输入通常有以下几种形式:原理图输入方式。设计描述方式最直接的一种方法就是原理图,软件系统中的元件库可以调用元件,然后再画出原理图。这对从业人员的要求就很高,需要掌握很多的专业方面知识。原理图的主要优点就是可以方便地仿真,偏于设计人员观察信号,并作出相应的电路原理图调整。但也有缺点,就是需要人为地进行改动,从而大大降低了效率。硬件描述语言输入方式。硬件描述语言描述设计的方法是文本方式,它有两种,一种是普通硬件描述语言,另一种是行为描述语言。普通硬件描述语言有ABEL、CUR和LFM等,它们支持逻辑方程。行为描述语言是常用的顶级描述语言,主要有VHDL和VerilogHDL两个IEEE标准。其优点是:编程语言基于系统顶层原理图,设计人员利用逻辑验证确立方案的可行性;VHDL语言可移植性强,便于系统设计;逻辑描述和仿真功能强大,可以随意在输入库之间转换。波形输入方式。波形输入方式主要是用来建立和编辑波形设计文件,以及输入仿真向量和功能测试向量。c) 功能仿真。所谓功能仿真就是对电路的实现功能进行验证,仿真的结果并没有延时,仅验证电路功能。在开始仿真前,首先用VHDL语言编程,然后输入到波形编辑器中建立文件,仿真会产生一些信号脉冲,观察信号的变化与逻辑验证相比较,再做出一些修改。d) 设计处理。系统设计中的核心环节就是设计处理。编译软件将对设计输入文件进行逻辑化简、综合优化和适配,最后产生编程用的编程文件。设计处理过程如下:语法和设计规则检查;逻辑优化;配和分割;布局和布线。e) 时序仿真。另外一种带延时的仿真叫时序仿真,但是器件的延时取决于电路的布局与布线,因此在设计处理过程中,在对电路仿真前首先分析电路的时序和工作的可靠性,以及检查并消除冒险竞争等是很重要的。f) 编程测试。开始时序仿真后,编程就开始调用软件的数据。对FPGA来说,编程后产生了位数据库文件,然后自动完成编程数据下载到FPGA这一过程。在满足了编程所需的电压、时序和算法后,器件编程才能成功。一般的FPGA器件编程需要专门设计的编程器来完成,但是基于高速闪存的FPGA可以由可擦写的存储元件修改,这样就进行了编程测试。2.5 FPGA器件选型传统的可编辑器件存在着很多缺陷,因此导致了FPGA的诞生。FPGA(FieldProgrammable Gate Array)即现场可编程门阵列,属于大规模集成电路中的一种,同时也是一种半加工电路,克服了加工电路本身的缺陷,同时还增加了自身逻辑门电路的数量,并提高了工作效率。现代集成电路设计的主要方式是基于硬件描述语言VHDL,经过综合布局,下载到FPGA中进行软件合法性测试,从而实现了基本的门电路,比如与门、或门、与非门等,大多数的FPGA包含触发器,是一种记忆元件,或是一种记忆块。FPGA内部的逻辑块可以被人为的连接,就像芯片里集成了一块电路实验板一样。成品的FPGA可以根据人们的意愿改变,所以FPGA具有强大的可编写功能。FPGA虽说是专用集成电路的一部分,但是它要比专用集成电路慢,想要实现同样的功能,专用集成电路占用的电路面积要小很多。但是优点也有很多,比如从设计到成品的时间非常短,自带的程序可擦除再覆盖,具有良好的可执行性。FPGA技术设计的原理来自于基本的逻辑单元阵列组合,通过组合达到实现的功能。FPGA内部集成了很多的模块,有逻辑模块、控制模块和总线模块。FPGA能实现组合设计的原因是它内部集成了查表算法,从一个表端到另一个表端进行了特定的指向,最终指向D触发器的输入端,通过触发器的触发功能完成系统输入与输出接口的驱动,这样构成的功能模块实现的功能就很强大了,既可以实现功能仿真又可以实现时序仿真,模块与模块之间的连接通过可靠的金属线。FPGA的工作原理是通过内置的模块编译来实现的,存储单元的大小决定了电路实现功能的复杂程度,由于编译软件的灵活性,FPGA受到了很多用户的欢迎。整个系统设计的最重要部分就是FPGA的选型,选型应该根据很多因素来决定,型号如果选择不好就会对整个设计系统的运行不利,因此,合理的选型可以节省了设计时间,优化了设计结构。本次设计选用的FPGA芯片是Altera公司的Cyclone系列的EP2C35F672C8。该芯片拥有的逻辑单元多达33216个,并且自带484K片内RAM,可以很好的完成本设计任务,其余的资源可供后期开发应用。3. HDB3编解码原理3.1 基本码型简介在用HDB3码设计编解码器设计之前要首先了解传输信号的基本码型,所以首先介绍NRZ码、AMI码和HDB3码。NRZ码的全称是Non-Return to Zero,NRZ码的编码规则如下:信道传输来的信号的1是有脉冲的,而0是没有脉冲的,NRZ码的信号占空比是1。但是NRZ码的一个缺点就是含有太大的直流分量,而且频率主要集中在高频段。NRZ码分为单极性NRZ码和双极性NRZ码两种,单极性NRZ码表示一个信道时,二进制的1和0分别对应着基带信号的正电平和负电平,在整个信号的传输过程中,基带信号的电平的极性保持不变,如图3-1所示。图3-1 单极性NRZ码示意图在NRZ和双极性非归零编码过程中,二进制的1和0也分别对应着基带信号的正负电平脉冲,如图3-2所示。双极性非归零NRZ吗的特点是滤去了直流分量、电压门槛低、工作频率稳定,因此在传输信号时的抗干扰性能强,甚至在铺设电缆时可以不用铺设屏蔽线就能直接传输,双极性的NRZ码如图3-2所示。图3-2 双极性NRZ码示意图现在一般使用双极性归零码也就是AMI码来进行信号的传输,下面介绍AMI码。AMI码传输的是交替的信号,根据传输代码中出现0或者1来进行编码。当代码中传输的是0信号时,传输码仍然为0保持不变,而当代码中传输的是1信号时则变为+1、1这样极性相互交替的脉冲。AMI码并没有直流成分信号,且信号基本为低频信号,在上述过程进行后,这样在信道传输的过程中信号不容易失真,保证了传输的可靠性。AMI码优点在于编码电路相对比较简单,误码状况很容易观察出来,但是没有对长的连串0进行判断,过长的0序列也会造成对另一端的解码工作的影响。但是AMI的缺点就是提取定时信号比较困难,可能在传输过程中出现3个及3个以上的长连0数据串,图3-3是AMI码的示意图。图3-3 AMI码示意图HDB3码之所以被称为三阶高密度双极性码时因为它在传统AMI码上做了很大的改进,从而得到了一种新型的NRZ码,也就是单极性归零码。数据在传输过程中没有出现4个及4个以上含0字符的时,此时HDB3码就是AMI码,也就是替代了原先的马克反演码,是一种正负交替的信号。当信号传输过程中出现四个以上或含0的四个字符,首先对字符按照AMI编码规则进行编码,然后再进行以下的操作,最后的一位0将由破坏性脉冲信号V码的正负性来替换,但是考虑到AMI码正负性的交替,只要保证其正负交替的极性与原来非0的极性相同即可。同时,两个相邻的V码的标志交替变换极性,以确保代码没有直流组件。在上述过程进行开始后,两个相邻的V码为了严格保证没有直流组件,其极性需要正负交替。在本次设计中,插入V码后的数据串被称为破坏性序列。当V码和相邻V码间的0的个数是奇数的时候,最终编译产生的便是我们想要的HDB3编码。从另一个方面说,在上述过程进行后,破坏性序列的首位0应该被插B信号的正负信号所取代,至于B码的正负极性判定就要用到前面的非0信号来判定,它与非0信号之间应该是相反的,而且非0信号紧挨着V码,这样就完成了整个编码的工作,它的转换步骤见表3-1。表3-1 HDB3编码的格式表二进制序列 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1AMI码 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1编码的第一步 1 1 1 0 0 0 V 1 0 0 0 V 0 0 0 V 1编码的第二步 1 1 1 0 0 0 V 1 0 0 0 V B 0 0 V 1设定信息码为0000 0110 0001 0000,那么对应的NRZ码、AMI码、HDB3码的波形如图3-4所示。图3-4 NRZ、AMI、HDB3码波形图由图3-4我们可以知道,不管是传统的AMI码还是改进的HDB3码,它们都是连续的信号,没有离散,信号对应着基本的NRZ波形,通过编译工作,NRZ码就可以进行直接的传输。在设计过程中,本文将原始信号转换为AMI码,然后再转换成HDB3码,当AMI码中不出现4连0信号时,此时HDB3码就是AMI码,但是只要出现4连0码,HDB3码就需要重新进行编码了。3.2 HDB3码的编解码规则a) HDB3码的编码规则:在传输信号的接收端所接受到的HDB3码并不能直接使用,还要将其再还原成AMI码才能使用。AMI在传输过程中不会改变0的极性,但是会改变1的极性,使得1的极性正负交替,在把AMI码变换为HDB3码的过程中就要考虑AMI中的4连0情况了,当AMI中没有4连0时,此时的HDB3码就是AMI码,但是AMI中有了4连0时,此时就需要将连0数据串的最后一位0替换成V码的正负极性信号,用V和V来表示。然后对比观察两个V符号出现的位置,记录下这个位置,数位置之间的非0符号的个数,如果数出来的非0个数是整数个的话就需要将出现V符号位置的前一个非0符号的首位0改成+B或者B字母,此时根据前面非0信号的极性来判定B的极性,简单的说,B的极性与前面的非0信号极性相反。HDB3码的基带信号含有很少的低频率,并且无直流要素,为了提取同步信号信息,设计考虑的只是在连0数据串只有3个的情况下的信号传输。综上所述归纳总结HDB3码的特点:基带信号的所含的频率很低,并且滤去了直流要素;为了利于提取定时信息,连0串符号最多只有3个;编码规则相比较而言复杂,信号的传输可靠性提高。b) HDB3码的解码规则:从HDB3码的编码规则中可以推断出来,在HDB3码的每一个V码前面必须有一个与其极性相同的非0码。因此,解码器的工作原理如下:如果两个相邻的非零的HDB3码序列中的代码都是相同的极性,则第二个必须是V,那么就将其之前的所有三个代码转换成0000序列,然后把所有剩下的的 1序列转换成1序列,0序列仍然是0序列。与其他的解码器相比,这种设计实现的解码器最大的优点在于它有解码功能以及错误检测和纠正功能,当输入的HDB3码有一些错误时,它可以在解码之前先纠正它们。根据HDB3码的编码规则可知,HDB3码谱序列中的错误一定是以下三种情况之一造成的:同极性的两个相邻的非0码的个数超过2;相邻的0序列码的个数超过3;极性相同的两个相邻的非0代码间的0序列的个数小于2。当发生错误时,编码器将根据一定的原则首先纠正错误的代码,这个原则便是最大化修改后的每个解码步骤的结果中包含0的个数,考虑到NRZ序列码转换成为HDB3码并被传输的其中一个特点就是它包含很长的连续的0序列。其修改过程如下,当错误代码为0,首先要看它是否能够取代一个它之前的与第一个非0的代码相同的极性的非0代码。如果答案是否定的,那么取代它的极性相反的非0代码。当错误的代码是非0,首先要看它是否可以被0所取代。如果答案是否定的,然后由它取代极性相反的非0代码。关于这个设计提出来的修改建议中,这是所有可能中唯一的。当错误的HDB3码序列在这一原则的基础上纠正之后,解码结果将会有更多的0序列。经过更正的错误的代码,它会被立刻解码。当输入HDB3码没有错误,它就会被直接解码。4. HDB3编解码器的设计与实现4.1 总体设计构思本研究的主要目的就是利用FPGA完成HDB3编解码器的设计,本课题主要研究的内容是利用FPGA芯片,选择合适的一种码型对信号进行编码,设计信号传输过程中的编码器和解码器,最终仿真验证成果。本次设计采用的是HDB3码对信号进行编码,这是由于HDB3码相比较于传统的AMI码而言可以打破4连“0”,在解码环节便于同步提取,HDB3码的的各项指标都基本符合设计的预期效果,比如在频率、频带上。图4-1为系统总体设计框图,表明了总体上设计需要的模块以及各个子模块之间的关系。图4-1 HDB3编解码框图HDB3编码器模块是将AMI码变换为HDB3码,通过相关的功能模块传送到HDB3解码器模块,在解码模块检测解码后的信号与AMI信号是否一致,一致则证明编解码器设计成功,否则就要重新设计。4.2 HDB3编码器的FPGA实现本次设计的基本内容就是在原始信号的基础上,利用HDB3编解码规则来实现系统所要实现的功能,由于加入了外围的模块电路,最终实现了传输信号的单双极性变换过程,HDB3编码模块如图4-2所示。图4-2 HDB3编码框图本次设计的HDB3编码器模块按照功能划分为三个组成部分:插“V”模块、插“B”模块以及极性变换模块。由于采用各个模块之间采用了频率一样的时钟上升沿信号,这就保证了各个模块工作的一致,也为仿真创造了一致的时序,设计的编码器为了清除异步信号还带有清零端口,下面分别介绍各个组成模块。4.2.1 插“V”模块建立好一个插“V”模块就是当传输信号中出现四连“0”的时候对其进行检测,从而得到其位置,把最后一个“0”替换为“V”模块中的V码,V码可以是上升沿有效的高电平,在其他原则条件下,就保证了传输信号的解码输出。为了后续工作的方便开展,我们用“11”来代表插入的信号,“01”来代表“1”,“00”来代表“0”。事实上,插“V”模块的设计并不难,我们首先检测传送到来的原始信源,如果信源中出现了0码,找出与之相邻的0码的个数,如果查到的个数不小于3个时,我们就用V码来替换原始信源。如果没有出现0码,原始信源就会继续传送,这就实现了插“V”模块的设计。在前面得设计中插“V”模块的设计用到了4位选择器,用来标出插“V”的具体位置。在程序的编译过程中,我们编写了VHDL语句来实现插“V”的编码功能。可以采用状态机的方式控制,为了简化这里使用流程来控制,将条件判断语句(if语句)嵌套在选择语句(case语句)中,这样控制来实现功能。(详细程序见附录一)当输入了一序列消息代码后,在完成插入“V”符号操作后,对比输入信息代码与插入“V”之间的关系如表4-1所示:表4-1 代码与插“V”关系表代码 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0插“V”后01 00 00 00 11 01 00 00 00 11 01 01 00 00 00 114.2.2 插“B”模块HDB3编解码时并无直流产生的原因就是信码极性的相互交替,在加入了插“V”模块后可能会对极性的交替产生影响,所以就引入了插“B”模块,插“B”模块可以很好的解决极性交替失常的问题。插“B”模块的工作原理是:当两个V码之间的非“0”符号的个数不是奇数时,就在含有非“0”数据串的第一位用“B”符号来替换,这就是插“B”模块的基本实现原理。上图中的插“B”模块最大的难点就是状态不确定因素如何解决,这里面有一个状态机的时序问题。其中还有如何确定是“1”,还是“V”的问题。解决这个难点的方法是:我们首先应把经过插“V”模块操作的信号移出寄存器的寄存地址,由于采用了一样的时钟频率,就保证了插“B”模块的顺利进行。此时再把“V”符号替换为“B”符号,本次设计采用的这两个独立模块要调用前面提到的数据库,D触发器的输出会有一个延迟,在后面的仿真图中我们可以清晰的看出来。在做好了各个独立模块之后,下面要做的就是在元件库中把各个模块连接起来,在原理图中把接口引出,定义实体作为元件库中的一个元件,然后通过VHDL语言编程下载到软件中跟原理图中的接口相连接,这样设计的元件库中的元件属于比较低的设计层次,还需要顶层原理的设计,已经设计好的子模块可以在后面的仿真中用到。VHDL语言引用的是实体元件,它可以很好地完成系统的顶层设计。在进行插“B”模块的设计之前,我们首先应该找出插“V”模块后的V码的具体位置,前面已经提到,“11”代表“V”的位置,“01”代表“1”,“00”代表“0”,双极性编码就可以准确找出V码的位置。按照这种方式,输入代码与插“B” 及插“V”后的信号关系如表4-2所示:表4-2 代码插入模块示意图代 码1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 1插“V”后01 00 00 00 11 01 00 00 00 11 01 01 00 00 00 11 01 01插“B”后01 00 00 00 11 01 00 00 00 11 01 01 10 00 00 11 01 014.2.3 极性变换模块 根据上面的码型对比图可以知道,两个相邻位置的V符号在正负号之间不断进行极性交替变换,这种编码的方式同时也保证了V码的极性和首位不是0码的极性是相同的。我们用“11”、“10”和“01”来分别代替“V”、“B”和“1”,这就是双相码标识的方法。经过进一步的分析与讨论可以知道,V码的极性应与第一位非“0”信号的极性一致,B码的极性应与第一位非“0”信号的极性相反。因为我们用“11”来代替信号“V”码,从而可以很清晰地看出信号之间的区别,只要将V码进行适度的极性变换就可以让1码和B码一块地变换极性,上述过程就是HDB3的编码过程,这就实现了单极性到双极性的变换。在QUARTUS 软件中急需解决这样一个问题,就是这个软件本身并不能自动识别“1”,因为不管是功能仿真还是时序仿真都只能识别“1”和“0”。故在本次设计中采用两相码来解决这个问题,在软件设计中加入四选一数据选择开关完成两相码的定义,我们用“00”、“01”、“11”分别取代“0”、“+1”、“1”,这样QUARTUS 软件就可以自动地识别和转换了。根据以上的设计想法首先编写好源程序,在QUARTUS 软件中生成可执行的文件,下载到目标芯片中就可以看到仿真的结果。对比发现波形的变化并不太平稳,因此在选择器的地址编码上采用数组的校验方法,这样就得到了符合设计要求的波形。4.2.4 HDB3编码器的仿真在完成了电路结构的搭建并写好VHDL程序后,下一步就是在仿真软件中进行仿真了,仿真有着严格的思路,要遵循一定的步骤,在仿真之前还应该把搭建好的电路检查一下,并且对程序进行逐一检查。按照上述思路编写好程序,然后将其生成可下载文件,下载到FPGA中,但其输出结果发现是单极性双电平信号,并不是像“+1”、“1”、“0” 这样多种电平变化的波形,事实上,采用数据选择器实现四选一功能,从而可以得到如图4-3所示符合规则的“+1”、“1”、“0”在输出端输出变化的波形。图4-3 HDB3编码器仿真波形下面是波形分析:图4-3是编码器在仿真软件中得到的仿真波形,从图中我们可以清晰地看出来,主要有4路信号波形能反应出编码的仿真,分别是输入波形、输出波形、时钟上升沿、V码波形,传输信号经过了前面编码器设计的插“V”模块和补“B”模块后,得到的一个输出波形的时序仿真图,经过对比测取波形的偏移量后发现,输出波形相比较于输入波形来说,是有一定的延迟的,经过认真的对比后发现大约有5个周期的延迟,用时钟脉冲的上升沿来保证所有模块的工作频率一致,这就为查看波形提供了极大的方便。图中DATAIN表示码元输入,CLOCK表示时钟输入,DATAOUT表示插“V”后二进制数码输出,VCNT表示插“B”后的二进制数码输出,“000”表示“0”,“010”表示“1”,“110”表示“+1”,“011”“V”表示,“111”表示“+V”,“001”表示“B”,“101”表示“+B”。4.3 HDB3解码器的FPGA实现本次设计中解码器的设计利用了各个模块的组合来实现的,因为之前设计了编码器,所以有些模块是根据了编码模块来进行的解码设计,本次设计的解码器共有4大模块,分别是整流模块、V码检测模块、时钟提取模块和扣V模块,模块与模块之间通过严谨的逻辑关系连接起来构成了这样的一个解码器,设计中还用到了两个相加电路,用于V码的计算,图4-4是HDB3解码器框图。图4-4 HDB3解码框图正如图中所示的一样,HDB3码传输过来之后经过了两个整流电路,一个是正整流电路,一个是负整流电路,这样就分别整流成了带有正负极性的信号。接下来要经过“+V”码和“V”码的检测电路,这个电路的工作原理是:当信号中没有含V码脉冲时,这时信号脉冲“1”的极性会交替变换;当出现两个含“+1”或“1”信号时,我们根据前面的插“V”原则就可以知道信号中后一个脉冲就是V脉冲。我们设置频率一致的时钟是便于提取同步时钟,扣“V”和扣“B”电路就可以在这个时钟脉冲的作用下完成最后的解码输出工作,各个模块的功能如下:a) 单/双极性变换电路经过传输的HDB3码经过单/双极性变换电路的变换后就变成了双相码,输入到电路中的信号是与设计考虑的电路的整体结构相关的,电路的整体结构设计中用到了一个电压比较模块将传输进来的两路单极性脉冲信号变为一路双极性脉冲信号,单/双极性电路中加入了正负电流的整流模块,目的是为了把整流后的正负电流分别送到正负V码的检测电路中去,方便编解码器的设计。b) 破坏点检测电路破坏点检测电路就是将正负整流电路整流得到的正负信号分别送到V码的正负两相,这样就可以用于识别V码的具体位置,信号传输至V码检测电路后会产生两种形式的脉冲,这两种脉冲分别是H+和H-,根据第三章提到的编码器的原理我们可以知道,破坏点产生的两个脉冲B+和B-,这两个脉冲在极性上是相同的,这是因为它们都是从V码的同相输出的,但是这两个脉冲的信号时却是离散的,并不连续,所以根据这一点我们可以找到准确的破坏点的位置,本次设计的模块电路是在正负V码电路检测到有整流信号的出现才有输出脉冲的。c) 扣V取代电路在经过破坏点产生的V码出现的时候,将V码前面的第三位码清零,这样就去除了破坏点信号的产生,在解码模块解码输出的时候就可以得到编码之前的信号,破坏点检测电路和扣V电路在一起完成了解码模块,首先用V码检测单元检测出V码的具体位置,然后用其去控制4位数据选择器。假若没有检测到V码信号,则就给整流信号一个时钟脉冲并且通过数据选择器;当检测到有V码信号的存在时,就将该数据选择器中的4连“0”清零。这是由于4连“0”组成的V脉冲的前三位码时“0”码,所以可以选择四位的数据选择器。应当注意的是:当V码的4连“0”清零后,数据选择器中的四位码也将清零。不论是否检测到了V码的脉冲,在本设计中都做了清零的打算,因此无需扣“B”模块了。d) 时钟提取电路根据各种码型之间的对比关系图我们可以知道,HDB3的功率谱中既有连续信号又有离散信号,在信号都为双极性的情况下,此时的两路波形一起出现的概率是等可能的,我们为了获得连续的信号就引入了一个定时的时钟脉冲,这个时钟脉冲就可以保证各解码器的各个模块能同时工作,从而获得可靠的波形,因为两路信号等可能出现的概率是一样的,这就滤去了离散码谱的产生,这就方便了输入一个定时信号。在把信号传输至定时提取电路之前要先将其转换为单极性的信号,还要用到一个滤波电路,目的是为了滤去破坏点V码,然后再进行时钟的提取。4.3.1 +V、V码的检测+V、V码的检测在解码器的设计环节起到了决定性的作用,因此下面具体介绍+V、V的检测原理。a) +V码的检测为了便于提取同步时钟信号,设计了+B信号和B信号分别从正负整流电路流出,当+B信号经过+V码检测模块时,模块的控制功能就输出B信号。检测原理是:当检测到含+B信号的时钟上升沿时,控制模块会独立计算还有+B脉冲的个数,并把个数累加到移位寄存器中,在计数的过程中,只要B信号在时钟上升沿到达之前为高电平,这时的控制模块就会自动清零并重新开始计数,等到累加器中的数值为2时,输出的信号就是含+V脉冲的信号,此后计数器又清零开始并重新计数。由于之前两个相邻的+B脉冲的之间存在一个B脉冲,这样就可以根据检测的原理知道+V码不是第二个+B脉冲,前后两个不相邻的+B信号中间没有B脉冲时才说明HDB3解码器中含有两个+B脉冲信号,并且得到的这两个脉冲的极性是相同的,于是我们判定+V码实际上是第二个+B脉冲,实现检测到+V码,这就是+V码的检测原理。b) V码的检测V码检测过程与+V码的检测过程大致相同,但也有不同之处。B信号控制+V码检测模块,而+B信号控制V码检测模块,对输入的B脉冲信号进行检测、计数和判别,若检测到V码,则HDB3解码器就输出V码信号。 4.3.2 扣V扣B模块建模编解码过程中不仅会有时钟信号和V码信号,还有经过整流后的正负脉冲信号。由于“V”模块和“B”模块中的V脉冲和B脉冲可能会整流不掉,继续存在于该整流信号中,所以在设计中建立了扣“V”和扣“B”模块。扣“V”和扣“B”模块进行如下的建模设计:首先我们用V码检测出传输信号中的V码相对于“0”码的位置,然后用V码检测来设计选择器模块。如果没有检测到V码信号,这时可以在整流电路中加入时钟过滤环节,滤去V码信号;当检测到了有V码信号的存在时,选择器模块就会被清零,从而消除了4连“0”,这是因为由4连“0”组成的含V码数据串可以通过选择器的选择,且是4位,于是我们选择4位选择器来实现。应该留意的是:当选择器清零4连“0”后,数据选择器本身的4位码也会被清零。所以说,不管是否检测到了V码的具体位置,本次设计都要求清除4连“0”,这就省去了扣“B”模块。清零有时候会不准确,因此我们引入带有上升沿的时钟周期来检测两个相邻的V码是否错位。上述建立好的模块在编解码过程中存在着三种输入信号,分别是时钟信号、V码信号和经过整流后的信号。因为B脉冲和V脉冲可能存在该整流信号中,所以要在扣V扣B模块中去除B和V脉冲。本模块进行如下的建模设计:首先检测出V码的具体位置,然后用其去控制4位数据选择器。假若没有检测到V码信号,则就给整流信号一个时钟脉冲并且通过数据选择器;当检测到有V码信号的存在时,就将该数据选择器中的4个0清零。这是由于4连0组成的V脉冲的前三位码时0码,所以可以选择四位的数据选择器。应当注意的是:当V码的4连0清零后,数据选择器中的四位码也将清零。即不论是否检测到V码的脉冲,在本设计中都做了清零的打算,因此无需扣B模块了。为了保证清零的准确性,特别加入了时钟周期用来检测两个V脉冲的位置是否重合,这就是扣V和扣B模块的工作原理。4.3.3 HDB3解码器的仿真按照上述思路编写好程序,然后将其生成可下载文件,下载到FPGA中。根据以上建立好各个子功能模块后,在Modelsim软件中进行时序仿真,得到如图4-5所示的仿真波形。图4-5 HDB3解码器仿真波形波形分析:解码器只能实现2位二进制码输出,但是不能显示极性的变化。4.4 HDB3编解码器合成及验证前面已经分别实现了编码器和解码器的设计,这里要把编码器和解码器连接起来,然后搭建好一个仿真平台后再进行软件的仿真,这样做的目的是以便更清楚地验证编解码器的正确性。如果设计是正确的,得到的输出波形和输入波形之间的关系应该是和预期设计的一样,那么输出端输出的数据除了一定的延时外和输入端输入的数据完全相同。在进行HDB3编解码器的整体合成与验证之前我们首先要做的就是编写系统顶层文件,这是基于系统的顶层设计原理图来设计程序的。在仿真软件中搭建好系统的顶层设计原理图,搭建好了之后再进行仿真与验证。图4-6是整个编解码器的RTL仿真图,编码解码模块共用一个时钟,在hdb3_coding模块中设置的输入端口data_in和clock,输出端口data_out1:0;最后将所有的端口按照要求连接起来,在编码器hdb3_coding元件的输入端接入输入信号,在解码器hdb3_decode模块的输入端应接在编码器的输出端,这样可以实现合成,解码器的输出端用于查看结果,合成的RTL视图如图4-6所示。图4-6 合成的RTL视图 在把编写的顶层设计程序输入到仿真软件中后,在波形编辑器中就能查看我们仿真的波形了,编解码器的仿真波形截图如图4-7所示。图4-7 HDB3编解码器仿真图从仿真的波形图中,可以看到当输入信号data_in的输入后,在输出端输出的信号和输入信号是一样的,但是延迟几个周期后得到编码前的信号,这就说明了本次设计的编解码器基本符合了设计的预期,达到了预期效果,从而验证了HDB3编解码器设计的成功。5. 总结和展望本课题主要研究的内容是针对FPGA芯片,选择一种合适的编码,完成信号传输过程中的编解码。鉴于HDB3码的优越特点,PCM系统各次群常采用HDB3码作为标准接口码型,本课题的主要工作是以下几个方面:a) 查阅了大量相关文献,介绍了HDB3原理及相关概要,深入引入了EDA与相关技术;b) 了解可编程逻辑器件,着重研究FPGA的结构和开发流程,获取来自不同公司的不同FPGA器件的信息,如硬件资源、封装、价格等,结合开发系统,比较FPGA器件,最终确定FPGA器件的选型;c) 设计基于FPGA可编程器件,分别做出了编码器和解码器模块的仿真,最后将编码器解码器合成完成整体系统验证。由于时间有限,设计难免有不足之处。对于在FPGA上设计控制器还可以做进一步工作:简化并完善编码器使其占用较少的资源的同时拥有较好的效果,应用到硬件系统中,实现HDB3编解码器的应用。31参考文献1 崔洲涓,胡辽林SDH中HDB3编解码电路的FPGA实现J光通信技术,20112 韩德红,孙筱萌,张显才基于FPGA的HDB3编解码器的设计与实现J空军雷达学院学报,2010,(4):274-2763 吴海涛,陈英俊,粱迎春基于FPGA的HDB3编解码器设计J微计算机信息,20084 刘速,孙伟峰,王洪君目标跟踪系统在FPGA上的实时实现J西安:西安电子科技大学学报,2012,(5):168-1735 宋燕辉,苏钢适用于RoF系统的高速串行接口的FPGA设计J光通信技术,20126 樊昌信,詹道庸,徐炳祥通信原理M北京:国防工业出版社,19987 蒋青,吕翔用可编程逻辑器件快速实现HDB3编解码J电子技术,2004,(7):21-238 范长新通信准则M北京:国防工业出版社,20029 夏雨文,胡燕翔,刁兰松verilog HDL的数字设计与集成D北京:电子工业出版社,2004,(5):41-4510 汉泽西基于FPGA的HDB3编译码J电子科技报,2007,(3):25-2611 潘松,黄继业EDA技术与VHDLM北京:清华大学出版社,2007,(9):11912 张卫刚,吴潜蛟,任卫军通信原理与通信技术M西安:西安电子科技大学出版社,200813 张巧文,朱仲杰,梁丰HDB3编译码器的优化设计与实现J西南交通大学学报,2008,(01):25-2814 朱勤为,唐宁,赵明剑利用FPGA实现HDB3编解码功能J电子设计工程,200915 蒋青,吕翊用可编程逻辑器件快速实现HDB3编码器J电子技术,2004,(7):21-2316 段吉海,黄智伟基于CPLD/FPGA的数字通信系统建模与设计M北京:电子工业出版社,2009,(8):2317 李国洪,胡辉,沈明山DEA技术实验M北京:机械工业出版社,2008,(5):39-4518 王金庭,夏春华基于FPGA的多功能计数器设计J电子测量技术,2009,(3):151-15319 孙建东使用VHDL语言设计FPGA的几个常见问题的探讨J电子设计工程,200620 叶雷,朱红编解码器的IP核设计J电子设计工程,2005,(11):19致 谢大学生活一晃四年就过去了,回首以往经历的岁月,心中感叹时间过得很快,但也很充实,当我写完这篇毕业论文的时候,有一种收获的感觉,感慨颇多。本次设计是在我的指导老师周磊老师的悉心指导下下完成的,导师深厚的专业知识、严谨的教学风范、务实的工作作风和令人敬仰
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。