基于Quartus II的HDB3码编解码设计.docx

上传人:b****8 文档编号:9619484 上传时间:2023-02-05 格式:DOCX 页数:23 大小:252.06KB
下载 相关 举报
基于Quartus II的HDB3码编解码设计.docx_第1页
第1页 / 共23页
基于Quartus II的HDB3码编解码设计.docx_第2页
第2页 / 共23页
基于Quartus II的HDB3码编解码设计.docx_第3页
第3页 / 共23页
基于Quartus II的HDB3码编解码设计.docx_第4页
第4页 / 共23页
基于Quartus II的HDB3码编解码设计.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

基于Quartus II的HDB3码编解码设计.docx

《基于Quartus II的HDB3码编解码设计.docx》由会员分享,可在线阅读,更多相关《基于Quartus II的HDB3码编解码设计.docx(23页珍藏版)》请在冰豆网上搜索。

基于Quartus II的HDB3码编解码设计.docx

基于QuartusII的HDB3码编解码设计

 

 

课程设计题目:

基于QuartusII的HDB3码编解码设计

班级:

学号:

姓名:

指导教师姓名:

设计地点:

 

序言

传输数字信号的通信系统称为数字通信系统。

数字通信系统以其抗干扰能力强,无噪声积累,传输差错可控,便于计算处理、变换、存储,易于加密,易于小型化、集成化等优势,成为当代通信领域的主流技术。

将基带数字序列信号经过适当的码型变换后直接送入信道传输,称为基带数字序列信号传输,简称基带传输。

数字基带传输过程中,高频分量越大,对邻近信道产生的干扰就越严重,所以高频分量应该尽量少;另外,传输中直流或低频信号衰减快,信号传输一定距离后会严重畸变,所以不应含有直流或低频频率分量。

除此之外,为方便从接收到的基带信号中提取同步信息,还应包含定时频率分量。

由于HDB3码具有无直流分量,低频成分少,连0的个数不超过三个,对定时信号的恢复十分有利,具有内在的检错能力等优点,根据上述数字基带传输的特点可知:

HDB3码是比较适合基带传输码型之一。

在该实验报告中,介绍了使用VHDL语言实现HDB3码的编码器和解码器的功能。

 

 

第一章QuartusII软件及其相关简介

1.1QuartusII简介

1.1.1QuartusII基本特点

QuartusII软件可以在XP、Linux以及Unix上使用,提供了完善的用户图形界面设计方式,具有运行速度快,界面统一,功能集中,易学易用等特点。

此外,QuartusII支持Altera的IP核,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。

还有,QuartusII通过DSPBuilder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。

如今,QuartusII作为一种可编程逻辑的设计环境,由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。

1.1.2QuartusII功能介绍

QuartusII提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性和以下一些功能:

可利用原理图、结构框图、VerilogHDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件;具有完备的电路功能仿真与时序逻辑仿真工具以及定时/时序分析与关键路径延时分析。

此外,还支持软件源文件的添加和创建,并将它们链接起来生成编程文件,通过组合编译方式可一次完成整体设计流程;并且能够自动定位编译错误和能生成第三方EDA软件使用的VHDL网表文件和Verilog网表文件等。

1.2EDA技术简介

1.2.1EDA概述

EDA是电子设计自动化(ElectronicDesignAutomation)的缩写,在20世纪60年代中期从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。

EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。

EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。

1.2.2EDA技术的应用

如今,EDA技术的应用已经非常广泛,在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。

此外,EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。

例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。

1.3VHDL语言

1.3.1VHDL语言简介

VHDL语言即超高速集成电路硬件描述语言,是一种用于电路设计的高级语言,在80年代的后期出现。

最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言。

VHDL主要用于描述数字系统的结构、行为、功能和接口。

除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。

VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部和内部,既涉及实体的内部功能和算法完成部分。

在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。

这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。

1.3.2VHDL语言的优势

首先,与其他的硬件描述语言相比,VHDL语言具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。

强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。

其次,VHDL语言有丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。

还有,对于用VHDL语言完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。

最后,VHDL语言对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。

 

第二章工作原理

2.1数字基带传输原理

在某些具有低通特性的有线信道中,特别是在传输距离不太远的情况下,基带信号可以不经过载波调制而直接进行传输,这样的传输系统,称为数字基带传输系统。

在实际的基带传输系统中,并不是所有的基带波形都适合在信道中传输。

例如,含有丰富直流分量和低频分量的单极性基带波形就不适宜在低频传输特性差的信道中传输,因为这有可能造成信号的严重畸变。

又如,当消息码中包含长连“0”或“1”时,非归零波形呈现出连续的固定电平,以致于无法提取定时信息。

单极性归零码在传送长连“0”时,也存在同样的问题。

因此,在选择传输码型时会考虑以下一些原则:

(1)不含直流,且低频分量尽量少;

(2)应含有丰富的定时信息,以便于从接收码流中提取定时信号;

(3)功率谱主瓣宽度窄,以节省传输频带;

(4)不受信息源统计特性的影响,即能适应于信息源的变化;

(5)具有内在的检错能力,即码型应具有一定规律性,以便利用这一规律性进行宏观监测;

(6)编译码简单,以降低通信延时和成本。

2.2HDB3码编码原理

(1)将消息代码变换成AMI码;

(2)检查AMI码中的连0情况,当无4个以上的连0传时,则保持AMI的形式不变;

(3)若出现4个或4个以上连0时,则将1后的第4个0变为与前一非0符号(+1或-1)同极性的符号,用V表示(+1记为+V,-1记为-V),V称为破坏码;

(4)检查相邻V符号间的非0符号的个数是否为偶数,若为偶数,则再将当前的V符号的前一非0符号后的第1个0变为+B或-B符号,且B的极性与前一非0符号的极性相反,并使后面的非0符号从V符号开始再交替变化。

编码举例如下:

表2-1HDB3码编码举例

消息码

1

0

0

0

0

1

1

0

0

0

0

1

1

AMI码

+1

0

0

0

0

-1

+1

0

0

0

0

-1

+1

HDB3码

+1

0

0

0

+V

-1

+1

-B

0

0

-V

+1

-1

HDB3码的特点如下:

(1)基带信号无直流成分,且只有很小的低频成分;

(2)连0串符号最多只有3个,利于定时信息的提取;

(3)不受信源统计特性的影响。

2.3HDB3码解码原理

HDB3码的解码是编码的逆过程。

从上述编码规则可以看出,每一个破坏脉冲“V”总是与前一非“0”脉冲同极性(包括B)。

也就是说,从接收到得消息码中可以很容易的找到破坏点“V”,于是也就断定“V”符号及其前面的三个符号必是连“0”符号,从而恢复4个连“0”码,再将所有“-1”变成“+1”后便可的到源消息码。

解码举例如下:

表2-2HDB3码解码举例

HDB3码

+1

0

0

0

+1

-1

+1

-1

0

0

-1

+1

-1

V符号

+V

-V

解码

1

0

0

0

0

1

1

0

0

0

0

1

1

第三章基于QuartusII的HDB3码编解码器的设计

3.1HDB3编码器设计

3.1.1HDB3编码器总体设计思路

在实际设计中,若按照第二章中编码原理需要先把消息码转换成AMI码,再进行插“V”和“B”的操作,最后还要依据编码规则变换“1”的极性。

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

以我现在所掌握的知识还无法完成。

因此,在实际的设计中,首先完成插“V”工作,然后完成插“B”功能,最后完成单极性变双极性的信号输出。

这样做的好处是:

输入进来的信号和插“V”、插“B”功能电路中处理的信号都是单极性信号,且需要的寄存器的数目可以少很多。

设计框图如图3-1所示:

图3-1HDB3码编码设计框图

3.1.2插V模块

插V设计思路:

首先判断输入的代码是“0”码还是“1”码,如果输入的是“0”码,则接着判断这是第几个“0”码。

若是第四个,则把这一位码元变换成为“V”码(用“11”表示),在其他条件下,让原代码照常输出。

为了方便,每个码元用双相码表示。

图3-2插V波形图

分析:

原消息码(输入):

1000011000011

插V后(理论值):

01000000110101000000110101

插V后(仿真值):

01000000110101000000110101

结论:

仿真的结果和理论值一样,是正确的。

但有一个周期的延时,T=20ns。

注:

01:

表示1;11:

表示V;00:

表示0。

3.1.3插B模块

插B设计思路:

先把消息码寄存在寄存器中,同时设置一个计数器计数两个“V”之间“1”的个数,经过4个码元时间后,由一个判偶电路来给寄存器发送是否插“B”的判决信号,从而实现插“B”功能。

当计数器为偶数时,说明需要插B。

波形图如图3-3所示。

图3-3插B波形图

分析:

输入:

01000000110100000011010100000011

插B后(理论值):

01000000110100000011010110000011

插B后(仿真值):

01000000110100000011010110000011

结论:

仿真的结果和理论值一样,是正确的。

但有5个周期的延时,T=20ns。

注:

01:

表示1;11:

表示V;00:

表示0;10:

表示B。

3.1.4单/双极性转换模块

单/双极性转换设计思路:

V”的极性与其之前的非0码的极性相同,并且“V”的极性是正负交替的。

而“B”的极性和其之前的非0码的极性相反,并且可以将除“V”之外的“1”和“B”看成一体,它们的极性是正负交替的。

因此,可以将“V”单独的进行极性变换,而“1”和“B”作为一个整体进行极性变换。

波形图如图3-4所示。

图3-4单/双极性转换波形图

分析:

输入:

01000000110100000011010110000011

极性转换后(理论值):

01000000011100000011011101000011

极性转换后(仿真值):

01000000011100000011011101000011

结论:

仿真的结果和理论值一样,是正确的。

但有1个周期的延时,T=20ns。

注:

输入中:

01:

表示1;11:

表示V;00:

表示0;10:

表示B;

极性转换后:

01:

表示+1;11:

表示-1;00:

表示0。

3.1.5HDB3编码器整体仿真

如图3-5所示,即为编码器整体的仿真波形,从图中可以很清楚的看出序列经过插“V”模块,插“B”模块与单/双极性转换模块后的波型变换,由于每一步的输入是上一步的输出信号,因此最终经过单/双极性转换模块后的波形即为编码后的波形。

图3-5HDB3编码波形图

分析:

原消息码(输入):

1000011000011

插V后:

01000000110101000000110101

插B后:

01000000110101100000110101

极性转换后(即编码)

仿真值:

01000000011101110000110111

极性转换后(即编码)

理论值:

01000000011101110000110111

结论:

HDB3编码的仿真结果和理论值一样,是正确的。

但有5个周期的延时,T=20ns。

注:

插V和插B后:

01:

表示1;11:

表示V;00:

表示0;10:

表示B;

极性转换后(即编码):

01:

表示+1;11:

表示-1;00:

表示0。

3.2HDB3解码器设计

3.2.1HDB3解码器总体设计思路

1.去V:

“V”的极性与其前的非0码极性相同,因此可以很容易的找出“V”码。

当未编译代码中有3连“0”且其前后两个非零脉冲极性相同,则将最后一个非0码转换为“0”,否则不做改变;

2.去B:

当代码中有2连“0”且其前后两个非0码的极性相同,则将这两个非0码都转换为“0”,否则不做改变。

3.双/单极性转换:

再将所有的-1变换成+1后,就可以得到原消息代码

4.在实际编写VHDL代码时,参照上述译码规则进行编写。

根据HDB3解码器的设计思想,实现HDB3解码功能的流程图如图3-6所示,框图如图3-7所示:

 

图3-6HDB3解码器流程图

 

图3-7HDB3码解码设计框图

3.2.2检测V并去V模块

检测V并去V设计思路:

设置两组4位移位寄存器D1和D0,任意一个码元由D1和D0表示(即D1&D0),然后定义一个信号code_out1,code_out1接收输入码元,当code_out1的值为“01”或者“11(即“+1”或“-1”)时,判断存放在寄存器D1、D0中的码元是否有“11”或者“10”出现(即是否是“0001”或“000-1”这样的形式)。

若有,则表明4位移位寄存器中应是“000V”这样的形式,将V置为“0”输出。

VHDL语言实现检测V并去V的程序如下:

if((code_out1="11"andD1(3downto0)="0001"andD0(3downto0)="0001")or

(code_out1="01"andD1(3downto0)="0000"andD0(3downto0)="0001"))then

D1(2downto1)<=D1(3downto2);

D0(2downto1)<=D0(3downto2);-----检测到V

D1(3)<='0';

D0(3)<='0';

D1(0)<=D1

(1);

D0(0)<=D0

(1);-----去V

3.2.3检测B并去B模块

检测B并去B设计思路:

当信号code_out1的值为“01”或者“11(即“+1”或“-1”)时,判断存放在寄存器D1、D0中的码元是否有“11”或者“10”出现(即是否是“001”或“00-1”这样的形式)。

若有,则表明4位移位寄存器中应是“B00”这样的形式,将B置为“0”输出。

VHDL语言实现检测B并去B的程序如下:

if((code_out1="11"andD1(3downto1)="001"andD0(3downto1)="001")or

(code_out1="01"andD1(3downto1)="000"andD0(3downto1)="001"))then

D1(2downto1)<=D1(3downto2);

D0(2downto1)<=D0(3downto2);-----检测到B

D1(3)<='0';D0(3)<='0';D1(0)<='0';D0(0)<='0';-----去B

3.2.4双/单极性转换模块

双/单极性转换模块设计思路:

除去以上情形,当信号code_out1的值为“01”或者“11”(即“+1”或“-1”)时,则输出“1”码;当信号code_out1的值为“00”(即“0”)时,则直接输出“0”码。

VHDL语言实现双/单极性转换的程序如下:

if((D1(0)='1'andD0(0)='1')or(D1(0)='0'andD0(0)='1'))

D1(2downto1)<=D1(3downto2);D0(2downto1)<=D0(3downto2);

D1(3)<=t

(1);D0(3)<=t(0);D1(0)<=D1

(1);D0(0)<=D0

(1);-----输入为0码,原样输出

if((D1(0)='1'andD0(0)='1')or(D1(0)='0'andD0(0)='1'))thencode_out<='1';-----将+1或-1转换为1码输出

3.1.5HDB3解码器整体仿真

如图3-8所示,即为HDB3解码器整体的仿真波形。

仿真波形图中,reset为计数器清零信号,clk为时钟信号,code_in为输入的信号,是上一步单/双极性转换模块的输出信号,code_out为译码之后的输出信号。

D1和D0为4位移位寄存器。

结合HDB3码的译码规则及上图的仿真波形得出以下结论:

图3-8HDB3解码波形图

分析:

clr:

低电平有效,高电平清零;

clk:

时钟,T=20ns;

原消息码(输入):

1000011000011

插V后:

01000000110101000000110101

插B后:

01000000110101100000110101

极性转换后(即编码):

01000000011101110000110111

解码(仿真值):

1000011000011

解码(理论值):

1000011000011

结论:

HDB3解码的仿真结果和理论值一样,是正确的。

但有12个周期的延时,T=20ns。

注:

插V和插B后:

01:

表示1;11:

表示V;00:

表示0;10:

表示B;

极性转换后(即编码):

01:

表示+1;11:

表示-1;00:

表示0。

 

参考文件

[1]樊昌信,曹丽娜.通信原理.北京:

国防工业出版社,2009

[2]赵鑫,蒋亮,齐兆群,李晓凯.VHDL与数字电路设计.北京:

机械工业出版社,2005

[3]潘松,黄继业.EDA技术与VHDL.北京:

清华大学出版社,2005

[4]江国强.EDA技术与应用.北京:

电子工业出版社,2004

[5]段吉海,黄智伟.基于CPLD/FPGA的数字通信系统建模与设计.北京:

电子工业出版社,2004

[6]王素珍,王涛.基于VHDL语言的HDB3编译码器的一种实现方法[J].内蒙古师范大学学报:

自然科学版,2006,35(03):

300-303,307.

[7]夏平,向学军,万钧力.基于VHDL的数字基带信号HDB3调制解调器仿真实现[J].三峡大学学报:

自然科学版,2007,29(02):

147-149,166.

 

体会与建议

经过一个星期的时间,完成了基于Quartus的HDB3码编解码的课程设计,使用的是VHDL语言编写的,属于纯软件实现。

按照HDB3码编码原理:

先将消息码变为AMI码,再进行插“V”、插“B”,理论上是可行的,但是实际操作难度比较大,需要大量的移位寄存器,并且程序编写更加复杂,我目前的知识水平无法实现。

因此,我采用了模块化设计,将HDB3码的编码设计分为三个模块:

插“V”模块、插“B”模块和单/双极性转换模块,使得HDB3码编码的实现更简单,更有层次。

HDB3码的解码设计,本质上是HDB3码编码的逆过程。

设计思路为:

检测“V”并去“V”、检测“B”并去“B”和双/单极性转换,只要一个模块即可以实现。

通过这次的课程设计,我学习了很多东西。

首先,对HDB3码编解码的原理及设计思路有了全新的认识,对HDB3码有了更深刻,更加全面的理解。

此外,对于VHDL语言的学习也更加透彻,对Quartus软件的使用更加熟练。

这次课程设计让我深刻的体会到理论与实际相结合的重要性,要对理论理解透彻,才能灵活的运用到实际当中,绝不是直接生搬硬套。

 

附录

源程序:

LIBRARYieee;-----头文件声明

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityV2is------端口设置

port(codein:

instd_logic;

clk:

instd_logic;

clr:

instd_logic;

v:

outstd_logic_vector(1downto0);

b:

outstd_logic_vector(1downto0);

p:

outstd_logic_vector(1downto0);

code_out:

outstd_logic);

endV2;

architecturert1ofV2is------设置信号

signalflag:

std_logic;

signalcount0:

integer:

=0;

signalcodeoutv:

std_logic_vector(1downto0);

signals0:

std_logic_vector(4downto0):

="00000";

signals1:

std_logic_vector(4downto0):

="00000";

signalcount1:

integerrange1downto0;

signalcodeoutb:

std_logic_vector(1downto0);

signalflagv:

integerrange1downto0;

signalfirstv:

integerrange0to1;

signalflag1b:

integerrange1downto0:

=1;

signalD1,D0:

std_logic_vector(3downto0);

signalcode_out1

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

当前位置:首页 > 小学教育 > 学科竞赛

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

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