基于FPGA的数据无阻塞交换设计
0 引言
本文引用地址:http://www.amcfsurvey.com/article/86729.htm随着FPGA和大规模集成电路的发展,数据交换的实现有了新的方法。在该设计中,FPGA完成串口数据信号(TXD、RXD)的交换,专用的时隙交换芯片完成串口握手线(RTS、CTS、DTR、DSR、DCD、RI)的交换。内部有硬件冲突监测功能,能够自动检测到2个终端同时连接到同一个信道或2个信道连接到同一个终端,并自动将旧的连接状态拆除,建立新的链路。这样就使原来的连接终端进入空闲状态,保证终端和信道时间轴上的无缝隙切换。通过判断RI的状态,它还可以监视信道DCE的状态,判断出信道是否有请求,并上报给监控。
技术指标如下:①交换规模:40×40×8;②最大切换建立时间:200μs;③握手线最大传输延时:125μs;④数据线最大传输延时:小于1μs;⑤串行数据速率:8.192 Mbps。
1 硬件实现
数据交换矩阵在主控单元的控制下,将终端数据端口和信道数据端口进行物理交换。交换矩阵包括DTE端口40个(包含24个DTE接口,16个DTE/DCE可配置接口),DCE端口40个(包含24个DCE接口,16个DTE/DCE可配置接口)。数据交换矩阵是由数据线交换矩阵(TXD、RXD)、握手线交换矩阵(RTS、CTS、DTR、DSR、DCD、RI)和交换控制模块(单片机实现)组成。交换控制模块管理数据线和握手线2个交换模块,连续对2个模块进行操作。数据线交换由可编程逻辑器件完成,握手线交换由时隙交换器件完成。
数据线交换模块由FPGA实现,选用30万门的可编程逻辑器件实现,其资源已经满足了数据线路交换的需求,并可以再扩展。握手线交换模块选用TSI(TIME SLOT INTERCHANGE)芯片MT90820,具有16对收发数据流,最大可实现2 048×2 048通道无阻塞交换。交换矩阵的控制单元选用通用的8051系列单片机。CPLD_1、CPLD_2和CPLD_3选用MAX7064,可以接4组串口握手线(CPLD_1、CPLD_2和CPLD_3的功能也可以用一个较大资源的FPGA来实现,这里选用小的CPLD来完成)。功能如图1所示。
FPGA和CPLD内部的功能都是通过硬件描述语言VHDL实现的。FPGA完成数据信号的交换、传输切换命令、读取DCE信道状态等功能。它模拟了一个Intel的8位总线接口(连接控制单元);一个Motorola的16位总线接口(连接时隙交换芯片),从而进行接口时序的变换。FPGA中的数据交换状态寄存器与相对应握手线交换芯片中的所有寄存器一致,来确保数据线和握手线交换同步。CPLD完成4组串口握手线的串并转换、组帧、DTE/DCE选择等功能。
CPLD_1只能接DTE,每个DTE的6条握手线(2发4收)对应2个8位寄存器、1个发送寄存器、1个接收寄存器。RST/DTR对应发送寄存器的前2位,CTS\DSR\DCD\JI对应接收寄存器的前4位。当有同步信号Syn时(8 kHz),每个发送寄存器串行移位输出数据,4个发送寄存器每隔一帧循环地发送数据,则组成1个每帧为128时隙、128×8位、8.192 Mb/s数据流(STi),送入握手线交换矩阵。DTE0到DTE3依次占用了数据帧中的第0到第3时隙,剩余都空闲。接收数据流过程相反。由握手线交换矩阵送过来固定帧格式的数据流(STo)进入CPLD,通过同步信号Syn提取第0到第3时隙的前4位,放入相应接收寄存器中,再依次对应到各DTE的握手线信号(CTS\DSR\DCD\RI)。这也就是信道(DCE)端口送来的握手信号,从而实现了交换。每个DTE占用的时隙是固定的,每帧中1个DTE占用1个时隙。如DTE0占用第0时隙,以此类推。如图2所示。
CPLD_2只能接DCE,每个DCE的6条握手线(4发2收)也对应2个8位寄存器。CTS\DSR\DCD\RI对应发送寄存器的前4位,RST/DTR对应接收寄存器的前2位。当有同步信号Syn时(8 kHz),每个发送寄存器串行移位输出数据,4个发送寄存器每隔一帧循环地发送数据,则组成1个数据流(STi),送入握手线交换矩阵。DCE0到DCE3依次占用了数据帧中的第0到第3时隙,剩余都空闲。接收数据流过程相反。由握手线交换矩阵送过来固定帧格式的数据流(STo)进入CPLD,通过同步信号Syn提取第0到第3时隙的前4位,放入相应接收寄存器中,再依次对应到各DCE的握手线信号(RTS\DTR)。这也就是终端(DTE)端口送来的握手信号,从而实现了交换。每个DCE占用的时隙是固定的,每帧中1个DCE占用1个时隙。如DCE0占用第0时隙,以此类推。如图3所示。
CPLD_3是CPLD_1和CPLD_2功能的合并。可根据用户的需要,在FPGA的控制下,在CPLD内部通过数据线和握手线的交叉变换可以把DTE变换成DCE,交叉方法类似于通用的RS232数据交叉线的做法。这样做主要为了把DTE当作DCE用。当该DTE端口与其他DTE端口进行交换时,要把它变成DCE端口用;当该DTE端口与DCE端口进行交换时,不进行改变仍然作为DTE端口用。在确定是DTE或是DCE后,可依据CPLD_1和CPLD_2的方法,送人握手线交换矩阵。
2 软件实现
软件实现采用C语言进行模块化设计,主要包括主程序单元、切换单元、查询单元、中断单元、主动上报单元和看门狗。主程序包括数据交换矩阵的初始化配置和各个功能模块的判断选择。切换单元控制FPGA和时隙芯片进行各个端口的切换连接、拆除连接、冲突检测以及强拆连接。中断单元是与监控通信的接口,负责接收监控传来的命令;发送要主动上报的信息。查询单元可以查询各个信道的状态,信道是否有请求(查询信道振铃信号RI是否有效)。主动上报单元是指歼机上报、定时上报,来指示数据交换矩阵是否工作正常。
3 结束语
通过上面设计,可以做成一个单独的模块。DTE接口可以接数字电话、数字传真等数据终端;DCE接口可以接GSM等数据信道;DTE/DCE接口可以根据用户的需求来配置,比如用于计算机扩展的多串口与DTE或DCE的通信。该技术具有硬件平台通用性好、应用范围广以及功能扩展容易等优点。
评论