、译码器设计实例曼彻斯特(Manchester)码又称裂相码、双向码,是信道编码常用的码型。本节分析曼彻斯特码的特征,给出曼彻斯特码的编码电路与译码电路,用VerilogHDL语言进行建模与仿真。(Manchestercode,又称裂相码、双向码),是一种用电平跳变来表示1或0的编码,其变化规则很简单,即每个码元均用两个不同相位的电平信号表示,也就是一个周期的方波,但0码和1码的相位正好相反。其对应关系为:0=>01(相位为零);1=>10(相位为180)。波形图如图11-64所示。曼彻斯特编码是一种自动同步的编码方式,即时钟同步信号就隐藏在数据波形中。在曼彻斯特编码中,每一位的中间有一次跳变,中间的跳变既作时钟信号,又作数据信号;从高到低跳变表示"1",从低到高跳变表示"0"。曼彻斯特编码是将时钟和数据包含在数据流中,在传输代码信息的同时,也将时钟同步信号一起传输到对方,每位编码中有一次跳变,不存在直流分量,因此具有自同步能力和良好的抗干扰性能。但每一个码元都被调制成两个电平,所以数据传输速率只有调制速率的1/2。,设计曼彻斯特编码器的方法如下:如果输入数据为"1",则转换为"10";如果输入数据为"0",则转化为"10",然后把它们串行化输出。VerilogHDL代码如下:,modulemcode(clk,databin,datamout);,,inputclk;//时钟信号,inputdatabin;//数据输入,,outputdatamout;//曼彻斯特编码输出,,regdatamout;?regflag;//标志信号,,reg[1:;,,,,always@(posedgeclk),,begin,,if(flag==1'b0),,begin,,if(databin==1'b0)//当数据为"0"时,转换为"01",,begin,,com<=2'b01;,?end,,else//当数据为"1"时,转换为"10",,begin,,com<=2'b10;,,end,,end,,end,,,,always@(posedgeclk)//曼彻斯特编码输出进程,,begin,?if(flag==1'b1),,begin,,datamout<=com[1];,,flag<=~flag;,,end,,else,,begin,,datamout<=com[0];,,flag<=~flag;,,end,?end,,,,endmodule代码分析:由于曼彻斯特码在码型上实际是把原来的一个码元转换成两个码元,因此每输出两个码元才进行一次数据码元的采样,用标志信号flag来指示。,单击Files?Create/Update?CreateSymbolFilesforCurrentFile命令,。新建一个原理图文件,在原理图空白处双击,在弹出的Symbol对话框中选择Project?mcode模块,单击OK按钮退出Symbol对话框。在原理图的适当位置放置mcode模块,并添加输入输出模块。,模块连接图如图所示。11-65编译工程文件,编译无误后单击Proc
曼彻斯特码介绍 来自淘豆网m.daumloan.com转载请标明出处.