基于FPGA的HDB3编译码的建模与实现 HDB3码编码器的建模与实现
其中在图中:①以01表示+1。②以11表示-1。③以00表示0。 3.3.2单/双极性变换的VHDL实现
以下是部分实现单双极性变换控制功能的关键代码,具体程序见附录一。
IF(CLK'EVENT AND CLK='1')THEN
IF((CODEOUTB=\ --1/B IF(FLAGOB=0)THEN IF(FLAGOV=0)THEN CODEOUT<=\ FLAGOB<=1;
ELSIF(FLAGOV=1)THEN CODEOUT<=\ FLAGOB<=2;
ELSIF(FLAGOV=2)THEN CODEOUT<=\ END IF;
ELSIF(FLAGOB=1)THEN CODEOUT<=\ FLAGOB<=2;
ELSIF(FLAGOB=2)THEN CODEOUT<=\
FLAGOB<=1; --判01/10
END IF;
ELSIF(CODEOUTB=\ IF(FLAGOV=0)THEN ???????????? ELSIF(FLAGOV=1)THEN ELSIF(FLAGOV=2)THEN CODEOUT<=\
FLAGOV<=1; --判V
--FLAGOV/FLAGOB:0表示还未遇到V/B,1表示遇到奇数个V/B,2表示遇到偶数个V/B ELSE
CODEOUT<=\ FLAGOB<=FLAGOB;
14
基于FPGA的HDB3编译码的建模与实现 HDB3码编码器的建模与实现
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=\ IF(FLAGOV=0)THEN IF(FLAGOB=0)THEN CODEOUT<=\ FLAGOV<=1;
表示输入的信号为11时,当FLAGOV=0和FLAGOB=0,即在前面的输入数据中均未遇到V或B,所以输出的代码为CODEOUTB=“11”,由于在3.2.2节中可知“11”表示破坏符号V,所以还要对FLAGOV赋值说明此处遇到符号V。 3.3.3单/双极性变换的硬件实现
由3.3.2分析可知,上述的程序下载到FPGA中最终的输出结果并不是“-1”,
“+1”,“0”的多电平变化波形,而是单极性双电平的信号。在本设计中采用的单双极性变换的芯片是双四选一数模选择器CD74HC4052。其中芯片的特性如下:
图3.7 CD74HC4052引脚图
15
基于FPGA的HDB3编译码的建模与实现 HDB3码编码器的建模与实现
表3.1 CD74HC4052的DA转换特性图
由表3.1得出把单极性转换成双极性的电路图,如图3.8所示:
U1-5R1711500 Ohm+5R21416500 Ohm109X1VDDVEEX3XYY3Y2Y1Y01334251HDB3_OUTCODEOUT0CODEOUT1ABX0EN1260CD74HC4052
图3.8 单双极性转换电路框图
其中CODEOUT0和CODEOUT1是来自FPGA芯片EPF10K20TC144-4输出的两个引脚,CODEOUT1为高位,CODEOUT0为低位。如图3.8所示,当输入CODEOUT0=0,CODEOUT1=0,选通X0,即把X0引脚上的输入电压通过引脚X输出;同理,当输入CODEOUT0=1,CODEOUT1=0,X输出为引脚X1上的电压;输入为CODEOUT0=1,CODEOUT1=1,X输出为引脚X3上的电压。
16
基于FPGA的HDB3编译码的建模与实现 HDB3码编码器的建模与实现
3.4 HDB3码编码器的波形仿真及分析
图3.9 输入全 “0”时编码输出
图3.10 输入全“1”时编码输出
图3.11 输入“000000000000001000000……”时编码输出
17
基于FPGA的HDB3编译码的建模与实现 HDB3码编码器的建模与实现
图3.12 输入“100001000011000011000010” 时编码输出
由仿真波形可以得出:
CODEIN: 00000000000000000000??
CODEOUT:0100000111000011010000011100001101000001?? CODEIN: 11111111111111111111??
CODEOUT:0111011101110111011101110111011101110111?? CODEIN: 00000000000001000000??
CODEOUT:01000001110000110100000100110000000110100?? CODEIN: 100001000011000011000010
CODEOUT:010000000111000000110111010000011101110000110100 从图3.9~图3.12可知,其输出的代码与根据HDB3码编码原理算出来的代码完全一致,从码元的输入到编码输出的延迟为913.2ms,满足实时通信对延迟的要求。同时从QUARTUSⅡ上可以看出,编码器系统占用了75个逻辑单元,逻辑单元的占用率为7%,利用了5个芯片引脚,引脚的占用率为5%,对于存储单元的占用率为0,由此可知,此编码器的方案可行,系统资源的占用率低,有利以后为系统进行升级优化。
3.5 小结
本章主要介绍了HDB3码编码的建模和实现的方法,并基于VHDL语言采用模块化的设计方法进行了实现,对于HDB3码的实现本章使用了三个模块:添加破坏点V模块,添加B模块,单/双极性变换模块,由于在EDA的平台上不能处理负信号的缘故,本文对HDB3码极性变换采用硬件电路来实现,取得了较好的效果。
对编码进行了仿真,以仿真结果来看编码过程是正确的。从实现的过程来看,基于EDA平台上采用模块化的设计的优点是在于工作的过程中,可以把编辑的代码下载到硬件平台上直接校验其正确性从而节省了系统的开发时间,同时采用模块化的设计便于查找出在编译系统是发生的错误,便于以后对系统进行升级优化。
18
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库AS - 001基于FPGA的HDB3编译码的建模与实现 - 图文(4)在线全文阅读。
相关推荐: