欢迎来到专业的无忧考公务员网!

注册登陆 我要投稿
当前位置:无忧考公务员网>考试心得 >

一种类曼彻斯特译码接收模块的VHDL设计

日期:2018-07-17 10:49:06 浏览次数:

  【摘 要】基于FPGA芯片采用类曼彻斯特组码方式,设计和仿真了串行数据传输过程中译码接收模块的功能。首先对译码接收模块的硬件电路进行设计,其次结合LVDS硬件电路和芯片端口重点分析和编写了各模块的VHDL程序,最后采用Isim对设计功能进行波形仿真,验证了设计的准确性。
  【关键词】类曼彻斯特;VHDL;设计
  0 引言
  类曼彻斯特码[1]是一种利用自同步法保持位同步的线路码型,在传输数字信息的同时,也将同步时钟信号一起传输到对方,它用上升沿来表示一个码元的开始,然后连续两个时钟信号的高电平表示“1”,对应编码数据“0100”,反之连续两个时钟的低电平表示“0”,对应编码数据“0111”。经类曼彻斯特编码后,无论是数据“1”还是数据“0”,在开始的时候都有一个上升沿,包含了时钟信息,正是具有这一特点,在现代通信中得到了广泛的应用。我们采用类曼彻斯特码,设计和仿真了串行数据传输过程中译码接收模块的功能。
  1 LVDS技术介绍
  LVDS[2]是一种低摆幅的差分信号技术,具有终端适配简洁方便、低功耗、低成本、高速传输等优点,并且能对传输数据进行时效保护,确保了数据传输的可靠性。LVDS使得信号能够在差分平衡电缆上以几百Mbps[3]的速率传输,其低压幅和低电流的驱动输出完全达到了低噪声和低功耗的要求。采用LVDS技术设计的接收器引进恒流式驱动方式,准许带电插入,对系统不会造成任何损坏,适用于高速数据的传输。
  差分信号的抗噪特性在理想状态[4]下,所谓理想状态是指线路没有干扰时,发送端IN= IN+-IN-,接收端IN+-IN-=OUT,发送端信号等于接收端信号。在非理想状态下,非理想状态是指线路有干扰时,发送端IN=IN+-IN-,接收端(IN++q)-(IN-+q)= IN+-IN-=OUT,噪声在输出端被抑制掉,所以输入端信号依旧等于输出端信号。从两种状态的分析可知差分方式可以很好的抑制噪声,确保数据准确无误的传输。
  2 硬件设计
  图1 LVDS译码接收电路
  硬件设计采用LVDS差分电路,LVDS译码接收电路如图1所示,电路中临近接收器端并接了两个51Ω的电阻,电阻间对地接了10pF的电容,能够起到消除共模干扰的作用。在传输过程中使用双绞屏蔽电缆,该电缆具有良好的传输特性,主要参数为时间延时4.3ns/m(max) [5],2芯时延差0.1ns/m(max),特性阻抗(94~106)Ω,衰减32db/100m(80Mhz)。采用这种方式设计电路一方面能够提高系统的抗干扰性,另一方面能够保证数据传输的准确性。
  3 软件设计
  译码接收过程可分为三步进行:第一步,检测接收的数据是否为有效数据,若不是则重新开始新的十七位数据译码;第二步,对十七位数据进行类曼彻斯特译码;第三步,将生成的校验位(对接收的数据进行偶校验的结果)与编码时生成的校验位进行比较,若相等则将译码后的十六位数据发送出去。具体VHDL程序可以分为数据定义、数据缓存、数据有效性判断和数据转换及校验四大模块,其中最后一个模块和编码程序类似,本文就不再阐述。
  3.1 数据定义模块
  数据及输入输出端口定义模块程序为:
  module Manchester_Decoder(clk,rst,sdi,in_data) ;
  input clk,rst;input sdi;
  output [15:0] in_data;
  3.2 数据缓存模块
  数据缓存模块中数据传输采用逐位传递方式,具体程序为:
  reg [4:0] sdi_delay;always @(posedge clk)
  begin
  sdi_delay[4:1]<=sdi_delay[3:0];//空出最后一位待放新接收的数据
  sdi_delay[0]<=sdi;//将接收到的数据放入缓存
  end
  3.3 数据有效性判断模块
  在对数据有效性进行判断时要分别对连续“1”和连续“0”的个数进行判断,具体程序为:
  reg [7:0] hign_count,low_count;
  always @(posedge clk or posedge sdi_delay[0])
  begin
  if(sdi_delay[0]==1"b1)
  begin
  hign_count<=hign_count+1;//判断接收数据中连续1的个数
  low_count<=8"d0;
  end
  else
  begin
  hign_count<=8"d0;
  low_count<=low_count+1; //判断接收数据中连续0的个数
  end
  end
  4 测试和仿真
  若接收到的数据为0100-0100-0100-0100-0100-0100-0100-0100-0100-0100-0100-0100-01 11-0111-0111-0111-0111,则经过译码后的数据应为0x001F。采用ISim进行波形仿真,验证译码模块功能的准确性,ISim测试代码为:
  initial begin
  clk = 0;rst = 0;
  bufd=72"b0100_0100_0100_0100_0100_0100_0100_0100_0100_0100_0100_0100_0111_0111_0111_0111_0111;#100 rst=1;
  end(下转第187页)
  always #5 clk=~clk;always@(posedge clk) bufd<=bufd>>1;assign sdi=bufd[0];
  从图2中我们可以看出,当数据接收完成后,译码输出数据为0x001F,和预期设计功能相符。
  【参考文献】
  [1]江晓林,等.通信原理[M].哈尔滨工业大学出版社,2010.
  [2]刘江海.EDA技术[M].华中科技大学出版社,2009.
  [3]王晓聪.基于FPGA的HDB3码编码器优化设计与分析[J].现代电子技术,2011.
  [4]杨少春.类曼彻斯特编

一种类曼彻斯特译码接收模块的VHDL设计

解码器设计及应用[J].器件与电路,2012.
  [5]樊昌信.现代通信原理[M].人民邮电出版社,2011.
  [责任编辑:刘帅]

声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。

Copyright©2024无忧考公务员网 www.51kaogwy.cn 版权所有