版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、前言现代通信借助于电和光来传输信息,数字终端产生的数字信息是以“1”和“0”2种代码(状态)位代表的随机序列,他可以用不同形式的电信号表示,从而构造不同形式的数字信号。在一般的数字通信系统中首先将消息变为数字基带信号,称为信源编码,经过调制后进行传输,在接收端先进行解调恢复为基带信号,再进行解码转换为消息。在实际的基带传输系统中,并不是所有电波均能在信道中传输,因此有基带信号的选择问题,因此对码型的设计和选择需要符合一定的原则。考虑到当数字信号进行长距离传输时要求线路传输码型的频谱不含直流分量,并且只有很少的低频分量和高频分量。其次,传输码型中应含有定时时钟信息,以利于收端定时时钟的提取,在基
2、带传输系统中,定时信息是在接收端再生原始信息所必需的。再次,实际传输系统常希望在不中断通信的前提下,能监视误码,如果传输码型有一定的规律性,那么就可以根据这一规律性来检测传输质量,以便做到自动监测,因此,传输码型应具有一定的误码检测能力。当然,对传输码型的选择还需要编码和解码设备尽量简单等要求,但以上的几点是最主要的考虑因素。以上要求导致了hdb3码的出现并获广泛应用。hdb3码因具有无直流成分,低频成分少和连0个数最多不超过三个等明显的优点,对定时信号的恢复十分有利, ccitt已建议把hdb3码作为pcm终端设备一次群到三次群的接口码型。本设计就是用vhdl语言实现hdb3码的编/解码器功
3、能。第一章 基带传输码型介绍1.1 数字基带信号数字基带信号的传输是数字通信系统的重要组成部分之一。在数字通信中,有些场合可不经过载波调制和解调过程,而对基带信号进行直接传输。为使基带信号能适合在基带信道中传输,通常要经过基带信号变化,这种变化过程事实上就是编码过程。于是,出现了各种各样常用码型。不同码型有不同的特点和不同的用途。作为传输用的基带信号归纳起来有如下要求:1 希望将原始信息符号编制成适合与传输用的码型;2 对所选码型的电波形,希望它适宜在信道中传输。可进行基带传输的码型较多。1、ami码ami码称为传号交替反转码。其编码规则为代码中的0仍为传输码0,而把代码中1交替地变化为传输码
4、的+1-1+1-1,、。 举例如下。消息代码:0 1 1 1 0 0 1 0 、ami 码:0 +1 -1 +1 0 0 -1 0 、或 0 -1 +1 -1 0 0 +1 0 、ami码的特点:(1) 无直流成分且低频成分很小,因而在信道传输中不易造成信号失真。(2) 编码电路简单,便于观察误码状况。(3) 由于它可能出现长的连0串,因而不利于接受端的定时信号的提取。2、hdb3码 这种码型在数字通信中用得很多,hdb3码是ami码的改进型,称为三阶高密度双极性码。它克服了ami码的长连0传现象。1.2 nrz,ami,hdb3码之间的对应关系假设信息码为0000 0110 0001 000
5、0,对应的nrz码、ami码,hdb3码如图1-1所示。 信息代码 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0ami波形ami代码 0 0 0 0 0 1 -1 0 0 0 0 1 0 0 0 0nrz波形hdb3代码 b 0 0 v 0 -1 1 -b 0 0 -v 1 0 0 0 vhdb3波形 图1-1 nrz ,ami,hdb3码型图分析表现,ami码及hdb3码的功率谱不含有离散谱fs成份(fs1/ts,等于位同步信号频率)。在通信的终端需将他们译码为nrz码才能送给数字终端机或数/模转换电路。在做译码时必须提供位同步信号。工程上,一般将ami或hdb3码数字信号
6、进行整流处理,得到占空比为0.5的单极性归零码(rz|0.5ts)。由于整流后的ami,hdb3码中含有离散谱fs,故可用一选频网络得到频率为fs的正弦波,经整形、限幅、放大处理后即可得到位同步信号。第2章 hdb3码 编/译码原理2.1 hdb3码编码原理hdb3码的编码规则:(1) 将消息代码变换成ami码;(2) 检查ami码中的连0情况,当无4个以上的连0传时,则保持ami的形式不变;若出现4个或4个以上连0时,则将1后的第4个0变为与前一非0符号(+1或-1)同极性的符号,用v表示(+1记为+v,-1记为-v(3)检查相邻v符号间的非0符号的个数是否为偶数,若为偶数,则再将当前的v符
7、号的前一非0符号后的第1个0变为+b或-b符号,且b的极性与前一非0符号的极性相反,并使后面的非0符号从v符号开始再交替变化。举例如下:代码 : 1 0 1 0 1 1 0 0 0 0 0 1 1 0 0 0 0 1 hdb3码: +1 0 -1 0 +1 -1 0 0 0 -1 0 +1 -1 +1 0 0 +1 -1v、b : -v +b +vhdb3码的特点如下:(1) 基带信号无直流成分,且只有很小的低频成分;(2) 连0串符号最多只有3个,利于定时信息的提取;(3) 不受信源统计特性的影响。2.2 hdb3码译码原理hdb3码的译码是编码的逆过程,其译码相对于编码较简单。从其编码原理
8、可知,每一个破坏符号v总是与前一非0符号同极性,因此,从收到的hdb3码序列中,容易识别v符号,同时也肯定v符号及其前面的3个符号必是连0符号,于是可恢复成4个连0码,然后再将所有的-1变成+1后变得到原消息代码。 举例如下:hdb3码 +1 0 -1 0 +1 -1 0 0 0 -1 0 +1 -1 +1 0 0 +1 -1v符号 -v +v 译码 1 0 1 0 1 1 0 0 0 0 0 1 1 0 0 0 0 1 第3章 hdb3码编码器设计3.1 hdb3编码器的设计思路从编码规则来分析,这个设计的难点之一是如何判决是否应该补“b”,因为这涉及到由现在事件的状态决定过去事件状态的问题
9、。按照实时信号处理的理论,这是没办法实现的。但在实际的电路中,可以考虑用寄存器的方法,首先把信码寄存在寄存器里,同时设置一个计数器计数两个“v”之间“1”的个数,经过4个码元时间后,由一个判偶电路来给寄存器发送是否补“b”的判决信号,从而实现补“b”功能。不过,信号处理的顺序不能像编码规则那样:首先把代码串变换成为ami码,完成插“v”、补“b”工作之后,其后的“+1”和“-1”的极性还要依据编码规则的规定变换。这样做需要大量的寄存器,同时电路结构也变的复杂。若把信号处理的顺序变换一下:首先完成插“v”工作,接着执行补“b”功能。最后实现单极性变双极性的信号输出。这样做的好处是:输入进来的信号
10、和插“v”、补“b”功能电路中处理的信号都是单极性信号,且需要的寄存器的数目可以少很多。另外,如何准确识别电路中的“1”、“v”和“b”。因为“v”和“b”符号是人为标识的符号,但在电路中最终的表现形式还是逻辑电平“1”。解决的方法是利用了双相码,将其用二进制码去取代。例如,代码: 1 1 0 0 1 0双相码 10 10 01 01 10 01 这样就可以识别电路中的“1”、“v”、“b”。也可以人为地加入一个标识符(其最终目的也是选择输出“1”的极性)。控制一个选择开关,使输出“1”的极性能按照编码规则进行变化。3.2 hdb3编码器的设计方法本设计的思想如前面hdb3编码原理介绍的那样首
11、先把消息代码变换成为ami码,然后进行v符号和b符号的变换,最后完成单极性信号变成双极性信号的变换。整个hdb3编码器包含3个功能部分:插“v”、补“b”和单极性码转变成双极性码。各部分之间采用同步时钟作用,并且带有一个异步的复位(清零)端口。hdb3码的编码器模型框图如图3-1所示: 单/双极性变换 补“b”插“v” ami码 hdb3码图3-1 hdb3码的编码器模型框图3.2.1 插v模块的设计插“v”模块的功能实际上就是对消息代码里的四连0串的检测即当出现四个连0串的时候,把第四个“0”变换成为符号“v”(“v”可以是逻辑“1”高电平),而在其他情况下,则保持消息代码的原样输出。同时为
12、了减少后面工作的麻烦,在进行插“v”时,用“11”标识它,“1”用“01”标识,“0”用“00”标识。插“v”符号的设计思想很简单:首先判断输入的代码是什么(用一个条件语句判断),如果输入的是“0”码,则接着判断这是第几个“0”码,则把这一位码元变换成为“v”码。在其他条件下,让原代码照常输出。插v流程图如图3-2所示。如前考虑,插”v”模块须设计一个计数器(count0),用来作为插”v”符号的标志。在进程(process)中,通过条件控制开关(case语句)完成插”v”功能。这里使用了一个技巧来实现流程的控制,即在选择语句(case语句)中嵌套了条件判断语句(if语句)来控制双重条件判断的
13、执行结果。(详细程序见附录)假设输入一串代码,根据设计思想,输入代码与插入”v”符号之后的关系如下:代码 : 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0插v后:01 00 00 00 11 01 00 00 00 11 01 01 00 00 00 11flag0=0cnt0=0cnt0=cnt0+1codeoutv=0cnt0=4 startflag0=0,cnt0=1,firstv=0codein=0flag0=0 endfirstv=1cnt0=0codeoutv=-vflag1=0flag0=0codeoutv=+1flag0=1codeoutv=+vflag1=1
14、codeoutv=-1flag0=0codeoutv=+vflag1=0flag0=0codeoutv=-vflag1=0flag1=0firstv=0nyy ny ny nnyy注: cnt0为计数器0的个数; flag0表示非零码的极性; flag1表示v的极性; firstv表示第一个v码; codein为输入码型; codeoutv为输出v的码型;图3-2 插v流程图3.2.2 补b模块的设计 插“b”模块的功能是保证附加“v”符号后的序列不破坏“极性交替反转”造成的无直流特性,即当相邻“v”符号之间有偶数个非0符号的时候,把后一小段的第1个“0”变换成一个非破坏符号“b”符号。补b模
15、块流程图如图3-3所示: start endflag2=0codeoutb=+bcodeoutb=codeoutvcodeoutb=codeoutvcodeoutb=codeoutvcodeoutb=-b flag2=1codeoutb=codeoutvcodeoutb=codeoutvotherscodeoutv=+1codeoutv=+vcodeoutv=-1codeoutv=-vflag3=1flag3=0flag3=0flag3=0 ynny注:codeoutv为v的极性;codeoutb为补b的码型;flag2为前一v码的极性;flag3为标识前一非零码的极性;图3-3 补b模块流程
16、图图中补“b”模块是这个设计遇到的第一个难点,因为他涉及到一个由现在事件的状态决定过去状态的的问题。其中还有如何确定是“1”,还是“v”的问题。处理难点的思路是:首先把码元(经插“v”处理过的)放入一个4位的移位寄存器里,在同步时钟的作用下,同时进行是否补“b”的判决,等到码元从寄存器里出来的时候,就可以决定是应该变换成“b”符号,还是照原码输出。因此,在程序的结构中进行元件声明(component declaration),调用库里的d触发器来实现延迟作用。为了使程序更清晰,用了几个元件例化语句(compomemt instantiation),来说明信号的流向。所谓元件例化就是引入一种连接
17、关系,将预先设计好的设计实体定义为一个元件,然后利用特定的语句将此元件与当前的设计实体中的指定端口连接,从而为当前设计实体引入一个新的低一级的设计层次。在这里,当前设计实体相当于一个较大的电路系统,所定义的例化元件相当于一个要插在这个电路系统板上的芯片,而当前设计实体中指定的端口则相当于这块电路板上准备接收此芯片的一个插座。元件例化是使vhdl设计实体构成自上而下层次设计的一种重要途径。要进行补“b”判决,首先要知道哪一个是“v”,从前面的程序中我们了解到,“v”已经用“11”代替,“1”用“01”代替,从这里就表现出采用双相码的优点,它轻易地解决了“v”和“1”的差别。根据这个设计思想,输入
18、代码与插“v”及补“b”后的代码的关系如下:代 码 :1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 1插v后: 01 00 00 00 11 01 00 00 00 11 01 01 00 00 00 11 01 01 补b后:01 00 00 00 11 01 00 00 00 11 01 01 10 00 00 11 01 013.2.3 单/双极性变换的实现根据hdb3的编码规则,我们可以知道,“v”的极性是正负交替的,余下的“1”和“b”看成一体且是正负交替的,同时满足“v”的极性与前面的非零码极性一致。由此我们可以将其分别进行极性变换来实现。从前面的程序知道,“
19、v”、“b”、“1”已经分别用双相码“11”、“10”、“01”标识,“0”用“00”标识,所以通过以下的程序可以很容易实现。如下图为实现极性变换功能的流程图。根据编码规则,“b”符号的极性与前一非零符号相反,“v”极性符号与前一非零符号一致。因此将“v”单独拿出来进行极性变换(由前面已知“v”已经由“11”标识,所以很好与其他的代码区别),余下的“1”和“b”看成一体进行正负交替,这样就完成了hdb3的编码。这个部分遇到的难点在于:在quartus 软件仿真过程中,它无法识别“-1”,在它的波形仿真中只有“1”和“0”。因此在这里采用了双相码来分别表示“-1”、“+1”、“0”。要得到所需的
20、结果,仅仅在最后加一个硬件(如四选一数字开关cc4052)就可以将程序中所定义的“00”、“10”、“01”分别转换成0、+1、-1,从而达到设计所需结果。由上述的程序下载到fpga或cpld中,其输出结果并不是“+1”、“-1”、“0”的多电平变化波形,而是单极性双电平信号,事实上,程序输出的是给单/双变换器的硬件电路地址信号。 利用一个四选一的数据选择器cc4052,二维数组作为cc4052的选择地址,在输出端out可以得到符合规则的“+1”、“-1”、“0”变化波形。单/双极性变换控制流程图如图3-4所示: start codeoutb=”01”10”codeoutb=”11”codeo
21、utb=”00”flag1b=0flag1b=1codeout=”00”flag1b=0flag1b=1codeout=”01”codeout=”10”codeout=”01”codeout=”10”flag1b=flag1bflag1b=1flag1b=0 end注:codeoutb为输出的码型;“10”:标识为+1;“01”:标识为-1; flag1b:记“+v”或“-v”之间的奇偶数 图3-4 单/双极性变换控制流程图3.3 hdb3编码器的顶层设计为了使整个系统看起来简洁明了,本次设计采用顶层文件的方法,将各个模块建立成元器件,然后在顶层文件中调用。在编码前,首先通过编程产生一个序列发
22、生器,通过它产生一段序列码,由于过程中会产生毛刺,因此在设计中加入了一个d触发器以消除毛刺现象,随后将产生的序列通过编码器,由于编码设计的结果是不归零的,所以本次设计在编码后的基础上加上了一个归零模块,使得出来的结果有一个归零的效果,图3-5为编码的顶层文件图:图3-5 编码顶层文件图3.4 hdb3编码器的时序仿真对编码顶层文件进行时序仿真,得到仿真图如图3-6所示。图中clk1为编码器时钟,clk2为归零模块时钟,其中t1=2*t2,从而达到归零效果。dataout为编码输出,其中dataout1为高位,dataout0为低位。dataout3为序列产生的原始码元,gl1对应于归零后的da
23、taout1,gl2对应于归零后的dataout0。从仿真图中可以看到,序列产生的码元为100001000011000011000010,编码后的序列为200021000121200212100120,其中2为10即+1,1为01即-1,可以看到仿真的结果与理论是相同的,就是有一定的延时,这是因为编码器中有移位寄存器,所以存在延时是可能的。对照gl1和dataout1或者gl2与dataout0,可以发现原先码元中的1变成了10,从而达到了归零的效果。总体来说,编码效果与理论还是符合的。图3-6 编码仿真图第四章 hdb3译码器的设计4.1 hdb3译码器的设计思路根据编码规则,破坏点v脉冲与
24、前一个脉冲同极性。因此可从所接受的信码中找到v码,然后根据加取代节的原则,v码与前面的三位码必然是取代码,需要全部复原为四连0。只要找到v码,不管v码前是两个“0”码,一律把取代节清零,完成了扣v扣b功能,进而得到原二元信码序列。可实现hdb3译码的模型框图如图4-1所示,hdb3译码器包括双/单极性变换、v码检测、时钟提扣v扣b四部分组成。时钟提取扣v扣b相加器-v码检+v码检正整流负整流输入hdb3码相加器 双/单极性变换输出v码检测图4-1 hdb3译码的模型框图上图中双/单极性变换电路有两个正负整流电路组成。正整流电路提取正电平码部分;负整流电路提取负电平部分。v码检测电路包括+v码检
25、测和-v码检测两部分。根据编码规则,v脉冲必然是同极性脉冲。当无v脉冲时,传号脉冲“+1”和“-1”交替出现。当连续出现两个“+1”或“-1”时,若无误码,则后一个一定是v脉冲。时钟提取电路用于提取同步时钟。扣v扣b电路在v脉冲和同步时钟的控制下,完成扣v扣b的功能。由于双/单极性变换电路涉及到双极性信号,无法在fpga中实现,需加外围硬件电路。4.2 hdb3译码器的设计方法1)v码检测模块的建模1)+v码检测为了方便,假设从正整流电路输出的信号为+b,从负整流电路输出的信号为-b。+v码检测模块-b的控制下,对输入的+b进行检测。其原理是:当+b的上升沿到来时,对输入的+b脉冲进行计数,当
26、计数值等于2时,输出一个脉冲作为+v脉冲,同时计数器清零,而且计数期间,一旦有-b信号为“1”电平时,立即对计数器清零,计数器重新从零开始计数。这是因为在两个+b脉冲之间,存在-b脉冲,说明第二个+b脉冲不是+v码,而只有在连续两个+b脉冲之间无-b脉冲,才能说明这两个+b脉冲在hdb3码中,是真正同极性的于是就可以判定第二个+b脉冲实际上是+v码,达到检测+v码的目的。+v码检测模型框如图4-2所示。 -b码控制输入端+b输入端 +v输出端来自负整流电路来自正整流电路+v码输出 图4-2 +v码检测模型框图2)-v码的检测-v码检测原理与+v码检测的类似。不同的是,-v码检测电路在+b控制下
27、,对来自-b信号进行计数和检测、判定,若检测到-v码,则输出到-v码信号。-v码检测模型框如图4-3所示。 +b码控制输入端-b输入端 -v输出端 来自正整流电路来自负整流电路 -v码输出图4-3 -v码检测模型框图 (2)扣v扣b模块建模扣v扣b模块有三个输入信号,即时钟信号、v码信号和来自正、负整流输出的信号。由于该信号可能包含有b脉冲和v脉冲,因此需要在扣v扣b模块中,去除v和b脉冲。本模块的建模方法是,用v码检测模块所检测出的v码信号,去控制一个移位寄存器,若未碰到v脉冲,则整流输出合成信号在时钟的节拍下,顺利通过移位寄存器,当碰到有v脉冲时,该v脉冲将使移位寄存器清零。考虑到四连0,
28、即v脉冲及其前面的三个码元应为0码,所以,可设置四位的移位寄存器,当v码清零时,同时将移存器中的四位码全变为0。不管是否有b脉冲,在此模块中,一并清零,因而无需另设扣b电路。另外移位四位寄存器起到延时四位时钟周期的作用,以使所检测出的v脉冲与信号流中的v脉冲位置对齐,保证清零的准确性。扣v扣b模块框图如图4-4。 四位移位寄存器 hdb3码全波整流信号 hdb3译码输出v码清零 clk 图4-4 扣v扣b模块框图4.3 hdb3译码器的顶层设计同编码器一样,将译码器也建成元器件模块,在顶层文件中调用,由于是仿真,则不需要进行极性转换,将编码器的两个单极性输出作为译码器的输入。其设计图如图4-5
29、所示:图4-5 译码顶层模块图4.4 hdb3译码器的时序仿真对译码顶层文件进行编译仿真,其仿真图如图4-6所示:图4-6 译码仿真图仿真波形分析: 图中dataout3为原始码元100001000011000011000010,经编码后得到dataout1和dataout0,即为译码的两个输入,dataout1为高位,dataout0为低位,dataout5即为译码的输出,由图中可以看到,译码的输出为100001000011000011000010,与理论结果相同,但存在一定的延时。总体来说还是达到了译码的效果的(译码程序见附录)。第5章 hdb3编/译码器的系统设计与硬件实现5.1 hdb
30、3编/译码器的系统设计首先,这个系统包含编码器和译码器两大部分,其中编码和译码又由多个小模块构成。本次设计采用的是顶层文件的方法,先将编码和译码建成元器件,然后在顶层文件中进行调用,在仿真中编码的输出时两个单极性的输出,把它作为译码的两个单极性输入,这样就把编码和译码相互关联起来了,从而可以进行仿真观察结果。5.2 hdb3编/译码器的硬件电路结构以及硬件调试整体仿真完后,可以对顶层文件进行分配管脚,当然首先要选择好芯片,本次设计采用的芯片是acex1k-ep1k10tc100-3,分配管脚要注意只能用其中标注的i/o口,管脚分配好后,用串口线将电脑与fpga实验箱连接起来,开电源,点击too
31、lsprogrammer进入下载页面,如果是第一次使用的话,点击hardware setup,然后在hardware setting选项中点击addhardware,hardware type选择byteblastermv orbyteblasterii,port选择lpt1,点击ok完成硬件设置。设置好硬件后,就可以下载调试了。编译完成之后待下载的文件会自动添加进来。选中programmer/config,然后点击start,开始下载。下载成功后,根据分配的管脚用线引出,即可用示波器观察波形。值得注意的是,时钟信号的管脚是固定的,分别为39和90号管脚,分配时应注意。根据分配的管脚找到编码的
32、两个单极性输出,接到外围电路cc4052芯片上,进行一个单极性到双极性的变换,注意高低位。然后用示波器观察输出波形。从结果可以看出,波形中存在许多毛刺,这也是本次设计中的不足之处,但总体来说,结果还是比较满意的!5.3 单/双极性变换硬件电路在编码器的设计中,编码的输出是两个单极性的输出,如果下载到fpga实验箱上,最后的编码输出没有办法表示,同理译码器的设计也是一样,因此本次设计采用了一个极性变换电路来解决这个问题。这个电路比较简单,只是用到了cd4052芯片。cc4052 是一个差分4 通道数字控制模拟开关,有a0、a1 两个二进制控制输入端和inh 输入,具有低导通阻抗和很低的截止漏电流
33、。幅值为4.520v 的数字信号可控制峰峰值至20v 的模拟信号。其芯片结构及管脚接法如图5-1所示:vccoutputcodeout1codeout0 gnd图5-1 芯片结构及其接法电路弄好以后就是焊接了,焊接过程要仔细,布局合理,其焊接电路图如图5-2所示:图5-2 极性变换电路实物图第六章 结论通过一步步有条不紊的分析和思考,更重要的是在设计中,根据实际情况,对设计初期的思想做不断完善和改进,因为在设计之前的思路,只能说是一个大体的方向,很多时候,实际的操作和设计要细致和复杂的多,或者原来的想法根本就行不通,得从实际设计的角度一步步来完成了这样一个系统设计。总结一下实际操作的设计过程,
34、可得到如下设计流程图:学习vhdl语言设计分析hdb3码编/解码器功能确定设计方案仿真不通过应用vhdl进行编程对系统仿真测试、选择合适芯片并定义管脚调试达到要求、完成设计系统功能的硬件测试 图6-1 总体设计流程图本次设计的hdb3码编/解码器虽然达到了预期的目的,但是,由于很多方面的影响,和设计时间的要求,在设计很多方面还是存在着不足之处,主要就是以下几个方面:(1) 由于采用双相码表示1、“v”、“b”及0,程序下载到fpga或cpld中,其输出结果并不是“+1”、“-1”、“0”的多电平变化波形,而是单极性双电平信号。必须采用一个四选一的数据选择器(cc4052),二维数组作为cc40
35、52选择地址,在输出端可以得到“+1”、“-1”、“0”变化波形。也可以采用3位2进制码表示,000表示0码,010表示-1,110表示+1,011表示-v,111表示+v,001表示-b,101表示+b。(2) 虽然实现的设计要求的基本功能,但是所用方法较复杂,事实上还可能找到其他的建模方法。(3) 硬件实现的可能性不高。(4) 最后经外围电路输出不是很理想,无法消除毛刺现象,还需继续改进。 这些方面都需要我继续学习下去,在不断的积累当中去想清楚、弄明白,丰富这些问题,当然,在丰富了自己的知识和经验后,问题应会迎刃而解。 通过这次毕业设计,让我学到了很多知识,也获得很多体会,这是自己将平日学
36、的理论知识应用到实际操作中的一次很好的实践。同时,也是通过自己这三个月来的不断学习和努力,才明白:实际操作和设计,并不是像学习理论知识那么简单,会理论不等于就会应用,很多都是经验的东西,需要在自己的努力设计中才能慢慢体会到,设计多了,才会经验中找到设计自如的感觉。就像我,对于vhdl语言,开始也没有什么太大的感觉,看书的时候,很清楚明白它的设计结构和流程是什么样的,但是一旦抛开书本,开始自己编程序的时候,不是这里忘了定义,就是那里忘了结构方式;但是,到了现在,在这段时间的不断实践编程中,程序设计的流程和一些要注意的地方,我都记得很清楚,能很容易的编写一段简单的程序了,也不用看书本帮忙了,这些都
37、是光靠看书本得不到的经验,是我最大的收获。 虽然说,整个系统还存在很多不足,但是,我也并不感到有太多的遗憾,因为面对自己这段时间的辛勤劳动的成果,心里更多的还是万分喜悦!不足之处总是有的,这些就是自己今后需要努力的地方,只要不断的朝着自己的目标的努力,很快就会有解决的那一天!参考文献1 邓勇、周择、邓斌.数字电路设计完全手册.北京: 国防工业出版社,2004。2 段吉海、黄智伟等. 基于cpld/fpga的数字通信系统建模与设计m. 北京:电子工业出版社,2004。3 朱正伟.ead技术及应用.清华大学出版社,2005。4 全国大学生电子设计组委会.电子系统设计实践,2005。5 韦岗、季飞、
38、傅娟. 通信系统建模与仿真m. 北京:电子工业出版社,2007年。6 李环等著. 通信系统仿真设计与应用. 北京:电子工业出版社,2009年。7 郑存芳、隋韦韦、丁丽华.基于eda技术的hdb3编码器的设计与实现ol.2009年。8 林明权.vhdl数字控制系统设计范例. 电子工业出版社。9 冯涛.可编程逻辑器件开发技术maxplus入门与提高,人民邮电出版社。10王毓银.数字电路逻辑设计,高等教育出版社。11赵俊超.集成电路设计vhdl语言教程,北京希望出版社。致谢在这次的毕业设计中,我付出努力的同时,更多的是得到了来自老师们和同学们的热情帮助,其中,我的辅导老师给予我很多的关心和帮助,经常
39、帮助我分析问题,解决困扰,为我设计的顺利进行给予了必要的保证;正是由于得到了这么的帮助和鼓励,我的毕业设计才能一次又一次挑战困难,顺利达到目标,所以,在此,我对所有帮助和关心过我的所有老师和同学们,说一声:衷心的感谢! 附录:基于vhdl语言的hdb3码编/解码器设计程序-序列产生library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity xulie is port(clk,en,reset:in std_logic; dout:out
40、std_logic);end entity ;architecture behave of xulie is signal count11:integer range 0 to 23;begin process(clk,reset) begin if reset=1 then count11=0; elsif clkevent and clk=0 then if en=1 then if count1124 then count11=count11+1; else count11doutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdo
41、utdoutdoutdoutdoutdoutdoutdoutdoutdoutdout=0; end case; end process;end behave;-d触发器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity d isport(d,clk: in std_logic;q: out std_logic);end d;architecture behave of d isbeginprocess(clk)beginif(clkevent andclk=1)thenq=d;end i
42、f;end process;end behave;-编码器library ieee;use ieee.std_logic_1164.all;entity xhdb3 isport(codein:in std_logic;clk: in std_logic;clr: in std_logic;codeout:out std_logic_vector(1 downto 0);end xhdb3;architecture behave of xhdb3 issignal cnt0:integer:=0;signal flag0:integer range 1 downto 0:=0;signal f
43、lag1:integer range 1 downto 0:=0;signal flag2:integer range 1 downto 0:=1;signal flag3:integer range 1 downto 0:=0;signal firstv:integer range 1 downto 0:=0;signal codeoutv:std_logic_vector(2 downto 0);signal s0:std_logic_vector(4 downto 0):=00000;signal codeoutb:std_logic_vector(2 downto 0);signal
44、s1:std_logic_vector(4 downto 0):=00000;signal clkb:std_logic;signal clkv:std_logic;signal clkout:std_logic;signal s2:std_logic_vector(4 downto 0):=00000;signal s3:std_logic_vector(2 downto 0);component dffport(d :in std_logic;clk:in std_logic;q :out std_logic);end component;begin-vclk:clkv=clk after
45、 10 ns;add_v:process(clk,clr)beginif clkevent and clk=1thenif clr=1thencodeoutv=000;cnt0cnt0=0;if(flag0=0)thencodeoutv=110;flag0=1;elsecodeoutv=010;flag0if cnt0=3 thenif firstv=0 thenif flag0=0 thencodeoutv=011;flag1=0;elsecodeoutv=111;flag1=1;end if;firstv=1;elseif flag1=0 thencodeoutv=111;flag1=1;
46、flag0=1;elsecodeoutv=011;flag1=0;flag0=0;end if;end if;cnt0=0;elsecnt0=cnt0+1;codeoutvcodeoutv=000;cnt0=cnt0;end case;end if;end if;end process add_v;s0(0)=codeoutv(0);s1(0)=codeoutv(1);s2(0)=codeoutv(2);ds21:dff port map(s2(0),clk,s2(1);ds11:dff port map(s1(0),clk,s1(1);ds01:dff port map(s0(0),clk,
47、s0(1);ds22:dff port map(s2(1),clk,s2(2);ds12:dff port map(s1(1),clk,s1(2);ds02:dff port map(s0(1),clk,s0(2);ds23:dff port map(s2(2),clk,s2(3);ds13:dff port map(s1(2),clk,s1(3);ds03:dff port map(s0(2),clk,s0(3);bclk:clkbflag3=1;s2(4)=s2(3);s1(4)=s1(3);s0(4)flag3=0;s2(4)=s2(3);s1(4)=s1(3);s0(4)if flag3=0 thens2(4)=1;s1(4)=0;s0(4)=1;flag3=1;elses2(4)=s2(3);s1(4)=s1(3);s0(4)=s0(3);end if;flag2if flag3=0 thens2(4)=s2(3);s1(4)=s1(3);s0(4)=s0(3);e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 办公设备购销合同专业版
- 小产权房买卖合同参考范本
- 农村房屋继承协议书样式
- 工程委托设计合同示范
- 代征税款委托协议样本
- 合肥市建筑材料购销合同
- 员工劳动合同范本规范文本
- 员工购房抵押贷款合同范本
- 彩色钢板工程承包合同模板
- 2024年农村土地买卖协议书范本
- 初中信息技术川教八年级上册 我的视频类数字故事制作视频类数字故事教案李彦欣
- 《“探界者”钟扬 》电子课件
- 部编初中历史八年级上册教案(全册)
- GB∕T 33609-2017 软质泡沫聚合材料 滞后损失试验方法
- 【人才评估】如何绘制人才画像
- 199管理类联考综合写作答题纸完美版
- 二年级单脚起跳双脚落地
- 三方战略合作框架协议-中英文Co-operation-Agreement
- 三相异步电动机正反转控制线路教学设计
- 旅行社派团单
- 拼音aoe四声(课堂PPT)
评论
0/150
提交评论