基于fpga的hdb3编译码的建模与实现--第六稿(定稿内容摘要:

TB=S1(4)amp。 S0(4)。 在此添加“B”的功能模块中,例如程序代码为:(CODEOUTV=01)THEN IF(COUNT1=0)THEN FIRST_1=39。 139。 COUNT1=1。 S1(4)=S1(3)。 S0(4)=S0(3)。 表示当输入的代码CODEOUTV=01时,判断计“1”计数器COUNT1的状态,当为0时,即V之间的非0符号为偶数时,对遇一寄存器FIRST_1赋1,计“1”计数器COUNT1赋1移位寄存器里的数值分别向高位移一位。 根据HDB3码的编码规则,可知 “V”的极性是正负交替变换的,而余下的“1”和“B”本毕业设计把其看成为一体且是正负交替变换的,同时满足“V”的极性与前面的非零码极性一致。 由此本毕业设计就把“1”和“B”看成一组,而“V”单独作为一组来做正负交替变换。 同时,“1”、 “V”,“B”已经分别用双相码“01”,“11”,“10”标识,所以对“1”,“V”, “B”的正负交替变换很容易实现。 、。 单双极性变换控制的程序流程图—“01”和“10”部分 单双极性变换控制的程序流程图—“11”部分“00”部分其中在图中:①以01表示+1。 ②以11表示1。 ③以00表示0。 以下是部分实现单双极性变换控制功能的关键代码,具体程序见附录一。 IF(CLK39。 EVENT AND CLK=39。 139。 )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(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 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=01。 FLAGOV=1。 表示输入的信号为11时,当FLAGOV=0和FLAGOB=0,即在前面的输入数据中均未遇到V或B,所以输出的代码为CODEOUTB=“11”,“11”表示破坏符号V,所以还要对FLAGOV赋值说明此处遇到符号V。 ,上述的程序下载到FPGA中最终的输出结果并不是“1”,“+1”,“0”的多电平变化波形,而是单极性双电平的信号。 在本设计中采用的单双极性变换的芯片是双四选一数模选择器CD74HC4052。 其中芯片的特性如下: CD74HC4052引脚图 CD74HC4052的DA转换特性图,: 单双极性转换电路框图其中CODEOUT0和CODEOUT1是来自FPGA芯片EPF10K20TC1444输出的两个引脚,CODEOUT1为高位,CODEOUT0为低位。 ,当输入CODEOUT0=0,CODEOUT1=0,选通X0,即把X0引脚上的输入电压通过引脚X输出;同理,当输入CODEOUT0=1,CODEOUT1=0,X输出为引脚X1上的电压;输入为CODEOUT0=1,CODEOUT1=1,X输出为引脚X3上的电压。 HDB3码编码器的波形仿真及分析 输入全 “0”时编码输出 输入全“1”时编码输出 输入“000000000000001000000……”时编码输出 输入“100001000011000011000010” 时编码输出由仿真波形可以得出:CODEIN: 00000000000000000000……CODEOUT:0100000111000011010000011100001101000001……CODEIN: 11111111111111111111…… CODEOUT:0111011101110111011101110111011101110111……CODEIN: 00000000000001000000……CODEOUT:01000001110000110100000100110000000110100……CODEIN: 100001000011000011000010CODEOUT:010000000111000000110111010000011101110000110100~,其输出的代码与根据HDB3码编码原理算出来的代码完全一致,满足实时通信对延迟的要求。 同时从QUARTUSⅡ上可以看出,编码器系统占用了75个逻辑单元,逻辑单元的占用率为7%,利用了5个芯片引脚,引脚的占用率为5%,对于存储单元的占用率为0,由此可知,此编码器的方案可行,系统资源的占用率低,有利以后为系统进行升级优化。 小结本章主要介绍了HDB3码编码的建模和实现的方法,并基于VHDL语言采用模块化的设计方法进行了实现,对于HDB3码的实现本章使用了三个模块:添加破坏点V模块,添加B模块,单/双极性变换模块,由于在EDA的平台上不能处理负信号的缘故,本文对HDB3码极性变换采用硬件电路来实现,取得了较好的效果。 对编码进行了仿真,以仿真结果来看编码过程是正确的。 从实现的过程来看,基于EDA平台上采用模块化的设计的优点是在于工作的过程中,可以把编辑的代码下载到硬件平台上直接校验其正确性从而节省了系统的开发时间,同时采用模块化的设计便于查找出在编译系统是发生的错误,便于以后对系统进行升级优化。 基于FPGA的HDB3编译码的建模与实现 HDB3码译码器的建模与实现第四章 HDB3码译码器的建模与实现 HDB3码的译码规则及建模根据HDB3码的编码规则,V脉冲的极性必然和前面非0脉冲的极性一致。 而当无V脉冲时,HDB3码的脉冲是“+1”和“1”交替变换出现的。 而当连续出现两个“+1”或“1”时,若无误码时,则可知后一个一定是V脉冲。 因而可从所接收的信码中找到V码,然后根据加取代节的原则,在V码前面的三位代码必然是取代码,在译码时,需要全部复原为四个连“0”。 只要找到V码,不管V码前面两个码元是“0”码,还是3个“0”码,只要把它们一律清零,就完成了扣V和扣B的功能,进而得到原来的二元信码序列。 :双/单极性变换检测V和扣V扣B双相码HDB3NRZ HDB3码译码器模型,HDB3码的译码器模型中,是由单双极性变换电路和V检测扣V扣B两个模块组成。 单双极性变换电路实现代码的双单极性的变换,而扣V和扣B电路在时钟的控制下,完成扣B和扣V的 功能的。 由前面分析可知,EDA软件QUARTUSⅡ是不能在波形仿真中处理双/单极性变换的,因此,本文采用一个外部硬件电路来实现双/单极性的变换。 译码中双/单极性的实现在本论文设计中,HDB3码的双单极性的变换是以AD790和SE5539为核心芯片组成的硬件电路;AD790是一种低功耗、低偏置电压双通道的电压比较器,还是一种高精度的电压比较器,~+。 SE5539是一种高频率的集成运放电路。 ,此双/单极性变换是由AD790和SE5539为核心来实现双单极性的变换,图中输入信号HDB3_IN来自编码模块的HDB3_OUT端口,其上半部分在未接反相器74LS04与后面的部分电路时,电路是一个双限比较器(窗口比较器),当+5HDB3_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。 译码的硬件实现部分 基于VHDL译码器的实现根据译码器的译码原理。 根据图示可以看出,HDB3码的译码器比较的简单,在其程序模块中,只有计“+1”计数器COUNT01,计“1”计数器COUNT10和一个5位的移位寄存器所组成。 HDB3码译码器的程序设计,译码器的程序设计的难点是在于设计一个五位的移位寄存器,本程序中的移位寄存器是采用标准逻辑量来实现的,与前面的编码器是采用D HDB3码译码器程序流程图触发器来实现的略有不同,现给出HDB3码译码器的部分代码,完整的代码请参见附录二。 PROCESS(CLK,CLR) BEGIN IF(CLK39。 EVENT AND CLK=39。 139。 )THEN IF(CLR=39。 139。 )THEN COUNT01=0。 COUNT10=0。 REG0=39。 039。 REG1=39。 039。 REG2=39。 039。 REG3=39。 039。 REG4=39。 039。 ELSEIF(HDB3_DATA=01)THEN +1 IF(COUNT01=1)THEN 101 ……………………………… 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=39。 139。 REG1=REG0。 REG2=REG1。 REG3=REG2。 REG4=REG3。 1 END IF。 ELSE COUNT01=COUNT01。 COUNT10=COUNT10。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。