一种异步时钟域参数的配置方法及装置的制作方法

文档序号:7618519阅读:155来源:国知局
专利名称:一种异步时钟域参数的配置方法及装置的制作方法
技术领域
本发明涉及计算处理单元技术领域,尤其涉及计算处理单元的数据处理技术。
背景技术
在WCDMA系统中,一个基站要处理非常多的下行信道。对于一个支持3个小区的下行处理芯片来说,要完成大约400个下行信道的处理。下行处理芯片可以采用系统集成结构,在芯片内部集成一个计算处理单元(Calculation ProcessUnit,CPU),由软件和逻辑共同完成下行信道的处理。
由于CPU处理能力的限制,它只能完成相关的调度控制和简单的参数计算,对于运算量较大、处理较复杂的部分由逻辑处理单元来完成。同时,为了增强下行的处理能力,逻辑部分采用几个独立的逻辑处理单元并行完成下行信道的处理。逻辑处理单元的个数根据实际需要处理的信道个数以及处理允许的最大延时确定,现在以5个逻辑处理单元为例,如图1所示。
CPU和逻辑处理单元的工作时钟频率不一定相同,CPU为了达到较高的处理能力,工作时钟通常高于下行处理单元的逻辑工作时钟。因此,CPU在对逻辑处理单元进行参数配置时,需要经过时钟域的转换。
由于CPU处理能力有限,参数配置过程中参数搬移可能占用CPU较多的处理时间。合理的参数配置机制对于减轻CPU的处理负荷以及减少下行处理延时显得非常重要。
如图2所示,常规的跨时钟域参数配置采用的方法用双口存储器(RandomAccess Memory,RAM)隔离2个时钟域,双口RAM的两个端口分别接CPU的工作时钟和逻辑处理单元的工作时钟。
在参数配置的时候,首先,CPU把参数写入参数双口RAM中(从CPU的内存搬移到参数双口RAM)。然后,CPU配置一个控制寄存器,启动逻辑读取参数。逻辑在收到启动信号后从参数双口RAM中读取参数,并更新相应的寄存器。
这种方案,CPU需要把内存中的参数搬移到参数RAM中,参数搬移占用CPU的处理负荷。如果在单位时间内需要配置很多次参数,CPU的处理能力很可能不够。参数搬移引入附加的处理延时,在处理延时要求较高的场合该方案不可行。需要多块存放参数的双口RAM,增加RAM的资源。这样的结构不便于扩展。双口RAM的个数和处理单元的个数一一对应,并且RAM的深度受每次配置的的参数个数约束。如果处理单元的个数或者参数的个数需要调整,需要调整双口RAM的个数和尺寸。

发明内容
本发明的目的是提出一种异步时钟域参数的配置方法及实现该方法的装置,能够减少CPU为参数配置引入的处理负荷,实现CPU处理内存以及多套逻辑处理单元共享一块RAM,减少RAM的个数,提高了内存利用率。
一种异步时钟域参数的配置方法,包括以下步骤A、计算处理单元将其计算出来的逻辑处理单元所需要的参数存放在内存中,并将参数存放的起始地址传递给控制寄存器组;B、逻辑处理单元排队得到响应后,排队逻辑单元根据所述逻辑处理单元对应的参数存放起始地址从所述内存中按字依次读取参数,并向所述参数寄存器组传递所述参数,同时所述排队逻辑单元向对应的逻辑处理单元发送一个参数更新启动控制脉冲;C、所述逻辑处理单元收到参数更新启动控制脉冲后,从总线上接收所述参数,并对所述参数进行解析,更新对应的参数寄存器组;D、所述参数寄存器组的所有参数完成更新后,所述逻辑处理单元用更新后的参数进行处理。
所述内存是双口内存,两个访问端口分别接所述计算处理单元的接口时钟和所述逻辑处理单元的工作时钟。
所述内存接所述计算处理单元接口时钟的访问端口为可读写端口,所述内存接所述逻辑处理单元工作时钟的访问端口为可读端口。
步骤B中所述排队逻辑单元轮循排队处理不少于2个逻辑处理单元的参数读取请求。
所述不少于2个逻辑处理单元通过对应的标志寄存器标志是否有参数读取请求。
如果所述逻辑处理单元占用排队电路的时间达到预先设置的超时门限,所述标志寄存器清零,所述逻辑处理单元释放控制权。
转发个数计数器对当前转发的参数个数进行计数,所述计数器和参数存放的起始地址共同确认访问内存的地址。
一种异步时钟域参数的配置装置,包括计算处理单元、内存、参数寄存器组、逻辑处理单元,其特征在于还包括控制寄存器组电路、参数排队转发电路和寄存器组更新电路,所述控制寄存器组电路完成所述计算处理单元配置的控制寄存器的时钟域转换,所述计算处理单元和所述参数排队转发电路分别连接所述内存的两个端口,所述参数排队转发电路将所述逻辑处理单元需要的参数经过排队后转发给所述寄存器组更新电路,所述寄存器组更新电路更新所述参数寄存器组,所述逻辑处理单元用更新后的参数进行处理。
所述内存是双口内存,连接所述计算处理单元的端口为可读写端口,连接所述参数排队转发电路的端口为可读端口。
所述控制寄存器组电路还包括启动寄存器和起始地址寄存器,所述启动寄存器用于产生一个启动脉冲,所述起始地址寄存器用于存放逻辑处理单元所需要的参数存放在内存中起始地址。
所述参数排队转发电路还包括标志寄存器、轮循计数器、转发个数计数器和超时计数器,所述的标志寄存器用于寄存逻辑处理单元的参数转发请求,所述轮循计数器用于控制逻辑处理单元的参数转发请求的顺序,所述转发个数计数器用于控制转发参数的个数,所述超时计数器用于控制逻辑处理单元是否达到超时门限。
采用了本发明,CPU和逻辑处理单元共享内存,省去了CPU参数搬移操作,减少CPU处理负荷,同时减少了参数搬移时间。基于轮循排队的多套逻辑处理单元共享内存的机制和参数排队转发机制,使得多套逻辑处理单元和CPU共享内存,内存设计成双端口RAM。同时逻辑处理单元的个数可以在不增加读写端口的基础上方便地扩展。基于轮循排队的超时检测机制,多套逻辑处理单元的相互之间影响较小,不会出现某套处理单元异常时影响其他处理单元的工作。CPU和逻辑处理单元可以工作在不同的时钟频率下,采用很少的跨异步时钟域控制寄存器完成了异步时钟域转换。


图1是下行处理芯片结构示意图;图2是现有技术中异步时钟域参数配置示意图;图3是本发明异步时钟域参数配置示意图;图4是多套逻辑处理单元参数更新时间示意图;图5是控制寄存器电路示意图;图6是参数排队转发电路示意图;图7是寄存器组更新电路示意图。
具体实施例方式
下面结合说明书附图来说明本发明的具体实施方式

如图3为了减少CPU参数搬移的时间,采用“共享内存”机制。CPU首先在内存中计算逻辑处理单元需要的参数,参数计算完成后继续存放在内存中。CPU不需要把这些参数搬移到逻辑处理单元的参数寄存器中,而是把参数在内存中的起始地址传递给起始地址寄存器。逻辑处理单元根据这个起始地址,在收到CPU的启动控制后,把参数从内存中依次读出,并更新逻辑处理单元对应的参数寄存器。
由于逻辑处理单元和CPU可能同时访问这块内存,这块内存比较特殊,需要设计成双口(CPU可读写,逻辑可读)。考虑到CPU的接口时钟和逻辑处理单元的工作时钟不一定相同,双口内存的两个访问端口分别接CPU的接口时钟和逻辑处理单元的工作时钟。这样,解决了参数跨时钟域配置问题。
有多套并行的逻辑处理单元可能会同时要求读取参数。内存的逻辑访问口只有一个读口,也就意味着同时只能由一套逻辑处理单元读取参数。因此,对于多套并行逻辑处理单元的参数读取采取轮循排队的方法,依次响应每个逻辑处理单元的参数读取请求。以5个逻辑处理单元举例说明。
如果某个逻辑处理单元排队得到响应后,排队逻辑单元、即参数排队转发电路根据该处理单元的起始地址从内存中按字依次读取参数,并把这些参数传递给后级的寄存器,在传递参数的同时向对应的逻辑处理单元发送一个参数更新启动控制脉冲。逻辑处理单元收到参数更新启动控制脉冲后,从总线上接收参数,并对这些参数进行解析,更新对应的寄存器。等所有的参数接收完成后(参数寄存器完成了更新),逻辑处理单元用更新的参数进行处理。处理完成后逻辑处理单元处于等待状态,等待下一次启动。
图4为多套逻辑处理单元参数更新排队的示意图。从图上可以看出,虽然各个处理单元基本在同一个时刻启动,但是参数更新的时刻在时间上是错开的。
实现所述方法的装置主要包括3部分电路控制寄存器组电路、参数排队转发电路和寄存器组更新电路。
1、控制寄存器组电路。
该电路主要完成CPU配置的控制寄存器的时钟域转换。CPU除了要为每套逻辑处理单元准备好基本参数外(存放在内存中),还要配置2个控制寄存器启动寄存器和起始地址寄存器。这两个寄存器需要进行时钟域转换(从CPU接口时钟转换到逻辑工作时钟)。对于起始地址寄存器,时钟域转换比较简单,直接用逻辑的工作时钟对CPU配置的寄存器打一拍即可。对于启动寄存器,为了便于后面的排队处理,需要根据CPU配置的启动寄存器中的内容(启动字)产生一个启动脉冲。
图5为控制寄存器时钟域转换电路。每套逻辑处理单元有一组这样的控制寄存器,这里只画出了一组。图中的D1寄存器是工作在CPU的工作时钟下,其他寄存器工作在逻辑工作时钟下。
启动寄存器start_reg受CPU控制,由CPU写入高电平。用逻辑时钟对信号start_reg采样2拍,得到信号start_2d,这个信号再用CPU的工作时钟采样2拍,得到启动寄存器的清零信号reg_clr。同时对信号start_2d采上升沿,得到同步后的启动脉冲信号pro_start。
起始地址寄存器addr_reg直接用逻辑的工作时钟采样1拍得到同步后的起始地址start_addr。由于CPU在启动时,首先是配置起始地址寄存器,然后再配置启动寄存器,所以这个时候存放在起始地址寄存器中的值已经是稳定的,即使不用逻辑时钟打一拍也是可以的。
2、参数排队转发电路。
对于多个处理单元的参数转发,采用轮循排队机制分别完成各个处理单元的参数读取和转发。用5个标志寄存器分别寄存5个处理单元的参数转发请求(该请求由CPU控制)。当收到请求脉冲时,寄存器置位(表示有请求发生),当所有的参数都转发完后寄存器清零(表示无请求发生)。
轮循计数器控制5个请求的轮循响应。当没有请求或者当前处理的请求完成时,计数器加1(计数器加1意味着把控制权交给下一个处理单元)。当下一个处理单元有等待响应的请求时(标志寄存器为1),排队电路响应请求,把该处理单元的参数从内存中读出并转发。当所有的参数转发完成后,释放控制权(对该处理单元的标志寄存器清零)。释放控制权后,轮循计数器加1,再把控制权交给下一个处理单元。当某个处理单元得到控制权但是其标志寄存器为0时(没有待响应的请求),直接把控制权交给下一个处理单元,轮循计数器加1。
转发个数计数器对当前转发的参数的个数进行计数。当计数器计数到处理单元所需的参数个数时,表示所有的参数搬移完成。该计数器和当前得到响应的处理单元的参数起始地址共同确认逻辑访问内存的地址。
在一些异常情况下,可能会出现某一套处理单元得到控制权后不释放,这样其他处理单元无法得到响应。为了防止这些异常情况,减少每套处理单元相互之间的影响,需要增加超时机制。由于每个处理单元读取的参数个数是确定的(根据情况而定,本发明以50个字的参数为例),需要搬移这些的参数的时间也是确定的。如果每个字的参数需要1个时钟节拍搬移,50个字需要50个时钟节拍。那么每套处理单元占用排队电路的时间在正常情况下不会超过50个时钟周期。如果某套处理单元占用排队电路的时间超过了50个时钟周期,说明出现了异常。出现异常的时候,排队电路强制释放当前正在处理的单元,把控制权交给下一个处理单元。因此,需要一个超时计数器对当前占用排队电路的单元进行监测,在超时情况下强行释放控制权。超时计数器的超时门限设置成大于正常排队需要占据的时间即可,可以留一点余量,把超时门限设置成63。当满足超时门限时,对当前占据排队电路的处理单元的标志寄存器清零。
图6为参数排队转发的实现电路。标志寄存器req_d[40]分别寄存5套处理单元的参数搬移请求标志,当收到启动脉冲(pro_start)时置位,当收到搬移完成脉冲(reg_clr)时清零。
轮循计数器ql_cnt控制当前响应哪个处理单元的数据搬移请求,用它的值选择5个标志寄存器中的一个,得到信号req_on。对req_on信号采样上升沿,得到转发个数计数器q2_cnt的启动信号q2_cnt_start。
转发个数计数器q2_cnt在复位后的值一直保持值0XFF(表示空闲),当收到启动信号q2_cnt_start后开始从0计数,直到计数到一定个数(等于参数个数值)后,再重新回到值0XFF(空闲状态)。
当q2_cnt计数到参数个数时,产生一个清0脉冲req_clr,对当前排上队的标志寄存器进行清0。清零脉冲还受超时计数器控制,如果出现超时,也产生1个清零脉冲。
当标志寄存器被清零后,信号req_on从高电平变为低电平。在信号req_on为低时轮循计数器ql_cnt加1。
轮循计数器ql_cnt同时用于选择处理单元的参数的起始地址。5套处理单元共有5个参数起始地址。轮循计数器把当前排上队的处理单元的起始地址选择出来,得到当前要访问内存的起始地址。排队电路从这个地址开始从内存中读取参数。转发个数计数器每加1,读取内存的地址也相应的加1。这样把内存中一段连续的参数传递给后级。从内存中读取的参数通过1个32比特的参数总线(para_bus[310])传递给后级模块。
信号q2_cnt_start为高时,同时产生一个参数更新脉冲pro_update给后级,表示有新的数据在参数总线上。5套处理单元各自有一个参数更新脉冲。信号q2_cnt_start和轮循计数器ql_cnt共同决定向哪套处理单元发送参数更新脉冲。
超时计数器检测信号req_on,当req_on为高时计数,为低时清零。如果超时计数器计数到值63,会产生一个超时脉冲。
3、寄存器组更新电路。
如图7所示,寄存器更新电路的作用是处理单元接收到参数排队转发电路发来的启动脉冲后,从参数总线上接收参数,并依次更新对应的寄存器。
编码逻辑在收到参数更新启动脉冲后pro_update,参数更新计数器para_cnt[50]开始计数,并根据计数器的值进行寄存器更新使能信号(regO_en,......,regn_en)的译码。在对应寄存器使能有效时把参数锁存到寄存器中,实现寄存器参数的更新。计数器para_cnt[50]用OXFF值标记空闲状态,在空闲状态下不计数。当收到启动脉冲后计数器的值从OXFF跳转到0,并开始计数,当计数到参数个数时(50),重新回到OXFF值,停止计数,直到下一次触发。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉该技术的人在本发明所揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
权利要求
1.一种异步时钟域参数的配置方法,其特征在于包括以下步骤A、计算处理单元将其计算出来的逻辑处理单元所需要的参数存放在内存中,并将参数存放的起始地址传递给控制寄存器组;B、逻辑处理单元排队得到响应后,排队逻辑单元根据所述逻辑处理单元对应的参数存放起始地址从所述内存中按字依次读取参数,并向所述参数寄存器组传递所述参数,同时所述排队逻辑单元向对应的逻辑处理单元发送一个参数更新启动控制脉冲;C、所述逻辑处理单元收到参数更新启动控制脉冲后,从总线上接收所述参数,并对所述参数进行解析,更新对应的参数寄存器组;D、所述参数寄存器组的所有参数完成更新后,所述逻辑处理单元用更新后的参数进行处理。
2.如权利要求1所述的异步时钟域参数的配置方法,其特征在于所述内存是双口内存,两个访问端口分别接所述计算处理单元的接口时钟和所述逻辑处理单元的工作时钟。
3.如权利要求2所述的异步时钟域参数的配置方法,其特征在于所述内存接所述计算处理单元接口时钟的访问端口为可读写端口,所述内存接所述逻辑处理单元工作时钟的访问端口为可读端口。
4如权利要求1、2或3所述的异步时钟域参数的配置方法,其特征在于步骤B中所述排队逻辑单元轮循排队处理不少于2个逻辑处理单元的参数读取请求。
5.如权利要求4所述的异步时钟域参数的配置方法,其特征在于所述不少于2个逻辑处理单元通过对应的标志寄存器标志是否有参数读取请求。
6.如权利要求5所述的异步时钟域参数的配置方法,其特征在于如果所述逻辑处理单元占用排队电路的时间达到预先设置的超时门限,所述标志寄存器清零,所述逻辑处理单元释放控制权。
7.如权利要求5所述的异步时钟域参数的配置方法,其特征在于还包括转发个数计数器对当前转发的参数个数进行计数,所述计数器和参数存放的起始地址共同确定访问内存的地址。
8.一种异步时钟域参数的配置装置,包括计算处理单元、内存、参数寄存器组、逻辑处理单元,其特征在于还包括控制寄存器组电路、参数排队转发电路和寄存器组更新电路,所述控制寄存器组电路完成所述计算处理单元配置的控制寄存器的时钟域转换,所述计算处理单元和所述参数排队转发电路分别连接所述内存的两个端口,所述参数排队转发电路将所述逻辑处理单元需要的参数经过排队后转发给所述寄存器组更新电路,所述寄存器组更新电路更新所述参数寄存器组,所述逻辑处理单元用更新后的参数进行处理。
9.如权利要求8所述的异步时钟域参数的配置装置,其特征在于所述内存是双口内存,连接所述计算处理单元的端口为可读写端口,连接所述参数排队转发电路的端口为可读端口。
10.如权利要求8所述的异步时钟域参数的配置装置,其特征在于所述控制寄存器组电路还包括启动寄存器和起始地址寄存器,所述启动寄存器用于产生一个启动脉冲,所述起始地址寄存器用于存放逻辑处理单元所需要的参数存放在内存中起始地址。
11.如权利要求8所述的异步时钟域参数的配置装置,其特征在于所述参数排队转发电路还包括标志寄存器、轮循计数器、转发个数计数器和超时计数器,所述标志寄存器用于寄存逻辑处理单元的参数转发请求,所述轮循计数器用于控制逻辑处理单元的参数转发请求的顺序,所述转发个数计数器用于控制转发参数的个数,所述超时计数器用于控制逻辑处理单元是否达到超时门限。
全文摘要
本发明提出一种异步时钟域参数的配置方法及其装置,计算处理单元将参数存放在内存中,并将起始地址传递给控制寄存器组;逻辑处理单元排队得到响应后,排队逻辑单元根据逻辑处理单元对应的参数存放起始地址从所述内存中按字依次读取参数,并向所述参数寄存器组传递所述参数,逻辑处理单元收到参数更新启动控制脉冲后,从总线上接收所述参数,并对所述参数进行解析,更新对应的参数寄存器组;所述逻辑处理单元用更新后的参数进行处理。本发明能够减少CPU为参数配置引入的处理负荷,实现CPU处理内存以及多套逻辑处理单元共享一块RAM,减少RAM的个数,提高了内存利用率。
文档编号H04Q7/30GK1869860SQ20051007189
公开日2006年11月29日 申请日期2005年5月26日 优先权日2005年5月26日
发明者张家佶 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1