一种矢量排列电路及矢量处理器的制造方法_5

文档序号:9505972阅读:来源:国知局
关描述,此 处不再赘述。
[0124] 需要说明的是,本实施例中,上述如图7所示的2个32选1选择器分别为两个选择 单元11中的32选1选择器。例如,一个32选1选择器为选择单元muxO中的一个32选1 选择器,另一个32选1选择器为选择单元muxl中相应位置的一个32选1选择器。其中,相 应位置可以理解为这2个32选1选择器从输入各自的矢量数据组中选择相同位置或者相 邻位置的元素,例如,当输出元素来自于第30个输入元素和第31个输入元素时,位于muxO 中的32选1选择器从偶数矢量数据组中选择第15个元素输出,位于muxl中的32选1选 择器也从奇数矢量数据组中选择第15个元素输出;当输出元素来自于第31个输入元素和 第32个输入元素时,位于muxO中的32选1选择器从偶数矢量数据组中选择第16个元素 输出,位于muxl中的32选1选择器从奇数矢量数据组中选择第15个元素输出。
[0125] 可以理解,在图9中,选择单元muxO和muxl组合起来对输入各自的矢量数据组进 行选择后可以得到两组低32个元素,且mux2和mux3组合起来对输入各自的矢量数据组进 行选择后可以得到两组高32个元素,其中,每组低32个元素和每组高32个元素具体是待 排列的矢量数据中的哪些元素由具体的控制逻辑决定。
[0126] 如图9所示,选择单元11选择后的矢量数据分别对应输入至交换单元12,由交换 单元12对矢量数据中的元素进行交换后输出。具体的,本实施例中,由于与每个元素对应 的位置均包括两个输出元素,因此两个选择单元11中的2个32选1选择器分别从输入各 自的矢量数据组中选择一个元素,并将该元素输出至与这2个32选1选择器连接的2x2的 交换矩阵(图9中表示为mux2 X 2),其由2个2选1选择器组成,再由这2个2选1选择器 分别从输入各自的两个元素中选择一个元素输出,这样,选择单元muxO和mux 1选择后的矢 量数据再通过与选择单元muxO和muxl连接的交换单元12中对应的2x2的交换矩阵(具 体为2个2选1选择器)的选择,最终输出两组低32个元素,例如{Y 31,Y3。,……,Y1, Υ。} 和{Ζ31,Ζ3。,......,ZpZJ ;相应的,选择单元mux2和mux3选择后的矢量数据再通过与选择 单元mux2和mux3连接的交换单元12中对应的2x2的交换矩阵(具体为2个2选1选择 器)的选择,最终输出两组高32个元素,例如{Y63, Y62,……,Υ33, Υ32}和{Ζ63, Ζ62,……, Z33,Z3J。其中,在图9中,控制单元13针对选择单元11中的每个32选1选择器的第一控 制信号(图9中表示为c3)可参见上述如图7所示的实施例中对第一控制信号的相关描述, 控制单元13针对交换单元12中的每个2选1选择器的第二控制信号(图9中表示为c4, 图9中控制单元13对每个2x2的交换矩阵的2个第二控制信号用加粗的实线表示,可以理 解为控制单元13对每个2x2的交换矩阵中的2个2选1选择器分别独立控制)可参见上 述如图7所示的实施例中对第二控制信号的相关描述,此处不再赘述。
[0127] 可以理解,图9中,由于选择单元11的个数为4,因此交换单元12的个数为2,又 由于一组输出包括两路输出,即需要输出两组矢量数据,且每组矢量数据中的元素个数均 为64,因此本实施例中,需要为两组矢量数据中相同位置的元素分别设置一个2选1选择 器,即一组输出对应一个2x2的交换矩阵,所以本实施例中,两个交换单元12中的2选1选 择器的个数为128,即每个交换单元12均由64个2选1选择器,即32个2x2的交换矩阵组 成。
[0128] 为了更加清楚地理解如图9所示的矢量排列电路的实现原理,下面再从代码的角 度进一步解释如图9所示的矢量排列电路。
[0129] 如图9所示的矢量排列电路可以用下述代码解释:

[0132] 需要说明的是,上述代码仅是为了更加清楚的解释如图9所示的实现原理而提出 的,具体实现中,图9是通过由选择器组成的逻辑电路实现的。
[0133] 实例三
[0134] 针对图5中的(c),在FIR滤波器的应用中,需要从两个输入矢量数据中选择出 (本实例中选择的过程相当于对原矢量数据进行排列)连续的矢量数据片段用于各种计 算,例如乘累加计算。如图10所示,假设有两个矢量数据,分别SvjPV s,其中,%为{R63, R62,……,RpRahVsSiSf^S62,……,S 1, S。},可见,VdP Vs的位宽均为64。先将两个输 入矢量数据%和Vs拼接成长矢量数据,然后再分别根据shift_count_0和shift_count_l 选出两个连续的矢量数据^和V z。其中,shift_count_0和shift_count_l表示所输出的 矢量数据在拼接矢量数据中的偏移,且在图10中,当输出的矢量数据中的某些元素已经超 出拼接矢量数据的最左端(图10中表示为Tl)时,可以选择这些元素输出随机值或者环回 到拼接的矢量数据的最右端(图10中表示为T2)(比如图10中的40为V Y,41和42拼接 起来构成Vz)。本实施例将以环回到拼接矢量数据的最右端为例来介绍实例三的实现方法。 由于输入的两个矢量数据V#P V z的位宽均是64,即这两个矢量数据均是64路(均包含64 个元素)的矢量数据,因此,在对矢量数据进行排列之前,首先需要做预处理选择,将如图 10所示的Vr(图10中表示为43)和Vs (图10中表示为44)变换为VjP V D(图10中 示为45, Vd表示为46)。因为从输入的两个矢量数据V V s中选择V ,和V z的过程是一样 的,因此,此处以选择Vy为例对本发明实施例的预处理进行示例性的说明。以选择V γ为例, 本实施例经过对输入的两个矢量数据%和V s进行预处理把所有可能在V ,内出现的元素都 选择出来,形成中间矢量数据Vw,且元素^只能来自R ;或S i,这是由输出的矢量数据中相 邻元素的序号连续所决定的。中间矢量数据VjP最终输出的矢量数据¥,虽然元素是相同 的,但是元素在矢量数据中的次序可能是不同的,因此需要对中间矢量数据V w做循环右移, 循环右移可以通过2个32x32的交换矩阵来实现。
[0135] 本实施例中,假设以将经过预处理得到的两个中间矢量数据V D分别分为奇数 矢量数据组和偶数矢量数据组为例,本发明实施例提供的矢量排列电路如图11所示。
[0136] 在图11中,对于图10得到的两个矢量数据组Vw(图11中表示为45)和V d(图11 中表示为46)分别由分组单元10按照元素的奇数序号和偶数序号进行分组,得到四个矢量 数据组47、48、49和50,其中,47为{W 63,……,Wj,48为{W62,……,W。},49为{D63,……, Dj,5〇S{D62,……,D。},47、48、49 和 50 均包括 32 个元素。
[0137] 由于图11中将待排列的两个矢量数据分别分为两个矢量数据组,总共有四个矢 量数据组,因此选择单元11的个数m = η = 4 (本实施例中,一个矢量数据组对应一个选择 单元11),即图11中有4个选择单元,分别表示为mux0、muxl、mux2和mux3,本实例中,使得 每个矢量数据组分别输入到一个选择单元11,具体可如图11所示。如图11所示,每个选择 单元11为一个32x32的交换矩阵,其由32个32选1选择器组成;由于每个32选1选择器 都由控制单元13独立控制,因此每个选择单元11均需要32个独立的控制信号(图11中 控制单元13对每个选择单元11的32个控制信号用加粗的实线表示,可以理解为控制单元 13对每个32x32的交换矩阵中的32个32选1选择器分别独立控制)。在图11中,每个选 择单元11 (即32x32的交换矩阵)均可以在控制单元13的控制信号的作用下,从输入该选 择单元11的矢量数据组中选择32个元素输出。其中,图11中的选择单元mux0、muxl、mux2 和mux3中的各个对应的32选1选择器均由控制单元独立控制,具体的,本实施例中的控制 逻辑具体可根据实际应用中需要输出的矢量数据来设置,其设置原理与上述实例一和实例 二中的控制逻辑的设置原理类似,此处不再赘述。
[0138] 需要说明的是,本实施例中,上述如图7所示的2个32选1选择器分别为两个选 择单元11中的32选1选择器。例如,一个32选1选择器为选择单元muxO中的一个32选 1选择器,另一个32选1选择器为选择单元muxl中相应位置的一个32选1选择器。其中, 相应位置可以参见上述实例二中对相应位置的具体描述,此处不再赘述。
[0139] 可以理解,在图11中,由于一个矢量数据组对应一个选择单元,因此选择单元 muxO和muxl组合起来对输入各自的矢量数据组进行选择后可以得到一组64个元素,即实 现对如图10所示的中间矢量数据V w的循环右移;选择单元mux2和mux3组合起来对输入 各自的矢量数据组进行选择后可以得到另一组64个元素,即实现对如图10所示的中间矢 量数据V d的循环右移,其中,每组64个元素具体是待排列的矢量数据中的哪些元素由具体 的控制逻辑决定。
[0140] 如图11所示,选择单元11选择后的矢量数据分别对应输入至交换单元12,由交换 单元12对矢量数据中的元素进行交换后输出。具体的,本实施例中,由于与每个元素对应 的位置均包括两路输出,因此两个选择单元11中的2个32选1选择器分别从输入各自的 矢量数据组中选择一个元素,并将该元素输出至与这2个32选1选择器连接的2x2的交换 矩阵(图11中表示为muX2X 2),其由2个2选1选择器组成,再由这2个2选1选择器分 别从输入各自的两个元素中选择一个元素输出,这样,选择单元muxO和mux 1选择后的矢量 数据再通过与选择单元muxO和muxl连接的交换单元12中对应的2x2的交换矩阵(具体 为2个2选1选择器)的选择,最终输出V Y,VYS {Y63,Y62,……,YpYJ ;相应的,选择单元 mux2和mux3选择后的矢量数据再通过与选择单元mux2和mux3连接的交换单元12中对应 的2x2的交换矩阵(具体为2个2选1选择器)的选择,最终输出V Z,VZS {Z63,Z62,……, Z1, Z。}。其中,在图11中,控制单元13针对选择单元11中的每个32选1选择器的第一控 制信号(图11中表示为c3)可参见上述如图7所示的实施例中对第一控制信号的相关描 述,控制单元13针对交换单元12中的每个2选1选择器的第二控制信号(图11中表示为 c4,图11中控制单元13对每个2x2的交换矩阵的2个第二控制信号用加粗的实线表示,可 以理解为控制单元13对每个2x2的交换矩阵中的2个2选1选择器分别独立控制)可参 见上述如图7所示的实施例中对第二控制信号的相关描述,此处不再赘述。
[0141] 本实施例中,正是因为选择单元11对输入其的矢量数据进行循环右移后输出,因 此可以保证交换单元12最终输出矢量数据中,相邻两个元素的序号也是相邻的。
[0142] 可以理解,图11中,由于选择单元11的个数为4,因此交换单元12的个数为2,又 由于一组输出包括两路输出,即需要输出两组矢量数据,且每组矢量数据中的元素个数均 为64,因此本实施例中,需要为两组矢量数据中相同位置的元素分别设置一个2选1选择 器,即一组输出对应一个2x2的交换矩阵,所以本实施例中,两个交换单元12中的2选1选 择器的个数为128,即每个交换单元12均由64个2选1选择器,即32个2x2的交换矩阵组 成。
[0143] 为了更加清楚地理解如图11所示的矢量排列电路的实现原理,下面再从代码的 角度进一步解释如图11所示的矢量排列电路。
[0144] 如图11所示的矢量排列电路可以用下述代码解释:
output element_type Vz[63:0]; /7输出 64 路矢量数据 Vz input element type Vs[63:0l; //输入 64 路矢量数据 Vs input elemenMype VR[63:0]; //输入 64 路矢量数据 Vr input [6:0] shift-count-0; //移位跨步 input [6:0] shift_count_1; //移位跨步 logic [6:0] pre-mux-Ctrl-0[63:0]; logic [6:0] pre-mux-Ctrl-1 [63:0]; 淨生.咸控制信号,:其中每一路有一个6比特的选择控制字,其申第? 處特用于儀预处理的:选择 for (int i=0:i<64;M十 1) begin pre_
当前第5页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1