摘 要: 基于FPGA的通信卡设计原理。通信卡实现了4路ISDN U接口、4路RS232串口、2路音频接口及1路PCI总线之间的通信,该卡以FPGA(现场可编程门阵列)和MPC860为核心进行设计,利用FPGA的可编程性灵活实现了各接口之间的数据通信。本文给出了系统的硬件构架,并对串口传输功能和数字交换网络功能的FPGA实现进行了分析。
关键词: 通信卡 FPGA 串口传输 数字交换网络
FPGA是20世纪80年代中期以后发展起来的一种现场可编程的大规模集成器件,具有高集成、高速度、低功耗、体积小、可靠性高等一系列优点,含有丰富的查找表(LUT)资源,允许设计师在不改变硬件电路板的情况下实现不同的功能[1]。因此,FPGA在数字电路的设计中得到了广泛应用。
通信卡采用的FPGA是XILINX的SPARTAN-Ⅱ系列的XC2S50芯片。该芯片具有176个用户I/O接口、32Kbit的RAM块及24 576bit的分散RAM等丰富资源。在通信卡中,FPGA芯片实现了串口的透明传输和解析传输功能、PCI总线的控制功能、4路ISDN U接口数据的复接和分离功能、各接口数据间的交换功能等。本文分析了基于FPGA的通信卡的设计原理,给出了系统的硬件构架框图,并对串口传输功能和数字交换网络功能的实现进行了重点分析。
1 设计介绍
通信卡的硬件构架组成框图如图1所示。CPU控制模块采用MPC860小系统, MPC860芯片不仅具有普通CPU的运算和处理功能,其外围还集成了一些控制领域的常用接口,可支持多种协议,如HDLC/SDLC协议、UART协议等;另外,该芯片还具有一个时隙分配器,可支持T1、CEPT、PCM公共模块和ISDN的基本速率的传输[2]。本设计中传输的通道信号采用ISDN的基本速率,CPU信号由地址信号、数据信号和控制信号三部分组成,实现对通信卡各芯片的配置及对一些公共资源的分配和管理;PCI总线控制器采用PLX公司生产的PCI通用接口芯片PCI9054实现,本设计中,该芯片在本地总线侧采用M模式,可以与MPC860芯片进行无缝连接;音频口的编/译码器芯片采用TP3067,该芯片实现了模拟音频信号和PCM数据信号的相互转换;在本卡中,RS232串口的最大速率为19.2kb/s;U接口控制器采用MOTOROLA公司的MC145572芯片,该芯片用于综合业务数字网基本接入接口,即适用于NT(网络终端)也适应于LT(线路终端)[3]。MC145572可工作于多种不同模式,本文采用的是MCU模式的短帧操作模式,接口数据为MOTOROLA的IDL型时分2B(B通道数据为64Kb/s)+D(D通道数据为16Kb/s)数据接口,通信卡的四个ISDN U接口作为NT使用;两路音频接口为用户的语音通信提供接口。
实现图1所用的FPGA是XILINX的SPARTAN-Ⅱ系列的XC2S50芯片,该芯片负责通信卡各接口数据的控制和相互通信,包括:CPU对PCI总线控制器、串口控制器、U接口控制器等芯片的控制;PCI总线接口与CPU间的数据通信;音频口与U接口间的数据通信;RS232串口的透明传输方式(串口与串口、串口与U口间的数据传输)和解析传输方式(串口与CPU间的数据传输)的控制;U接口与CPU的数据通信;U接口与串口间的数据通信。通信卡各接口间数据的交换和通信都由FPGA交换控制模块的数字交换网络完成,其工作原理图如图2所示。图2中所示的8路64kb/s的HDLC收发器和4路16kb/s的HDLC收发器由MPC860芯片提供。本文将对由FPGA实现的串口传输功能和数字交换网络功能的实现进行详细分析。
2 功能实现
本设计中,FPGA是通信卡功能实现的关键芯片,是各接口数据通信的桥梁。下面就FPGA实现的串口传输功能(包括串口工作方式,即透明传输方式和解析传输方式的切换及透明传输方式时不同速率数据间的转换)及用于各接口数据通信的数字交换网络功能的实现进行详细分析。
2.1 串口传输功能的实现
通信卡的串口功能芯片由串口扩展芯片ST16C654和收发器芯片LTC1387组成,ST16C654可扩展4个串口,串口传输功能示意图见图3。在通信卡中,串口的数据传输方式有透明传输方式和解析传输方式两种,利用FPGA的可编程性灵活实现了串口传输方式的切换。在解析方式下,只需将ST16C654的收发数据线与LTC1387的收发数据线相连,如要使串口1工作在解析模式下,通过FPGA将L_TD1与ST_TD1连接及L_RD1与ST_RD1连接便可;在透传方式下,由于串口的传输速率不定(在本卡中,串口的传输速率≤19.2Kb/s),而ISDN U接口一个时隙的传输速率为64kb/s,因此,在串口与U口进行数据透传时,需要编写一个具有速率转换功能的编/解码器。根据抽样原理,对串口输入的数据(速率≤19.2kb/s),用64kb/s(64>19.2×2)速率进行抽样,根据抽样值能准确地确定原信号[4]。本文以如图3所示的串口1与串口5间的数据透传为例进行说明,其工作过程描述如下:首先,通过CPU控制FPGA,使串口1和串口5工作在透传模式下,将串口1的L_RD1数据线连接到FPGA的编/解码器,编/解码器以64Kb/s的速率对串口数据进行采样,并将采样数据放到U接口中的一个B通道的一个时隙上进行传输。通过ISDN通道传输到另一个的U接口,该U接口将透传的数据送往本地FPGA,并经过FPGA编/解码器后将数据送往串口5,这样便完成了数据从串口1到串口5的透传。同理,可实现数据从串口5到串口1的透传。本设计串口数据的FPGA编/解码功能的实现采用VHDL语言编写。编码时,根据抽样原理采用64kb/s速率进行采样便可;解码时,只需将FPGA收到的数据以64Kb/s速率发往LTC1387的收数据端口即可。其功能实现代码如下所示。其中CLK2M为2MHz时钟信号,C64K为与2MHz时钟信号的下降沿对齐的64kb/s采样信号,C64K_1n的上升沿与C64K信号的下降沿对齐且其高电平宽度为(1/2M)s,DATA_SR为串口输入的数据,DATA_SR_N为串口输入数据的取反,Q为编码后的数据,asyn_out为解码后送给串口的数据。







