首页 HDB3码编码器及解码器verilog代码编程及实现演示幻灯片

HDB3码编码器及解码器verilog代码编程及实现演示幻灯片

举报
开通vip

HDB3码编码器及解码器verilog代码编程及实现演示幻灯片通信原理消息数字基带信号调制传输解调基带信号解码消息基带信号的选择:AMI码HDB3码HDB3码保持了AMI码的优点,克服了AMI码在遇到连“0”长时难以提取定时信息的困难,因而获得广泛应用。HDB3码编码规则HDB3码为3阶高密度双极性码,其编码规则为:1将消息代码转换为AMI码;2检查AMI码中连“0”的情况,出现4个或4个以上连“0”时,将第4个“0”变为与前一个非“0”符号同极性的符号,用“V”标识(+V和-V);3、检查相邻V符号之间非“0”符号是否为偶数,如果为偶数,则将当前V符号前一个非“0”符号后的...

HDB3码编码器及解码器verilog代码编程及实现演示幻灯片
通信原理消息数字基带信号调制传输解调基带信号解码消息基带信号的选择:AMI码HDB3码HDB3码保持了AMI码的优点,克服了AMI码在遇到连“0”长时难以提取定时信息的困难,因而获得广泛应用。HDB3码编码规则HDB3码为3阶高密度双极性码,其编码规则为:1将消息代码转换为AMI码;2检查AMI码中连“0”的情况,出现4个或4个以上连“0”时,将第4个“0”变为与前一个非“0”符号同极性的符号,用“V”标识(+V和-V);3、检查相邻V符号之间非“0”符号是否为偶数,如果为偶数,则将当前V符号前一个非“0”符号后的第一个“0”变为“B”,”B”的极性与前一个非”0“符号相反,并使“V”后的非“0”符号从“V”开始再交替变化。编码器实现:在实际电路设计时,先在纯粹的数字电路下完成插“V”的操作,再完成插“B”的操作;然后再将单极性变成双极性。这样可以在数字电路中实现,且降低寄存器需求。因为“V”、“B”是认为标识的符号,所以在具体电路中,需做以下替换:0-00,1-01,V-11,B-10。设计步骤:插“V”的实现:1、设置连“0”计数器,复位为0;2、对输入信号进行判断,如果为1则计数器复位,且输出“01”;3、如果为“0”,则对“0”进行计数,如果计数值不为4,则输出“00”;4、如果计数值为“4”,则计数器复位,同时输出为“11”。moduleadd_v(data_in,clk,data_out);inputdata_in;inputclk;output[1:0]data_out;reg[1:0]data_out;regcounter;always@(posedgeclk)if(data_in==1'b1)begincounter<=0;data_out<=2'b01;endelsebegincounter<=counter+1;if(counter==3)begindata_out=2'b11;counter=0;endelsebegindata_out=2'b00;endendendmoduleRTL图插“B”的实现:1、设置对“01”的计数器counter为0,设置对“11”的计数器firstV为0;2、对输入进行判断,如果为“01”,则counter加1,仍然输出“01”;3、如果输入为“00”,输出为“00”,计数器不变;4、如果输入为“11”,firstV加1,此时如果counter为奇数,则输出仍为“11”;5、如果counter为偶数,则将counter复位,且将此处前第4个数变成“10”。关键要设置四位的移位寄存器moduleadd_b(add_in,addb_out,clk);inputclk;input[1:0]add_in;output[1:0]addb_out;regfirstv;regcounter;reg[1:0]d[3:0];always@(posedgeclk)begind[3]<=d[2];d[2]<=d[1];d[1]<=d[0];d[0]<=add_in;endalways@(posedgeclk)beginif(d[0]==2'b11)begincounter=0;firstv=0;endelseif(d[0]==2'b01)begincounter=counter+1;firstv=1;endelsebeginfirstv=1;endendassignaddb_out=(counter==0)&&(firstv==1)&&(d[0]==2'b11)?2'b10:d[3];endmoduleRTL图单双极性变换:由HDB3编码规则,“V”的极性是正负交替,而“1”和“B”的极性看成一体,为正负交替的,同时“V”的极性与前面的非“0”码一致。1、设置一个极性标志even=0;2、如果输入信号为“00”,输出仍为“00”;3、输入为“01”,或“10”,如果even=1,输出“01”;如果even=0,输出为“10”,然后将even翻转;4、如果输入为“11”,判断even,如果为1,则输出“10”,如果位0,输出“01”。注意:输出后的“10”和“01”表示的不再是“1”、“V”、和“B”了,而是标识符号的正负极性。再将输出控制4选1的开关,就可以将“00”、“01”、“10”转化为0、+1和-1了。modulepolar(addb_out,clk,BP,BN);input[1:0]addb_out;inputclk;outputBP,BN;reg[1:0]polar_out;regBP,BN;regeven;always@(posedgeclk)if(addb_out==2'b11)beginif(even==1)beginpolar_out<=2'b01;endelsebeginpolar_out<=2'b11;endendelseif(addb_out==2'b01||addb_out==2'b10)if(even==1)begineven<=0;polar_out<=2'b11;endelsebegineven<=1;polar_out<=2'b01;endelsebeginpolar_out<=2'b00;endalways@(polar_out)beginif(polar_out==2'b01)beginBP=0;BN=1;endelseif(polar_out==2'b11)beginBP=1;BN=0;endelsebeginBP=0;BN=0;endendendmoduleRTL图顶层模块设计modulebian(clk,data,BP,BN);inputclk,data;outputBP,BN;add_vu1(.clk(clk),.data_in(data),.data_out(a));add_bu2(.clk(clk),.add_in(a),.addb_out(b));polaru3(.clk(clk),.addb_out(b),.BP(BP),.BN(BN));endmoduleRTL图译码器:译码原理:根据编码规则,破坏点V脉冲与前一个脉冲同极性。因此可从所接受的信码中找到V码,然后根据加取代节的原则,V码与前面的三位码必然是取代码,需要全部复原为四连0。只要找到V码,不管V码前是两个“0”码,一律把取代节清零,完成了扣V扣B功能,进而得到原二元信码序列。可实现HDB3译码的模型框图如图4-1所示,HDB3译码器包括双/单极性变换、V码检测、时钟提扣V扣B四部分组成。正整流负整流+V码检测-V码检测相加器相加器扣V扣B时钟提取HDB3码双/单极性变换V码检测BP,BN转换模块moduletrans(clk,BP,BN,P,N);inputclk,BP,BN;outputP,N;reg[1:0]P;reg[1:0]N;always@(posedgeclk)beginif(BP==0)P=2'b00;elseP=2'b01;if(BN==0)N=2'b00;elseP=2'b01;endendmodule(1)+V检测模块为了方便起见,设从正整流电路输出的信号为+B,从负整流电路输出的信号为-B。+V码检测模块-B的控制下,对输入的+B进行检测。其原理是:当+B的上升沿到来时,对输入的+B脉冲进行计数,当计数值等于2时,输出一个脉冲作为+V脉冲,同时计数器清零,而且计数期间,一旦有-B信号为“1”电平时,立即对计数器清零,计数器重新从零开始计数。这是因为在两个+B脉冲之间,存在-B脉冲,说明第二个+B脉冲不是+V码,而只有在连续两个+B脉冲之间无-B脉冲,才能说明这两个+B脉冲在HDB3码中,是真正同极性的于是就可以判定第二个+B脉冲实际上是+V码,达到检测+V码的目的。(2)-V检测模块V码检测原理与+V码检测的类似。所不同的是,-V码检测电路在+B控制下,对来自-B信号进行计数和检测、判定,若检测到-V码,则输出到-V码信号modulefindv(clk,P1,N1,out1,out2);inputP1,N1,clk;outputout1,out2;reg[1:0]counter1;reg[1:0]counter2;reg[1:0]out1;reg[1:0]out2;always@(posedgeclk)beginif(P1==2'b01)beginif(counter2==2'b10)counter1<=2'b00;elsebegincounter1<=counter1+1;if(counter1==2'b10)beginout1<=2'b11;counter1<=2'b00;endelsebeginout1<=2'b01;endendendelseout1=2'b00;endalways@(posedgeclk)beginif(N1==2'b01)beginif(counter1==2'b10)counter2<=2'b00;elsebegincounter2<=counter2+1;if(counter2==2'b10)beginout2<=2'b11;counter1<=2'b00;endelsebeginout2<=2'b01;endendendelseout2<=2'b00;endendmodule(3)扣V扣B模块扣V扣B模块有三个输入信号,即时钟信号、V码信号和来自正、负整流输出的和路信号。由于该和路信号可能包含有B脉冲和V脉冲,因此需要在扣V扣B模块中,去除V和B脉冲。本模块的建模方法是,用V码检测模块所检测出的V码信号,去控制一个移位寄存器,若未碰到V脉冲,则整流输出合成信号在时钟的节拍下,顺利通过移位寄存器,当碰到有V脉冲时,该V脉冲将使移位寄存器清零。考虑到四连0,即V脉冲及其前面的三个码元应为0码,所以,可设置四位的移位寄存器,当V码清零时,同时将移存器中的四位码全变为0。不管是否有B脉冲,在此模块中,一并清零,因而无需另设扣B电路。另外移位四位寄存器起到延时四位时钟周期的作用,以使所检测出的V脉冲与信号流中的V脉冲位置对齐,保证清零的准确性modulechvb(in,clk,out);inputclk;input[1:0]in;output[1:0]out;reg[1:0]d[3:0];always@(posedgeclk)begind[3]<=d[2];d[2]<=d[1];d[1]<=d[0];d[0]<=in;endalways@(posedgeclk)beginif(d[3]==2'b11)begind[0]=00;d[1]=00;d[2]=00;d[3]=00;endendendmodule信号叠加模块modulejia(in1,in2,clk,out0);input[1:0]in1;input[1:0]in2;inputclk;outputout0;reg[1:0]a;reg[1:0]b;always@(posedgeclk)begina<=in1;b<=in2;endassignout0=a+b;endmodule顶层模块moduleyima(clk,BP,BN,out3);inputclk,BP,BN;outputout3;wirea,b;transu1(.clk(clk),.BP(BP),.BN(BN),.P(P),.N(N));findvu2(.clk(clk),.P1(P),.N1(N),.out1(out1),.out2(out2));chvbu3(.clk(clk),.in(out1),.out(a));chuvbu4(.clk(clk),.in(out2),.out(b));jiau5(.clk(clk),.in1(a),.in2(b),.out0(out3));endmodule
本文档为【HDB3码编码器及解码器verilog代码编程及实现演示幻灯片】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
机构认证用户
夕夕资料
拥有专业强大的教研实力和完善的师资团队,专注为用户提供合同简历、论文写作、PPT设计、计划书、策划案、各类模板等,同时素材和资料部分来自网络,仅供参考.
格式:ppt
大小:1MB
软件:PowerPoint
页数:0
分类:生产制造
上传时间:2021-05-21
浏览量:2