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

2014-04-29 13:56顾涵丁力瞿佳韵
山东工业技术 2014年1期
关键词:设计

顾涵 丁力 瞿佳韵

【摘 要】基于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]杨少春.类曼彻斯特编解码器设计及应用[J].器件与电路,2012.

[5]樊昌信.现代通信原理[M].人民邮电出版社,2011.

[责任编辑:刘帅]

猜你喜欢
设计
二十四节气在平面广告设计中的应用
何为设计的守护之道?
《丰收的喜悦展示设计》
基于PWM的伺服控制系统设计
基于89C52的32只三色LED摇摇棒设计
基于ICL8038的波形发生器仿真设计
瞒天过海——仿生设计萌到家
设计秀
有种设计叫而专
从平面设计到“设计健康”