基于FPGA的HDB3编译码的建模与实现_第1页
基于FPGA的HDB3编译码的建模与实现_第2页
基于FPGA的HDB3编译码的建模与实现_第3页
基于FPGA的HDB3编译码的建模与实现_第4页
基于FPGA的HDB3编译码的建模与实现_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

1、基于FPGA的HDB3编译码的建模与实现(吉首大学物理科学与信息工程学院,湖南 吉首 )摘 要 本文以FPGA为硬件平台,基于EDA工具QUARTUS为软件平台上对HDB3编/译码进行实现。由于在EDA的软件平台QUARTUS上不能处理双极性的信号,因此对HDB3码的编/译码的实现分为:软件部分和硬件部分。软件部分是基于QUARTUS的平台上对输入的码元进行编码和译码,通过系统仿真,验证了HDB3码的编译码的正确性;硬件部分采用CD74HC4052双四选一的数模选择器实现单极性到双极性的转换;采用AD790和SE5539实现双极性到单极性的转换。最后,通过仿真,验证了方案的正确性。关键词:HD

2、B3;建模;VHDL;编/译码;QUARTUSThe Modeling and Realization of the HDB3 Encoding and Decoding Based on FPGAWu Yingfa(College of Physics Science and Information Engineering,Jishou University,Jishou,Hunan )AbstractThe HDB3 encoding and decoding are realized based on taking FPGA as hardware platform and taking

3、 QUARTUS,a kind of EDA tool,as the software platform. Because QUARTUS can not deal with the bipolar of signal,the realization of HDB3s encoding/decoding function is divided into two parts: software and hardware part. In the software part: the encoding/decoding of HDB3 are realized based on QUARTUS,

4、and the simulation result that the realization is correct. In the hardware part: the CD74HC4052 are used to realize unipolar /bipolar transformation, at the same time, the AD790 and SE5539 are used to realize bipolar/unipolar transformation. At last, the efficiency of the above method is proved by t

5、he simulation results.Key words: HDB3;Modeling;VHDL;Encoding/Decoding;QUARTUS目 录第一章 绪 论1第二章 EDA辅助设计工具的介绍32.1 FPGA的介绍32.1.1 PLD的介绍32.1.2 FPGA的系统介绍32.2 VHDL语言和QUARTUS42.2.1 VHDL语言42.2.2 EDA工具QUARTUS5第三章 HDB3码编码器的建模与实现63.1 HDB3码的编码规则63.2 基于VHDL的编码器的建模及实现63.2.1 编码器的VHDL建模及难点分析73.2.2 基于VHDL编码器的实现73.3编码中单

6、/双极性转换的实现113.3.1单/双极性转换的流程图113.3.2单/双极性变换的VHDL实现113.3.3单/双极性变换的硬件实现113.4 HDB3码编码器的波形仿真及分析113.5 小结11第四章 HDB3码译码器的建模与实现114.1 HDB3码的译码规则及建模114.2 译码中双/单极性的实现114.3 基于VHDL译码器的实现114.3.1基于VHDL译码器的流程图114.3.2 HDB3码译码器的程序设计114.4 HDB3码译码器的波形仿真及分析114.5 小结11第五章 结束语11参考文献11致谢26附录一11附录二11第一章 绪 论数字基带信号的传输是数字通信系统的重要组

7、成部分之一。特别是HDB3(High Density Bipolar-3 Coding,三阶高密度双极性码)码的使用,其不但保持AMI(Alternation mark Inversion,交替反转码)码的优点外,更使连0串的个数减到至多0个的优点,而且还克服了AMI码的关于可能出现长连0串而造成提取定时信号困难的缺点。基于上述的特点HDB3码在通信传输领域应用很广泛,因此其作为CCITT推荐使用的码型之一1。本毕业设计是采用EDA工具实现HDB3码的仿真和校验,从而使系统的实现具有很大的灵活性。EDA(Electronics Design Automation,电子设计自动化)就是以大规模可

8、编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件方式设计的电子系统到硬件系统的编辑逻辑、逻辑化简、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑仿真,直至对于特定芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统2.4。 本毕业设计的主要工作是HDB3码的编译码的建模与实现,对于HDB3编译码模块,一般以硬件的方式来实现的。但它具有产品更新慢、设计灵活性差、不可重配置及现场升级性能缺乏等缺点。因此拟采用可编程逻辑电路来实现。可编程逻辑电路是EDA的一个重要技术基础,

9、主要包括FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)和CPLD(Complex Programmable Logic Devices,复杂可编程逻辑器件),它们具有丰富的可重配置逻辑资源,既包含有大量实现组合逻辑的资源;还包含有相当数量的触发器,因此采用EDA技术进行电子系统的设计有以下优点:l 系统可现场编程,在线升级;l 用软件的方式设计硬件;l 整个系统可集成在一个芯片上,体积小、功耗低、可靠性高;l 用软件方式设计的硬件系统的转换是由有关的开发软件自动完成,降低了系统设计的难度。对于HDB3编译码器的实现,本毕业设计采用硬件描述语言VHD

10、L来实现。用VHDL语言设计分别设计一个完善的HDB3码编码器和译码器。本设计是从HDB3原理出发,采用“从顶到底(TOP-DOWN)”设计方法,以EDA工具QUARTUS5.1为软件平台,输入HDB3的代码并对其进行编译、综合和仿真,经过功能测试、验证,最终实现基于FPGA的HDB3码的编码和译码功能。本文对章节的安排如下:第二章对FPGA、VHDL(Very-High-Speed Integrated Circuit Hardware Description Language,甚高速硬件描述性语言)和QUARTUS等进行简介,并选定FPGA和QUARTUS作为系统的开发环境。第三章介绍HD

11、B3码的编码原理,并基于FPGA对HDB3码编码部分进行建模及实现,通过波形仿真,校验编码模块的正确性。第四章介绍HDB3码的译码原理,并基于FPGA对HDB3码译码部分进行建模及实现,通过波形仿真,校验译码模块的正确性。第五章对全文进行总结。第二章 EDA辅助设计工具的介绍2.1 FPGA的介绍2.1.1 PLD的介绍2.4PLD(Programmable Logic Devices,可编程逻辑器件)是一种由用户编程以实现某种逻辑功能的新型逻辑器件。它诞生于20世纪70年代,在20世纪80年代以后,随着集成电路技术和计算机技术的发展而迅速发展。自问世以来,PLD经历了从PROM(Progra

12、mmable Read-Only Memory,可编程序的只读存储器)、PLA(Programmable Logic Array,可编程序逻辑阵列)、PAL(Programmable Array Logic,可编程阵列逻辑)、GAL(Generic Array Logic,通用阵列逻辑)到FPGA、ispLSI(in system programmable Large Scale Integration,在系统可编程大规模集成电路)等高密度PLD的发展过程。在此期间,PLD的集成度、速度不断提高,功能不断增强,结构趋于更合理,使用起来灵活方便。PLD的出现,打破了由中小规模通用型集成电路和大规

13、模专用集成电路;垄断的局面。与中小型规模通用型集成电路相比,用PLD实现数字系统,有集成度高、速度快、功耗小、可靠性高等优点。与大规模专用集成电路相比,用PLD实现数字系统,有研制周期短、先期投资少、无风险、修改逻辑设计方便、小批量生产成本低等优势。最早的可编程逻辑器件出现在20世纪70年代初,主要是PROM和PAL。随后出现了PAL、GAL、EPLD(Erasable Programmable Logic Devices,可擦除可编程逻辑器件)和CPLD、PFGA、ispLSI。2.1.2 FPGA的系统介绍FPGA是20世纪80年代中期,美国Altera公司推出一种现场可编程门阵列,其结构

14、主要分为三部分:可编程逻辑单元,可编程输入输出单元和可编程连线部分。FPGA器件采用逻辑单元阵列结构和静态随机存取存储器工艺,设计灵活,集成度高,可利用计算机辅助设计,绘出实现用户逻辑原理图、编辑布尔方程或用硬件描述语言等方式设计输入;然后经一系列转换程序、自动布局布线、模拟仿真的过程;最后生成配置FPGA器件的数据文件,对FPGA器件初始化。这样实现了满足用户要求的专用集成电路,真正达到了用户自行设计、自行研制和自行生产集成电路的目的。概括来说,FPGA器件具有下列优点:高密度、高效率、系列化、标准化、小型化、多功能、低功耗、低成本、设计灵活方便,可无限次反复编程,并可现场模拟调试验证。使得

15、使用FPGA器件,一般可在几天到几周内完成一个电子系统的设计和制作,可以缩短研制周期,达到快速上市和进一步降低成本要求。基于上述的优点,本毕业设计采用FPGA芯片作为平台,这样可以把整个系统下载到一块芯片之中,实现了所谓的片上系统,从而大大缩小了体积,便于工程人员的管理和屏蔽外界干扰。2.2 VHDL语言和QUARTUS2.2.1 VHDL语言2常用的硬件描述性语言有VHDL、Verilog和ABEL语言。VHDL语言起源于美国国防部的VHSIC,VHDL是一种高级描述语言,适用于行为级和RTL级的描述相对与Verilog语言和ABEL语言这些较低一级的适合描述门级电路的描述性语言而言,其具有

16、以下的优点:设计方法灵活、支持广泛 VHDL语言可以支持自顶至下(Top-Down)和基于库(Library-Based)的设计方法,而且还支持同步电路、异步电路、FPGA以及其他随机电路的设计。其范围之广是其它方法所不能比拟的。目前大多数EDA工具几乎都支持VHDL语言。这给VHDL语言进一步推广和应用创造了良好的环境。系统硬件描述能力强 VHDL语言具有多层次描述系统硬件功能的能力,可以从系统的框图直到门级电路。另外,高层次的行为描述可以与低层次的RTL描述和结构描述混合使用。其他HDL语言如UDL/I、Verilog等对系统级的功能描述能力较弱。VHDL语言描述与工艺不发生关系 在用VH

17、DL语言设计系统硬件时,没有嵌入工艺信息。采用VHDL语言的设计,当门级或门级以上层次的描述通过仿真检验以后,再用相应的工具将设计映射成不同的工艺(如MOS, CMOS等)。这样,在工艺变更时,只要改变相应的映射工具就行了。由此可见,修改电路和改变工艺之间的相关性较小。VHDL语言标准、规范,易于共享和复用 由于VHDL语言已成为一种IEEE的工业标准,这样,设计成果便于复用和交流,反过来也更进一步推动VHDL语言的推广及完善。基于上述的特点,可知VHDL语言可读性好,又能被计算机识别。VHDL语言中设计实体、程序包、设计库,为设计人员重复利用已有的设计提供了诸多技术手段。可重复利用他人的IP

18、(Intelligence Property)模块和软核(Soft Core)也是VHDL的另一特色许多设计不必每次都从头再来,只要在更高层次上把IP模块组合起来,就能达到事半功倍的效果。这样,设计人员自行开发的IP模块在集成电路设计中占有重要的地位。因此本毕业设计采用VHDL语言设计一个完善的HDB3码编、译码器。2.2.2 EDA工具QUARTUS2.5 QUARTUS软件是美国Altera公司为SOPC(System on a Programmable Chip,系统级可编程芯片) 提供最全面的设计平台。它具有比起其他的编译软件,具有以下的优点:开放的界面QUARTUS II软件可与其它

19、EDA厂家的设计输入、综合、验证工具相连接。设计人员可使用ALTERA或标准EDA设计输入工具建立电路设计,使用QUARTUSII编译器(Compiler)对ALTERA的器件进行编译,然后使用ALTERA或其他标准EDA验证工具进行验证。目前,QUARTUS II支持与Cadence、Exemplarlogic、Mentor Graphics、 Synopsys、Synplicity、Viewlogic等公司的EDA工具接口。与结构无关QUARTUS II系统的核心编译器(Compiler)支持ALTERA公司的FLEX10K,FLEX8000, FLEX6000, MAX9000, MAX

20、7000, MAX5000和Classic等可编程逻辑器件系列,提供了业界,除了MAXPLUS II以外惟一真正与结构无关的可编程逻辑设计环境。QUARTUS的编译器还提供了强大的逻辑综合与优化功能,使设计人员能比较容易地将其设计集成到可编程逻辑器件中。 多平台QUARTUS II软件可在多种PC机和工作站的操作系统中运行。完全集成化QUARTUS II的设计输入、处理、验证、器件编程等功能全部集成在统一的开发环境下,可以使用户进行动态调试,加快开发进程。 丰富的设计库QUARTUS II提供丰富的库单元供设计者使用,其中包括74系列的全部器件和多种特殊的逻辑宏功能(Macro-Functio

21、n)以及新型的参数化兆功能(Mega-Function) 。接受高级描述语言QUARTUS II接受多种硬件描述语言,包括VHDL、AHDL、C、C+等语言。良好的人机界面QUARTUS具有比MAXPLUS更加人性化的人机界面,方便工程人员的操作。基于上述的特点,本文采用QUARTUS软件对HDB3编、译码的仿真验证。第三章 HDB3码编码器的建模与实现3.1 HDB3码的编码规则 在现实的通信系统中,为了满足基带传输的要求,单极性脉冲序列必须经过适当的基带编码,以保证传输码型中无直流分量,有一定的自检能力和适应不同信源的统计特性的能力。在基带传输中,常用的码型有AMI码、HDB3码、4B/3

22、T码、CMI码、以及双相码等。其中,AMI码是将输入单极性波形的所有正脉冲变为适合于在信道传输的正负极性交替的脉冲,而HDB3码则是在AMI码基础上改进的一种双极性归零码,它除具有AMI码功率谱中无直流分量,可进行差错自检等优点外,还克服了AMI码当信息中出现连“0” 码时定时提取困难的缺点,同时HDB3码频谱能量主要集中在基波频率以下,占用频带较窄,因此被广泛用作PCM(Pulse Code Modulation,脉冲编码调制)线路传输码型,因此要了解HDB3码的编码规则,首先要知道AMI码的构成规则,AMI码就是把单极性脉冲序列中相邻的“1”码(即正脉冲)变为极性交替的正、负脉冲。将“0”

23、码保持不变,把“1”码变为+1、-1交替的脉冲。如:信息序列:AMI码:+100-1+10-10+1-1+1-10000+1HDB3码是一种AMI码的改进型,它的编码过程为:没有4个或4个连“0”串时,HDB3编码规律与AMI码相同,即“1”码变为“+1”、 “-1”交替脉冲。当代码序列中出现4个或4个以上连“0”串时,则将每4个连“0”小段即“0000”的第4个0变换成与前一非“0”符号(+1或-1)同极性的符号,用破坏符号V表示(即+1记为+V,-1记为-V)。为了使附加V符号后的序列不破坏“极性交替反转”造成的无直流特性,还必须保证相邻V符号也应极性交替。这一点,当相邻V符号之间有奇数个

24、非0符号时,则是能得到保证,当有偶数个非0符号时,则就得不到保证,这时再将该小段的第一个0变换成+B或-B,B符号的极性与前一非0符号的极性相反,并让后面的非0符号从V符号开始再交替变换2.4。3.2 基于VHDL的编码器的建模及实现3.2.1 编码器的VHDL建模及难点分析从编码规则来分析,HDB3码的编码器的设计的难点是在于如何判决是否应该添加符号“B”,因为这涉及到有现在事件的状态决定过去事件状态的问题。按照实时信号处理的理论,这是无法实现的。但是在实际的电路中,可以考虑用寄存器的方法,首先把信码寄存在寄存器里,同时设置一个计数器计算两个“V”之间“1”的个数,经过4个码元时间后,有一个

25、判偶电路来给寄存器发送是否添加符号“B”的判决信号,从而实现添加符号“B”功能。为了减少资源的消耗和电路的复杂度,在对信号进行HDB3码编码时,先依据HDB3码的编码规则进行添加破坏符号“V”然后进行添加符号“B”操作,最后才进行单极性信号变成双极性信号的转换。HDB3码的编码模型如图3.1所示。图 3.1 HDB3码编码器模型如图所示:整个HDB3码的编码器包括3个功能部分:添加破坏符号“V”、添加符号“B”和单极性码转变成双极性码,各部分之间采用同步时钟作用,并且带有一个异步的复位(清零)端口。不过,信号处理的顺序不能像编码规则那样:首先把代码串变换成为AMI码,完成添加破坏符号“V”、添

26、加符号“B”工作之后,其后的“+1”和“-1”的极性还要依据编码规则的规定变换。这样做需要大量的寄存器,同时电路结构也变得复杂。因此本设计在此处把信号处理的顺序变换一下:首先完成添加破坏符号“V”工作,接着执行添加符号“B”功能,最后实现单极性变双极性的信号输出。这样做的好处是输入进来的信号和添加破坏符号“V”、添加符号“B”功能电路中处理的信号都是单极性信号,且需要的寄存器的数目可以很少。另外,如何准备识别电路中的“1”、“V”和“B”,这也是一个难点,因为“V”和“B”符号是人为标识的符号,但在电路中最终的表示形式还是逻辑电平“1”,同时QUARTUS软件也不能像HDB3码的编码规则那样把

27、代码串变换成AMI码,这是因为QUARTUS软件不能处理带负号的信号,因此在软件中本设计还是利用双相码来表示。双相码的编码规则如下:对每个二进制代码分别利用两个不同相位的二进制代码去取代。例如:信息序列: 双相码: 1通过字节替代方法解决了识别“1”、“V”和“B”的问题。3.2.2 基于VHDL编码器的实现1. 添加破坏符号“V”的实现 添加破坏符号“V”模块的功能实际上就是对消息代码里的四个连0串的检测,即当出现四个连0串的时候,把第四个“0”变换成符号“V”(“V”可以是逻辑电平“1”),而在其他的情况下,则保持消息代码的原样输出,同时为了区别代码“1”、 “V”和“0”,在添加破坏符号

28、“V”时,用“11”标识符号“V”,用“01”标识符号“1”,用“00”标识符号“0”。因此,添加破坏符号“V”的设计思想如下:首先判断输入的代码是什么,如果输入的符号是“0”码,则接着判断这是第几个“0”码,如果是第四个“0”码,则把这个“0”码变换成“V”码。在其他的情况下,让原码照常输出。程序流程图如图3.2所示:其中: COUNT0是作为连0的计数器。 COUNT0_S是四个连“0”状态寄存器。1表示遇到四个连0,0表示未遇到四个连0的状态在本程序中用“01”标识“1”。在本程序中用“00”标识“0”。在本程序中用“11”标识“V”。图3.2 添加破坏符号“V”符号流程图根据图3.2的

29、思想,完成HDB3码编码的程序实现添加破坏符号“V”功能的程序,以下给出实现添加破坏符号“V”功能的关键代码,具体程序见附录一。ADD_V: PROCESS(CLK,CLR) -添加破坏符号V程序 BEGIN IF(CLKEVENT AND CLK=1)THEN IF(CLR=1)THEN CODEOUTV=00; COUNT0CODEOUTV=01; -01表示1 COUNT0 IF(COUNT0=3)THEN COUNT0_S=1; CODEOUTV=11; COUNT0=0; END PROCESS ADD_V; S0(0)=CODEOUTV(0); S1(0)=CODEOUTV(1);

30、此添加破坏符号“V”功能程序设计了一个计数器COUNT0,用来作为应添加破坏符号“V”符号的标志。例如在程序代码中当CODEIN=1表示输入的信号为“1”COUNT0不计数,代码输出为CODEOUTV=“01”,当CODEIN=0时表示输入的代码为“0”,此时判断COUNT0的状态,如果为“3”,则COUNT0_S=1,CODEOUTV=11,计“0”计数器COUNT0清0,即代码:COUNT0_S=1; CODEOUTV=“11”;COUNT0=0;这都是在进程PROCESS中,通过条件控制语句CASE完成添加破坏符号“V”功能。假设输入某信息序列,根据设计思想,输入代码一添加破坏符号“V”

31、后的关系如下:信息序列: 添加破坏符号V后:12.添加符号“B”的实现根据HDB3码的编码规则可知:添加破坏符号“V”模块的功能是为了保证附加“V”符号后的序列不破坏“极性交替反转”造成的无直流特性,即当相邻“V”符号之间有偶数个非0符号的时候,把后一小段的第一个“0”变换成一个非破坏符号“B”符号。如图3.3所示。其中: FIRSTV作为前面是否出现“11”即符号“V”的标志位,其中0表示前面没有出现V,1表示前面已经出现过符号V。 COUNT1作为记非0符号的奇偶数,其中0表示为偶数,1表示为奇数。 FIRST_1遇1状态寄存器,1表示前面遇到过1,0表示没有遇到过。 在本程序中用“10”

32、来标识符号“B”。 在本程序中用“01”来标识符号“1”。 在本程序中用“00”来标识符号“0”。 在本程序中用“11”来标识符号“V”。代码01VB标识符00011110图3.3 添加符号“B”符号流程图如图3.3所示可知,此添加符号“B”模块涉及到一个有现在事件的状态决定过去事件状态的问题,其次还有如何确定是“1”,还是“V”的问题,是本毕业设计所遇到的第一个难点。本程序处理难点的思路是:先把码元(经过添加破坏符号“V”处理过的)放入一个四位的移位寄存器中,在同步脉冲(时钟信号)的作用下,同时进行是否添加符号“B”的判决,等到码元从移位寄存器里出来的时候,就可以决定是应该变换成“B”符号,

33、还是照原码输出。因此,在程序的结构中进行元件声明(Component Declaration),调用库里的D触发来实现延迟作用。为了使程序的流程更加清晰,用了四个元件例化语句(Component Instantiation)DFFX:DFF PORT MAP(),来说明信号的流向。所谓元件例化就是引入一种连接关系,将预先设计好的设计实体定义为一个元件,然后利用特定的语句将此元件与当前的设计实体中的指定的端口相连接,从而为当前设计实体引入一个新的低一级的设计层次。在此程序中,当前的设计实体相当于一个较大的电路系统,所定义的例化元件相当于一个要插在这个电路系统板上的芯片,而当前设计实体中所指定的端

34、口则相当于这块电路板准备接收此芯片的一个插座。元件例化是使VHDL设计实体构成自上而下层次化设计的一种重要途径。以下给出添加符号“B”模块的部分程序,完整的程序见附录一。DS11: DFF PORT MAP(S1(0),CLK,S1(1); DS01: DFF PORT MAP(S0(0),CLK,S0(1); DS12: DFF PORT MAP(S1(1),CLK,S1(2); DS02: DFF PORT MAP(S0(1),CLK,S0(2); DS13: DFF PORT MAP(S1(2),CLK,S1(3); DS03: DFF PORT MAP(S0(2),CLK,S0(3);

35、 -调元件DFF,即D触发器 BCLK: CLKB=NOT CLK; ADD_B: PROCESS(CLKB) BEGIN IF(CLKBEVENT AND CLKB=1)THEN IF(CODEOUTV=11)THEN ELSIF(CODEOUTV=01)THEN IF(COUNT1=0)THEN FIRST_1=1; COUNT1=1; S1(4)=S1(3); S0(4)=S0(3); ELSE S1(4)=S1(3); S0(4)=S0(3); END IF; ELSE COUNT1=COUNT1; S1(4)=S1(3); S0(4)=S0(3); END IF; END IF; E

36、ND PROCESS ADD_B; CODEOUTB=S1(4)&S0(4);在此添加“B”的功能模块中,例如程序代码为:(CODEOUTV=01)THEN IF(COUNT1=0)THEN FIRST_1=1; COUNT1=1; S1(4)=S1(3); S0(4)=S0(3);表示当输入的代码CODEOUTV=01即1时,判断计“1”计数器COUNT1的状态,当为0时,即V之间的非0符号为偶数时,对遇一寄存器FIRST_1赋1,计“1”计数器COUNT1赋1,移位寄存器里的数值分别向高位移一位。3.3编码中单/双极性转换的实现3.3.1单/双极性转换的流程图根据HDB3码的编码规则,可知

37、 “V”的极性是正负交替变换的,而余下的“1”和“B”本毕业设计把其看成为一体且是正负交替变换的,同时满足“V”的极性与前面的非零码极性一致。由此本毕业设计就把“1”和“B”看成一组,而“V”单独作为一组来做正负交替变换。同时,从3.2.2节中的第2小节的代码中可知,“1”、 “V”,“B”已经分别用双相码“01”,“11”,“10”标识,所以对“1”,“V”, “B”的正负交替变换很容易实现。由此可得到程序流程图如图3.4、图3.5、图3.6所示。图3.4 单双极性变换控制的程序流程图“01”和“10”部分图3.5 单双极性变换控制的程序流程图“11”部分图3.6单双极性变换控制的程序流程图

38、-“00”部分其中在图中:以01表示+1。以11表示-1。以00表示0。3.3.2单/双极性变换的VHDL实现以下是部分实现单双极性变换控制功能的关键代码,具体程序见附录一。 IF(CLKEVENT AND CLK=1)THEN IF(CODEOUTB=01) OR (CODEOUTB=10)THEN -1/B IF(FLAGOB=0)THEN IF(FLAGOV=0)THEN CODEOUT=01; FLAGOB=1; ELSIF(FLAGOV=1)THEN CODEOUT=11; FLAGOB=2; ELSIF(FLAGOV=2)THEN CODEOUT=01; END IF; ELSIF

39、(FLAGOB=1)THEN CODEOUT=11; FLAGOB=2; ELSIF(FLAGOB=2)THEN CODEOUT=01; FLAGOB=1; -判01/10END IF; ELSIF(CODEOUTB=11)THEN IF(FLAGOV=0)THEN ELSIF(FLAGOV=1)THEN ELSIF(FLAGOV=2)THEN CODEOUT=01; FLAGOV=1; -判V -FLAGOV/FLAGOB:0表示还未遇到V/B,1表示遇到奇数个V/B,2表示遇到偶数个V/B ELSE CODEOUT=00; FLAGOB=FLAGOB; FLAGOV=FLAGOV; END

40、 IF; END IF; END PROCESS OUTPUT;END ARCHITECTURE RTL;本单/双极性的变换,由于EDA软件不能处理双极性的数值,实际上是把单相码变换成双相码后再使用硬件电路来把其转换成双极性的信号,如本单/双极性变换的模块中,使用了FLAGOV,FLAGOB两个输出控制寄存器控制HDB3码的输出,其控制的方式当FLAGOB/FLAGOV为0时表示还未遇到V/B,为1时表示遇到奇数个V/B,为2时表示遇到偶数个V/B,例如当代码为:ELSIF(CODEOUTB=11)THEN IF(FLAGOV=0)THEN IF(FLAGOB=0)THEN CODEOUT=0

41、1; FLAGOVHDB3_IN+1时输出为低电平,其余的情况输出全部为高电平,然后经过反相器输出,从而达到检测出“+1”信号的目的,图的下半部分是一个高精度整流电路,当HDB3_IN0或HDB3_IN=0时,必然使8引脚输出为低电平,从而导致D2截止D1导通,R10中的电流为0,则最终DEHDB3_OUT_H输出为0,同理,可以推出当HDB3_IN0时,DEHDB3_OUT_H输出为1,达到检测“-1”的目的,整合电路,最终得到检测“+1”和“-1”的功能。由此可知当输入“+1”输出的是01,输入“-1”时输出的是10,输入“0”时输出的是00。图4.2 译码的硬件实现部分4.3 基于VHD

42、L译码器的实现4.3.1基于VHDL译码器的流程图根据译码器的译码原理,可以得到实现译码的程序流程如图4.3所示。根据图示可以看出,HDB3码的译码器比较的简单,在其程序模块中,只有计“+1”计数器COUNT01,计“-1”计数器COUNT10和一个5位的移位寄存器所组成。4.3.2 HDB3码译码器的程序设计依据图4.3可知,译码器的程序设计的难点是在于设计一个五位的移位寄存器,本程序中的移位寄存器是采用标准逻辑量来实现的,与前面的编码器是采用D 图4.3 HDB3码译码器程序流程图触发器来实现的略有不同,现给出HDB3码译码器的部分代码,完整的代码请参见附录二。 PROCESS(CLK,CLR) BEGIN IF(CLKEVENT AND CLK=1)THEN IF(CLR=1)THEN COUNT01=0; COUNT10=0; REG0=0; REG1=0; REG2=0; REG3=0; REG4-1 END IF; ELSIF(HDB3_DATA=10)THEN -1 IF(COUNT10=1)THEN COUNT01=0; COUNT10=0; REG4=REG3; -V ELSE COUNT01=0;COUNT10=1; REG0=1; REG1=REG0; REG2=

温馨提示

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

评论

0/150

提交评论