发明内容
本发明的目的在于提供一种采用100M时钟作为工作时钟、全双工方式工作、在通道容量、实时性、存储资源占用和应用灵活性上都有明显优势的时分多通道LAPD处理器及其设计方法。
本发明的目的是这样实现的:所述的一种基于FPGA的时分多通道LAPD处理器,它是由系统端总线接口单元、系统端发送缓存区、系统端接收缓存区、通道配置寄存器、时分多通道LAPD处理器发送单元、时分多通道LAPD处理器接收单元、通道状态参数存储区、线路端发送乒乓缓存区、线路端接收乒乓缓存区和线路端数据传输单元组成的,系统端总线接口单元分别连接系统端发送缓存区、系统端接收缓存区和通道配置寄存器,系统端发送缓存区连接时分多通道LAPD处理器发送单元,系统端接收缓存区连接时分多通道LAPD处理器接收单元,通道配置寄存器分别连接时分多通道LAPD处理器发送单元、时分多通道LAPD处理器接收单元,通道状态参数存储区连接时分多通道LAPD处理器发送单元和时分多通道LAPD处理器接收单元,时分多通道LAPD处理器发送单元连接线路端发送乒乓缓存区,时分多通道LAPD处理器接收单元连接线路端接收乒乓缓存区,线路端发送乒乓缓存区和线路端接收乒乓缓存区分别连接线路端数据传输单元。
所述的一种时分多通道LAPD处理器设计方法,具体步骤如下:
步骤一、时分多通道LAPD处理器中的参数区的初始化,包括通道的配置、状态机初始化和LAPD通道参数的初始化三个阶段;设定时分多通道LAPD处理器中的3个通道配置参数,所述的通道配置参数有最大支持LAPD通道数channel、FPGA内部为每一个通道分配的缓存区大小fpga_ram和与外围控制芯片接口中为每个通道分配的缓存区大小arm_ram,它们的初始化值均可以根据具体的需求设定,默认值分别为256、640bit和80*16bit;初始化时分多通道LAPD处理器中的2个状态机的状态,两个状态机分别为多通道处理状态机和LAPD协议处理状态机,LAPD协议处理状态机是多通道处理状态机的子状态机,多通道处理状态机主要用于实现在多个通道之间进行切换以及每一个通道的状态参数的缓存和恢复,LAPD协议处理状态机根据多通道处理状态机恢复的通道状态参数进行LAPD协议的处理,它们的状态均初始化为state0;初始化时分多通道LAPD处理器中的每个通道的通道状态参数,每个通道的所有通道状态参数的初始化值均为0;
步骤二、乒/乓数据缓存结构处理,根据线路端数据传输单元提供的激励信号的边沿选择通道数据缓存区,即激励信号为上升沿时,时分多通道LAPD处理器处理乓缓存区中的数据,当激励信号为下降沿时,时分多通道LAPD处理器处理乒缓存区中的数据,这样可以有效地避免线路端数据传输单元和时分多通道LAPD处理器同时对相同存储单元操作时造成的冲突;
步骤三、根据多通道处理状态机中的LAPD通道计数器的值进行通道切换,LAPD通道计数器的初始值为0,每处理完一个LAPD通道数据之后,LAPD通道计数器的值增加1,将下一个通道设为当前通道进行处理,保证多个通道中的数据被时分地处理;
步骤四、根据LAPD通道计数器的值,读取相应的通道状态参数,为当前通道恢复上次保存的状态参数值,使其可以继续上次处理时的状态处理,保证通道处理的连续性;
步骤五、根据ITU-T Q.920/ITU-T Q.921协议中的处理流程,对当前通道中的数据进行处理,分为以下几个步骤;
(1)时分多通道LAPD处理器发送单元根据协议在每一个有效LAPD帧的头部和尾部序列中插入标志序列(0x7E),时分多通道LAPD处理器接收单元则检测接收LAPD帧中的标志序列以判断LAPD帧的开始和结束;
(2)0比特插入/删除,为保证LAPD帧的透明传输,发送端在LAPD帧中连续5个“1”序列之后插入一个“0”,在接收端,则删除LAPD帧中5个连“1”序列之后插入的“0”;
(3)CRC校验,发送端根据生成多项式x16+x12+x5+1对发送的LAPD帧数据进行计算生成CRC校验序列,接收端则根据生成多项式x16+x12+x5+1执行对接收LAPD帧数据的正确性校验;
(4)对外围控制芯片接口的处理,它主要包括LAPD接口数据结构的处理、对外围控制芯片接口缓存区的控制和串并变换/并串变换三个部分;a.对外围控制芯片接口数据结构的处理,它主要包括接口标志序列0x9999和数据长度序列,在发送方向根据接口标志序列和数据长度序列提取出有效数据,送入时分多通道LAPD处理器发送单元进行处理,接收方向根据接收的LAPD信令数据计算有效数据的长度并添加接口标志序列0x9999及数据长度序列;b.对外围控制芯片接口缓存区的控制,接收方向缓存区采用乒乓结构,发送方向采用共享内存机制,时分多通道LAPD处理器控制缓存区的读指针,每次读取数据之后使用读指针标记读取的当前位置;c.并串变换和串并变换,为适应外围控制芯片的接口类型及保证通信的速率,与外围控制芯片的接口采用并行的数据总线,而LAPD帧为串行数据流,这样需要在发送方向做并串变换处理,在接收方向做串并变换处理;
步骤六、当处理的数据数量达到总体参数fpga_ram的值时,暂停当前通道的处理,并将当前通道的所有通道状态参数的值缓存到该通道对应的通道状态参数存储区中,流程转到步骤三,开始进行下一个通道的处理;
步骤七、当LAPD通道计数器的值为channel时,说明所有通道均已经被处理,此时将LAPD通道计数器的值清0,等待激励信号边沿到来时进行新一轮的处理。
本发明采用多通道时分复用方式处理,增加了处理的LAPD通道数量。本发明中的时分多通道LAPD处理器采用100M高速时钟作为工作时钟,对256个通道的数据进行时分处理。理论上,以每次处理的LAPD数据为640bit计算,参考表1可知,完成一个通道的处理最多需要15+10+128+640+15=808个时钟周期,时钟利用率大于640/808=79%,假设20ms循环处理一次所有通道数据,就速度而言LAPD处理器可以最多处理100M/(808*50)=2595个通道。
表1操作与消耗时钟数的关系
用户可以通过系统提供的通道配置寄存器设定它的通道数和每个通道的数据速率等参数,根据需要,量身定制自己的系统。
本发明系统处理时延小。采用整帧分割处理的方式,大大降低了系统的处理时延。每次循环处理256个通道数据,每个通道一次处理最多需要808个时钟周期,整个系统的处理时延小于256*808/100M=1.97ms。本发明提高了FPGA内部存储资源的利用率,降低了占用的存储资源数量。采用了共享内存和乒乓结构两种内存使用机制与整帧切割处理相结合的方法来提高FPGA内部存储资源的利用率,在不使用外扩存储器的情况下,使系统容量增加到256个通道。
具体实施方式
下面结合附图举例对本发明作进一步说明。
实施例1:结合图1,本发明是一种时分多通道LAPD处理器,它是由系统端总线接口单元、系统端发送缓存区、系统端接收缓存区、通道配置寄存器、时分多通道LAPD处理器发送单元、时分多通道LAPD处理器接收单元、通道状态参数存储区、线路端发送乒乓缓存区、线路端接收乒乓缓存区和线路端数据传输单元组成的,系统端总线接口单元分别连接系统端发送缓存区、系统端接收缓存区和通道配置寄存器,系统端发送缓存区连接时分多通道LAPD处理器发送单元,系统端接收缓存区连接时分多通道LAPD处理器接收单元,通道配置寄存器分别连接时分多通道LAPD处理器发送单元、时分多通道LAPD处理器接收单元,通道状态参数存储区连接时分多通道LAPD处理器发送单元和时分多通道LAPD处理器接收单元,时分多通道LAPD处理器发送单元连接线路端发送乒乓缓存区,时分多通道LAPD处理器接收单元连接线路端接收乒乓缓存区,线路端发送乒乓缓存区和线路端接收乒乓缓存区分别连接线路端数据传输单元。
本发明一种时分多通道LAPD处理器设计方法,具体步骤如下:
步骤一、时分多通道LAPD处理器中的参数区的初始化,包括通道的配置、状态机初始化和LAPD通道参数的初始化三个阶段;设定时分多通道LAPD处理器中的3个通道配置参数,所述的通道配置参数有最大支持LAPD通道数channel、FPGA内部为每一个通道分配的缓存区大小fpga_ram和与外围控制芯片接口中为每个通道分配的缓存区大小arm_ram,它们的初始化值均可以根据具体的需求设定,默认值分别为256、640bit和80*16bit;初始化时分多通道LAPD处理器中的2个状态机的状态,两个状态机分别为多通道处理状态机和LAPD协议处理状态机,LAPD协议处理状态机是多通道处理状态机的子状态机,多通道处理状态机主要用于实现在多个通道之间进行切换以及每一个通道的状态参数的缓存和恢复,LAPD协议处理状态机根据多通道处理状态机恢复的通道状态参数进行LAPD协议的处理,它们的状态均初始化为state0;初始化时分多通道LAPD处理器中的每个通道的通道状态参数,每个通道的所有通道状态参数的初始化值均为0;
步骤二、乒/乓数据缓存结构处理,根据线路端数据传输单元提供的激励信号的边沿选择通道数据缓存区,即激励信号为上升沿时,时分多通道LAPD处理器处理乓缓存区中的数据,当激励信号为下降沿时,时分多通道LAPD处理器处理乒缓存区中的数据,这样可以有效地避免线路端数据传输单元和时分多通道LAPD处理器同时对相同存储单元操作时造成的冲突;
步骤三、根据多通道处理状态机中的LAPD通道计数器的值进行通道切换,LAPD通道计数器的初始值为0,每处理完一个LAPD通道数据之后,LAPD通道计数器的值增加1,将下一个通道设为当前通道进行处理,保证多个通道中的数据被时分地处理;
步骤四、根据LAPD通道计数器的值,读取相应的通道状态参数,为当前通道恢复上次保存的状态参数值,使其可以继续上次处理时的状态处理,保证通道处理的连续性;
步骤五、根据ITU-T Q.920/ITU-T Q.921协议中的处理流程,对当前通道中的数据进行处理,分为以下几个步骤;
(1)时分多通道LAPD处理器发送单元根据协议在每一个有效LAPD帧的头部和尾部序列中插入标志序列(0x7E),时分多通道LAPD处理器接收单元则检测接收LAPD帧中的标志序列以判断LAPD帧的开始和结束;
(2)0比特插入/删除,为保证LAPD帧的透明传输,发送端在LAPD帧中连续5个“1”序列之后插入一个“0”,在接收端,则删除LAPD帧中5个连“1”序列之后插入的“0”;
(3)CRC校验,发送端根据生成多项式x16+x12+x5+1对发送的LAPD帧数据进行计算生成CRC校验序列,接收端则根据生成多项式x16+x12+x5+1执行对接收LAPD帧数据的正确性校验;
(4)对外围控制芯片接口的处理,它主要包括LAPD接口数据结构的处理、对外围控制芯片接口缓存区的控制和串并变换/并串变换三个部分;a.对外围控制芯片接口数据结构的处理,它主要包括接口标志序列0x9999和数据长度序列,在发送方向根据接口标志序列和数据长度序列提取出有效数据,送入时分多通道LAPD处理器发送单元进行处理,接收方向根据接收的LAPD信令数据计算有效数据的长度并添加接口标志序列0x9999及数据长度序列;b.对外围控制芯片接口缓存区的控制,接收方向缓存区采用乒乓结构,发送方向采用共享内存机制,时分多通道LAPD处理器控制缓存区的读指针,每次读取数据之后使用读指针标记读取的当前位置;c.并串变换和串并变换,为适应外围控制芯片的接口类型及保证通信的速率,与外围控制芯片的接口采用并行的数据总线,而LAPD帧为串行数据流,这样需要在发送方向做并串变换处理,在接收方向做串并变换处理;
步骤六、当处理的数据数量达到总体参数fpga_ram的值时,暂停当前通道的处理,并将当前通道的所有通道状态参数的值缓存到该通道对应的通道状态参数存储区中,流程转到步骤三,开始进行下一个通道的处理;
步骤七、当LAPD通道计数器的值为channel时,说明所有通道均已经被处理,此时将LAPD通道计数器的值清0,等待激励信号边沿到来时进行新一轮的处理。
实施例2:结合图1-图5,图1为时分多通道LAPD处理器组成框图,它由系统端总线接口单元、系统端数据缓存区、时分多通道LAPD处理器单元、通道配置寄存器、通道状态参数存储区、线路端数据缓存区和线路端数据传输单元七个部分组成,其中系统端数据缓存区可细分为系统端发送缓存区和系统端接收缓存区,时分多通道LAPD处理器单元可细分为时分多通道LAPD处理器发送单元和时分多通道LAPD处理器接收单元,线路端数据缓存区可细分为线路端发送缓存区和线路端接收缓存区,这些组成单元通过内部总线相连,构成时分多通道LAPD处理器的收发双向通道。图2是时分多通道LAPD处理器发送单元的功能框图,它由系统接口处理模块、并串变换模块、标志序列插入模块、CRC校验模块、0bit插入模块、乒乓处理模块、通道切换单元和参数存取模块八个功能模块组成,其中,通道切换单元和参数存取模块用于实现多通道时分复用处理机制。图3是时分多通道LAPD处理器接收单元的功能框图,它由系统接口处理模块、串并变换模块、标志序列检测模块、CRC校验模块、0bit删除模块、乒乓处理模块、通道切换单元和参数存取模块八个功能模块组成,其中,通道切换单元和参数存取模块用于实现多通道时分复用处理机制。图4是时分多通道LAPD处理器发送单元的程序流程图,它描述了时分多通道LAPD处理器发送单元程序设计的主要流程。图5是时分多通道LAPD处理器接收单元的程序流程图,它描述了时分多通道LAPD处理器接收单元程序设计的主要流程。
实施例3:本发明为了解决专用ASIC器件设计方法应用灵活性差,处理的LAPD通道数受限及基于微处理器的软件编程方法占用处理器资源多,执行速度慢,实时性差等问题,提出了一种基于FPGA的时分多通道LAPD处理器的设计方法,它采用100M时钟作为工作时钟,全双工方式工作,它在通道容量、实时性、存储资源占用和应用灵活性上都有明显的优势。
LAPD协议是通信领域中应用最广泛的协议之一,它是面向比特的D信道链路访问规程,具有差错检验功能强、可靠性高、同步透明传输和应用灵活等特点。LAPD的帧格式如表2所示,它由六个字段组成,这六个字段可以分为五种类型,即标志序列(FLAG)、地址域(A)、控制域(C)、信息域(I)、帧校验域(FCS)。在LAPD的帧格式中允许不包含信息字段I。
表2LAPD的帧格式
标志序列 |
地址域 |
控制域 |
信息域 |
CRC校验 |
标志序列 |
01111110 |
16bit |
8bit/16bit |
可变长度 |
16bit |
01111110 |
(1)标志序列
LAPD协议规定,所有信息传输必须以一个标志序列开始,并且以一个标志序列结束,这个标志序列是01111110。开始标志到结束标志之间的所有数据单元构成一个完整的LAPD帧。接收端可以通过搜索标志序列来探知帧的开始和结束,以此建立帧同步。在帧与帧之间的空载期,可以连续发送标志序列作为填充。
(2)信息域及“0”比特插入/删除技术
LAPD帧的信息域的长度是可变的,可传送标志序列以外的任意二进制信息。为了确保标志序列是独一无二的,发送端在发送信息时采用“0”比特插入技术,即发送端在发送除标志序列之外的所有信息时(包括校验位),只要遇到连续的5个“1”,就自动在其后插入一个“0”;反之,接收方在接收数据时,只要遇到连续的5个“1”,就自动将其后的“0”删掉。“0”比特插入和删除技术使得LAPD帧具有良好的传输透明性,任何比特代码都可以传输。
(3)地址域及控制域
LAPD帧中采用16比特的地址域,用于标识该帧的源地址和目的地址;控制域为8或16位,用来表示命令和响应的类别和功能。
(4)CRC校验
LAPD采用16位循环冗余校验码CRC-16进行差错控制,其生成多项式为
x16+x12+x5+1
LAPD差错校验指对整个帧的内容作CRC循环冗余校验,即对在纠错范围内的错码进行纠正,对在检错范围内的错码进行校验,但不能纠正。LAPD协议规定,标志序列和按透明传输规则插入的所有“0”不在校验的范围内。
本发明提出了一种基于FPGA的时分多通道LAPD处理器的设计方法,它涉及数字通信领域。时分多通道LAPD处理器的核心部分由收发独立的时分多通道LAPD处理器单元、通道配置寄存器和通道状态参数存储区构成。它首先对多个低速的LAPD通道的数据进行缓存,然后通过时分复用的方式进行多个通道数据的处理。这样的设计方法在存储资源占用和应用灵活性上都有明显的优势。它主要具有以下特点:
1、采用时分复用的方式实现。时分多通道LAPD处理器的核心部分由一个收发独立且可以时分复用的LAPD处理器单元、一组通道配置寄存器和通道状态参数存储区构成。其中,通道状态参数存储区是实现时分复用的关键,每一个通道在通道状态参数存储区都有一块固定的存储空间,用以存储该通道的数据处理情况,即通道状态参数。时分多通道LAPD处理器为每一个通道需要被处理的数据分配一段长度一定的时间片(时间片的长度可根据各个通道数据的速率成比例的变化)。每个时间片结束时,当前通道最新的状态参数(接收方向包括:处理结束时状态机所处的状态、该通道已经处理过的数据的CRC校验码以及已经处理的比特数,当前时间片内已经处理但尚未来得及被输出的接收数据等;发送方向包括:处理结束时状态机所处的状态、该通道已经处理过的数据的CRC校验码、在当前时间片内尚未来得及输出的传输数据等)将被存入通道状态参数存储区中的相应存储空间。当新的一段数据到达时,此段数据所属的通道在上一个时间片内被刷新的状态参数将从通道状态参数存储区中读出并加载到状态机中,为新一轮的数据处理做准备。
2、应用的灵活性高。时分多通道LAPD处理器为用户提供了一组通道配置寄存器,用户可以根据通道的具体情况为每个通道设定工作参数,例如,用户可以根据实际需要设定通道数;也可以为每一个通道设定不同的数据速率,可选值有8kbps、16kbps、32kbps和64kbps。若希望获得更快的处理速度,可以采用几个并行的LAPD处理器,根据通道编号,将其分配给所属的LAPD处理器进行并行处理。
3、采用乒乓缓存结构作为FPGA内部的接口。当线路端数据传输单元向乒缓存区存取数据时,时分多通道LAPD处理器就对乓缓存区中的数据进行处理;当线路端数据传输单元向乓缓存区存取数据的时候,时分多通道LAPD处理器就对乒缓存区的数据进行处理。具体的说,线路端数据传输单元通过一个激励信号控制时分多通道高速LAPD处理器,当线路端数据传输单元存取乒缓存区时,它将激励信号置高通知LAPD处理器处理乓缓存区中的数据,相反地,当线路端数据传输单元存取乓缓存区时,它将激励信号置低通知LAPD处理器处理乒缓存区中的数据。采用乒乓缓存结构可以保证线线路端数据传输单元存满/取完一个缓存区块(乒或乓)后,可以继续存取另一个缓存区块(乓或乒),使时分多通道LAPD处理器与线路端数据传输单元保持同步工作状态,而不会有读写冲突发生。
4、采用共享内存方式实现与外围控制器芯片的接口。所谓共享内存,具体的说,就是构造一个由读写指针和LAPD数据单元构成的RAM区域,这样可以根据读写指针灵活地进行读写访问。读写指针用于标识每个通道缓存区当前读写的位置。外围控制器芯片与时分多通道LAPD处理器分别控制一个指针,根据读写指针的位置可以清楚地知道当前缓存区中可读写数据的位置和可读写数据的大小,既可以有效地避免读写冲突发生,又可以解决FPGA内部存储资源有限的问题,提高资源的利用效率。
5、采用整帧分割处理方法和特定的数据结构解决FPGA内部存储资源紧缺问题。由于LAPD帧的信息域的长度是可变的,支持的最大信息长度为253字节,而FPGA内部的存储资源有限,不能解决LAPD帧的完整性问题,也就是说会存在一个完整的LAPD帧被分割成几个数据段处理的情况。这就要求LAPD信令处理器与外围控制器芯片之间的接口需要解决以下问题:
1)有效数据长度:必须将已经处理的LAPD帧的有效数据长度告知外围控制芯片
2)信令结束标志:告知外围控制芯片一个完整的LAPD帧是否结束
3)CRC校验结果:将处理完的LAPD帧的CRC校验结果告知外围控制芯片
4)标志序列:标志序列采用0x9999标识,可以有效解决错误修复问题,增加处理软件的可靠性。
为了解决以上问题,本发明为系统设计了如下表所示接口数据结构。
FLAG(0X9999) |
数据长度(9bit) |
结束标记和CRC结果(7bit) |
数据(n*16) |
与外围控制器接口的数据结构1
其中,有效数据长度占9bit;结束标志和CRC校验结果一共占7bit,用全0表示完整的LAPD帧未结束,全1表示完整的LAPD帧结束且CRC校验正确,0001111表示完整的LAPD帧结束且CRC校验不正确;数据字段占n*16bit。
标志序列仅仅标识一个LAPD帧的起始,即一个完整的LAPD帧只有一个标志序列。如果LAPD帧过长,造成完整信令被分割处理,则被分割的LAPD帧与外围控制器芯片的数据格式为下表所示。
数据长度(9bit) |
结束标记和CRC结果(7bit) |
数据(n*16) |
与外围控制器芯片接口的数据结构2
这样,一个完整的LAPD帧可由一个数据结构1和若干个数据结构2组成。整帧分割处理方法,能够有效地解决了FPGA内部存储资源有限的问题。