一种实现时分复用电路位宽转换的装置及方法

文档序号:7590915阅读:837来源:国知局
专利名称:一种实现时分复用电路位宽转换的装置及方法
技术领域
本发明涉及时分复用电路设计技术,特别是涉及一种实现时分复用电路位宽转换的装置及方法。
背景技术
在大规模数字逻辑电路设计中,经常遇到的数据特性问题就是为了提高逻辑电路的处理带宽,需要将逻辑电路的数据总线进行位宽转换。比如,为了将逻辑电路的处理带宽提高一倍,需要对逻辑电路的数据总线进行位宽转换,可以采用如图1所示的时分复用电路位宽转换装置将图2所示的两拍数据总线data转换为图3a、3b所示的一拍输出数据总线data_out,从而使数据总线宽度增加一倍,线速提高一倍。
图2是时分复用电路输入时序图,其中,data为数据总线,valid为数据有效信号,phy为逻辑通道号,sop为包头指示,eop为包尾指示,阴影部分表示数据或信号的不连续。从图2可以看出,各个逻辑通道时分复用数据总线,每个有效的sop表示一个逻辑通道数据包的开始,每个有效的eop表示一个逻辑通道数据包的结束。
图3a、3b是图2所示的输入数据总线经过图1所示的时分复用电路位宽转换装置后的输出时序图,其中,data_out为位宽转换后的输出数据总线,其位宽是图1所示数据总线data的两倍,valid_out为输出数据有效信号,phy_out为输出逻辑通道号,sop_out为输出包头指示,eop_out为输出包尾指示。
现有时分复用电路的位宽转换主要是通过位宽转换先入先出缓存器(fifo)和基于各个逻辑通道带宽的仲裁电路来完成的。如图4所示,现有技术的时分复用电路位宽转换装置主要包括通道识别转发电路、fifo组和基于带宽仲裁电路。其中,通道识别转发电路主要是根据phy、valid信号将data、sop、eop分别转发存储到fifo组;fifo组由n个fifo构成,每个fifo对应一个逻辑通道,用来存储对应通道的数据,并在写口完成位宽转换;对于两拍转换为一拍的情况,每个fifo存储的数据在写口分为奇数拍数据段、偶数拍数据段和状态字段,并由每段的写使能分别控制在每个fifo的写口完成位宽转换,在每个fifo的读口则不再区分;基于带宽仲裁电路主要是根据各个通道的带宽配置和每个fifo的空、满状态,从fifo组里选择读取各个逻辑通道的数据和状态字段。
其中,状态字段valid_out、phy_out、sop_out、eop_out与data_out同步输出,其实现原理与data_out的实现原理相同,下面仅以两拍data转换为一拍data_out为例详细描述现有技术时分复用电路位宽转换装置的工作过程。如图4所示,通道识别转发电路根据phy、valid信号将data、sop、eop分别转发存储到fifo组中,即通道识别转发电路识别各个phy的有效数据,将数据分别写入到各个fifo的奇数拍数据段和偶数拍数据段,同时将phy、sop、eop分别写入到状态字段,为了更清楚地描述数据部分的位宽转换,图中没有画出状态信号的输入和输出;当写入偶数拍数据段之后,写地址加1,完成一次位宽转换;然后基于带宽仲裁电路根据时钟依次判断fifo是否为非空,如果非空,则基于带宽仲裁电路读出已完成位宽转换的数据及其状态字段。这样就完成了采用fifo的时分复用电路的位宽转换。
由此可见,时分复用电路支持的逻辑通道越多,fifo组内的fifo数也就越多,并且为平滑各个通道的突发带宽,fifo组内的fifo深度也就越大,也就是说,时分复用电路支持的逻辑通道越多,对于同一个通道来说,由于顺序读取fifo(0)~fifo(n-1)中的数据,所以每次读取的时间间隔就会增大,这样就会使各个通道的fifo积存更多的数据,为了不丢数据,fifo深度就必须更大,因此,所占用的设计面积就越大。而且,各个逻辑通道间的带宽差别越大,基于带宽的仲裁就越复杂,耗费的逻辑资源也越多。因此,现有技术实现位宽转换的方法,需要占用大量设计面积,成本较高;耗费大量逻辑资源,实现起来较为复杂;而且由于存在fifo缓存、仲裁环节,电路时延也较大。

发明内容
有鉴于此,本发明的主要目的在于提供一种实现时分复用电路位宽转换的装置,使其能节省逻辑资源和设计面积,并能简单可靠的实现时分复用电路的位宽转换。
本发明的另一个主要目的在于提供一种实现时分复用电路位宽转换的方法,使其能简单可靠的实现时分复用电路的位宽转换,并能节省逻辑资源和设计面积,减少电路时延。
为达到上述目的,本发明的技术方案是这样实现的本发明公开了一种实现时分复用电路位宽转换的装置,该装置包括有限状态机组,包括至少一个与逻辑通道一一对应的有限状态机,用于接收数据进行位宽转换,并输出本通道数据总线和复接选通信号;复接多路复用器,用于根据有限状态机输出的有效的复接选通信号,将经过有限状态机位宽转换的数据选通输出到输出数据总线上。
上述方案中,所述有限状态机组与产生下游通道堵塞信号的电路相连。所述有限状态机包括状态迁移的四种状态正常状态闲置态、正常状态工作态、非包尾堵塞状态、包尾堵塞状态。
本发明同时公开了一种实现时分复用电路位宽转换的方法,采用包括至少一个与逻辑通道一一对应的有限状态机和复接多路复用器的位宽转换装置,该方法包括以下步骤a.将与各个逻辑通道一一对应的有限状态机进行初始化;b.每个有限状态机分别接收数据和状态信号,并根据当前接收到的状态信号判断接收到的数据是否为有效数据,如果是,则将该有限状态机的状态转移为或保持为正常状态工作态;否则,返回步骤b;c.该有限状态机对当前收到的数据进行数据拍计数,并判断当前收到的数据是否为第N拍数据,如果是,则执行步骤d;如果不是,则判断当前收到的数据是否为数据包包尾,如果是包尾,则执行步骤d;否则,返回到步骤b;其中,N为进行位宽转换的数据拍数;d.设置复接选通信号为有效,将该有限状态机所对应的数据拍计数值清零;复接多路复用器根据有效的复接选通信号输出该通道数据。
上述方案中,所述步骤a中对有限状态机进行初始化包括将每个有限状态机的状态初始化为正常状态闲置态,并将每个有限状态机所对应的数据拍计数值初始化为0。所述步骤b中判断当前收到的数据为有效数据后,所述状态转移为或保持为正常状态工作态进一步包括判断该有限状态机的状态是否为正常状态工作态,如果是,则将该有限状态机的状态保持为正常状态工作态;如果不是,则将该有限状态机的状态转移为正常状态工作态。
另外,不同有限状态机所对应的N可以相同或不同。
由上述方案可以看出,本发明的关键在于采用有限状态机(FSM)实现时分复用电路位宽转换,采用复接多路复用器(MUX)实现数据仲裁复接过程。
因此,本发明所提供的基于有限状态机实现时分复用电路位宽转换的装置及方法,只是对数据进行了简单的流水处理,即根据数据的逻辑通道号进行位宽转换和数据转发,不需要fifo存储数据,对一般的现场可编程门阵列(FPGA)设计来讲,仅需要占用很少的设计面积,而且,也不需要仲裁等逻辑单元,因而可以大大减小了设计面积,节约了成本;同时耗费很少的逻辑资源,实现起来简单可靠。另外,此方法也减小了电路处理时延,提高了位宽转换的效率。


图1为时分复用电路位宽转换结构示意图;图2为一个时分复用电路输入时序示意图;
图3a、3b为图2所示的输入经过时分复用电路位宽转换后的输出时序示意图;图4为现有技术时分复用电路位宽转换装置的实现原理图;图5为本发明时分复用电路位宽转换装置的实现原理图;图6为本发明实现时分复用电路位宽转换装置中有限状态机的状态迁移示意图;图7为本发明实现时分复用电路位宽转换的方法流程图。
具体实施例方式
下面结合附图及具体实施例对本发明再作进一步详细的说明。
本发明采用FSM实现时分复用电路位宽转换,采用复接MUX实现数据仲裁复接过程。图5为本发明时分复用电路位宽转换装置的实现原理图,时分复用电路位宽转换装置主要包括有限状态机组和复接MUX。其中,有限状态机组由n个FSM组成,每个FSM对应一个逻辑通道,用来接收数据净荷和状态字段并进行位宽转换,并输出本通道数据总线和复接选通信号;复接MUX用来根据FSM输出的有效的复接选通信号,将经过FSM位宽转换的数据选通输出到输出数据总线上。
在本发明中,状态字段valid_out、phy_out、sop_out、eop_out与data_out同步输出,其实现原理与data_out的实现原理相同,下面仅以data到data_out的转换为例详细描述本发明时分复用电路位宽转换装置的工作过程。为了更清楚地描述数据部分的位宽转换,图中没有画出状态信号的输入和输出。如图5所示,有限状态机组中每个FSM根据一定的判断原则完成本通道的数据位宽转换,并给出本通道数据总线di(i=0~n-1)和复接选通信号si;然后复接MUX根据有效的复接选通信号si,将n个通道经位宽转换后的数据总线di复接到输出数据总线data_out上。也就是说,复接MUX选择某一时刻唯一有效的复接选通信号si,比如设定复接选通信号为1时有效,则s1为1时,就将其对应的位宽转换后的数据总线d1输出,这样n个通道经位宽转换后的数据总线d0~dn-1就复接到输出数据总线data_out上了。
在本发明装置中,每个FSM有四种状态S0、S1、S2、S3,其中S0表示正常状态闲置态,S1表示正常状态工作态,S2表示非包尾堵塞状态,S3表示包尾堵塞状态。在实际应用中,需要FSM接收一个下游电路产生的外部激励信号channel_jum,该信号用来指示下游通道堵塞,高有效。一般地,位宽转换电路输出的数据流会输入到另一个电路,该电路相对于位宽转换电路称为下游电路。如果位宽转换电路的处理带宽大于其下游电路的处理带宽,当下游电路达到负荷处理带宽时,就会给位宽转换电路发出一个信号,通知位宽转换电路不要再向下游电路发送数据了。这个信号就是外部激励信号channel_jum,用来指示下游通道堵塞。当channel_jum为高时,valid_out为无效状态。FSM的各个状态的定义及其迁移条件如表1所示。

表1图6为本发明实现时分复用电路位宽转换装置中有限状态机的状态迁移示意图。如表1和图6所示,当初始电复位,即复位信号rst_n有效时,有限状态机处于S0状态。这时,如果有数据包到来,则有限状态机就会从S0状态迁移到S1状态;如果channel_jum置位,即channel_jum为高,则有限状态机就会从S0状态迁移到S3状态。当有限状态机处于S1状态,如果无下一个数据包到来,则有限状态机就会从S1状态迁移到S0状态;如果在非包尾位置,channel_jum置位,则有限状态机就会从S1状态迁移到S2状态;如果eop和channel_jum同时置位,则有限状态机就会从S1状态迁移到S3状态。当有限状态机处于S2状态时,如果eop置位,则有限状态机就会从S2状态迁移到S3状态。当有限状态机处于S3状态时,如果channel_jum转为无效,则有限状态机就会从S3状态迁移到S0状态。
为了简化描述,S0状态迁移到S1状态,表示为S0→S1,其它迁移过程也以相同符号表示。因此,S0→S1,S1→S0为有限状态机没有有效的channel_jum信号下的正常工作状态;S1→S2→S3,是在数据包的中间出现有效的channel_jum信号时有限状态机转入的状态,此时电路会一直丢下当前收到的包净荷,直到出现有效的eop,有限状态机才转入S3状态;S1→S3,是在包尾处出现有效的channel_jum信号,此时有限状态机将直接由S1转入到S3。上面所述的S1→S2→S3和S1→S3这两种情况,有限状态机都会在转入到S3时,将当前包标志为错包。S3→S0的情况是在channel_jum无效并且有限状态机检测到包尾时才发生的。对于S0→S3,正常情况时是不会发生的,主要是为了防止干扰才进行的一种状态转移。也就是说,S2和S3状态只是为了处理一些特定的情况,比如是为了过滤碎包而设定的。
由此可见,只有在状态S1才启动正常位宽转换功能。而且,其位宽转换以数据包为单位,即是一个数据包中数据的位宽转换。对于从N拍data转换为一拍data_out的情况,则将前面N-1拍数据保持积存,然后与第N拍数据一起选通输出;如果数据包包长不是N的倍数,则最后几拍和包尾不必再保持积存而直接选通输出。例如,对于从两拍data转换为一拍data_out的情况,就是将奇数拍数据保持积存,然后同偶数拍数据一起选通输出;当包长为奇数时,最后一拍包尾是奇数拍,不必再保持积存直接选通输出,完成一个包的数据位宽转换。
基于上述装置,本发明采用有限状态机实现时分复用电路位宽转换的方法如图7所示。对于从N拍data转换为一拍data_out的情况,就是每收到N拍数据就将其选通输出,即在收到前面N-1拍数据时,复接选通信号保持为无效,当接收到第N拍数据时,复接选通信号变为有效,然后这N拍数据一起选通输出;如果数据包包长不是N的倍数,对于最后不足N拍的数据,当接收到包尾时,复接选通信号变为有效,然后最后几拍和包尾一起选通输出。如图7所示,对于从两拍data转换为一拍data_out的情况,其转换过程包括以下步骤步骤701、将与各个逻辑通道一一对应的有限状态机初始化为正常状态闲置态S0,并将每个有限状态机所对应的数据拍计数值初始化为0;步骤702~703、每个有限状态机分别接收数据净荷和状态信号,并根据当前接收到的状态信号中的phy和valid,判断是否为自身对应逻辑通道的有效数据,如果是,则执行步骤704;否则,返回到步骤702;步骤704~705,判断该有限状态机的状态是否为正常状态工作态S1,如果是,则将该有限状态机的状态保持为正常状态工作态S1;否则,将该有限状态机的状态转移为正常状态工作态S1;步骤706~707、该FSM对当前收到的数据进行数据拍计数,判断是否为奇数拍数据,如果是奇数拍数据,则执行步骤708;否则,如果是偶数拍数据,则执行步骤709;步骤708、判断当前收到的数据是否为数据包的包尾,如果是包尾,则执行步骤709;否则,返回到步骤702;步骤709~710、设置复接选通信号s为有效,将该FSM所对应的数据拍计数值清零;复接MUX根据有效的复接选通信号s输出数据总线d。
其中,对数据拍进行计数的步骤可以放在判断是否为有效数据之后和判断是否为奇数拍之前的其它位置,比如在判断出是有效数据之后就可以对数据拍计数。
下面以图2所示的输入时序的十二拍数据为例,详细说明FSM在S1时的1bit到2bit的位宽转换过程。其输出结果如图3a、3b所示。
1)、将每个通道的有限状态机初始化为S0状态,将每个有限状态机的输出sopX、eopX、sX初始化为0(X=0……n-1),并将每个有限状态机所对应的数据拍计数值初始化为0;2)、当第1拍有效数据D0和对应的状态字段到来时,通道0有限状态机识别phy=0,状态由S0转移为S1,FSM0所对应的计数值加1,将D0作为奇数拍数据段,同时状态字段为sop0=1、eop0=0、s0=0;3)、当第2拍有效数据D1和对应的状态字段到来时,通道0有限状态机识别phy=0,状态保持为S1,FSM0所对应的计数值加1,将D1作为偶数拍数据段,同时状态字段为sop0=1、eop0=0,并输出一拍s0=1,然后FSM0所对应的计数值清零;4)、当s0=1时,MUX选择通道0的输出,输出data_out=D0/D1、phy_out=0、sop_out=1、eop_out=0,并输出一拍valid_out=1;5)、当第3拍有效数据D2和对应的状态字段到来时,通道1有限状态机识别phy=1,状态由S0转移为S1,FSM1所对应的计数值加1,将D2作为奇数拍数据段,同时状态字段为sop1=1、eop1=0、s1=0;6)、当第4拍有效数据D3和对应的状态字段到来时,通道0有限状态机识别phy=0,状态保持为S1,FSM0所对应的计数值加1,将D3作为奇数拍数据段,同时状态字段为sop0=0、eop0=0、s0=0;7)、当第5拍有效数据D4和对应的状态字段到来时,通道0有限状态机识别phy=0,状态保持为S1,FSM0所对应的计数值加1,将D4作为偶数拍数据段,同时状态字段为sop0=0、eop0=0,并输出一拍s0=1,然后FSM0所对应的计数值清零;8)、当s0=1时,MUX选择通道0的输出,输出data_out=D3/D4、phy_out=0、sop_out=0、eop_out=0,并输出一拍valid_out=1;9)、当第6拍有效数据D5和对应的状态字段到来时,通道1有限状态机识别phy=1,状态保持为S1,FSM1所对应的计数值加1,将D5作为偶数拍数据段,同时状态字段为sop1=1、eop1=0,并输出一拍s1=1,然后FSM1所对应的计数值清零;
10)、当s1=1时,MUX选择通道1的输出,输出data_out=D2/D5、phy_out=1、sop_out=1、eop_out=0,并输出一拍valid_out=1;11)、当第7拍有效数据D6和对应的状态字段到来时,通道1有限状态机识别phy=1,状态保持为S1,FSM1所对应的计数值加1,将D6作为奇数拍数据段,同时状态字段为sop1=0、eop1=0、s1=0;12)、当第8拍有效数据D7和对应的状态字段到来时,通道1有限状态机识别phy=1,状态保持为S1,FSM1所对应的计数值加1,将D7作为偶数拍数据段,同时状态字段为sop1=0、eop1=0,并输出一拍s1=1,然后FSM1所对应的计数值清零;13)、当s1=1时,MUX选择通道1的输出,输出data_out=D6/D7、phy_out=1、sop_out=0、eop_out=0,并输出一拍valid_out=1;14)、当第9拍有效数据D8和对应的状态字段到来时,通道0有限状态机识别phy=0,状态保持为S1,FSM0所对应的计数值加1,将D8作为奇数拍数据段,同时状态字段为sop0=0、eop0=1,由于D8为phy0的包尾,即最后一拍包尾是奇数拍,所以不必再保持积存而直接选通输出,即输出一拍s0=1,然后FSM0所对应的计数值清零;15)、当s0=1时,MUX选择通道0的输出,输出data_out=D8/null、phy_out=0、sop_out=0、eop_out=1,并输出一拍valid_out=1,从而完成一个包的位宽转换;16)、当第10拍有效数据D9和对应的状态字段到来时,通道3有限状态机识别phy=3,状态由S0转移为S1,FSM3所对应的计数值加1,将D9作为奇数拍数据段,同时状态字段为sop3=1、eop3=0、S3=0;同时由于通道0有限状态机发现数据phy不等于0,状态由S1转移为S0;17)、当第11拍有效数据D10和对应的状态字段到来时,通道1有限状态机识别phy=1,状态保持为S1,FSM1所对应的计数值加1,将D10作为奇数拍数据段,同时状态字段为sop1=0、eop1=0、s1=0;
18)、当第12拍有效数据D11和对应的状态字段到来时,通道1有限状态机识别phy=1,状态保持为S1,FSM1所对应的计数值加1,将D11作为偶数拍数据段,同时状态字段为sop1=0、eop1=1,并输出一拍s1=1,然后FSM1所对应的计数值清零;19)、当s1=1时,MUX选择通道1的输出,输出data_out=D9/D10、phy_out=1、sop_out=0、eop_out=1,并输出一拍valid_out=1。
后面数据的位宽转换如上所述依此类推。
另外,有限状态机可以支持不同通道进行不同的位宽转换。上面所述例子是两拍数据总线转换为一拍数据总线的情况,依据同样的设计思想,可以完成输入位宽的整数倍的位宽转换,因此,有限状态机还可以支持不同通道进行不同的位宽转换,例如,通道0完成1bit到2bit的位宽转换,而通道1则完成1bit到3bit的位宽转换,通道2完成1bit到4bit的位宽转换。
总之,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
权利要求
1.一种实现时分复用电路位宽转换的装置,其特征在于,该装置包括有限状态机组,包括至少一个与逻辑通道一一对应的有限状态机,用于接收数据进行位宽转换,并输出本通道数据总线和复接选通信号;复接多路复用器,用于根据有限状态机输出的有效的复接选通信号,将经过有限状态机位宽转换的数据选通输出到输出数据总线上。
2.根据权利要求1所述的装置,其特征在于,所述有限状态机组与产生下游通道堵塞信号的电路相连。
3.根据权利要求1所述的装置,其特征在于,所述有限状态机包括状态迁移的四种状态正常状态闲置态、正常状态工作态、非包尾堵塞状态、包尾堵塞状态。
4.一种实现时分复用电路位宽转换的方法,采用包括至少一个与逻辑通道一一对应的有限状态机和复接多路复用器的位宽转换装置,其特征在于,该方法包括以下步骤a.将与各个逻辑通道一一对应的有限状态机进行初始化;b.每个有限状态机分别接收数据和状态信号,并根据当前接收到的状态信号判断接收到的数据是否为有效数据,如果是,则将该有限状态机的状态转移为或保持为正常状态工作态;否则,返回步骤b;c.该有限状态机对当前收到的数据进行数据拍计数,并判断当前收到的数据是否为第N拍数据,如果是,则执行步骤d;如果不是,则判断当前收到的数据是否为数据包包尾,如果是包尾,则执行步骤d;否则,返回到步骤b;其中,N为进行位宽转换的数据拍数;d.设置复接选通信号为有效,将该有限状态机所对应的数据拍计数值清零;复接多路复用器根据有效的复接选通信号输出该通道数据。
5.根据权利要求4所述的方法,其特征在于,所述步骤a中对有限状态机进行初始化包括将每个有限状态机的状态初始化为正常状态闲置态,并将每个有限状态机所对应的数据拍计数值初始化为0。
6.根据权利要求4所述的方法,其特征在于,所述步骤b中判断当前收到的数据为有效数据后,所述状态转移为或保持为正常状态工作态进一步包括判断该有限状态机的状态是否为正常状态工作态,如果是,则将该有限状态机的状态保持为正常状态工作态;如果不是,则将该有限状态机的状态转移为正常状态工作态。
7.根据权利要求4所述的方法,其特征在于,不同有限状态机所对应的N相同或不同。
全文摘要
本发明公开了一种实现时分复用电路位宽转换的装置,该装置包括有限状态机组和复接多路复用器(MUX),其中,有限状态机组包括至少一个与逻辑通道一一对应的有限状态机(FSM),用于接收数据进行位宽转换,并输出本通道数据总线和复接选通信号;复接MUX,用于根据FSM输出的有效的复接选通信号,将经过FSM位宽转换的数据选通输出到输出数据总线上。本发明同时公开了一种实现时分复用电路位宽转换的方法,采用这种基于FSM实现时分复用电路位宽转换的装置和方法,可以大大减小设计面积,节约成本;耗费很少的逻辑资源,实现起来简单可靠;还可以减小电路处理时延,提高位宽转换的效率。
文档编号H04J3/02GK1674477SQ20041003090
公开日2005年9月28日 申请日期2004年3月26日 优先权日2004年3月26日
发明者张洪涛 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1