一种数据打散移位寄存结构的制作方法

文档序号:31606243发布日期:2022-09-21 10:45阅读:117来源:国知局
一种数据打散移位寄存结构的制作方法

1.本发明涉及芯片设计技术领域,具体地说,涉及一种将数据打散的数据打散移位寄存结构。


背景技术:

2.对于移位寄存结构来说,技术革新的方向之一,是始终试图提高数据加载速度、数据存储效率的同时降低系统功耗,以及在系统采用时钟个数与锁存器个数之间寻求平衡。
3.以早先技术中的边沿触发链式移位寄存器结构为例,其基于选用的触发器的不同类型,会在时钟的上升沿或者下降沿实现数据从一个寄存器转移到下一个寄存器的过程,图1为示意图,示出了传统结构下的移位寄存器的移位寄存原理,图1中框体框选出的部分,则为数据加载传输完成时,锁存器内存储的数据数列。参看图1,以加载并存储8位数据的移位寄存器为例,传统触发链式移位寄存器配置有单时钟,其按照预定的位置和顺序串行传输数据,如框体中所示,时钟的最后一个下降沿时,从q7至q0的8个触发器中存储的数据依次为d0至d7,从而在该举例中,通过8个时钟周期完成了8位数据的加载和存储,并且在该过程中,在每个时钟周期内,都实现了一位数据的移位。可设想,当需要存储的数据位数增多时,则相应的需要更多的触发器和更长的时间周期才能完成全部数据的加载和存储。
4.现有技术又提出如图2所示的一种使用脉冲锁存器的移位寄存器。该种移位寄存器内如果只使用锁存器,则一旦时钟由高变低或者由低变高时,所有锁存器都将变透明,数据将立即从起始到结束。参看图2,该移位寄存器结构包括5个锁存器,并设置有4个时钟。设定初始状态下,5个锁存器按照自左至右的顺序依次为第一锁存器至第五锁存器,并依次存储有(n-2、n-1,n,n+1,n+2)的数据,按照clk3至clk0的顺序,则后置锁存器将前置锁存器的输出作为输入,当再次切换至clk0时,此时第四锁存器和第五锁存器内的数据相同,且都为n+1。因此对于使用脉冲锁存器的移位寄存器,为锁存器配置延迟又成了必不可少的设计步骤。可相应的,该结构下为实现延迟设计,是需要配置额外的延迟单元,以实现对数据或者两相邻锁存器之间时钟的延迟。而当需要存储数千个熔断器值时,额外增加的该部分延迟单元,同样与前述的缩小移位寄存器面积的设计理念背道而驰。
5.从而,为了提高移位寄存器结构的面积利用率,减小移位寄存器的芯片设计面积,又提出了一种通过增加时钟的方式,减少锁存器数量,并引入冗余锁存器单元,以提高锁存器利用率和数据传输正确率的移位寄存结构。图3为示意图,示出了现有技术下该种引入冗余单元的移位寄存结构,参看图3,将12个锁存器分为4个锁存单元组,每一锁存单元组内包含3个锁存器,同时,每一锁存单元组中的末位锁存器为冗余单元,冗余单元也即被视为不作为的单元,冗余单元仅参与移位过程,而在获取数据时对冗余单元内的数据进行忽略。再配置3个时钟,且每一时钟相较于前一时钟延迟2/3个时钟周期,这样,相较于通过16个锁存器采用1个时钟的8个周期存储8位数据的传统触发链式移位寄存器结构,改进后的带冗余移位寄存结构通过12个锁存器采用3个时钟加载8位数据,一定程度上减少了采用锁存器的个数。
6.然而,由于增加了时钟的个数,则改进后的移位寄存结构的移位时间是传统链式移位寄存结构的1.5倍,这意味着数据加载的时间反而比传统结构更长。并且,按照该带冗余单元的移位寄存结构的改进思路,随着传输数据位数的增加,为减少所需要的锁存器个数,则需要增加更多的时钟,数据加载移位的时间则会进一步延长。
7.另一方面,仍以图1所示的传统链式移位寄存结构为例,对于2n位数据的移位,其需要4n个锁存器并切换2n次,来完成整个过程。而再参看图2所示的带冗余单元的移位寄存结构,由于每组锁存单元组包括3个锁存器且末位冗余,则同样对于2n位数据的移位,则需要3n个锁存器并切换2n次,则改进后的方案与传统方案相比,系统的总功耗仍然较大。
8.因此,应当对现有技术进行改进,以解决包含冗余单元的移位寄存结构存在的加载时间长、系统功耗较大的技术问题。


技术实现要素:

9.针对现有技术的不足,本发明提供了在链式移位存储结构基础上的改进,将锁存器的输出数据打散,从而在提升数据加载速率的同时,降低系统功耗的数据打散移位寄存结构。
10.为解决以上技术问题,本发明采取了一种数据打散移位寄存结构,所述移位寄存器结构包括顺次连接的m组锁存单元组{g0、g1…gm-2
、g
m-1
},每一所述锁存单元组又包括顺次排布的n个锁存器{q0、q1…qn-2
、q
n-1
},每一锁存单元组内的一个锁存器为冗余单元,余下的锁存器为非冗余单元,则,对于任意锁存单元组内的任意锁存器g
x
(qy),其中,x为大于等于0小于等于m-1的整数,y为大于等于0小于等于n-1的整数,满足,锁存器g
x
(qy)输入为前级锁存单元组g
x-1
内的锁存器(qz)的输出;数据总线按照数据周期t间隔,从待加载数据中顺次地选取数据,并顺次加载至首组锁存单元组的锁存器内,获取数据时,按照自锁存单元组g
m-1
至锁存单元组g0的顺序,获取各所述锁存单元组中非冗余单元的各锁存器内的数据。
11.优选地,m组锁存单元组、以及各组内的n个锁存器形成链式结构,每组所述锁存单元组中的末位锁存器为冗余单元,对于任意锁存单元组内的任意锁存器g
x
(qy),其中,x为大于等于0小于等于m-1的整数,y为大于等于0小于等于n-1的整数,满足:若y=n-1时,则g
x
(qy)的输入为前级锁存单元组的锁存器g
x-1
(q0)的输出;若y≠n-1时,则g
x
(qy)的输入为前级锁存单元组的锁存器g
x-1
(q
y+1
)的输出。
12.进一步优选地,还包括数据获取电路,数据移位存储完成后,所述数据获取电路倒序地对各所述锁存单元组中非冗余单元的各锁存器内的数据进行获取,其中,所述数据获取电路倒序地获取m组锁存单元组内锁存器保存的数据,并且,对于任意组锁存单元组内的n个锁存器,所述数据获取电路倒序地自各非冗余单元锁存器内获取数据。
13.更进一步优选地,m组锁存单元组的首组锁存单元组中,其包含n个锁存器{q0、q1…qn-2
、q
n-1
},且该组内每一锁存器的输入端都与数据总线连接,所述数据总线按照数据周期间隔,从待加载数据中顺次地选取数据,并按照自锁存器q0至锁存器q
n-1
的顺序反复加载至首组锁存单元组的锁存器内,其中,还包括n个时钟,设定n个所述时钟为{clk0、clk1…
clk
n-2
、clk
n-1
},则,对于n个所述时钟中的任一时钟clkn,其分别与每一所述锁存单元组中的第n个锁存器对应并发送时钟信号,n为大于等于0小于等于n-1的整数,其中,设定n个所述时钟的时钟周期为tck,则对于n个所述时钟中任意一时钟,其脉冲宽度为所述数据周期
t,其相较于相邻的前一时钟滞后一个数据周期t。
14.再进一步优选地,所述数据获取电路获取数据时,所述数据获取电路倒序地获取m组锁存单元组内锁存器保存的数据,其中,获取任意组锁存单元组内的n个锁存器时,所述数据获取电路按照自clk
n-1
至ckl0的顺序,获取与各时钟对应的锁存器内的数据。
15.又优选地,m组所述锁存单元组、以及各组内的n个锁存器形成n行m列的并行链式结构,则,对于任意锁存单元组内的任意锁存器gw(qh),若(w mod n)= 0,则该锁存单元组内第n个锁存器为冗余单元,若(w mod n)≠0,则该锁存器单元组内的第p个锁存器为冗余单元,p为w整除n的余数数值,其中,当w为大于等于1小于等于m-1的整数,h为大于等于0小于等于n-1的整数时,对于任意锁存单元组内的任意锁存器gw(qh),其输入为前列锁存单元组内的同行锁存器g
w-1
(qh)的输出;自数据移位存储完成后,数据获取电路对各所述锁存单元组中除所述冗余单元外的各锁存器内的数据进行获取。
16.进一步优选地,m组锁存单元组的首组锁存单元组中,其包含n个锁存器{q0、q1…qn-2
、q
n-1
},且该组内每一锁存器的输入端都与数据总线连接,所述数据总线按照数据周期间隔,从待加载数据中顺次地选取数据,并按照自锁存器q0至锁存器q
n-1
的顺序反复加载至首组锁存单元组的锁存器内,其中,还包括n个时钟,设定n个所述时钟为{clk0、clk1…
clk
n-2
、clk
n-1
},则,对于n个所述时钟中的任一时钟clkn,和任意锁存单元组内的任意锁存器gw(qh),满足:若(w mod n)+n<n,则时钟clkn与该列锁存单元组内的第z个锁存器对应并发送时钟信号,z满足:z=(w mod n)+n;若(w mod n)+n≥n,则z满足:z=(w mod n)+n-n;以及,设定n个所述时钟的时钟周期为tck,则对于n个所述时钟中任意一时钟,其脉冲宽度为所述数据周期t,其相较于相邻的前一时钟滞后一个数据周期t。
17.更进一步优选地,所述数据获取电路获取数据时,所述数据获取电路倒序地获取m组锁存单元组内锁存器保存的数据,其中,获取任意组锁存单元组内的n个锁存器时,所述数据获取电路按照自clk
n-2
至ckl0的顺序,获取与各时钟对应的锁存器内的数据。
18.由于以上技术方案的采用,本发明相较于现有技术具有如下的有益技术效果:1、本发明将各锁存器的输出进行打散,从而改变了链式结构下锁存器的链式移位加载方式,采用打散的方式使数据从当前锁存单元组直接移位至下一相邻的锁存单元组内,也即,锁存器不再以前级锁存器的输出作为其输入,而是将前级锁存单元组内的锁存器的输出作为其输入,从而实现更高的数据加载频率;2、与带冗余单元的移位寄存结构相比,在负载频率相同的情况下,显著提升了时钟周期和脉冲宽度,且,时钟的脉冲宽度不再受时钟数量的限制;3、对于2n位数据的移位,传统链式结构需要使用4n个锁存器,切换2n次,换句话说,需要4n个锁存器采用1个时钟周期的2n个周期完成2n位数据的移位过程;而同样为了传输2n位数据,带冗余单元的移位寄存结构则是需要3n个锁存器切换2n次,系统功耗仍然较大;这是由于,传统移位寄存结构中,对于一个数据周期,所有锁存器都需要触发一次,而在本发明的方案中,当采用n个时钟时,则在一个数据周期内只有1/n的锁存器会切换,也即,同样以数据周期作为参考,带冗余的移位寄存结构中,所有的锁存器都会一个数据周期内切换一次,而本发明所述的数据打散移位结构仅有部分锁存器会在一个数据周期内进行切换;从而,使用的时钟越多,不仅能够降低所需锁存器的数量,也能够降低系统整体的功耗;
4、随着使用的锁存器和/或时钟个数的增加,可设想,系统布线的复杂度也在增加;则可根据系统的具体涉及需要,进一步将链式的移位寄存结构改进为包括多行和多列的链式并行移位寄存结构,从而降低系统布线的复杂度。
附图说明
19.图1为示意图,示出了传统结构下的移位寄存器的移位寄存原理;图2为示意图,示出了使用脉冲锁存器移位寄存器结构;图3为示意图,示出了现有技术下一种引入冗余单元的移位寄存结构;图4为示意图,示出了本发明实施例一中所述的数据打散移位寄存结构;图5为示意图,示出了图4所示的数据打散移位寄存结构运用至加载和存储8位数据的移位寄存原理;图6为示意图,示出了本发明实施例二中所述的数据打散移位寄存结构;图7为示意图,示出了图6所示的数据打散移位寄存结构运用至加载和存储9位数据的移位寄存原理;图8为示意图,示出了本发明实施例三中所述的数据打散移位寄存结构。
具体实施方式
20.下面将参考附图来描述本发明所述的一种数据打散移位寄存结构的实施例。本领域的普通技术人员可以认识到,在不偏离本发明的精神和范围的情况下,可以用各种不同的方式对所描述的实施例进行修正。因此,附图和描述在本质上是说明性的,而不是用于限制权利要求的保护范围。此外,在本说明书中,附图未按比例画出,并且相同的附图标记表示相同的部分。
21.需要说明的是,本发明实施例中所使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”、“第二”仅为了表述的方便,不应理解为对发明实施例的限定,后续实施例对此不再一一说明。
22.参看图1和图3,如前述背景技术部分所述,带冗余的移位寄存结构是基于现有的链式移位寄存结构上的进一步改进,其是将链式移位寄存结构中的多个锁存器进行分组,并使得每一组中相同位次的锁存器为冗余单元,继而在获取数据时对每组中的冗余单元锁存器内存储的数据进行忽略,也即冗余单元仅用于移位而不用于数据的输出,这样解决了链式移位寄存结构的芯片设计面积过大问题,也提高了数据移位存储的准确性;然而,由于该方案的设计思路中引入了仅用于移位而不用于输出数据的冗余单元,可以理解为,是使得传统链式结构,数据在移位过程中,于冗余单元的位置需要额外移位一次,则为满足相同位数长度的数据移位需要时,带冗余单元的移位寄存结构相较于传统链式结构反而增加了数据移位的总时间,进一步考虑到带冗余单元的移位结构引入了更多的时钟,也即移位过程中数据的加载时间也更长,并且可以设想,当进一步增加系统所使用的时钟个数时,数据加载的时间也会进一步延长。
23.因此,本发明的较佳实施例是针对上述技术问题而提出的,而本发明解决上述技术问题的思路是:1)虽然引入了在获取数据时被视为不作为的冗余单元,但带冗余单元的移位寄存
结构依然没有摆脱传统链式结构的线性移位方法,也即,对于任意一位数据的移位,仍然需要从首个锁存单元组的首个锁存器,逐一移位直至移动至其正确的位置;2)在第一点的基础上,虽然通过增加时钟个数的方式降低了锁存器的个数,但是由于增加了时钟,则锁存器的加载时间更长,而系统总功耗虽相较传统链式结构仅实现了些许降低。
24.从而针对上述两点,本发明的较佳实施例的一个方面,是试图通过改变数据移位的线性移位方式,从而降低数据的总移位时间,或者说,提高数据移位加载的效率。如前所述,在带冗余单元的移位寄存结构中,对链式结构下的多个锁存器进行了分组,则本发明的较佳实施例,仍然是建立在包含m组锁存单元组,每个锁存单元组包含n个锁存器的移位寄存结构上的。
25.设定m组锁存单元组分别为{ g0、g1…gm-2
、g
m-1
},再设定每一锁存单元组内包含的n个锁存器为{ q0、q1…qn-2
、q
n-1
},则在现有技术下带冗余单元的移位寄存结构中,对于任意的锁存器,其输入都为前级锁存器的输出,这也是该结构下实现移位寄存的基本原理。而在本发明的较佳实施例中,对线性移位寄存的方式做出的改变,是对于除首组锁存单元组外的任一锁存单元组,其内的任意锁存器g
x
(qy)的输入,都为其所在锁存单元组的前级锁存单元组内的锁存器qz的输出。这样,数据在移位的过程中,是按照m组锁存单元组的顺次顺序,从前级锁存单元组直接跳跃至相邻的下一级锁存单元组内,继而,可以显著降低相同位数的数据移位加载所需要的时间。
26.然而,为了实现该技术思路,仍有下列问题需要解决:1)为了实现跳跃的移位方式,需要如何设置锁存器之间的输入、输出的对应关系;2)采用多个时钟时,如何配置多个时钟之间的延迟,以及如何配置数据总线加载的时间间隔;3)在数据获取时,如何确定数据获取的顺序,才能使获取的数据序列与数据总线待加载的数据序列一致。
27.则下面结合实施例和具体附图对本发明的较佳实施例如何解决上述技术问题进行说明。
28.实施例一图4为示意图,示出了本发明实施例一中所述的数据打散移位寄存结构。参看图4,本发明的实施例一所述的移位寄存结构包括12个锁存器{ q0、q 1

q 10
、q 11
}构成的链式结构,对应3个时钟{ clk0、clk1、clk2}。
29.将12个锁存器分为4组锁存单元组{ g0、g1、g2、g3},每一锁存单元组内都包括3个锁存器,并且设定每个锁存单元组的3个锁存器中的末位锁存器为冗余单元(dummy)。则具体为,锁存单元组g0中包含{q0、q 1
、q 2
},其中q2为冗余单元;锁存单元组g1中包含{ q 3
、q 4
、q 5
},其中q5为冗余单元;锁存单元组g2中包含{ q 6
、q 7
、q 8
},其中q8为冗余单元;锁存单元组g3中包含{q9、q
10
、q
11
},其中q
11
为冗余单元。
30.3个时钟中,clk0分别与锁存单元组g0中的锁存器q0、锁存单元组g1中的锁存器q3、锁存单元组g2中的锁存器q6,以及锁存单元组g3中的锁存器q9对应并发送时钟信号。参照图4,依次类推,clk1分别与锁存单元组g0中的锁存器q1、锁存单元组g1中的锁存器q4、锁存单元组g2中的锁存器q7,以及锁存单元组g3中的锁存器q
10
对应并发送时钟信号;clk2分别与锁存
单元组g0中的锁存器q2、锁存单元组g1中的锁存器q5、锁存单元组g2中的锁存器q8,以及锁存单元组g3中的锁存器q
11
对应并发送时钟信号。
31.继续参看图4,除首组锁存单元组(g0)外,余下每个锁存单元组内锁存器的输入都为前级锁存单元组内锁存器的输出。具体地说,对于自锁存单元组g1中g3对于任意锁存单元组内的任意锁存器g
x
(qy)其中,x为大于等于0小于等于3的整数,y为大于等于0小于等于2的整数,满足:若y=2时,则g
x
(qy)的输入为前级锁存单元组的锁存器g
x-1
(q0)的输出;若y≠2时,则g
x
(qy)的输入为前级锁存单元组的锁存器g
x-1
(q
y+1
)的输出;也即,在该模型下,对于除首组锁存单元组外的任意锁存单元组,其内的首位锁存器的输入为前级锁存单元组的次位锁存器的输出,其内的次顺位锁存器的输入为前级锁存单元组的第三顺位锁存器的输出,并以此类推,而其内的末位锁存器的输入为前级锁存单元组内的首位锁存器的输出。这样设置,即可以解决前述的技术问题1,也即,如何配置锁存器间的输入和输出关系,从而在移位过程中将前级锁存器内的数据直接移位至下一锁存单元组内的锁存器中。
32.而对于首组锁存单元组,其是与数据总线(data)连接。数据总线按照设定的数据周期t间隔,从待加载的数据序列中顺次选取数据,并将数据按照自锁存器q0至锁存器q2的顺序,反复加载至首组锁存单元组的锁存器内,直至数据加载完成。
33.再来看时钟。在实施例一中,设定3个时钟的时钟周期为tck,则对于3个时钟中任意一时钟,其脉冲宽度为数据周期t,其时钟周期为3t,且其相较于相邻的前一时钟滞后一个数据周期t。在实施例一中,clk0、clk1、clk2的时钟周期相同,则在实施例一中,设定clk1相较于clk0延迟一个数据周期t,相应使得clk2相较于clk1再延迟一个数据周期t。参看图5,图5为示意图,示出了图4所示的数据打散移位寄存结构运用至加载和存储8位数据的移位寄存原理。按照先切换clk0,再切换clk1,最后clk2的切换顺序时,于一个数据周期t内,12个锁存器中三分之一的锁存器同时改变状态,而改变状态的过程中,该三分之一的锁存器都将各自前级锁存单元组内的锁存器的输出作为自己的输入并保存。参照图5,至8个数据周期后,完成了8位数据的加载和存储过程。这样,又解决了前述的技术问题2,也即解决了多个时钟之间的延迟,以及数据总线的数据加载间隔问题。
34.接下来是技术问题3。数据的获取输出是由下一级数据获取电路完成,数据获取电路在数据加载完成后,按照一定的顺序对非冗余单元的各锁存器内的数据进行获取。通常,数据获取电路应当与锁存器链中的每一锁存器的输出端通信,从而获取每一锁存器内存储的一位数据。然而,在本发明的较佳实施例中,数据获取电路是顺次地与除冗余单元外的每一锁存器的输出端通信,这样,会在获取电路工作时,对冗余单元内存储、并被视为冗余的数据进行忽略,以保证余下锁存器内的数据,与需要加载和存储的数据一致。而由于移位寄存的特性,在不同时钟脉冲时,从锁存器中获取的数据并不相同,则又需要判断数据移位存储是否完成,又或者说是选取在什么时刻获取锁存器内的数据。在该实施例中,我们为每一时钟配置一个脉冲计数器,例如累加计数器,并且根据传输数据的位数为脉冲计数器设定预设值,当脉冲计数器累加达到预设值则产生信号使得与之对应的时钟停止。当所有时钟停止后,则此时锁存器中的数据为固定,则数据获取电路于此时对除冗余单元的锁存器内的数据进行获取。
35.从图5可以看出,在实施例一中,数据获取电路是按照自末尾锁存单元组(g3)至首组锁存单元组的顺序(g0)的顺序先后获取数据,同时,对于每一锁存单元组,是获取非冗余单元的各锁存器内的数据,并且,对于非冗余单元的锁存器,同样是采用倒序的顺序进行获取。也即,实施例一中,数据获取电路从锁存器内获取数据的顺序为(g
10

g9→
g7→
g6→
g4→
g3→
g1→
g0)。从而,可以看出,在整个移位寄存的过程中,各个作为冗余单元的锁存器仅用于对数据进行移位,而不用于获取数据时输出数据。
36.至此,实施例一中,通过12个锁存器,采用3个时钟,在8个数据周期内完成了8位数据的加载和存储。
37.实施例二根据系统和芯片设计的不同需求,在本发明的不同较佳实施例中,采用锁存器的个数、时钟个数、以及锁存器的分组方式都可以不同。在本发明的实施例二中,是采用12个锁存器,加载和存储9位数据。
38.图6为示意图,示出了本发明实施例二中所述的数据打散移位寄存结构。参看图6,并回看图4,实施例二与实施例一的在于:1)将12个锁存器分为了3个锁存单元组,每组都包含4个锁存器;2)由于每组包含了4个锁存器,则相应的需要采用4个时钟与之对应。
39.具体地说,在实施例二中,12个锁存器分成了3组锁存单元组,每一锁存单元组内包含4个锁存器。3组锁存单元组定义为{g0、g1、g2},每个锁存单元组又都分别包含4个锁存器,并且设定每个锁存单元组的四个锁存器中的末位锁存器为冗余单元(dummy)。则具体为,锁存单元组g 0
中包含{q0、q 1
、q 2
、q 3
},其中q 3
为冗余单元;锁存单元组g1中包含{ q 4
、q 5
、q 6
、q 7
},其中q 7
为冗余单元;锁存单元组g3中包含{ q 8 、q 9
、q 10
、q 11
},其中q 11
为冗余单元。
40.4个时钟,分别定义为clk0、clk1、clk2、clk3。其中,clk0分别与锁存单元组g1中的锁存器q0、锁存单元组g2中的锁存器q4、以及锁存单元组g3中的锁存器q8对应并发送时钟信号。参照图6,依次类推,clk1分别与锁存单元组g1中的锁存器q1、锁存单元组g2中的锁存器q5以及锁存单元组g3中的锁存器q9对应并发送时钟信号;clk2分别与锁存单元组g1中的锁存器q2、锁存单元组g2中的锁存器q6以及锁存单元组g3中的锁存器q
10
对应并发送时钟信号;clk3分别与锁存单元组g1中的锁存器q3、锁存单元组g2中的锁存器q7以及锁存单元组g3中的锁存器q
11
对应并发送时钟信号。
41.与实施例一中相同,实施例二的该模型下,对于除首组锁存单元组外的任意锁存单元组,其内的首位锁存器的输入为前级锁存单元组的次位锁存器的输出,其内的次顺位锁存器的输入为前级锁存单元组的第三顺位锁存器的输出,并以此类推,而其内的末位锁存器的输入为前级锁存单元组内的首位锁存器的输出。
42.参看图7,图7为示意图,示出了图6所示的数据打散移位寄存结构运用至加载和存储9位数据的移位寄存原理,图7中框体框选出的部分,则为数据加载传输完成时,锁存器内存储的数据数列。按照先切换clk0,再切换clk1、clk2,最后clk3的切换顺序时,当一个时钟信号到来时,12个锁存器中四分之一的锁存器同时改变状态。而改变状态的过程中,该四分之一的锁存器都将各自前级锁存单元组内的锁存器的输出作为自己的输入并保存。
43.综合实施例一和实施例二,在本发明的其他较佳实施例中,当应对更多锁存器的
设计场景时,可将m组锁存单元组按照链式结构进行排布,同时又将各锁存单元组内的n个锁存器也按照链式结构进行连接,并使得每锁存单元组内的末位锁存器作为前述的冗余单元。对于非首组锁存单元组内的任一锁存器g
x
(qy),也即,当x为大于等于1小于等于m-1的整数,y为大于等于0小于等于n-1的整数时,满足:若y=n-1时,则g
x
(qy)的输入为前级锁存单元组的锁存器g
x-1
(q0)的输出;若y≠n-1时,则g
x
(qy)的输入为前级锁存单元组的锁存器g
x-1
(q
y+1
)的输出。而首组锁存单元组内的各个锁存器顺次地与数据总线连接的同时,各锁存器的时钟信号接口又顺次地与与各时钟对应。设置的时钟个数应当与每组锁存单元组内包含的锁存器的个数一致,从而设置n个时钟,{clk0、clk1…
clk
n-2
、clk
n-1
},则,对于n个所述时钟中的任一时钟clkn,按照该时钟在时钟序列中的顺位,分别与每一所述锁存单元组中的第n个,也即相同顺位的锁存器对应并发送时钟信号,n为大于等于0小于等于n-1的整数。
44.数据获取电路获取电路时,如前述的倒叙获取过程,可以视为:首先,是自末尾锁存单元组至首组锁存单元组地获取各锁存单元组内的数据,而对于每一组锁存单元组内,由于每一锁存单元组内的末位锁存器为冗余单元,而clk
n-1
是与每组锁存单元组的末位锁存器对应的,则数据获取电路又可以视为是按照自clk
n-2
至ckl0的顺序,获取与各时钟对应的锁存器内的数据。
45.而在能耗方面,回看图1所示的传统移位寄存结构,设定开闸功耗为p,在对于n位数据的移位存储过程中,功耗满足:;其中toggle times为切换次数。
46.而在本发明的较佳实施例采用3时钟下,功耗满足: ;可见,采用本发明所述的数据打散移位寄存结构能够显著降低峰值电流和总功耗。而进一步推广,可知,在n时钟的情况下,功耗应当满足: ,则基于相同结构的移位寄存结构,与现有技术中带冗余单元的移位寄存结构相比,随着时钟的增加,系统的总功耗会显著降低。
47.实施例三实施例一和实施例二所采用的这种链式结构,时钟信号线的布线方式,可以视为,clk0与每一锁存单元组内的首位锁存器连接,clk1与每一锁存单元组内的次位锁存器连接,并以此类推。但由于输入与输出对应关系的原因,回看图4和图6,可见各锁存器之间的输入和输出的布线方式较为繁琐。
48.事实上,对于如前述示例中所示的链式移位锁存结构,为实现在各组之间实现跳跃式的移位寄存过程,则无法避免地会使得系统布线的复杂度增加。因此本发明的较佳实施例又提供了另一种移位寄存架构。该架构预期实现的技术目的包括:1)保留本组锁存单元组内的锁存器的输入为前级锁存单元组内锁存器的输出,也即保留跳跃式的移位寄存方式,解决现有技术下移位寄存数据加载时间长这一基本的技术
问题;2)变换系统架构,使得各锁存器的输入输出的布线更加清晰。
49.从而在实施例三中,是对实施例一的链式结构进行改进,提供一种改进的移位寄存结构。图8为示意图,示出了本发明实施例三中所述的数据打散移位寄存结构。参看图8,实施例三中,仍是包含4组锁存单元组、以及各组内的3个锁存器,然而与实施例一中的链式结构不同,实施例三中,将4组锁存器设置成如图8所示的并行链式结构,该结构包括4列和3列,每一列包含的3个锁存器可视为与一组锁存单元组对应。
50.继续参看图8,按照如上的方式,将实施例三的各锁存器定义为:第一列至第四列,分别对应4组锁存单元组{ g0、g1、g2、g3},每一锁存单元组内都包括3个锁存器。则具体为,锁存单元组g0中包含{q0、q 1
、q 2
};锁存单元组g1中包含{ q 3
、q 4
、q 5
};锁存单元组g2中包含{ q 6
、q 7
、q 8
};锁存单元组g3中包含{q9、q
10
、q
11
}。
51.在实施例一中,每一锁存单元组内的末位锁存器为冗余单元,而在实施例三中,为实现其技术目的,冗余单元的位置并非是固定的。参看图8,在锁存单元组g0中,冗余单元为锁存器q2,在锁存单元组g1中,冗余单元为锁存器q3,在锁存单元组g2中,冗余单元为锁存器q7,在锁存单元组g3中,冗余单元为锁存器q
11

52.由于冗余单元的位置非固定,从而在该结构下,对于首组锁存单元组之外的任意锁存单元组内的锁存器gw(qh),也即当w为大于等于1小于等于m-1的整数,h为大于等于0小于等于n-1的整数时,任意锁存器gw(qh)的输入为前列锁存单元组内的同行锁存器g
w-1
(qh)的输出。换句话说,对于首组锁存单元组之外的任意锁存单元组内的锁存器,其输入为前一列相邻锁存单元组内的同行锁存器的输出。这样,对于首组锁存单元组以外的各个锁存器,其之间的输入输出关系都为同行之间相互对应,则布线方式相较于实施例一中的结构更加清晰。而对于首组锁存单元组内的各个锁存器,与实施例一中一样,数据总线按照设定的数据周期t间隔,从待加载的数据序列中顺次选取数据,并将数据按照自锁存器q0至锁存器q2的顺序,反复加载至首组锁存单元组的锁存器内,直至数据加载完成。
53.另一方面,也由于各锁存器单元之间输入输出的关系发生了变化,则时钟信号的布线则也产生了变化。设定3个所述时钟为{clk0、clk1、clk2},则,对于3个所述时钟中的任一时钟clkn,和任意锁存单元组内的任意锁存器gw(qh),满足:若(w mod 3)+n<3,则时钟clkx与该列锁存单元组内的第z个锁存器对应并发送时钟信号,z满足:z=(w mod 3)+n;若(w mod 3)+n≥3,则z满足:z=(w mod 3)+n-3。
54.而获取数据时,则与实施例一和二中一致,以时钟为参照。也即,数据获取电路获取电路时,可以视为:首先是按照自末尾锁存单元组至首组锁存单元组地获取数据,而对于每一组锁存单元组内,由于clk
n-1
是与每组锁存单元组中被视为冗余单元的锁存器对应的,则数据获取电路又可以视为是按照自clk
n-2
至ckl0的顺序,获取与各时钟对应的锁存器内的数据。也即实施例三中,数据获取电路仍然按照(g
10

g9→
g7→
g6→
g4→
g3→
g1→
g0)的顺序从各锁存器中获取数据。
55.同样,实施例二中所示的结构也可以进行相应地变化,在本发明的其他较佳实施
例中,可以设想,当应对更多锁存器的设计场景时,可将m组锁存单元组、以及各组内的n个锁存器,按照图8的方式进行排布,形成n行m列的并行链式结构。对于任意锁存单元组内的任意锁存器gw(qh),若(w mod n)= 0,则该锁存单元组内第n个锁存器为冗余单元,若(w mod n)≠0,则该锁存器单元组内的第p个锁存器为冗余单元,p为w整除n的余数数值,并且,对于首组锁存单元组以外的各组锁存单元组,也即当w为大于等于1小于等于m-1的整数,h为大于等于0小于等于n-1的整数时,对于任意锁存单元组内的任意锁存器gw(qh),其输入为前列锁存单元组内的同行锁存器g
w-1
(qh)的输出。
56.再来说时钟,还包括n个时钟,设定n个所述时钟为{clk0、clk1…
clk
n-2
、clk
n-1
},则,对于n个所述时钟中的任一时钟clkn,和任意锁存单元组内的任意锁存器gw(qh),满足:若(w mod n)+n<n,则时钟clkx与该列锁存单元组内的第z个锁存器对应并发送时钟信号,z满足:z=(w mod n)+n;若(w mod n)+n≥n,则z满足:z=(w mod n)+n-n。
57.对于采用不同数量的锁存器、加载和存储不同位数数据的情况,需要考虑如何对锁存器进行分组以及如何配置时钟。然而,实际状况下,是根据需要保存的数据量来决定具体采用锁存器的数量以及时钟的个数,而在设计确定时钟个数时,也相应地需要考虑因时钟而增加的布线,以及每个时钟脉冲的最大宽度等因素。因此,为满足不同的芯片设计要求,需要在各种布线方式之间进行权衡。对于每组锁存单元组内包含更多锁存器的情况,则可以考虑采用实施例三中的并行链式结构,从而降低各锁存器之间输入输出的布线影响;相应的,对于包含更多锁存单元组的情况,则可以考虑实施例一中的链式结构,从而降低各时钟的布线影响。
58.实施例四实施例一至三中,锁存器的个数可以刚好按照m组,每组n个的方式进行分组,换句话说,锁存器的总个数可以被每组包含的锁存器个数(也即时钟个数)整除。而实际设计中,也会出现锁存器的总个数不能被均等分成几组的情况。
59.实施例四中,是将15个锁存器按照链式结构进行排列并分成4个锁存单元组{ g0、g1、g2、g3},其中,前三个锁存单元组中,每一锁存单元组内都包括4个锁存器。具体为,锁存单元组g 0
中包含{q0、q 1
、q 2
、q 3
},其中q 3
为冗余单元;锁存单元组g1中包含{ q 4
、q 5
、q 6
、q 7
},其中q 7
为冗余单元;锁存单元组g3中包含{ q 8 、q 9
、q 10
、q 11
},其中q 11
为冗余单元。而最后一个锁存单元组g3中仅包含3个锁存器{ q 12 、q 13
、q 14
}。
60.此时,对于锁存单元组g3,可以不设置冗余单元,而clk3不与该组的任一锁存器连接即可。
61.以上实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1