微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于Virtex-5 FPGA的高速串行传输系统的设计与实现

基于Virtex-5 FPGA的高速串行传输系统的设计与实现

时间:08-27 来源:互联网 点击:

串行写操作,根据硬件电路的设计,程序采用串行的写操作时序。当ICS8442的nP_LOAD置为高电平和S_LOAD置为低电平时,芯片实现串行操作。操作时序如图4所示。

当S_LOAD置为低且nP_LOAD置为高之后,数据在S_CLOCK的上升沿处寄存在缓冲器中,在S_LOAD的下降沿处将数据锁存到寄存器M,N中。

由于AURORA光纤通信的输出时钟频率设定的是125MHz,结合硬件电路的设计,硬件晶振的频率为20MHz,因此选择M值为000011001(25),N的值为10(4),故时钟芯片的时钟输出频率为:

时钟控制模块的实测时钟信号如图5所示。

图5是用Chipscope在线逻辑分析仪得到的波形,由于Chipscope在线逻辑分析仪的触发时钟是100MHz,因此在抓取125MHz的时钟信号时,在图上显示的时钟信号占空比不定,若将时钟芯片产生的时钟频率降低,则此现象消失。

2.2 AURORA发送模块

在生成AURORA IP CORE时,同时生成了一个基于AURORA协议的例示程序。因此,要实现基于AURORA协议的光纤通信,在发送端只需要在frame_gen_i模块将要发送的数据打包,然后通过AURORA模块发送出去。因此该模块着重介绍如何将上一级传送过来的数据进行打包压缩,形成适合AURORA协议的数据帧,通过AURORA协议发送到接收端。图6为frame_gen_i模块的RTL级模型图。

考虑到上一级传输数据速率可能会与AURORA传输的时钟频率不同,因此在发送端建立一个FIFO来做缓冲器。并且AURORA协议的发送时序图如图7所示。可以看出,TX_SOF_N为数据包帧的开始标志,TX_EOF_N为数据包帧的结束.标志,TX_REM[0:r(n)]记录最后的传输数据的线程,TX_SRC_RDY_N为低代表数据有效,TX_DST_RDY_N为低代表准备好接受数据,TX_D[0:(8n-1)]是此模块的输出数据。以上信息是AURORA协议的发送时序,在使用FIFO做缓冲时也应该遵循这样的协议。

发送端的FIFO模块分别包括FIFO的复位信号、FIFO空、FIFO满、以及读/写时钟、使能和数据信号线。因此应该根据FIFO的标志位empty和full来产生AURORA的发送时序,参考模型如图8所示:当RESET信号到来之时,首先将S0置为高电平,将S1置为低电平,同时根据FULL和EM-PTY的状态确定接下来的S0和S1的状态,进而根据以上逻辑关系得到TX_SOF_N,TX_EOF_N,TX_SRC_RDY_N等逻辑信号,并且根据数据X_DST_RDY_N和TX_SRC_RDY_N生成FIFO的读使能。由以上逻辑可以看出,只有在FULL为1,EMPTY为0时,FIFO的读使能才能被打开。TX_SOF_N为数据包的帧头标志,TX_EOF_N为数据包的帧尾标志,TX_STC_RDY_N为低时代表数据有效,TX_DST_RDY_N为输入信号,根据此输入信号确定FIFO的读写时序。

对FIFO时序操作需要根据上述电路图所产生。在上述电路图中,有一个D触发器,其RESET信号是复位信号,复位既是将触发器输出端口清零,即将S0置1,将S1置0。在之前的程序中误将这里写反,即RESET信号到来之后,将S0置0,S1置1。这样导致的结果是在最开始输入的一段数据丢失,之后的结果输出正常。经过仿真分析之后检查出问题并已改正。

2.3 AURORA接收模块

同样在AURORA协议模块中,要实现对数据的接收,只需在frame_check模块中对接收的代码加以修改,增加自己所需要的内容,完成对数据的解码提取,剔除冗余信息,并完成数据的缓存。

接收模块frame_check的RTL级模型图如图9所示:其中,RX_D为接收端接收的缓存于FIFO的数据,REsET为复位信号,RX_EOF_N为数据包帧尾的标志,RX_SOF_N为数据包帧头的标志,TX_SRC_RDY_N为低时代表数据有效,USER_CLK为系统时钟。fifo_out为数据缓存的输出,ERROR _COUNT为系统检错输出结果。因此在接收端接收模块的时序图如图10所示。根据该时序图可以确定接收时序,同样,在AURORA协议末端,由于与下一级系统的速率可能不匹配,因此需要在接收末端加上一个FIFO做缓存,同样其电路图如图11所示:根据RX_SRC_RDY_N生成FIFO的写使能信号,该发送模块设计完毕。

3 测试分析

3.1 功能测试

在基本功能测试中,主要测试光纤模块传输是否正确。由于光纤模块共有A,B,C,D四个通道,对每个通道都要进行读/写测试。将通道A作为数据发送端,通道B作为数据接收端,应用光纤将A,B两端进行联通,然后将应用程序数据写入A通道FIFO中,当FPGA接收到到数据后,将A通道数据通过光纤传输到通道B接收缓存中,然后通道B将数据发送到上位机,从而形成一个环路。比较发送和接受端的数据,可以验证数据传输的正确性。同理可以将此方法应用于四个通道中的任意两个作为发送端和接收端,从而验证并测试传输功能。

3.2 性能测试

性能主要对其传输速度和传输误码率进行测试。就

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top