AS001基于FPGA的HDB3编译码的建模与实现.docx

上传人:b****6 文档编号:5102695 上传时间:2022-12-13 格式:DOCX 页数:35 大小:938.50KB
下载 相关 举报
AS001基于FPGA的HDB3编译码的建模与实现.docx_第1页
第1页 / 共35页
AS001基于FPGA的HDB3编译码的建模与实现.docx_第2页
第2页 / 共35页
AS001基于FPGA的HDB3编译码的建模与实现.docx_第3页
第3页 / 共35页
AS001基于FPGA的HDB3编译码的建模与实现.docx_第4页
第4页 / 共35页
AS001基于FPGA的HDB3编译码的建模与实现.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

AS001基于FPGA的HDB3编译码的建模与实现.docx

《AS001基于FPGA的HDB3编译码的建模与实现.docx》由会员分享,可在线阅读,更多相关《AS001基于FPGA的HDB3编译码的建模与实现.docx(35页珍藏版)》请在冰豆网上搜索。

AS001基于FPGA的HDB3编译码的建模与实现.docx

AS001基于FPGA的HDB3编译码的建模与实现

基于FPGA的HDB3编译码的建模与实现

吴英发

(吉首大学物理科学与信息工程学院,湖南吉首416000)

摘要

本文以FPGA为硬件平台,基于EDA工具QUARTUSⅡ为软件平台上对HDB3编/译码进行实现。

由于在EDA的软件平台QUARTUSⅡ上不能处理双极性的信号,因此对HDB3码的编/译码的实现分为:

软件部分和硬件部分。

软件部分是基于QUARTUSⅡ的平台上对输入的码元进行编码和译码,通过系统仿真,验证了HDB3码的编译码的正确性;硬件部分采用CD74HC4052双四选一的数模选择器实现单极性到双极性的转换;采用AD790和SE5539实现双极性到单极性的转换。

最后,通过仿真,验证了方案的正确性。

关键词:

HDB3;建模;VHDL;编/译码;QUARTUSⅡ

TheModelingandRealizationoftheHDB3EncodingandDecodingBasedonFPGA

WuYingfa

(CollegeofPhysicsScienceandInformationEngineering,JishouUniversity,Jishou,Hunan416000)

Abstract

TheHDB3encodinganddecodingarerealizedbasedontakingFPGAashardwareplatformandtakingQUARTUSⅡ,akindofEDAtool,asthesoftwareplatform.BecauseQUARTUSⅡcannotdealwiththebipolarofsignal,therealizationofHDB3’sencoding/decodingfunctionisdividedintotwoparts:

softwareandhardwarepart.Inthesoftwarepart:

theencoding/decodingofHDB3arerealizedbasedonQUARTUSⅡ,andthesimulationresultthattherealizationiscorrect.Inthehardwarepart:

theCD74HC4052areusedtorealizeunipolar/bipolartransformation,atthesametime,theAD790andSE5539areusedtorealizebipolar/unipolartransformation.Atlast,theefficiencyoftheabovemethodisprovedbythesimulationresults.

Keywords:

HDB3;Modeling;VHDL;Encoding/Decoding;QUARTUSⅡ

目录

第一章绪论1

第二章EDA辅助设计工具的介绍3

2.1FPGA的介绍3

2.1.1PLD的介绍3

2.1.2FPGA的系统介绍3

2.2VHDL语言和QUARTUSⅡ4

2.2.1VHDL语言4

2.2.2EDA工具QUARTUSⅡ5

第三章HDB3码编码器的建模与实现6

3.1HDB3码的编码规则6

3.2基于VHDL的编码器的建模及实现6

3.2.1编码器的VHDL建模及难点分析7

3.2.2基于VHDL编码器的实现7

3.3编码中单/双极性转换的实现11

3.3.1单/双极性转换的流程图11

3.3.2单/双极性变换的VHDL实现11

3.3.3单/双极性变换的硬件实现11

3.4HDB3码编码器的波形仿真及分析11

3.5小结11

第四章HDB3码译码器的建模与实现11

4.1HDB3码的译码规则及建模11

4.2译码中双/单极性的实现11

4.3基于VHDL译码器的实现11

4.3.1基于VHDL译码器的流程图11

4.3.2HDB3码译码器的程序设计11

4.4HDB3码译码器的波形仿真及分析11

4.5小结11

第五章结束语11

参考文献11

致谢26

附录一11

附录二11

第一章绪论

数字基带信号的传输是数字通信系统的重要组成部分之一。

特别是HDB3(HighDensityBipolar-3Coding,三阶高密度双极性码)码的使用,其不但保持AMI(AlternationmarkInversion,交替反转码)码的优点外,更使连0串的个数减到至多0个的优点,而且还克服了AMI码的关于可能出现长连0串而造成提取定时信号困难的缺点。

基于上述的特点HDB3码在通信传输领域应用很广泛,因此其作为CCITT推荐使用的码型之一[1]。

本毕业设计是采用EDA工具实现HDB3码的仿真和校验,从而使系统的实现具有很大的灵活性。

EDA(ElectronicsDesignAutomation,电子设计自动化)就是以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件方式设计的电子系统到硬件系统的编辑逻辑、逻辑化简、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑仿真,直至对于特定芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统[2.4]。

本毕业设计的主要工作是HDB3码的编译码的建模与实现,对于HDB3编译码模块,一般以硬件的方式来实现的。

但它具有产品更新慢、设计灵活性差、不可重配置及现场升级性能缺乏等缺点。

因此拟采用可编程逻辑电路来实现。

可编程逻辑电路是EDA的一个重要技术基础,主要包括FPGA(FieldProgrammableGateArray,现场可编程逻辑门阵列)和CPLD(ComplexProgrammableLogicDevices,复杂可编程逻辑器件),它们具有丰富的可重配置逻辑资源,既包含有大量实现组合逻辑的资源;还包含有相当数量的触发器,因此采用EDA技术进行电子系统的设计有以下优点:

●系统可现场编程,在线升级;

●用软件的方式设计硬件;

●整个系统可集成在一个芯片上,体积小、功耗低、可靠性高;

●用软件方式设计的硬件系统的转换是由有关的开发软件自动完成,降低了系统设计的难度。

对于HDB3编译码器的实现,本毕业设计采用硬件描述语言VHDL来实现。

用VHDL语言设计分别设计一个完善的HDB3码编码器和译码器。

本设计是从HDB3原理出发,采用“从顶到底(TOP-DOWN)”设计方法,以EDA工具QUARTUSⅡ5.1为软件平台,输入HDB3的代码并对其进行编译、综合和仿真,经过功能测试、验证,最终实现基于FPGA的HDB3码的编码和译码功能。

本文对章节的安排如下:

第二章对FPGA、VHDL(Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage,甚高速硬件描述性语言)和QUARTUSⅡ等进行简介,并选定FPGA和QUARTUSⅡ作为系统的开发环境。

第三章介绍HDB3码的编码原理,并基于FPGA对HDB3码编码部分进行建模及实现,通过波形仿真,校验编码模块的正确性。

第四章介绍HDB3码的译码原理,并基于FPGA对HDB3码译码部分进行建模及实现,通过波形仿真,校验译码模块的正确性。

第五章对全文进行总结。

 

第二章EDA辅助设计工具的介绍

2.1FPGA的介绍

2.1.1PLD的介绍[2.4]

PLD(ProgrammableLogicDevices,可编程逻辑器件)是一种由用户编程以实现某种逻辑功能的新型逻辑器件。

它诞生于20世纪70年代,在20世纪80年代以后,随着集成电路技术和计算机技术的发展而迅速发展。

自问世以来,PLD经历了从PROM(ProgrammableRead-OnlyMemory,可编程序的只读存储器)、PLA(ProgrammableLogicArray,可编程序逻辑阵列)、PAL(ProgrammableArrayLogic,可编程阵列逻辑)、GAL(GenericArrayLogic,通用阵列逻辑)到FPGA、ispLSI(insystemprogrammableLargeScaleIntegration,在系统可编程大规模集成电路)等高密度PLD的发展过程。

在此期间,PLD的集成度、速度不断提高,功能不断增强,结构趋于更合理,使用起来灵活方便。

PLD的出现,打破了由中小规模通用型集成电路和大规模专用集成电路;垄断的局面。

与中小型规模通用型集成电路相比,用PLD实现数字系统,有集成度高、速度快、功耗小、可靠性高等优点。

与大规模专用集成电路相比,用PLD实现数字系统,有研制周期短、先期投资少、无风险、修改逻辑设计方便、小批量生产成本低等优势。

最早的可编程逻辑器件出现在20世纪70年代初,主要是PROM和PAL。

随后出现了PAL、GAL、EPLD(ErasableProgrammableLogicDevices,可擦除可编程逻辑器件)和CPLD、PFGA、ispLSI。

2.1.2FPGA的系统介绍

FPGA是20世纪80年代中期,美国Altera公司推出一种现场可编程门阵列,其结构主要分为三部分:

可编程逻辑单元,可编程输入输出单元和可编程连线部分。

FPGA器件采用逻辑单元阵列结构和静态随机存取存储器工艺,设计灵活,集成度高,可利用计算机辅助设计,绘出实现用户逻辑原理图、编辑布尔方程或用硬件描述语言等方式设计输入;然后经一系列转换程序、自动布局布线、模拟仿真的过程;最后生成配置FPGA器件的数据文件,对FPGA器件初始化。

这样实现了满足用户要求的专用集成电路,真正达到了用户自行设计、自行研制和自行生产集成电路的目的。

概括来说,FPGA器件具有下列优点:

高密度、高效率、系列化、标准化、小型化、多功能、低功耗、低成本、设计灵活方便,可无限次反复编程,并可现场模拟调试验证。

使得使用FPGA器件,一般可在几天到几周内完成一个电子系统的设计和制作,可以缩短研制周期,达到快速上市和进一步降低成本要求。

基于上述的优点,本毕业设计采用FPGA芯片作为平台,这样可以把整个系统下载到一块芯片之中,实现了所谓的片上系统,从而大大缩小了体积,便于工程人员的管理和屏蔽外界干扰。

2.2VHDL语言和QUARTUSⅡ

2.2.1VHDL语言[2]

常用的硬件描述性语言有VHDL、Verilog和ABEL语言。

VHDL语言起源于美国国防部的VHSIC,VHDL是一种高级描述语言,适用于行为级和RTL级的描述相对与Verilog语言和ABEL语言这些较低一级的适合描述门级电路的描述性语言而言,其具有以下的优点:

⒈设计方法灵活、支持广泛

VHDL语言可以支持自顶至下(Top-Down)和基于库(Library-Based)的设计方法,而且还支持同步电路、异步电路、FPGA以及其他随机电路的设计。

其范围之广是其它方法所不能比拟的。

目前大多数EDA工具几乎都支持VHDL语言。

这给VHDL语言进一步推广和应用创造了良好的环境。

⒉系统硬件描述能力强

VHDL语言具有多层次描述系统硬件功能的能力,可以从系统的框图直到门级电路。

另外,高层次的行为描述可以与低层次的RTL描述和结构描述混合使用。

其他HDL语言如UDL/I、Verilog等对系统级的功能描述能力较弱。

⒊VHDL语言描述与工艺不发生关系

在用VHDL语言设计系统硬件时,没有嵌入工艺信息。

采用VHDL语言的设计,当门级或门级以上层次的描述通过仿真检验以后,再用相应的工具将设计映射成不同的工艺(如MOS,CMOS等)。

这样,在工艺变更时,只要改变相应的映射工具就行了。

由此可见,修改电路和改变工艺之间的相关性较小。

⒋VHDL语言标准、规范,易于共享和复用

由于VHDL语言已成为一种IEEE的工业标准,这样,设计成果便于复用和交流,反过来也更进一步推动VHDL语言的推广及完善。

基于上述的特点,可知VHDL语言可读性好,又能被计算机识别。

VHDL语言中设计实体、程序包、设计库,为设计人员重复利用已有的设计提供了诸多技术手段。

可重复利用他人的IP(IntelligenceProperty)模块和软核(SoftCore)也是VHDL的另一特色许多设计不必每次都从头再来,只要在更高层次上把IP模块组合起来,就能达到事半功倍的效果。

这样,设计人员自行开发的IP模块在集成电路设计中占有重要的地位。

因此本毕业设计采用VHDL语言设计一个完善的HDB3码编、译码器。

2.2.2EDA工具QUARTUSⅡ[2.5]

QUARTUSⅡ软件是美国Altera公司为SOPC(SystemonaProgrammableChip,系统级可编程芯片)提供最全面的设计平台。

它具有比起其他的编译软件,具有以下的优点:

⒈开放的界面

QUARTUSII软件可与其它EDA厂家的设计输入、综合、验证工具相连接。

设计人员可使用ALTERA或标准EDA设计输入工具建立电路设计,使用QUARTUSII编译器(Compiler)对ALTERA的器件进行编译,然后使用ALTERA或其他标准EDA验证工具进行验证。

目前,QUARTUSII支持与Cadence、Exemplarlogic、MentorGraphics、Synopsys、Synplicity、Viewlogic等公司的EDA工具接口。

⒉与结构无关

QUARTUSII系统的核心——编译器(Compiler)支持ALTERA公司的FLEX10K,FLEX8000,FLEX6000,MAX9000,MAX7000,MAX5000和Classic等可编程逻辑器件系列,提供了业界,除了MAXPLUSII以外惟一真正与结构无关的可编程逻辑设计环境。

QUARTUSⅡ的编译器还提供了强大的逻辑综合与优化功能,使设计人员能比较容易地将其设计集成到可编程逻辑器件中。

⒊多平台

QUARTUSII软件可在多种PC机和工作站的操作系统中运行。

⒋完全集成化

QUARTUSII的设计输入、处理、验证、器件编程等功能全部集成在统一的开发环境下,可以使用户进行动态调试,加快开发进程。

⒌丰富的设计库

QUARTUSII提供丰富的库单元供设计者使用,其中包括74系列的全部器件和多种特殊的逻辑宏功能(Macro-Function)以及新型的参数——化兆功能(Mega-Function)。

⒍接受高级描述语言

QUARTUSII接受多种硬件描述语言,包括VHDL、AHDL、C、C++等语言。

⒎良好的人机界面

QUARTUSⅡ具有比MAXPLUSⅡ更加人性化的人机界面,方便工程人员的操作。

基于上述的特点,本文采用QUARTUSⅡ软件对HDB3编、译码的仿真验证。

第三章HDB3码编码器的建模与实现

3.1HDB3码的编码规则

在现实的通信系统中,为了满足基带传输的要求,单极性脉冲序列必须经过适当的基带编码,以保证传输码型中无直流分量,有一定的自检能力和适应不同信源的统计特性的能力。

在基带传输中,常用的码型有AMI码、HDB3码、4B/3T码、CMI码、以及双相码等。

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

将“0”码保持不变,把“1”码变为+1、-1交替的脉冲。

如:

信息序列:

10011010111100001

AMI码:

+100-1+10-10+1-1+1-10000+1

HDB3码是一种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符号之间有奇数个非0符号时,则是能得到保证,当有偶数个非0符号时,则就得不到保证,这时再将该小段的第一个0变换成+B或-B,B符号的极性与前一非0符号的极性相反,并让后面的非0符号从V符号开始再交替变换[2.4]。

3.2基于VHDL的编码器的建模及实现

3.2.1编码器的VHDL建模及难点分析

从编码规则来分析,HDB3码的编码器的设计的难点是在于如何判决是否应该添加符号“B”,因为这涉及到有现在事件的状态决定过去事件状态的问题。

按照实时信号处理的理论,这是无法实现的。

但是在实际的电路中,可以考虑用寄存器的方法,首先把信码寄存在寄存器里,同时设置一个计数器计算两个“V”之间“1”的个数,经过4个码元时间后,有一个判偶电路来给寄存器发送是否添加符号“B”的判决信号,从而实现添加符号“B”功能。

为了减少资源的消耗和电路的复杂度,在对信号进行HDB3码编码时,先依据HDB3码的编码规则进行添加破坏符号“V”然后进行添加符号“B”操作,最后才进行单极性信号变成双极性信号的转换。

HDB3码的编码模型如图3.1所示。

图3.1HDB3码编码器模型

如图所示:

整个HDB3码的编码器包括3个功能部分:

添加破坏符号“V”、添加符号“B”和单极性码转变成双极性码,各部分之间采用同步时钟作用,并且带有一个异步的复位(清零)端口。

不过,信号处理的顺序不能像编码规则那样:

首先把代码串变换成为AMI码,完成添加破坏符号“V”、添加符号“B”工作之后,其后的“+1”和“-1”的极性还要依据编码规则的规定变换。

这样做需要大量的寄存器,同时电路结构也变得复杂。

因此本设计在此处把信号处理的顺序变换一下:

首先完成添加破坏符号“V”工作,接着执行添加符号“B”功能,最后实现单极性变双极性的信号输出。

这样做的好处是输入进来的信号和添加破坏符号“V”、添加符号“B”功能电路中处理的信号都是单极性信号,且需要的寄存器的数目可以很少。

另外,如何准备识别电路中的“1”、“V”和“B”,这也是一个难点,因为“V”和“B”符号是人为标识的符号,但在电路中最终的表示形式还是逻辑电平“1”,同时QUARTUSⅡ软件也不能像HDB3码的编码规则那样把代码串变换成AMI码,这是因为QUARTUSⅡ软件不能处理带负号的信号,因此在软件中本设计还是利用双相码来表示。

双相码的编码规则如下:

对每个二进制代码分别利用两个不同相位的二进制代码去取代。

例如:

信息序列:

110010

双相码:

101001011001

通过字节替代方法解决了识别“1”、“V”和“B”的问题。

3.2.2基于VHDL编码器的实现

1.添加破坏符号“V”的实现

添加破坏符号“V”模块的功能实际上就是对消息代码里的四个连0串的检测,即当出现四个连0串的时候,把第四个“0”变换成符号“V”(“V”可以是逻辑电平“1”),而在其他的情况下,则保持消息代码的原样输出,同时为了区别代码“1”、“V”和“0”,在添加破坏符号“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的思想,完成HDB3码编码的程序实现添加破坏符号“V”功能的程序,以下给出实现添加破坏符号“V”功能的关键代码,具体程序见附录一。

ADD_V:

PROCESS(CLK,CLR)--添加破坏符号V程序

BEGIN

IF(CLK'EVENTANDCLK='1')THEN

IF(CLR='1')THEN

CODEOUTV<="00";

COUNT0<=0;

ELSE

CASECODEINIS

WHEN'1'=>CODEOUTV<="01";--01表示1

COUNT0<=0;

WHEN'0'=>

IF(COUNT0=3)THEN

COUNT0_S<='1';

CODEOUTV<="11";

COUNT0<=0;

………………………………

ENDPROCESSADD_V;

S0(0)<=CODEOUTV(0);

S1(0)<=CODEOUTV

(1);

此添加破坏符号“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”后的关系如下:

信息序列:

10000100001100011

添加破坏符号V后:

010*********

2.添加符号“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”来标识符号“B”。

⑤在本程序中用“01”来标识符号“1”。

⑥在本程序中用“00”来标识符号“0”。

⑦在本程序中用“11”来标识符号“V”。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 思想汇报心得体会

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1