基于CPLDFPGA的同步数字复接器建模与设计 - 图文

更新时间:2024-05-21 09:51:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

论文题目:基于CPLD/FPGA的同步数字复接器建模与设计 专业:电子信息工程

学生:解夏敏 签名: 指导教师:吴延海 签名:

摘要

随着EDA技术的快速发展,CPLD/FPGA已经广泛应用于电子设计与系统控制的各个方面。本课题利用CPLD/FPGA性能优越、使用方便的特点实现同步数字复接系统的功能。在同步复接的原理框图模型的基础上,采用超高速集成电路硬件描述语言(VHDL)完成了四路同步复接系统的设计。首先对四路同步复接器和分接器进行总体设计,将四路同步复接器分为五大模块,其中包括分频器模块、内码控制器模块、时序产生器模块、内码产生器模块、输出电路模块,将四路同步分接器分为三大模块,其中包括帧同步信号移位和时序信号恢复模块、分路器模块、串并变换电路模块。并在QuartusII集成开发环境对各个模块进行软件设计和功能仿真,然后将所有模块链接在一起完成复接器系统的设计,进行系统总体功能仿真,并将部分电路下载至FPGA芯片进行验证,获得正确的设计结果,达到了数字复接系统的设计要求。

【关键词】VHDL FPGA 复接器 分接器 【论文类型】应用型

I

Title:Synchronous Digital Multiplexer Modeling and Design Based on CPLD / FPGA

Major:Electronic and Information Engineering

Name:XieXiaMin Signature: Supervisor:WuYanHai Signature: ABSTRACT

With the rapid development of EDA technology, CPLD / FPGA has been widely used in electronic design and all aspects of system control. The subject of using CPLD / FPGA superior performance, ease of use features to achieve synchronous digital multiplexing function of the system. Synchronous multiplexing in block diagram model, based on the ultra high speed integrated circuit hardware description language (VHDL) completed a four-way synchronous multiplexing system. First of four synchronous multiplexer and demultiplexer for overall design, the four synchronous multiplexer is divided into five modules, including the divider module, the code controller module, the timing generator module, the code generator Module, the output circuit module, the four synchronous demultiplexer divided into three modules, including frame synchronization signal shift and timing signal recovery module, splitter modules, strings and transform the circuit module. QuartusII integrated development environment in various modules of the software design and functional simulation, and then complete all the modules linked together multiplexer system design, functional simulation for the overall system, and downloaded to the FPGA part of the circuit chip verification, obtain the correct Design result, Digital Multiplex System met the design requirements.

【Key words】VHDL FPGA Multiplexer Demultiplexer 【Type of Thesis】Applied

II

目录

摘要 ..................................................... I ABSTRACT .............................................. II 1绪论 ................................................... 1

1.1 课题研究背景 ................................................ 1 1.2 数字复接技术的发展 .......................................... 1 1.3 复接技术的研究现状 .......................................... 2 1.4 本文主要内容及章节安排 ...................................... 3

2 EDA技术介绍 ............................................ 4

2.1 EDA技术及其发展 ............................................ 4 2.2 EDA开发工具 ................................................ 5

2.2.1 开发环境QuartusII的介绍 .............................. 5 2.2.2 FPGA与CPLD简介 ....................................... 7 2.2.3 硬件描述语言VHDL介绍 ................................. 7

3 数字复接基本原理 ....................................... 9

3.1 数字复接的基本概念 .......................................... 9 3.2 数字复接系统的原理 .......................................... 9 3.3 数字复接的系列标准 ......................................... 10 3.4 数字复接的方法及方式 ....................................... 10

4 系统的建模与设计 ...................................... 12

4.1 四路同步复接器的原理 ....................................... 12 4.2 数字分接器原理 ............................................. 12 4.3 四路复接器VHDL建模框图 .................................... 14 4.4 四路同步分接器VHDL建模框图 ................................ 14

5 复接器各模块设计与仿真 ................................ 16

5.1 分频器模块设计 ............................................. 16

III

5.2 内码控制器与内码产生器设计 ................................. 17 5.3 时序产生器模块设计 ......................................... 19 5.4 输出电路模块设计 ........................................... 22 5.5 模块链接及总体仿真 ......................................... 24

6 程序下载验证 .......................................... 27 7 总结与展望 ............................................ 29 参考文献 ................................................ 30 致谢 .................................................... 31 附录(四路同步复接器的VHDL总程序) ..................... 32

IV

1绪论

1.1 课题研究背景

随着社会生产力的发展,各种电子新产品的开发和大规模集成电路技术发展速度越来越快。现代计算机技术和微电子技术的进一步结合和发展,使得集成电路的设计出现了两个分支。一个是传统的更高集成度的集成电路的进一步研究;另一个是利用高层次VHDL/Verilog等硬件描述语言对新型器件(CPLD/FPGA)进行专门设计,使之成为专用集成电路(ASIC),这不仅省了设计和制造的时间,而且对设计者,不必考虑集成电路制造工艺,现已成为系统级产品设计的一项新的技术。

诸如计算机应用、通信、智能仪表、医用设备、军事、民用电器等领域的现代电子设计技术已迈入一个全新的阶段,其特点是:① 电子器件及其技术的发展将更多地趋向于支持EDA(Electronic Design Automation);② 借助于硬件描述语言VHDL,硬件设计与软件设计技术得到了有机的融合;③ 电子设计技术不断走向规范化、标准化和高效率;④ 应用系统的设计已从单纯的ASIC设计走向了系统设计、单片系统SOC(System On a Chip)和SOPC(System On a Programmable Chip)的设计。专家预言,未来的电子技术时代将是EDA的时代。 现代通信技术的发展随着VHDL等设计语言的出现和ASIC的应用也进入了一个新的阶段,特别是对数字通信系统的ASCI芯片的研究有着重要的实践性意义。

采用FPGA来实现复接系统,可以通过传统的原理图输入法,或是硬件描述语言自由的设计一个数字系统。通过软件仿真,可以事先验证设计的正确性。在PCB完成以后,还可以利用PLD的在线修改能力,随时修改设计而不必改动硬件电路。使用PLD来开发数字电路,可以大大缩短设计时间,减少PCB面积,提高系统的可靠性。用户可以反复地编程、擦除、使用或者在外围电路不动的情况下用不同软件就可实现不同的功能。所以用FPGA/CPLD试制样片,能以最快的速度占领市场。由于FPGA的这些优点,己经有越来越多的通信产品是用FPGA来实现的。而且用FPGA来实现通信产品的功能有一个很大的好处就是可以将其作为一个IP核。以后设计者在设计电路时如果需要用到此功能的电路,就可以在FPGA中直接调用,而不需要再外接电路。这样可以大大减小信号的时延,并能减小电路板上的干扰,而且还有利于电路的调试。基于以上的原因,选择用FPGA来实现数字复接器是具有现实意义和市场价值的。

1.2 数字复接技术的发展

数字复接技术的应用首先是从市话中继传输开始的,当时为适应非同步支路的灵活复接,采用塞入脉冲技术将准同步的低速支路信号复接为高速数码流。开始时的传输媒

1

介是电缆,由于频带资源紧张,因此主要着眼于控制塞入抖动及节约辅助比特开销,根据国家/地区的技术历史形成了美、日、欧三种不同速率结构的准同步数字系列(PDH)

[1]

准同步复接是指参与复接的各个支路码流时钟与复接码流时钟是在一定的容差范围

内标称相等。严格地说,如果两个信号的对应生效瞬间以同一标称速率出现,而速率的任何变化都限制在规定的范围之内,则这两个信号彼此就是准同步的。例如,具有相同标称速率但不是由同一时钟源产生的两个信号通常都是准同步的。其中提到的标称比特速率及其容许的变化范围都是预先统一规定的。

准同步复接既然容许时钟频率在规定的容差域内任意变动,那么对于参与复接的支路时钟相位关系自然就没有任何限制。因此,就无须为准同步复接提供特殊的环境条件,只要时钟标称值及其容差符合规定,就可以实现准同步复接。由于准同步复接的这些特点,在某些具体应用条件下,例如在远程传输网中,特别是高次群复接,采用准同步复接技术就可以简单且经济地实现复接。PDH这种系列能很好的适应传统的点对点的通信,却无法适应动态联网的要求,也难以支持新业务的开发和现代网络管理,无法支持宽带综合业务数字网(B-ISDN)。

为适应电信网的迅速发展和满足对联网要求日益提高这一情况,基于网络运行的灵活性、可靠性、维护管理的方便性与有效性和对未来发展的适应性等方面的考虑,以及PDH的一系列的缺点,SDH这一新一代的传输体制出现了。SDH规定有效复用各种高速业务和原有低速业务的接口标准,1988年11月CCITT制定了标准。复用的特点是在网络的频率取得同步的前提下,确定基本速率155.52Mb/s(简称156Mb/s),并确定要传输的速率为156Mb/s的整数倍。

虽然PDH存在着一定的缺陷,而且采用SDH有许多优点,但从我们国家目前实际存在的中继传输网的现状和结合各本地电话网中的中继传输网的现状来看,由于目前网上现有PDH设备的规模容量较大,SDH设备完全取代PDH设备,既不现实,也无必要。目前本地电话网中的主要业务仍以电话业务为主,各种新业务尚在初期发展之中,品种不多,而且业务量也不大,即使全部采用SDH设备,也很难充分发挥其优势。我国在1995年之前,一般均采用准同步数字系列(PDH)的复用方式,1995年后,随着光纤通信网的大量使用开始引入同步数字系列的复用方式。

1.3 复接技术的研究现状

当今社会是数字化的社会,是数字集成电路广泛应用的社会。而在以往的PDH复接电路中,系统的许多部分采用的是模拟电路,因此有很大的局限性[8]。现在,数字集成电路本身在不断地进行更新换代。它由早期的电子管、晶体管、小中规模集成电路、发展到

2

超大规模集成电路(VLSIC,几万门以上)以及许多具有特定功能的专用集成电路[1]。但是,随着微电子技术的发展,设计与制造集成电路的任务己不完全由半导体厂商来独立承担。系统设计师们更愿意自己设计专用集成电路(ASIC)芯片,而且希望ASIC的设计周期尽可能短,最好是在实验室里就能设计出合适的ASIC芯片,并且立即投入实际应用之中,因而出现了现场可编程逻辑器件(PLD),其中应用最广泛的当属现场可编程门阵列(FPGA)和复杂可编程逻辑器件(CPLD)。采用可编程器件或专用IC对复接器或分接器的设计已开始向实用化方向发展。

1.4 本文主要内容及章节安排

由于数字通信的优越性,它的业务种类越来越多,不仅有电话、数据,还有电视、图像等等。数字通信的业务量也越来越大,这就推动了数字通信网的建立和发展。在数字通信中,为了扩大传输容量和提高传输效率,通常需要把若干低速的数据码流按一定格式合并成高速数据码流,以满足上述需要。数字复接是依据时分复用基本原理完成数码合并的一种技术。在数字通信网中,数字复接不仅仅是信源编码、数字传输、数字交换相并列的专门技术,而且还是网同步中的帧调整,线路集中器中的线路复用及数字交换中的时分接续等技术的基础[1]。数字复接系统由数字复接器和数字分接器组成。

本课题是基于CPLD/FPGA芯片,利用EDA技术对数字通信系统中的复接系统进行建模设计。本文首先先对数字复接的发展、研究现状、国际标准进行介绍,然后对EDA技术的QuartusII开发环境及VHDL语言的基本结构进行介绍,接着对数字复接的基本原理,包括复接器和分接器的实现原理进行详细介绍,最后详细介绍各模块的实现和最终的仿真及硬件验证,并对本次设计做总结和进一步的研究展望。

各章节的具体安排如下:

第一章绪论,简述课题的研究背景及复接技术的发展和研究现状,并阐述本文的研究内容和计划安排。

第二章介绍EDA技术的发展及开发工具。简单介绍开发环境QuartusII和开发流程,并介绍FPGA和CPLD的区别,最后介绍VHDL语言的发展、特点及基本结构。

第三章介绍数字复接的基本概念、系统原理以及数字复接的系列标准和各种复接方法。

第四章介绍复接系统中复接器和分接器的原理,并对复接器和分接器进行建模设计,完成建模框图。

第五章对复接器各个模块进行详细的设计,并进行仿真。

第六章对系统总体程序进行下载验证,并给出验证结果图,表明结果的正确性。 最后对整体设计进行总结,并对复接器系统的未来进行展望。

3

2 EDA技术介绍

2.1 EDA技术及其发展

EDA即电子设计自动化,它是近几年来迅速发展起来的将计算机软件、硬 件、微电子技术交叉运用的现代电子学科。EDA技术就是依赖功能强大的计算机,在EDA工具软件平台上,根据硬件描述语言为系统逻辑描述手段完成的设计文件,自动地完成逻辑编译,逻辑化简,逻辑分割,逻辑综合,结构综合(布局布线),以及逻辑优化和仿真测试,直至实现既定的电子线路系统功能[5]。EDA技术使得设计者的工作仅限于利用硬件描述语言和EDA软件平台来对系统硬件功能的实现,极大地提高了设计效率,缩短了设计周期,节省了设计成本。

从20世纪60年代中期开始,人们就不断开发出各种计算机辅助设计工具来帮助设计人员进行电子系统的设计。电路理论和半导体工艺水平的提高,对EDA技术的发展起了巨大的推进作用,使EDA作用范围从PCB板设计延伸到电子线路和集成电路设计,直至整个系统的设计。根据电子设计技术的发展特征,EDA技术发展大致分为三个阶段[10]。 (1)CAD阶段

这个阶段人们开始利用计算机取代手工劳动,分别研制了一些单独的软件工具,主要有印制电路板布线设计、电路模拟、逻辑模拟及版图的绘制等,从而可以利用计算机将设计人员从大量繁琐、重复的计算和绘图工作中解脱出来。 (2)CAE阶段

在这个计算机辅助工程设计阶段,在集成电路与电子系统设计方法以及设计工具集成化方面取得了许多成果。各种设计工具均已齐全。运用这种系统,按照设计方法学制定的某种设计流程,可以实现由RT级开始,从设计输入到版图输出的全程设计自动化。 (3)EDA阶段

在这个阶段,各种微电子的快速发展,为制造出规模更大、速度和信息容量更高的芯片系统提供了基础条件,同时也对EDA系统提出了更高的要求,并大大促进了EDA技术的发展。90年代以后出现了以高级语言描述、系统仿真和综合技术为特征的第三代EDA技术,它不仅极大的提高了系统的设计效率,而且使设计者摆脱了大量的辅助性工作,将精力集中于创造性的方案与概念的构思上。

总的来说,现代EDA 技术的基本特征是采用高级语言描述,具有系统级仿 真和综合能力。它主要采用并行工程和“自顶向下”的设计方法。近几年来,硬 件描述语言等设计数据格式的逐步标准化,不同设计风格和应用的要求导致各具 特色的EDA 工具被集成在同一个工作站上,从而使EDA 框架日趋标准化。

4

2.2 EDA开发工具

EDA软件开发工具是EDA技术的强有力支持。一般的EDA软件开发工具大致可以分为设计输入编辑器、仿真器、检查/分析工具、优化/综合工具、布局布线工具等六个模块。 编辑器的主要功能是用来对设计输入进行图形或文本等方面的编辑操作,它通常包括图形编辑器和文本编辑器。仿真器设计用来对设计仿真操作的一种工具,它是用来评价EDA工具的一项重要指标,其功能是用来验证设计的正确性和准确性。采用仿真可以在开发设计的早期阶段发现设计中的错误,这样便可以大大减少设计重复和修改的次数及时间,从而提高了设计者的工作效率。检查/分析工具是用来对设计者的具体设计进行编译、检查和分析,目的是发现设计中的错误和对可能的结果进行分析。优化/综合工具是用来完成优化功能和逻辑综合功能的一种开发工具。其中,优化功能是指根据布尔方程功能等效的原则,采用不同的优化方法来对设计进行优化操作,从而提高设计系统的性能和占用较少资源;逻辑综合功能是将抽象描述转化为电路网表或者是一组逻辑方程的形式,目的是方便设计系统的具体实现。布局布线工具实现由逻辑设计到物理实现的映射。最终物理实现对应的器件不同,则各自的布局布线工具也会有较大差异。 2.2.1 开发环境QuartusII的介绍

Quartus II是Altera公司在21世纪初推出的CPLD/FPGA集成开发环境,它是该公司前一代CPLD/FPGA集成开发环境MAX+PLUSII的更新换代产品。Quartus II提供了一种与结构无关的设计环境,其界面友好,使设计者能方便地进行设计输入、快速处理和器件编程。Quartus II提供了完整的多平台设计环境,能满足各种特定设计的需要,也是单芯片可编程系统(SOPC)设计的综合环境和SOPC开发的基本设计工具。Quartus II可以利用第三方的综合工具,如Leonardo Spectrum、Synplify Pro、FPGA Compiler II,并能直接调用这些工具。同样,它也具备仿真功能,同时也支持第三方的仿真工具。此外,Quartus II与MATLAB和DSP Builder结合,可以进行基于FPGA的DSP系统开发。

Quartus II包括模块化的编译器。编译器包括的功能模块有分析/综合器(AnalysiS&SynthesiS)、适配器(Fitter)、装配器(Assembler)、时序分析器(TimingAnalyzer)、设计辅助模块(Design ASSIStant)、EDA网表文件生成器(EoA Netlist writer)和编辑数据接口(Compsler Database Interfaee)等。可以通过选择Start Colnpilation来运行所有的编译器模块,也可以通过选择Start单独运行各个模块。还可以通过选择CompilerTool(Too1s菜单),在CompilerTool窗口中运行该模块来启动编译器模块。在CompilerTool窗口中,可以打开该模块的设置文件或报告文件,或打开其他相关窗口。

此外,Quartus II还包含许多十分有用的LPM(Library of Parameterized ModuleS)

5

模块,它们是复杂或高级系统构建的重要组成部分,在SOPC设计中被大量使用,也可在QuartusII普通设计文件一起使用。

Altera提供的LPM函数均基于Altera器件的结构做了优化设计。在许多实用情况中,必须使用宏功能模块才可以使用一些Altera特定器件的硬件功能。例如各类片上存储器、DSP模块、LVDS驱动器、PLL以及SERDES和DDIO电路模块等。

图2.1中所示的上排是Quartus II编译设计主控界面,它显示了Quartus II自动设计的各主要处理环节和设计流程,包括设计输入编辑、设计分析与综合、适配、编程文件汇编(装配)、时序参数提取以及编程下载几个步骤。在图2.1下排的流程框图,是与上面的Quartus II设计流程相对照的标准的EDA开发流程。

图形或HDL编辑 Analysis&Synthes 分析与综合 Filter 适配器 Assembier 编程文件汇编 编程器 时序分析器 设计输入 综合或编译 适配器件 下载 仿真

图2.1 QuartusII软件设计流程

Quartus II允许来自第三方的EDIF文件输入,并提供了很多EDA软件的接口,Quartus II支持层次化设计,可以在一个新的编辑输入环境中对使用不同输入设计方式完成的模块(元件)进行调用,从而解决了原理图与HDL混合输入设计的问题。

在设计输入之后,Quartus II的编译器将给出设计输入的错误报告。Quartus II拥有性能良好的设计错误定位器,用于确定文本或图形设计中的错误。对于使用HDL的设计,可以使用Quartus II带有的RTLViewer观察综合后的RTL图。在进行编译后,可对设计进行时序仿真。

在作仿真前,需要利用波形编辑器编辑一个波形激励文件,用于仿真验证时的激励。编译和仿真经检测无误后,便可以将下载信息通过Quartus II提供的编程器下载入目标器件中了。

6

2.2.2 FPGA与CPLD简介

FPGA采用SRAM进行功能配置,可重复编程,但系统掉电后,SRAM中的数据丢失。因此,需在FPGA外加EPROM,将配置数据写入其中,系统每次上电自动将数据引入SRAM中。CPLD器件一般采用EEPROM存储技术,可重复编程,并且系统掉电后,EEPROM中的数据不会丢失,适于数据的保密。

FPGA器件含有丰富的触发器资源,易于实现时序逻辑,如果要求实现较复杂的组合电路则需要几个CLB结合起来实现。CPLD的与或阵列结构,使其适于实现大规模的组合功能,但触发器资源相对较少。

FPGA为细粒度结构,CPLD为粗粒度结构。FPGA内部有丰富连线资源,CLB分块较小,芯片的利用率较高。CPLD的宏单元的与或阵列较大,通常不能完全被应用,且宏单元之间主要通过高速数据通道连接,其容量有限,限制了器件的灵活布线,因此CPLD利用率较FPGA器件低。

FPGA为非连续式布线,CPLD为连续式布线。FPGA器件在每次编程时实现的逻辑功能一样,但走的路线不同,因此延时不易控制,要求开发软件允许工程师对关键的路线给予限制。CPLD每次布线路径一样,CPLD的连续式互连结构利用具有同样长度的一些金属线实现逻辑单元之间的互连。连续式互连结构消除了分段式互连结构在定时上的差异,并在逻辑单元之间提供快速且具有固定延时的通路。CPLD的延时较小。 本课题所采用的就是Altera的FPGA芯片来完成设计的。 2.2.3 硬件描述语言VHDL介绍

QuartusII编译器支持的硬件描述语言有VHDL,Verilog HDL及AHDL。VHDL的英文全名是Very High Speed Integrate Circuit Hardware Description Language,诞生于1982年。1987年底,被IEEE和美国国防部确认为标准描述语言。现在,VHDL和Verilog HDL作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在 电子工程领域,已成为事实上的通用硬件描述语言。有专家认为,在新的世纪中,VHDL于Verilog语言将承担起大部分的数字系统设计任务。VHDL 语言是一种描述、模拟、综合、优化和布线的标准硬件描述语言。它能从多个层次对数字系统进行建模和描述。使得硬件设计的任务大大地简化了,并且提高了设计效率和可靠性。

VHDL 主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL 的语言形式和描述风格与句法和一般的计算机高级语言十分类似。VHDL 将一个设计实体(元件、电路、系统)分为:外部(可视部分、端口)和内部(不可视部分、内部功能、算法),这种将设计实体分成内外部分的概念是VHDL 系统设计的基本点。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体了。

7

VHDL 源程序的基本结构有以下几个: (1)实体(entity)

设计中最基本的模块就是实体了。它描述了系统与外部进行信息交换的端口 和参数,是系统外部结构的描述。 (2)结构体(architecture)

结构体用来描述实体的行为功能或内部的具体结构。一个实体可以有多个结构体。结构体还有功能描述语句,不是只有说明语句。功能描述语句结构是以并行方式工作的语句结构。该功能描述语句中可以有多个并行的子结构。每个子结构之间可看成是并行运行的,但是每个子结构内部包含的语句既可是并行语句,也可是顺序语句。总的来说,功能描述语句有五种子结构,分别为:块结构(block)、进程语句(process)、信号赋值语句、子程序调用语句和元件例化语句。 (3)块语句(block)

块语句是一个集合体,它由多个并行语句构成。它构成结构体中的一个或多 个子模块。

(4)进程(process)

进程语句是常用的功能描述语句。进程是基本的执行单元,用VHDL 语言描述时,要把所有的运算或处理都划分为单个进程或多个进程。进程标号可以标也可以不标。 (5)程序包(package)

程序包是设计中所使用的子程序和公用数据类型的集合。它包括程序包首和 程序包体。

(6)配置(configuration)

要将具体的元件安装或连接到一个实体-结构体对中可以使用配置语句。配置语句还能用于对元件的端口连接进行重新安排等。

VHDL语言具有很多其他硬件描述语言所没有的优点。它具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大简化了硬件设计任务,提高了设计效率和可靠性。它也具有与硬件电路无关和与设计平台无关的特性,并且具有良好的电路行为描述和系统描述的能力,并在语言易读性和层次化设计方面表现了强大的生命力和应用潜力。可见,VHDL必将在未来的EDA解决方案中发挥不可替代的作用。

8

3 数字复接基本原理

3.1 数字复接的基本概念

为了提高信道的利用率,使多路信号在同一条信道上传输时互相不产生干扰的方式叫做多路复用。在时分复用中,把时间划分为若干时隙,各路信号在时间上占用各自的时隙,即多路信号在不同的时间内被传送,各路信号在时域中互不重叠。在时分制的PCM通信系统中,为了扩大传输容量,提高传输效率,必须提高传输速率。也就是说想办法把较低传输速率的数据码流变换成高速码流。数字复接终端(又称复接器)就是这种把低速率码流变换成高速率码流的设备。数字复接系统由数字复接器和数字分接器两部分构成。把两个或两个以上的支路数字信号按时分复用方式合并成单一的合路数字信号的过程称为数字复接,把完成数字复接功能的设备称为数字复接器。在接收端把一路复合数字信号分离成各支路信号的过程称为数字分接,把完成这种数字分接功能的设备称为数字分接器。数字复接器和数字分接器和传输信道共同构成了数字复接系统。图3.1就为数字复接系统的方框图。

分路1 数分路2 分路3 分路4 字复接器 信道 数字分接器 分路2 分路3 分路4 分路1 图3.1数字复接系统方框图

3.2 数字复接系统的原理

将数字复接器和数字分接器合在一起用于信道传输就构成了数字复接系统。其中数字复接器是把两个或两个以上的支路(低次群),按时分复用方式合并成一个单一的高次群数字信号设备,由定时、码速调整和复接器等组成。主要的功能是缓存各分路的信号,按照一定的复接算法以及约定的格式,分别对各分路的数据进行打包,合并为一路信号后发送出去。各分路信号码率相对复接后的信号码率要低得多,并且各分路信号码率的总和应该比复接后的信号码率要低,才能保证复接器的缓冲区不溢出导致数据的丢失。

数字分接器的功能是把已合路的高次群数字信号,分解成原来的低次群数字信号,

9

它由帧同步、定时、数字分接和码速恢复等模块组成。它以复接后的信号数据作为输出,根据不同的包头,分别还原各分路信号,并把还原后的各分路信号送到对应的分路信道上。由于相对各分路信号,复接后的信号属于高速码流,在不同频域间进行数据交换,需要合适的缓冲区。为了使数据不丢失,该缓冲区的大小应该和数字复接器各分路对应的缓冲区大小相同。

3.3 数字复接的系列标准

数字复接体系是按照传输速率来分级的一系列数字复接器。在某一级上的复接,是把一定数目的具有较低一级规定传输速率的数字信号合并成为一个较高一级规定传输速率的数字信号;该较高传输速率的数子信号又能在更高一级的数字复接器中与具有相同传输速率的其他数字信号进行合并。CCITT己推荐了两类数字速率系列和复接等级,两类数字速率系列和数字复接等级分别如表3-1所示。

表3-1 CCITT推荐的传输速率系列

群号

基群 1.544 24 2.048 30

二次群 6.312 24×4=96 8.448 30×4=120

三次群 32.064 95×5=480 34.368 120×4=480

四次群 97.728 480×3=1440 139.264 480×4=1920

传输速率(Mb/s) 话路数

传输速率(Mb/s) 话路数

北美一些国家和日本采用了24路PCM通信系统,传输速率为 1.544Mb/s。欧洲和我国采用了32路PCM通信系统,基群有30个话路,传输速率为2.048Mb/S;二次群有120个话路,是由4个基群加上一些插入比特复接而成的,复接后的传输速率是8.448Mb/s;三次群有480个话路,是内4个二次群加上一些插入比特复接而成的,复接后的传输速率是34.0368Mb/s;四次群有1920个话路,是4个三次群加上一些插入比特复接而成的,复接后的传输速率是 139.264Mb/s。这样就形成了一系列的具有不同传输速率的数字复接器。

3.4 数字复接的方法及方式

数字复接的方法主要有按位复接、按字复接和按帧复接三种。

按位复接的方法也称比特复接。这种方法对每个复接支路每次只依次复接一位码。复接后的群信号中第一位表示第一支路第一位码的状态;第二位表示第二支路第一位码的状态,依此类推。按位复接方法对设备耍求简单, 存储容量小,较易实现,但要求各个支路码速和相位都相同。

按字复接对PCM基群来说,一个码字由8位码组成,代表一个样值。每个复接支路依次轮流插入8 位码组成的码字。这种方式完整保留了码字的结构,有利于多路合成

10

处理和文换。按字复接方法要求有较大的存储容量,电路较复杂。

如今许多按字复接系统中,是将8位码先储存起来,在规定的时间内各支路轮 流复接,因此有利于数字交换。

按帧复接每次轮流复接各支路的1帧(1 帧含有256 个码)。按帧复接时不破坏原来各帧的结构,有利于交换,但要求有更大容量的缓冲存储器。所以,我国目前的复接设备也多采用按位或按字复接两种方法。

数字复接的方式按照复接时各低次群的时钟情况,复接方式可分为同步复接,异步复接与准同步复接。

同步复接指被复接的各个输入支路信号在时钟上必须是同步的,即各个支路的时钟频率完全一样。

异步复接是将没有统一标称频率或相位的不同时钟源的各个支路数字信号进行复接的方式称为异步复接。在数据通信中广泛采用这种复接方式。

准同步复接是各支路信号的时钟由不同的时钟该提供, 而这些时钟源在一定的容差范围内为标称相等情况下对应的复接方式。准同步复接相对于同步复接技术来说增加了码速调整和码速恢复的环节。在复接前把各支路码速都调盛到规定的位后进行复接,但不要求速率同步和相位同步。

11

4 系统的建模与设计

本章根据课题设计要求,实现同步时钟为256KHz,每个时隙为8位,4个支路信码以同步复接方式合成一路帧长为32位的复用串行码。对整个设计进行总体分析,给出相应的设计方案。

4.1 四路同步复接器的原理

计 4.096MHz晶振 分频器1 数 器 分频器2 2/4译码器 反向器 输出 选通开关 选通开关 选通开关 选通开关 数据选择器 数据选择器 数据选择器 数据选择器 拨码器 拨码器 拨码器 拨码器

图4.1四路同步复接器原理框图

分频器1作用是4.096MHz的晶体振荡器方波信号经分频后,得到256kHz的时钟信号。数据选择器是在时钟信号的控制下选择每路信码中的某一位,其硬件功能相当于74LS151数据选择器。分频器2、译码器功能是产生四路时序信号,以控制选通开关,依次按路(每路8位)选通四路支路码,并合成一路复用串行码。计数器是由于在每个数据选择器中有8位数据需要选择,即有8中状态,因此需要8种控制信号,依次选择每路支路信码的每一位,并按位以时钟节拍送入支路选通开关,等待时序信号控制。拨码器为8位开关,往上拨,则对应那一位为高电平,往下拨则为低电平,采用它的好处是相当于提供了一个任意置数的四路数字信源,特别适合检测系统的设计结果。本文着重介绍四路同步数字复接器的实现。

4.2 数字分接器原理

数字分接器是把已合路的信号分解成原来的支路信号。本文针对前面的四路同步复

12

接器的设计对四路同步分接器做个相应的介绍。数字分接器原理框图如图4.2所示。它由要由同步单元、定时单元、恢复单元和分接单元组成。

同步单元 定时单元 合路信号 分接单元 恢复单元 分路信号

图4.2 数字分接器原理框图

同步单元的作用是从接受的信码中提取与发送单元相位一致的同步时钟信号。定时单元是利用所提取的同步时钟信号的推动,产生分接设备所需要的各个定时信号,如帧同步信号、时序信号可通过定时电路来产生。分接单元就是把合路信号进行分离,产生同步支路信号。恢复单元是把分离出来的支路信号恢复成原始的支路信号。

由于复用信号中含有利于解复用的帧头码组,在分接器中需要提取帧头标志,以便正确判定各分路码的起始位置,而实现正确的分路。位同步时钟信号也是不可少的。时序信号的恢复是通过在帧同步信号的控制下根据每路信号时隙的长度而得到的与各分路码的位置和宽度对应的信号。利用时序信号可从串行复用信号序列中,截取分路信号达到解复用的目的。

位同步时钟信号提取电路由数字锁相环来完成。数字锁相环接收来自时分复用的串行数据信号,从中提取与发端相位同步的时钟信号。帧同步信号的提取可采用连贯式插入法。帧同步信号提取应考虑到漏同步保护和防止假同步现象。

时序信号的恢复方法是将同步码用8位移位寄存器在时钟的控制下移8位,然后以移位前的帧同步码作为D触发器的时钟,以移位后的帧同步码作为D触发器的清零信号,则D触发器的输出所谓第一路时序码;再将已移8位的帧同步码移8位,即共移了16位,按照和上述同样的方法,以移8位的帧同步码作为另一个D触发器的时钟信号,而将移8位的帧同步码作为其清零信号,则第二个D触发器的输出就是第2路时序信号;然后在将已移16位的帧同步码又移8位,即移24位,将它作为第3个D触发器的清零信号,而移了16位的帧同步码作为第3个D触发器的时钟,则第3 个D触发器的输出就是第3路时序信号。上述的D触发器的清零信号和时钟信号,都是以下降沿作用,否则,得到的各时序信号将超前一个帧同步码码元宽度,在位置上就不正确了。

由于在复接过程中,将各支路码交织的插入合路序列中,因此,利用时序信号控制

13

分接的各支路信号是以帧周期被分割的,还不是原始的支路信码。为了恢复完整的原始支路信码,必须设置支路信码恢复电路。对于同步分接,只需将被分离出的支路信号的码速率降为原始支路信号的码速率即可。

4.3 四路复接器VHDL建模框图

根据图4.1的复接器原理框图,对四路同步复接器采用VHDL 源程序输入的方法,将四路支路信号合成一路信号。首先建立四路同步复接器的VHDL 建模框图,如图4.3 所示。

时钟 分频器 内码控制器 内码产生器 内码产生器 内码产生器 输 出 电 路 内码产生器 时序发生器 4.3四路复接器VHDL建模框图

从图4.3中可以看出,复接器的VHDL设计划分为5大模块,分别是:分频器、内码控制器、时序产生器、内码产生器、输出电路。其中分频器的作用是将高频率的时钟信号分频后变成低频率的信号;内码控制器的一个端口输出三位并行信号,作为内码产生器的控制端,另一端输出的信号作为时序产生器的控制端;四个内码产生器可产生四路内码,时序发生器产生四路时序信号;输出电路的作用就是使时序信号和内码相与,再按照一定的顺序接入同一个通道,这样就能完成四路数据的复接。

4.4 四路同步分接器VHDL建模框图

根据四路同步分接器的原理,主要将其分成三大模块进行设计,分别为帧同步信号移位和时序信号恢复模块、分路器模块、串并变换电路模块。此四路同步分接器的建模框图如图4.4所示。

14

帧同步信号 帧同步移位和时序信号恢复电路模块 S1 S2 S3 S4 Y0 Y2 Y3 Y1 位同步信号 串行复用信号 分 路 器 第1路串行分路码 第2路串行分路码 第3路串行分路码 第4路串行分路码 串并变换电路模块 二极管指示灯 图4.4四路分接器的功能框图

图中的Y0、Y1、Y2、Y3分别表示移0位、8位、16位和24位后的帧同步信号;S1,S2,S3,S4 表示四路时序信号,它们由帧同步移位和时序信号恢复电路模块产生。四路时序信号和位同步信号及串行复合信号送入分路器,输出四路串行分路码信号;一路帧同步信号和三路延迟的帧同步信号、位同步信号和串行复合信号一起送入串/并变换电路输出四路并行分路码信号,然后送入二极管指示器,显示帧同步码和三路分路码状态。

15

5 复接器各模块设计与仿真

5.1 分频器模块设计

分频器实际是个计数器,其作用是对由晶振电路产生的4096KHz(周期0.24ms)方波信号进行分频,输出有:16 分频输出,8 分频输出,4 分频输出,2 分频输出。其中16 分频输出端作为内码控制器的输入端。它的建模流程图如图5.1所示 。

时钟clk 开始计数 N 计数器计数 =15 Y 计数器清零 图5.1 16分频计数器流程图

根据流程图,在QuartusII开发环境对其进行实现。打开QuartusII软件先点File->New Project Wizard->Next,然后选择工程所建的地方,工程名输入count16然后点Finish。这样这个分频器的工程就建好了,接着点File->New->VHDL File->OK输入对16分频器的VHDL编程,然后点Processing->Start Compilation对程序进行综合编译,检查其对错。正确后点File->New->Other Files->Vector Waveform File->OK,在Name行下点右键选择Insert Node or Bus->Node Finder->List选择需要的输入输出,然后根据需要实现的功能对输入输出进行赋值,建立好波形图,然后进行网络表的下载,点Processing->Generate Functional Simulation Netlist完成网络表下载后点Processing->Start Simulation完成对16分频的仿真。可以得到如图5.2所示的波形图。

16

图5.2 分频器的仿真波形

图中字母A,B,C,D 分别表示分频器的16 分频输出,8 分频输出,4 分 频输出,2 分频输出。

仿真完成后,将分频器程序创建成元件图形,将光标停留在程序中点File->Create/Update->Create Symbol File for Current File生成图5.3所示的元件图形。

count16clkDCBAinst 图5.3分频器模块元件图形

5.2 内码控制器与内码产生器设计

内码控制器其实也是一个分频器,一个输出端口输出的三位并行信号作为内码产生器的地址控制端(选择输入端),另一输出端作为时序产生器的控制端,在硬件功能上相当于74LS151数据选择器。其控制功能表如表5.1 所示,其中A2A1A0 分别表示内码控制器输出的8、4、2 分频信号。

表5.1内码控制器对内码产生器的控制功能表

内码控制器输出的三位并行信号(A2A1A0) 内码产生器输出信号位(Y0Y1Y2Y3Y4Y5Y6Y7中选1) A2 0 0 0 0 1 1 1 1 A1 0 0 1 1 0 0 1 1 A0 0 1 0 1 0 1 0 1 Y Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 内码产生器可产生一路独立的八位数码,图4.3中有四个内码产生器可产生四路独立的八位数码,并且在内码控制器输出的三位并行信号的控制下输出相应

17

的数码。其建模流程图如图5.4所示。其中Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7 为八位码的输出。内码产生器循环并且依次输出从“000”、“001”、“010”

一直到“111”。这样,内码产生器每个时钟节拍就输出一位码,再通过输出电 路送到合路信道上,最后形成一路串行码流。

内码控制器输出的三位并行信号D&C&B 000 001 010 011 100 101 110 111 D0 D1 D2 D3 D4 D5 D6 D7 图5.4内码产生器流程图

根据流程图,依照分频器实现的方法对内码产生器进行编程,其中主要的8位并行

码转换成一路串行码的VHDL程序为:

library ieee;

use ieee.std_logic_1164.all;

entity mux8_0 is ---8位并行码转换成一路串行码实体名 port(D7,D6,D5,D4,D3,D2,D1,D0,D,C,B:in std_logic; y:out std_logic); end mux8_0;

architecture rtl of mux8_0 is

signal sel:std_logic_vector(2 downto 0); begin

sel<=D&C&B; with sel select

y<=D0 when \选择8位码的第一位 D1 when \ D2 when \ D3 when \ D4 when \ D5 when \

18

D6 when \

D7 when \选择8位码的第八位 '0' when others; end rtl;

综合编译完成后对其进行波形仿真,仿真结果如图5.5所示

图5.5内码产生器的仿真波形

内码产生器的输入信号有K1,K2,K3,in0_1,in0_2,in0_3,in0_4,in0_5,in0_6,in0_7,in0_8,sx0。K1,K2,K3分别对应2,4,8分频,sx0为一路时序信号,高电平持续时间为8个时钟周期(以K1的一个周期为一个时钟周期),当in0_1到in0_8为01010011时,则输出信号out0 在第一路时序信号的高电平持续时间内输出为01010011。这样就实现了8位并行码转换成一路串行码。创建的元件图形为图5.6所示

neimacsK3K2K1sx0instin0_8in0_7in0_6in0_5in0_4in0_3in0_2

out0in0_1

图5.6 内码产生器的元件图形

5.3 时序产生器模块设计

时序信号产生器是用来产生高电平持续时间为8 个时钟周期的四路时序信 号。具体实现是:将内码控制的二分频端(即128kHz 时钟输出端)通过一个32 分频器,其八分频和十六分频输出端作为2/4 译码器的控制端,2/4 译码器的四个输出端,在经过反相器后,便得出本设计所要求的时序。时序信号产生器的流程图如图5.7所示。

19

分频器的两位输出F2&F1 F2&F1=00 F2&F1=00 F2&F1=00 F2&F1=00 输出=1110 经过反相器 输出=1110 输出=1101 经过反相器 输出=1011 输出=0111 经过反相器 输出=1110

经过反相器 输出=1110 输出=1110 图5.7时序信号产生的建模流程图

根据流程图,同分频器的实现方法一样,对时序信号产生器进行编程,程序包括译码器、32分频器、非门。其中译码器的实现为:

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity yimaqi is -----译码器实体名 port(F2,F1:in std_logic; Y3,Y2,Y1,Y0:out std_logic); end yimaqi;

architecture rtl of yimaqi is

signal indata:std_logic_vector(1 downto 0); signal Y:std_logic_vector(3 downto 0); begin

indata<=F2 & F1; process(indata) begin

case indata is

when\译码 when\译码

20

when\译码 when\译码 when others=>Y<=\ end case; end process;

Y3<=Y(3); --第4路译码输出 Y2<=Y(2); --第3路译码输出 Y1<=Y(1); --第2路译码输出 Y0<=Y(0); --第1路译码输出 end rtl;

32分频的主要VHDL实现为:

entity count32 is ----32分频器实体名 port(X1:in std_logic;

E,D,C,B,A:out std_logic); end count32;

architecture rtl of count32 is

signal count_5:std_logic_vector(4 downto 0); begin

process(X1) begin

if(X1'event and X1='1') then-----X1上升沿计数 if(count_5=\计数到32时重新计数 count_5<=\ else

count_5<=count_5+1; end if; end if; end process;

A<=count_5(0);---取第1位输出 B<=count_5(1);---取第2位输出 C<=count_5(2);---取第3位输出 D<=count_5(3);---取第4位输出 E<=count_5(4);---取第5位输出

21

end rtl;

综合编译完成后对其进行波形仿真,仿真结果如图5.8所示。

图5.8时序信号产生的波形仿真

时序信号产生器的输入信号只有B,其对应为总程序中的clk,输出S0、S1、S2、S3为四路高电平持续时间为8个时钟周期的时序信号,四路时序信号依次输出。创建的元件图形为图5.9所示

shixusuccessfulBS3S2S1S0inst 图5.9时序信号产生的元件图形

5.4 输出电路模块设计

在时序信号产生器产生的四路时序信号的控制下(时序与内码相与),按顺序将四路信号接入同一信道,形成了一路串行码,从而完成了四路数据码的复接。实现的关键是三态与门的利用,就是当时序信号的上升沿到来,并且在高电平持续时间内,相应的八位码以Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7 的顺序依次输出,而在其他情况下,则以高阻的形态出现,当经过一个时序周期(即32码元)后,就输出了一帧串行码,从而实现了四路数据的同步复接。三态门的建模流程图如图5.10所示。但对于三态门电路的接口匹配比较严,不能用三态门驱动其他的TTL门电路。为了既能实现三态门功能,又能便于驱动后续电路,对三态门VHDL程序做了修改,即将三态‘Z’改为‘1’,再在后面加上一个四与门,则可将四路分路信号合成一路信号,为了消除在仿真波形中可能出现毛刺,所以将合路信号经过D触发器后,就能消除毛刺。顺便在此添加了复接器的启停控制信号。

22

控制端en en=1 N 输出高阻 图5.10 三态门的建模流程图

Y 输出输入信号 根据流程图写出三态门的VHDL程序为:

library ieee;

use ieee.std_logic_1164.all;

entity tri_gate0 is ---三态门实体名 port(din0,en:in std_logic; dout0:out std_logic); end tri_gate0;

architecture zas of tri_gate0 is begin

dout0<=din0 when en='1' else '1'; end zas;

输出电路中四与门的VHDL实现为:

library ieee;

use ieee.std_logic_1164.all; entity andmen is ---四与门实体名 port(in1,in2,in3,in4:in std_logic; outp:out std_logic); end andmen;

architecture one of andmen is begin

outp<=in1 and in2 and in3 and in4; ----\与\运算 end one;

综合编译完成后对三态门进行波形仿真,仿真结果如图5.11所示。

23

图5.11三态门的波形仿真图

三态门的的输入信号有en,din0,输出信号有dout0,其中en为一路时序信号,din0为一路内码,dout0为一路输出数码流。实现规则为:当en=1 时,则dout0=din0。否则输出就以高阻的形态出现。三态门与四与门创建的元件图形如图5.12所示。

tri_gate0din0endout0andmenin1in2in3in4outpinst inst1 图5.12 三态门与四与门的元件图形

5.5 模块链接及总体仿真

根据同步复接器的系统划分,建模流程图,将各个模块的VHDL源程序链接起来,将时钟信号clk即4.096MHz的晶体振荡频率输入时序信号产生器模块,将产生的四路时序分别输入四个内码产生器模块,同时也将四路时序信号分别输入四个门模块产生四路输出时序。将clk输入分频器产生内码控制器的三路控制信号K1,K2,K3来控制内码产生器。最后将内码产生器产生的四路信号通过四与门产生一路信号,完成复接器的总程序。并可以得到同步复接器的顶层设计图,如图5.13所示。

24

图5.13 同步复接器的顶层设计图

综合编译完成后对同步复接器总程序进行波形仿真,仿真结果如图5.14所示

图5.14 同步复接器的仿真波形

同步复接器的输入信号有ena,clk,a0~a7, b0~b7 ,c0~c7, d0~d7,输出信号有四路时序信号S0~S3和一路串行复用输出信号fujiout。其中ena为使能信号,其高电平时有效,clk为时钟信号,a0~a7为01110010, b0~b7为11100100 ,c0~c7为10101010, d0~d7为11001100,则通过同步复接器后输出的一帧复用信号序列为

25

01110010111001001010101011001100。从复接器的仿真波形图中可以看出s0,s1,s2,s3 分别表示四路不同相位的时序信号,每路时序信号的高电平持续时间为8 个时钟周期。四路分路码在时间上分别对应四路时序信号的高电平持续时间。从图中可以看到复接器的建模和VHDL程序设计是正确的。

同步复接器的创建的元件图形如图5.15所示。

s0s1s2a0s3a1fujieqiallenaclka2fujiouta3a4a5a6a7b0b1b2b3b4b5b6b7d0d1d2d3d4d5d6d7c0c1c2c3c4c5c6c7inst 图5.15 复接器的元件图形

26

6 程序下载验证

复接器的建模仿真完成后,根据所选下载板的结构,对所建的工程进行引脚分配,在EDA实验箱上将复接器的总程序下载到Altera公司的EPF10K10LC84-4。但如果将四路信号全部用拨码开关实现,就存在一个问题,四路八位的信号需要32个拨码开关,但实验箱上只有16个。这时就需要考虑如何实现它的下载,首先将各个模块分别建成的工程下载到实验板上,也只是部分电路可以下载,并且可以通过示波器观察它的波形,验证发现符合设计要求。其次,通过修改程序,将复接器的两路信号通过程序内部输入,另为两路从实验箱上输入来验证正确性。发现其符合要求。输出信号fujiout通过实验箱FPGA下载板的51脚输出,然后通过示波器观察其波形。输出波形为图6.1所示。

图6.1 示波器所示的fujiout输出

四路时序信号,因为同时产生四路信号,不能同时通过示波器观察,所以将2,3,4路信号分别与第1路对比观察其对错,来验证程序的对错。图6.2为几路信号的对比图。从图6.2中的(a)图可以看出第二路时序与第一路时序相差8位码的时序,图(b)可以看出相差16位码的时序,图(c)可以看出相差24位码的时序,由此可以看出符合四路时序的要求,说明设计正确。

27

s0与s1的对比图 (b)时序s0与s2的对比图

时(a) 时序

(c)时序s0与s3的对比图

图6.2四路时序的输出对比图

在复接器的实现过程中有个非常重要的问题是时序必须同步,系统中的每个模块都依据时钟信号,来保证其同步。程序中每路时序的高电平持续时间必须刚好是8个时钟周期,不然会将本路的信号重复载入。还有其中三态门的要求比较严格,需要注意它电路的接口匹配问题。最后由于用到组合逻辑门电路,在仿真时会出现毛刺,需要消除毛刺。

28

7 总结与展望

本次毕业设计总共历时3个月,包括课题认识,相关内容的学习到程序编写最后完成论文的撰写。本论文先对数字复接技术,EDA技术的基本内容和发展状况进行概述,并说明它们在数字通信的应用及带来便利。从而引出复接器和分接器,根据复接器和分接器的原理,对复接器和分接器提出设计思路,本设计主要介绍复接器的建模设计。用VHDL实现复接器的设计,其主要过程为先对复接器进行总体设计,将其分为5个模块,然后用VHDL语言来对每个模块进行描述。设计全以QuartusII作为开发工具,完成四路同步复接器和分接器的各个模块的编译和仿真。最后将程序下载到EDA实验箱的FPGA芯片来验证其的对错。在设计过程中经常会由于自己的粗心大意将程序编错,就要通过很长时间来检查程序,不断的验证。下载到FPGA芯片后验证也存在着一些问题,用示波器观察到的波形不太稳定,但不太影响结果,可以说明系统的设计是正确的。

对于复接系统可以将它的性能进行改进,提供一个便于扩展的。那时只需修改FPGA 中相应控制参数,就可以实现高次群的复接与分接。这样它就可以应用于信号传输电路,对数字信号,或经PCM 编码调制后的语音信号进行处理,可提高信道的利用率和传输质量,也可以进行光电转换后用于光纤通信或大气激光通信中。

在本次毕业设计中,从对系统的认识到功能的实现,有过痛苦失败的经历,面对一个问题,你总是很难解决,但也有过心情愉悦的时候,会因为一个问题总在不经意的时候会突然被自己解决。但这个过程也使我自己发现了自己很多问题,首先是自己解决问题的思路比较模糊,对系统的整体把握不到位;其次是自己平时积累的知识太少,最后是自己平时动手的机会太少,缺少设计电路的基本经验。通过这次毕业设计不但锻炼了我的自觉性,自己会主动去完成自己每天的任务,而且提高了自己处理各种问题的方法和思路,使思路更加清晰易懂,也加强了对理论知识的学习和理解。总之,这次毕业设计让我受益匪浅。

29

参考文献

[1] 段吉海,黄志伟.基于CPLD/FPGA的数字通信系统建模与设计[M].北京:电子工业出版社,2004:110-128

[2] 孙 玉.数字复接技术[M].北京:人民邮电出版社,1991:203-209

[3] [巴西]Volnei A.Pedroni.VHDL数字电路设计教程[M].北京:电子工业出版社,2005. [4] 江国强.EDA技术与应用(第三版)[M].北京:电子工业出版社,2010. [5] 朱正伟.EDA技术及应用[M].北京:清华大学出版社,2005. [6] 金玮.基于FPGA 的字同步数字复接电路的设计与实现[J].计算机与网络

[7] 王志,石江宏, 周剑扬,陈辉煌.同步数字复接的设计及其FPGA实现[J].电子技术应用,2005.04

[8] 王瀚最,曾烈光.全数字化PDH复接系统的设计.电信科学.1998,4.

[9] 曲昱,曹辉,段鹏. 基于FPGA的帧同步数字复接系统设计[J]. 信息安全与通信保密,2007.3

[10] 孟庆辉,刘辉,程继航,石静苑.EDA技术实用教程[M].国防工业出版社

[11] Bruce Carlson A,Paul B Crilly,Janet C Rutledge. Communication Systems [M]. Beijing: Higher Education Press,2002.

[12] AdriDobroiu, Chiko Otanani. Terahertz-wave sources and imaging

applications[J ]. Institute of physics publish ing,M eas Sci Techno l,2006, 17: 161~ 174.

[13] Designand application of ATM-SDH muhiplex demuhipl exASIC. Communication Technology Proceedings [C].1998.

30

致谢

在此毕业设计(论文)完成之际,谨向我的指导教师吴延海致以衷心的感谢。感谢老师在我毕业设计期间给予的悉心指导、热诚帮助和大力支持。导师严谨的治学态度和渊博的学识使我受益匪浅。

对我的两位同学高列华、刘赏表示特别感谢,在四年的大学学习生活中,她们在很多方面给予我很大的帮助和宝贵的支持。另外,对毕业设计期间在同一组共同学习、工作同学深表感谢,感谢大家与我一起度过三个月快乐的毕业设计生活。

最后,我谨向所有关心和帮助过我的老师、同学、领导、同事和家人致以真诚的谢意。在未来的日子里我会用自己取得的成果来回报你们。

31

附录(四路同步复接器的VHDL总程序)

----------------------------------------------------链接总程序 library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;

entity fujieqiall is ----复接器实体名 port(clk,ena:in std_logic;

a0,a1,a2,a3,a4,a5,a6,a7:in std_logic; b0,b1,b2,b3,b4,b5,b6,b7:in std_logic; c0,c1,c2,c3,c4,c5,c6,c7:in std_logic; d0,d1,d2,d3,d4,d5,d6,d7:in std_logic;

s0,s1,s2,s3,fujiout:out std_logic);----端口设置 end fujieqiall;

architecture fujieqi of fujieqiall is component count16 ----调用计数器 port(clk:in std_logic;

D,C,B,A:out std_logic); end component;

component neimacs ----调用内码产生器 port(in0_8,in0_7,in0_6,in0_5,in0_4, in0_3,in0_2,in0_1:in std_logic; K3,K2,K1,sx0:in std_logic; out0:out std_logic); end component;

component shixusuccessful ----调用时序发生 port(B:in std_logic;

S3,S2,S1,S0:out std_logic); end component;

component men ----调用门器件 port(in1:in std_logic; out1:out std_logic); end component;

component andmen ----调用四与门 port(in1,in2,in3,in4:in std_logic; outp:out std_logic); end component;

component djhlatch ----调用D触发器 port(d,ena:in std_logic; q1:out std_logic);

32

end component;

signal w1,w2,w3,w4,w5,w6,w7,w8,w9,w10,w11,w12,

w13,w14,w15,w16:std_logic; ---信号赋值语句 begin

m1:neimacs port map(in0_1=>a0,in0_2=>a1,in0_3=>a2,in0_4=>a3, in0_5=>a4,in0_6=>a5,in0_7=>a6,in0_8=>a7, K3=>w3,K2=>w2,K1=>w1,sx0=>w4,out0=>w15); m2:neimacs port map(in0_1=>b0,in0_2=>b1,in0_3=>b2, in0_4=>b3, in0_5=>b4,in0_6=>b5, in0_7=>b6, in0_8=>b7, K3=>w3,K2=>w2,K1=>w1,sx0=>w5,out0=>w14); m3:neimacs port map(in0_1=>c0,in0_2=>c1,in0_3=>c2, in0_4=>c3, in0_5=>c4,in0_6=>c5, in0_7=>c6, in0_8=>c7, K3=>w3,K2=>w2,K1=>w1,sx0=>w6,out0=>w13); m4:neimacs port map(in0_1=>d0,in0_2=>d1,in0_3=>d2, in0_4=>d3, in0_5=>d4,in0_6=>d5, in0_7=>d6, in0_8=>d7, K3=>w3,K2=>w2,K1=>w1,sx0=>w7,out0=>w12); m5:shixusuccessful port map(b=>clk,S3=>w7,S2=>w6,S1=>w5,S0=>w4); m6:count16 port map(clk=>clk,D=>w1,C=>w2,B=>w3); m7:men port map(in1=>w7,out1=>s3); m8:men port map(in1=>w6,out1=>s2); m9:men port map(in1=>w5,out1=>s1); m10:men port map(in1=>w4,out1=>s0);

m11:andmen port map(in1=>w12,in2=>w13,in3=>w14,in4=>w15,outp=>w16); m12:djhlatch port map(d=>w16,ena=>ena,q1=>fujiout); end fujieqi;

----------------------------------------------------内码产生器程序 library ieee;

use ieee.std_logic_1164.all; entity neimacs is

port(in0_8,in0_7,in0_6,in0_5,in0_4,in0_3,

in0_2,in0_1:in std_logic;---8位并行码

K3,K2,K1,sx0:in std_logic; ---3路内码控制、1路时序信号输入 out0:out std_logic); end entity neimacs;

architecture nm0 of neimacs is component mux8_0

port(D7,D6,D5,D4,D3,D2,D1,D0,D,C,B:in std_logic; y:out std_logic); end component;

component tri_gate0

port(din0,en:in std_logic;

33

dout0:out std_logic); end component;

signal l0:std_logic; ---信号赋值语句 begin

u1:mux8_0 port map(D7=>in0_8,D6=>in0_7,D5=>in0_6,D4=>in0_5,

D3=>in0_4,D2=>in0_3,D1=>in0_2,D0=>in0_1,D=>K3,C=>K2,B=>K1,Y=>l0); u2:tri_gate0 port map(din0=>l0,en=>sx0,dout0=>out0); end architecture nm0;

------------------------------ library ieee;

use ieee.std_logic_1164.all; entity mux8_0 is

port(D7,D6,D5,D4,D3,D2,D1,D0,D,C,B:in std_logic; y:out std_logic); end mux8_0;

architecture rtl of mux8_0 is

signal sel:std_logic_vector(2 downto 0); begin

sel<=D&C&B; with sel select y<=D0 when \ D1 when \ D2 when \ D3 when \ D4 when \ D5 when \ D6 when \ D7 when \ '0' when others; end rtl;

--------------------------- library ieee;

use ieee.std_logic_1164.all;

entity tri_gate0 is ---三态门实体名 port(din0,en:in std_logic; dout0:out std_logic); end tri_gate0;

architecture zas of tri_gate0 is begin

dout0<=din0 when en='1' else '1';

34

end zas;

--------------------------------------------------时序产生器程序 library ieee;

use ieee.std_logic_1164.all;

entity shixusuccessful is ----时序产生器实体名 port(B:in std_logic;---输入B为时钟信号

S3,S2,S1,S0:out std_logic);---输出四路时序信号 end entity shixusuccessful;

architecture sx1 of shixusuccessful is

component count32 ----调用元件count32计数器 port(X1:in std_logic;

E,D,C,B,A:out std_logic); end component;

component yimaqi -----调用元件译码器 port(F2,F1:in std_logic;

Y3,Y2,Y1,Y0:out std_logic); end component;

component nand0_1 ----调用元件nand0_1 port(X2:in std_logic;

out2:out std_logic); end component;

signal in1,in2,in3,in4,in5,in6,in7:std_logic; begin

u1:nand0_1 port map(X2=>B,out2=>in1);

u2:count32 port map(X1=>in1,D=>in2,E=>in3);

u3:yimaqi port map(F1=>in2,F2=>in3,

Y0=>in4,Y1=>in5,Y2=>in6,Y3=>in7);

u4:nand0_1 port map(X2=>in4,out2=>S0); u5:nand0_1 port map(X2=>in5,out2=>S1); u6:nand0_1 port map(X2=>in6,out2=>S2); u7:nand0_1 port map(X2=>in7,out2=>S3); end architecture sx1;

--------------------------- library ieee;

use ieee.std_logic_1164.all; entity nand0_1 is----非门 port(X2:in std_logic;

out2:out std_logic); end nand0_1;

architecture nand_0 of nand0_1 is begin

35

out2<=not X2; end nand_0;

------------------------------ library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;

entity count32 is --------------32分频器 port(X1:in std_logic;

E,D,C,B,A:out std_logic); end count32;

architecture rtl of count32 is

signal count_5:std_logic_vector(4 downto 0); begin

process(X1) begin

if(X1'event and X1='1') then if(count_5=\ count_5<=\ else

count_5<=count_5+1; end if; end if; end process;

A<=count_5(0);---取第1位输出 B<=count_5(1);---取第2位输出 C<=count_5(2);---取第3位输出 D<=count_5(3);---取第4位输出 E<=count_5(4);---取第5位输出 end rtl;

---------------------------- library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity yimaqi is----译码器 port(F2,F1:in std_logic;

Y3,Y2,Y1,Y0:out std_logic); end yimaqi;

architecture rtl of yimaqi is

signal indata:std_logic_vector(1 downto 0); signal Y:std_logic_vector(3 downto 0); begin

36

本文来源:https://www.bwwdw.com/article/gsf7.html

Top