基于FPGA的HDB3码的编译码建模与设计.docx
《基于FPGA的HDB3码的编译码建模与设计.docx》由会员分享,可在线阅读,更多相关《基于FPGA的HDB3码的编译码建模与设计.docx(19页珍藏版)》请在冰豆网上搜索。
![基于FPGA的HDB3码的编译码建模与设计.docx](https://file1.bdocx.com/fileroot1/2023-1/6/55b89566-023f-4a12-a3a9-0f6d43eaec56/55b89566-023f-4a12-a3a9-0f6d43eaec561.gif)
基于FPGA的HDB3码的编译码建模与设计
课程设计成果说明书
题目:
基于FPGA的HDB3码的编译码建模与设计
学生姓名:
叶荣欣
学号:
学院:
东海科学技术学院
班级:
指导教师:
浙江海洋学院教务处
2014年5月26日
浙江海洋学院《课程设计成果说明书》规范要求
课程设计说明书是课程设计主要成果之一,一般在2000~3000字。
1.说明书基本格式
版面要求:
打印时正文采用5号宋体,A4纸,页边距上、下、左、右均为2cm,行间距采用固定值20磅,页码底部居中。
文中标题采用4号宋体加粗。
2.说明书结构及要求
(1)封面
(2)课程设计成绩评定表
(3)任务书(指导教师下发)
(4)摘要
摘要要求对内容进行简短的陈述,一般不超过300字。
关键词应为反映主题内容的学术词汇,一般为3-5个,且应在摘要中出现。
(5)目录
要求层次清晰,给出标题及页次。
最后一项为参考文献。
(6)正文
正文应按照目录所确定的顺序依次撰写,要求论述清楚、简练、通顺,插图清晰整洁。
文中图、表及公式应规范地绘制和书写。
(7)参考文献
浙江海洋学院课程设计成绩评定表
2013—2014学年第2学期
学院东海科学技术学院班级C11电信专业电子信息工程
学生姓名(学号)
王来有
课程设计名称
基于FPGA的HDB3码的编译码建模与设计
题目
基于FPGA的HDB3码的编译码建模与设计
指导教师评语
指导教师签名:
年月日
答辩评语及成绩
答辩小组教师签名:
年月日
浙江海洋学院课程设计任务书
2013—2014学年第2学期
学院东海科学技术学院班级C11电信专业电子信息工程
学生姓名(学号)
王来有
课程
名称
基于FPGA的HDB3码的编译码建模与设计
设计
题目
基于FPGA的HDB3码的编译码建模与设计
完成
期限
自2014年5月26日至2014年6月6日共2周
设
计
依
据
本次设计所需知识
1.HDB3码的编码、译码原理
2.HDB3码编码器、译码器的VHDL编程思路和方法
3.设计工具MUX+PLUSII的使用
4.设计工具QuartusII的操作和使用
设
计
要
求
及
主
要
内
容
1.熟悉通信原理中有关常用码型的知识
2.完成设计工具MUX+PLUSII2和QuartusI9.0的安装
3.参考HDB3码编码器和译码器程序做时序仿真,并比较两种仿真结果的时延
4.采用其他方式对HDB3码编码器、译码器进行建模,并进行功能仿真,绘出仿真波形图
5.连接EDA/SOPC实验开发系统,并完成芯片选择、引脚锁定
6.最终实现编程下载到器件,并进行综合测试。
7.完成课程设计说明书的撰写。
撰写格式要求按照《船舶与海洋工程学院毕业设计文本规范》。
参
考
资
料
[1]汉泽西.基于FPGA的HDB3编译码[J].电子科技报,2007,5(3):
25~26.
[2]蒋青,吕翊.一种基于FPGA技术的HDB3译码器的设计[J].微电子学报,2007,37
(2):
33~34.
[3]敖天勇,侯卫周,杨毅,郭立俊.基于CPLD的HDB3码编译码器设计[J].山西电子技术报,2007,3
(2):
21~22.
[4]解武,杨蕊,邵欣.基于FPGA的HDB3编码一种简单实现[J].应用科技,2007,34(5):
11~12.
[5]KenMartin[J].DigitalIntegratedCircuitDesign.PublishingHouseofElectronicIndustry,2002,4556.
指导教
师签字
日期
摘要
本实验以FPGA为硬件平台,基于EDA工具QUARTUSⅡ为软件平台上对HDB3编、译码进行实现。
由于在EDA的软件平台QUARTUSⅡ上不能处理双极性的信号,因此对HDB3码的编、译码的实现分为:
软件部分和硬件部分。
其中软件部分是基于QUARTUSⅡ的平台上对输入的码元进行编码和译码,通过系统仿真,验证了HDB3码的编译码的正确性。
关键字:
QUARTUSⅡHDB3编、译码
目录
前言1
第1章绪论2
第2章工具介绍3
第3章HDB3码编码器的建模与实现5
3.1HDB3码的编码规则5
3.2基于VHDL的编码器的建模及实现5
3.2.1插‘V’模块的实现6
3.2.2插‘B’模块的实现7
3.3编码中单/双极性转换的实现8
3.4HDB3码的编码器仿真波形9
第4章HDB3码译码器的建模与实现11
4.1HDB3码的译码规则及建模11
4.2译码中双/单极性的实现11
4.3HDB3译码器的部分程序:
11
4.4HDB3码译码器的波形仿真13
第5章总结14
[参考文献]15
前言
FPGA具有编程灵活的特点,能够在不大改动系统平台的情况下具有改变系统特性和行为的灵活性,因而能够完成对实时信号的处理;同时FPGA作为一种新兴的高密度可编程逻辑器件,可以将编码与解码电路集成在一片FPGA芯片上,它的体积小,其结果大大提高了系统的集成度。
HDB3码的具有其译码规则简单,便于时钟的提取,无直流分量,实现的电路也远比采用曼彻斯特编码方式简单等优点。
第1章绪论
数字基带信号的传输是数字通信系统的重要组成部分之一。
特别是HDB3(HighDensityBipolar-3Coding,三阶高密度双极性码)码的使用,其不但保持AMI(AlternationmarkInversion,交替反转码)码的优点外,更使连0串的个数减到至多0个的优点,而且还克服了AMI码的关于可能出现长连0串而造成提取定时信号困难的缺点。
基于上述的特点HDB3码在通信传输领域应用很广泛,因此其作为CCITT推荐使用的码型之一。
本实验设计是采用EDA工具实现HDB3码的仿真和校验,从而使系统的实现具有很大的灵活性。
EDA(ElectronicsDesignAutomation,电子设计自动化)就是以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件方式设计的电子系统到硬件系统的编辑逻辑、逻辑化简、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑仿真,直至对于特定芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统。
本实验设计的主要工作是HDB3码的编译码的建模与实现,对于HDB3编译码模块,一般以硬件的方式来实现的。
但他具有产品更新慢、设计灵活性差、不可重配置及现场升级性能缺乏等缺点。
因此拟采用可编程逻辑电路来实现。
可编程逻辑电路是EDA的一个重要技术基础,主要包括FPGA(FieldProgrammableGateArray,现场可编程逻辑门阵列)和CPLD(ComplexProgrammableLogicDevices,复杂可编程逻辑器件),它们具有丰富的可重配置逻辑资源,既包含有大量实现组合逻辑的资源;还包含有相当数量的触发器,因此采用EDA技术进行电子系统的设计有以下优点:
系统可现场编程,在线升级;
用软件的方式设计硬件;
整个系统可集成在一个芯片上,体积小、功耗低、可靠性高;
用软件方式设计的硬件系统的转换是由有关的开发软件自动完成,降低了系统设计的难度。
对于HDB3编译码器的实现,本毕业设计采用硬件描述语言VHDL来实现。
用VHDL语言设计分别设计一个完善的HDB3码编码器和译码器。
本设计是从HDB3原理出发,采用“从顶到底(TOP-DOWN)”设计方法,以EDA工具QUARTUSⅡ5.1为软件平台,输入HDB3的代码并对其进行编译、综合和仿真,经过功能测试、验证,最终实现基于FPGA的HDB3码的编码和译码功能。
第2章工具介绍
2.1FPGA的系统介绍
FPGA是20世纪80年代中期,美国Altera公司推出一种现场可编程门阵列,其结构主要分为三部分:
可编程逻辑单元,可编程输入输出单元和可编程连线部分。
FPGA器件采用逻辑单元阵列结构和静态随机存取存储器工艺,设计灵活,集成度高,可利用计算机辅助设计,绘出实现用户逻辑原理图、编辑布尔方程或用硬件描述语言等方式设计输入;然后经一系列转换程序、自动布局布线、模拟仿真的过程;最后生成配置FPGA器件的数据文件,对FPGA器件初始化。
这样实现了满足用户要求的专用集成电路,真正达到了用户自行设计、自行研制和自行生产集成电路的目的。
概括来说,FPGA器件具有下列优点:
高密度、高效率、系列化、标准化、小型化、多功能、低功耗、低成本、设计灵活方便,可无限次反复编程,并可现场模拟调试验证。
使得使用FPGA器件,一般可在几天到几周内完成一个电子系统的设计和制作,可以缩短制周期,达到快速上市和进一步降低成本要求。
基于上述的优点,本毕业设计采用FPGA芯片作为平台,这样可以把整个系统下载到一块芯片之中,实现了所谓的片上系统,从而大大缩小了体积,便于工程人员的管理和屏蔽外界干扰。
2.2VHDL语言和QUARTUSⅡ
2.2.1VHDL语言
常用的硬件描述性语言有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.2QUARTUSⅡ
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编、译码的仿真验证。
第3章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符号开始再交替变换。
3.2基于VHDL的编码器的建模及实现
对信号进行HDB3码编码时,先依据HDB3码的编码规则进行添加破坏符号“V”然后进行添加符号“B”操作,最后才进行单极性信号变成双极性信号的转换。
HDB3码的编码模型如图:
图3.1
如上图:
整个HDB3码的编码器包括3个功能部分:
添加破坏符号“V”、添加符号“B”和单极性码转变成双极性码。
信号处理的顺序不能像编码规则那样:
首先把代码串变换成为AMI码,完成添加破坏符号“V”、添加符号“B”工作之后,其后的“+1”和“-1”的极性还要依据编码规则的规定变换。
这样做需要大量的寄存器,同时电路结构也变得复杂。
因此本设计在此处把信号处理的顺序变换一下:
首先完成添加破坏符号“V”工作,接着执行添加符号“B”功能,最后实现单极性变双极性的信号输出。
这样做的好处是输入进来的信号和添加破坏符号“V”、添加符号“B”功能电路中处理的信号都是单极性信号,且需要的寄存器的数目可以很少。
另外,如何准备识别电路中的“1”、“V”和“B”,这也是一个难点,因为“V”和“B”符号是人为标识的符号,但在电路中最终的表示形式还是逻辑电平“1”,同时QUARTUSⅡ软件也不能像HDB3码的编码规则那样把代码串变换成AMI码,这是因为QUARTUSⅡ软件不能处理带负号的信号,因此在软件中本设计还是利用双相码来表示。
双相码的编码规则如下:
对每个二进制代码分别利用两个不同相位的二进制代码去取代。
例如:
信息序列:
110010
双相码:
010*********
3.2.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”码。
在其他的情况下,让原码照常输出。
添加破坏符号“V”功能的关键代码:
add_v:
process(clk,clr)--插入V符号进程
begin
if(rising_edge(clk))then
if(clr='1')then
codeoutv<="00";--用00代表0
count0<=0;
else
casecodeinis
when'1'=>
codeoutv<="01";--用01代表1
count0<=0;
when'0'=>
if(count0=3)then--当有4个连续0时插入V
codeoutv<="11";--用11代表V
count0<=0;
else
count0<=count0+1;
codeoutv<="00";
endif;
whenothers=>
codeoutv<="00";
count0<=count0;
endcase;
endif;
endif;
endprocessadd_v;
3.2.2插‘B’模块的实现
插“B”模块的功能是为了保证附加“V”符号后的序列不破坏“极性交替反转”造成的无直流特性,即当相邻“V”符号之间有偶数个非0符号的时候,把后一小段的第一个“0”变换成一个非破坏符号“B”符号。
添加符号“B”模块的部分程序:
s0(0)<=codeoutv(0);
s1(0)<=codeoutv
(1);
ds11:
dffportmap(s1(0),clk,s1
(1));--调用库中的D触发器来实现延迟作用
ds01:
dffportmap(s0(0),clk,s0
(1));
ds12:
dffportmap(s1
(1),clk,s1
(2));
ds02:
dffportmap(s0
(1),clk,s0
(2));
ds13:
dffportmap(s1
(2),clk,s1(3));
ds03:
dffportmap(s0
(2),clk,s0(3));
bclk:
clkb<=notclk;
add_b:
process(clkb)--插入符号B进程
begin
if(rising_edge(clkb))then
if(codeoutv="11")then
if(firstv=0)then
count1<=0;
firstv<=1;
s1(4)<=s1(3);
s0(4)<=s0(3);
else
if(count1=0)then--用10代表B
s1(4)<='1';
s0(4)<='0';
count1<=0;
else
s1(4)<=s1(3);
s0(4)<=s0(3);
count1<=0;
endif;
endif;
elsif(codeoutv="01")then
count1<=count1+1;
s1(4)<=s1(3);
s0(4)<=s0(3);
else
s1(4)<=s1(3);
s0(4)<=s0(3);
count1<=count1;
endif;
endif;
endprocessadd_b;
codeoutb<=s1(4)&s0(4);
3.3编码中单/双极性转换的实现
根据HDB3码的编码规则,可知“V”的极性是正负交替变换的,而余下的“1”和“B”本毕业设计把其看成为一体且是正负交替变换的,同时满足“V”的极性与前面的非零码极性一致。
由此本毕业设计就把“1”和“B”看成一组,而“V”单独作为一组来做正负交替变换。
同时,从3.2.2节中的第2小节的代码中可知,“1”、“V”,“B”已经分别用双相码“01”,“11”,“10”标识,所以对“1”,“V”,“B”的正负交替变换很容易实现。
实现单双极性变换控制功能程序:
output:
process(clk)--单极性变双极性进程
begin
if(rising_edge(clk))then
if((codeoutb="01")or(codeoutb="10"))then--1orB
if(flag1b=1)then
codeout<="11";
flag1b<=0;
else
codeout<="01";
flag1b<=1;
endif;
elsif(codeoutb="11")then---V
if(flag1b=1)then
codeout<="01";
else
codeout<="11";
endif;
else
codeout<="00";
flag1b<=flag1b;
endif;
endif;
3.4HDB3码的编码器仿真波形
输入全为1时的编码结果:
图3.2
输出的结果为:
110111*********111011101………………
输入全为0时的编码结果:
图3.3
输出的结果为0111001101000111001101000111001101000111………………
输入为11001111000000………………
图3.4