基于FPGA数据通信接口的设计与实现

2022-03-15 08:41:30 | 浏览次数:

摘 要:随着信息化、数字化技术的不断发展,数字集成电路的应用越来越广泛,可编程逻辑器件也由早期的储存少量的数据发展到如今的超大规模复杂组合逻辑与时序逻辑的现场可编程逻辑器件,即FPGA。本文就对基于FPGA数据通信接口的设计与实现做出研究。

关键词:FPGA 数据通信接口 SCI

中图分类号:TN919文献标识码:A文章编号:1672-3791(2011)03(b)-0023-02

1 FPGA原理

1.1 FPGA的组成

可编程输入、输出模块、基本可编程逻辑模块、RAM嵌入块、底层嵌入功能ongoing模块以及内嵌专用硬核和线路资源组成了FPGA。

1.2 FPGA设计流程

通常一个完整的FPGA设计流程要包括以下主要步骤:电路的设计、输入—功能仿真—综合优化—验证仿真结果—实现—时序仿真验证—调试加载。其基本流程图如图1所示。

2 通信卡的硬件平台

本系统运用Aurora链路层协议,从而实现SCI节点的高速串行通信,并引入中断机制,以提高SCI通信接口和主机进行数据交换的速率。该通信卡利用Virtex-II Pro系列的XC2VP4-FF672C高端FPGA芯板作为本系统数据处理的主要控制芯片。通信卡的信号环境为3.3V的32位CPCI接口和主机进行数据的通信,而各通信卡之间则采用传输速率在1.25Gbps的光纤进行通信。本系统的通信卡主要由Virtex-II Pro FPGA芯片、时钟产生模组、SFP收发模组、ISP配置PROM以及电源模组和CPCI接口等组成。

3 SCI串行通信接口模型设计与仿真

3.1 SCI整体逻辑划分

FPGA按照功能目的可以分为SCI节点模型模组以及CPCI总线接口模组,其中SCI节点模型包括以下几个部分,即接收和发送RAM、输入及输出旁路FIFO、Address Decode(地址解码器)以及MUX(多路复用)和中断进程、Aurora链路层收发模组(Aurora协议是一个可升级的、小型的链路层协议,可以用来进行点到点的高速串行通路数据传输)等;而CPCI总线接口模组则由PCI内核以及与其相关的配置模组和用户逻辑等三个模组构成,其整体逻辑框图如图2所示。

3.2 SCI的主要功能以及部件原理

Aruoral协议是一个小型但可升级的链路层协议,可以通过它实现点对点的高速串行通路数据的传输。Aurora链路层协议具有明显的成本较低、带宽高且可以扩展的特点,适用于点对点串行链路的数据传输。Aurora链路层协议为标准的诸如ICP/IP或者以太网等上层协议,任何分据分组都能通过Aurora链路层协议进行封装,以及在各电路板或者芯片之间进行高速数据传输。

SCI节点模型的模组设计中,中断进程是相对重要的设计部分,它是连接SCI接口两个模块的重要环节。一旦Aurora的接收模组接收到一祯数据,就会在触发中断的状态下设定其为有效状态,这时中断进程就会在下一时钟触发PCI核内INTT-N信号处于有效状态,此时就表示向PCI核提交中断请求成功。

3.2.1 旁路FIFO

如果SCI节点地址译码结果显示出其传输的目标地址非本机,则数据就会传输到旁路FIFO再由旁路FIFO向另一SCI节点发送。FIFO是先进先出堆栈,一般包括读、写指针控制器;存储模块;空信号、满信号输出等部分组成。FIFO的设计难点在于对空信号输出以及满信号输出信号生成的控制。旁路FIFO的设计是在同一时间点只允许处于读或写其中一种状态,而读和写状态所采用的相同时钟,所以使用同步旁路FIFO即可。

3.2.2 接收、发送存储器

本系统中采用片上块RAM来实现接收和发送存储器。块RAM为双口RAM,其参数可以做调整,存储大小由2KB至128KB不等,A、B两个端口可以同时使用或者单独使用。在该设计中,PCI总线数据的交互通过块RAM的A口实现,而与Aurora模组的连接则由B口来实现,本设计中FIFO设定4KB,因此对应块RAM的数据线应为32位,地址线则为12位。

RAMBI6seS18_518的主要端口信号定义如下:

.DOA:A端口输出数据线,16位

.ADDRA:A端口地址线,12位

.ADDRB:B端口地址线,12位

.DIA:A端口输入数据线,16位

读写状态机通过控制这些信号线实现对块RAM的数据存取。

3.3 SCI节点工作流程

3.3.1 测试地址

在数据被传输出去以前,主机需要知道本机的地址与环上某机地址是否有冲突,一旦存在冲突则主机就要对地址做相应的修改。用户要对地址进行修改,并做进一步的测试,直至无地址冲突为止。

3.3.2 寻找接收方

当主机对地址测试完毕后,就可以进行文件的传输,如果找到和主机地址以及开始地址帧中目的地址段相符的的某个机子,那么开始地址帧就会停止传输并被遗弃,那么该对应机子就处于一个允许进行数据接收的状态。

3.3.3 数据的发送

找到相应的机子后就开始发送数据,主机先利用PCI总线读取发送存储器的偏移地址的内容。在进行数据传输时,主机要先把所要传输的数据长度X写入至发送存储器的偏移地址,然后把需要发送的数据写入发送存储器由偏移地址开始的X个位置,直至数据全部写入。

3.3.4 数据的转发

站在环的角度看,中间主机在进行转发的过程中,由上一个主机传输至该中间主机的数据被接收到以后,是储存在旁路FIFO中的,接着再由旁路FIFO向着下一个中间主机转发,直至达到最后的发送方。

3.3.5 数据的接收

一旦数据被传输至接收方,那么接收方就开始做接收。因为Aurora的收发模组内并没有设置数据的缓存区,所以主机接收到数据时,要将该数据立刻写入接收缓冲器,不然该数据就会全部丢掉。所以如果Aurora的收发模块在接收对应主机传输的帧头数据时,要先对接收存储器偏移地址中的内容进行读取。

3.3.6 发送结束传输帧

当发送主机将数据传输完毕后,会接着再发送一个相应的结束地址帧,以通知接收主机当前的数据传送已经结束。

4 结语

本文研究了基于FPGA的SCI通信接口的设计与实现,在FPGA芯片构建SCI节点,应用Aurora链路层协议实现SCI节点的串行通信。

参考文献

[1] 孙航.Xilinx可编程逻辑器件的高级应用与设计技巧[M].北京:电子工业出版社,2004.

[2] 夏宇闻.Verilog数字系统设计教程[M].北京:北京航空航天大学出版社,2003.

[3] 姜震.熊华钢.邵定蓉.SCI环平均消息延迟的初步研究[J].遥测遥控,2002(9).

[4] 王诚.薛小刚.FPGA/CPLD设计工具——Xilinx ISE使用详解[M].北京:人民邮电出版社,2005.

[5] 路锦文.基于FPGA的CPCI卡的研究与设计[D].天津工业大学硕士学位论文,2003.

注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文

推荐访问: 数据通信 接口 设计 FPGA