一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

随机计算电路及方法与流程

2022-04-25 04:51:45 来源:中国专利 TAG:


1.本公开涉及电路技术领域,特别涉及一种随机计算电路及方法。


背景技术:

2.在随机计算(stochastic computing,sc)中,数字可以采用比特序列表示。例如,采用比特序列中比特1的概率表示数字,比如用比特序列1,0,0,0表示1/4。
3.将数字采用比特序列表示后,计算可以由非常简单的电路处理。例如,用于实现乘法的随机计算电路可以由序列产生电路、与门和计数电路组成。其中,序列产生电路用于采用序列表示待计算的数字,比如采用序列s1:01101010表示4/8,序列s2:10111011表示6/8,然后将序列s1和s2输入与门中,与门输出序列s3:00101010,计数电路通过对序列s3中的比特1和0进行计数,得到序列s3中比特1的概率3/8,也即是4/8和6/8相乘的结果。
4.由于数字在采用比特序列进行表示时,只限定了其中比特1的出现的概率,因此同一个数字可以表示成多种同一长度的比特序列,然而并非每种比特序列都能保证计算准确。例如在前面的例子中,如果将s1的序列替换成01011100,s2的序列替换成11101011,那么经过与门计算得到的s3序列为01001000,对应的值为2/8,替换比特序列后计算出现错误。
5.因此,如何保障随机计算的准确性,成为随机计算的难点。


技术实现要素:

6.本公开实施例提供了一种随机计算电路及方法。
7.本公开至少一实施例提供了一种随机计算电路,所述随机计算电路包括:
8.映射电路,用于将待计算的两个数字分别映射为一个第一控制字,得到两个第一控制字;
9.计算电路,用于基于所述两个第一控制字产生两个序列,以及对所述两个序列进行逻辑运算,对所述逻辑运算输出的结果序列进行计数,得到计算结果;
10.控制电路,用于在所述两个第一控制字满足条件时,控制所述计算电路输出所述计算结果;在所述两个第一控制字不满足条件时,控制所述映射电路重新将所述待计算的两个数字映射为两个第二控制字,所述第二控制字和第一控制字不同;在所述两个第二控制字满足条件时,控制所述计算电路输出基于所述两个第二控制字得到的计算结果;
11.其中,所述两个第一控制字满足条件时,所述两个序列不相关,所述两个第一控制字不满足条件时,所述两个序列相关。
12.可选地,所述控制电路,包括:
13.控制字转换子电路,用于将所述两个第一控制字分别转换为两个整数值;
14.互质判断子电路,用于判断所述两个整数值是否互质;所述两个整数值互质,表示所述两个第一控制字满足条件;所述两个整数值不互质,表示所述两个第一控制字不满足条件。
15.可选地,所述第一控制字包括整数部分和小数部分;
16.所述控制字转换子电路,用于将所述整数部分和所述小数部分之间的虚拟小数点移动到小数部分最末端,并且去除末端为0的位数,得到所述整数值。
17.可选地,所述互质判断子电路,用于通过二进制欧几里得算法判断所述两个整数值是否互质。
18.可选地,所述映射电路中存储有数字和控制字的映射表,所述映射表中的一个数字对应多个控制字,所述多个控制字对应的序列的占空比相同。
19.可选地,所述计算电路,包括:
20.序列产生子电路,与所述映射电路连接,响应于所述两个第一控制字,输出两路脉冲信号,所述脉冲信号用于表示所述序列,所述脉冲信号包括第一频率信号和第二频率信号,所述第一频率信号和所述第二频率信号在所述脉冲信号中出现的概率由对应的所述第一控制字控制;
21.逻辑运算器,与所述序列产生子电路连接,对所述两路脉冲信号表示的两个序列进行逻辑运算,输出表示结果序列的脉冲;
22.计数子电路,与所述逻辑运算器连接,用于对所述表示结果序列的脉冲的高低电平进行计数,得到所述计算结果。
23.可选地,所述序列产生子电路,包括:
24.两个脉冲子电路,每个所述脉冲子电路分别根据一个所述第一控制字产生脉冲信号。
25.可选地,所述脉冲子电路,包括:信号发生器和频率合成器,所述频率合成器分别与所述信号发生器、所述映射电路和所述逻辑运算器连接;
26.所述信号发生器响应于初始脉冲信号产生相位均匀间隔的基准脉冲信号;
27.所述频率合成器响应于所述基准脉冲信号和所述第一控制字,产生所述脉冲信号;
28.其中,所述第一控制字包括第一系数和第二系数;
29.所述脉冲信号包括基于所述基准脉冲信号和第一系数产生的所述第一频率信号和基于所述基准脉冲信号和第一系数产生的所述第二频率信号,所述脉冲信号中的所述第一频率信号和所述第二频率信号的占比由所述第二系数控制。
30.可选地,所述频率合成器包括:第一处理单元、第二处理单元以及输出单元;
31.第一处理单元,与所述映射电路连接,基于所述第一控制字分别产生第一控制信号和第二控制信号;
32.第二处理单元,与所述第一处理单元连接,基于所述第一控制信号从相位均匀间隔的基准脉冲信号中选出第一脉冲信号,以及基于所述第二控制信号从所述基准脉冲信号中选出第二脉冲信号,并从所述第一脉冲信号和所述第二脉冲信号中选择一个作为输出信号;
33.输出单元,与所述第二处理单元连接,基于所述第二处理单元的输出信号产生所述脉冲信号。
34.可选地,所述逻辑运算器对应的逻辑运算包括与门、或门、数据选择器中的一个。
35.可选地,所述控制电路,还用于在控制所述映射电路将所述待计算的两个数字映
射为所述两个第二控制字时,控制所述计算电路停止基于所述两个第一控制字的计算。
36.本公开至少一实施例提供了一种随机计算方法,所述随机计算方法包括:
37.将待计算的两个数字分别映射为一个第一控制字,得到两个第一控制字;
38.基于所述两个第一控制字产生两个序列,以及对所述两个序列进行逻辑运算,对所述逻辑运算输出的结果序列进行计数,得到计算结果;
39.在所述两个第一控制字满足条件时,输出所述计算结果;在所述两个第一控制字不满足条件时,将所述待计算的两个数字映射为两个第二控制字,所述第二控制字和第一控制字不同;在所述两个第二控制字满足条件时,输出基于所述两个第二控制字得到的计算结果;
40.其中,所述两个第一控制字满足条件时,所述两个序列不相关,所述两个第一控制字不满足条件时,所述两个序列相关。
41.可选地,所述随机计算方法还包括:
42.将所述两个第一控制字分别转换为两个整数值;
43.判断所述两个整数值是否互质;所述两个整数值互质,表示所述两个第一控制字满足条件;所述两个整数值不互质,表示所述两个第一控制字不满足条件。
44.可选地,所述第一控制字包括整数部分和小数部分;
45.所述将所述两个第一控制字分别转换为两个整数值,包括:
46.将所述整数部分和所述小数部分之间的虚拟小数点移动到小数部分最末端,并且去除末端为0的位数,得到所述整数值。
47.可选地,所述将待计算的两个数字分别映射为一个第一控制字,得到两个第一控制字,包括:
48.获取数字和控制字的映射表,根据所述映射表将所述待计算的两个数字映射为所述两个第一控制字,所述映射表中的一个数字对应多个控制字,所述多个控制字对应的序列的占空比相同。
附图说明
49.图1是本公开实施例提供的一种随机计算电路的结构示意图;
50.图2是本公开实施例提供的一种随机计算电路的结构示意图;
51.图3是本公开实施例提供的一种计算电路的结构示意图;
52.图4是本公开实施例提供的一种脉冲子电路的结构示意图;
53.图5是本公开实施例提供的一种环路振荡器的结构示意图;
54.图6为采用图5中的信号发生器产生的k路相位均匀间隔的基准脉冲信号的波形图;
55.图7为采用频率合成器进行脉冲信号合成的原理示意图;
56.图8是本公开实施例提供的一种频率合成器的结构示意图;
57.图9是本公开实施例提供的一种随机计算方法的流程图;
58.图10是本公开实施例提供的一种随机计算方法的流程图;
59.图11是本公开实施例提供的一种时序图。
具体实施方式
60.为使本公开的原理和优点更加清楚,下面将结合附图对本公开实施方式作进一步地详细描述。
61.图1是本公开实施例提供的一种随机计算电路的结构示意图。参见图1,该随机计算电路包括:映射电路10、计算电路11和控制电路12,映射电路10分别与计算电路11和控制电路12电连接,计算电路11还和控制电路12电连接。
62.其中,映射电路10用于将待计算的两个数字分别映射为一个第一控制字,得到两个第一控制字。
63.计算电路11用于基于所述两个第一控制字产生两个序列,以及对所述两个序列进行逻辑运算,对所述逻辑运算输出的结果序列进行计数,得到计算结果。
64.控制电路12用于在所述两个第一控制字满足条件时,控制所述计算电路输出所述计算结果;在所述两个第一控制字不满足条件时,控制所述计算电路不输出计算结果,以及控制所述映射电路重新将所述待计算的两个数字映射为两个第二控制字,所述第二控制字和第一控制字不同;在所述两个第二控制字满足条件时,控制所述计算电路输出基于所述两个第二控制字得到的计算结果。
65.其中,所述两个第一控制字满足条件时,所述两个序列不相关,所述两个第一控制字不满足条件时,所述两个序列相关。
66.在本公开实施例中,先将待计算的数字映射为两个控制字,控制字一方面可以用来产生随机计算时使用的序列;另一方面,控制字还可以用来判断随机计算时使用的序列是否具有相关性,当两个第一控制字满足条件时,说明两个序列不相关,此时计算电路采用两个序列进行逻辑运算得到的计算结果准确,控制计算电路输出该计算结果,当两个第一控制字不满足条件时,说明两个序列相关,此时计算电路采用两个序列进行逻辑运算得到的计算结果不准确,控制计算电路不输出该计算结果,并且重新进行控制字的映射,以及重复计算和判断过程,直到最终能够输出准确的计算结果。该方法首先能够保障随机计算的准确性,同时计算结果不准确时,重新映射控制字,重新计算,浪费时间少,计算效率高。该随机计算电路可以作为数字知识产权核(intellectual property core,ipcore)集成在各种芯片中,成本低、可移植性好。
67.在上述方案中,计算电路11获得第二控制字后,同样基于两个第二控制字产生两个序列,以及对这两个序列进行逻辑运算,对逻辑运算输出的结果序列进行计数,得到计算结果,计算的方式和基于两个第一控制字的过程相同。
68.可选地,控制电路12还用于在控制映射电路11将待计算的两个数字映射为两个第二控制字时,控制所述计算电路12停止基于两个第一控制字的计算。
69.这里,控制计算电路12停止计算,可以由控制电路12给控制电路发送指令信号实现。
70.在本公开实施例中,控制字通常是一个数字,用于控制计算电路产生能够表示待计算的数字的序列。例如,当待计算数字为1/2时,在控制字控制下,计算电路产生能够表示1/2的序列,例如序列10101010。
71.可选地,映射电路10还用于记录当前计算任务中待计算的数字的映射记录,这样后续重新映射时,可以避免重复映射到相同的控制字。
72.示例性地,在重新映射控制字时,可以只重新映射其中一个控制字,也可以同时重新映射其中两个控制字。
73.图2是本公开实施例提供的一种随机计算电路的结构示意图。相比于图1的结构,图2中示出控制电路12的详细结构。参见图2,控制电路12包括:控制字转换子电路121和互质判断子电路122,控制字转换子电路121分别与映射电路10和互质判断子电路122电连接。
74.其中,控制字转换子电路(或称为控制字转换器,control word transformer)121用于将所述两个第一控制字分别转换为两个整数值;
75.互质判断子电路(或称为互质判断器,relatively prime estimator)122用于判断所述两个整数值是否互质;所述两个整数值互质,表示所述两个第一控制字满足条件;所述两个整数值不互质,表示所述两个第一控制字不满足条件。
76.在本公开实施例中,当2个控制字转换成的整数值互质时,说明对应的两个序列不相关。
77.示例性地,所述第一控制字包括整数部分和小数部分;
78.所述控制字转换子电路121,用于将所述整数部分和所述小数部分之间的虚拟小数点移动到小数部分最末端,并且去除末端为0的位数,得到所述整数值。
79.例如,第一控制字f总长为n比特,其中小数位占据m比特。即在第m位设置一个虚拟小数点,这个小数点前面的位置为整数,后面的位置为小数。假设第一控制字f的整数部分为i,小数部分为r,则:
[0080][0081][0082]
需要转换成的整数值iqp=i
×2m
p=f
×2m
,也即将虚拟小数点后移m位。其中p表示小数部分r表示成分数时的分子,例如r为0.5时,m为1,p为1。
[0083]
例如f=00010.100,假如整数是5位,小数是3位,f换成十进制为2 1/2,即m=1,即虚拟小数点向右移一位即可得到iqp=00000101(也即移动到最末位后去掉最后的0),换算成10进制为5。
[0084]
示例性地,所述互质判断子电路122,用于通过二进制欧几里得算法判断所述两个整数值是否互质。
[0085]
其中,采用二进制欧几里得算法判断所述两个整数值是否互质的方式如下:
[0086]
规则1.如果a和b都是偶数,gcd(a,b)=2*gcd(a/2,b/2);
[0087]
规则2.如果a是偶数,b是奇数,gcd(a,b)=gcd(a/2,b);
[0088]
规则3.如果a是奇数,b是偶数,gcd(a,b)=gcd(a,b/2);
[0089]
规则4.如果a和b都是奇数,当a》b时,gcd(a,b)=gcd(a-b,b),当a《b时,gcd(a,b)=gcd(a,b-1)。
[0090]
其中,a和b为前述2个整数值,也即前述iqp。gcd(a,b)表示a和b的最大公约数,如果2个整数的最大公约数仅包括1,则说明这2个整数互质,如果2个整数的最大公约数除了1之外还包括其他值,则说明这2个整数不互质。
[0091]
例如,a=35,b=20,则:
[0092]
步骤1:基于规则3,gcd(35,20)=gcd(35,20/2)=gcd(35,10);
[0093]
步骤2:基于规则3,gcd(35,10)=gcd(35,10/2)=gcd(35,5);
[0094]
步骤3:基于规则4,gcd(35,5)=gcd(35-5,5)=gcd(30,5);
[0095]
步骤4:基于规则2,gcd(30,5)=gcd(30/2,5)=gcd(15,5);
[0096]
步骤5:基于规则4,gcd(15,5)=gcd(15-5,5)=gcd(10,5);
[0097]
步骤6:基于规则2,gcd(10,5)=gcd(10/2,5=gcd(5,5);
[0098]
基于步骤6可知,a和b的最大公约数除了1还包括5,因此a和b不互质。
[0099]
示例性地,所述映射电路10中存储有数字和控制字的映射表,所述映射表中的一个数字对应多个控制字,所述多个控制字对应的序列的占空比相同。
[0100]
例如,在该映射表中,每个数字对应的多个控制字的小数部分均为非0小数,从而增加2个第一控制字转换而成的整数值的互质概率,提高计算效率。
[0101]
在该映射表中,不同数字对应的控制字的位数是相同的,例如都是8位,并且通常不同控制字的整数位的位数相同,不同控制字的小数位的位数相同。
[0102]
图3是本公开实施例提供的一种计算电路的结构示意图。参见图3,计算电路11,包括:序列产生子电路111、逻辑运算器112和计数子电路113,逻辑运算器112分别与序列产生子电路111和计数子电路113电连接,序列产生子电路111还与所述映射电路10连接。
[0103]
序列产生子电路111用于响应于所述两个第一控制字,输出两路脉冲信号,所述脉冲信号用于表示所述序列,所述脉冲信号包括第一频率信号和第二频率信号,所述第一频率信号和所述第二频率信号在所述脉冲信号中出现的概率由对应的所述第一控制字控制;
[0104]
逻辑运算器112用于对所述两路脉冲信号表示的两个序列进行逻辑运算,输出表示结果序列的脉冲;
[0105]
计数子电路113用于对所述表示结果序列的脉冲的高低电平进行计数,得到所述计算结果。
[0106]
示例性地,脉冲信号是周期性信号,本公开实施例中的序列可以是该脉冲信号的一个周期,或者不足一个周期或者多于一个周期的部分表示。
[0107]
示例性地,所述序列产生子电路111,包括:
[0108]
两个脉冲子电路110,每个所述脉冲子电路110分别根据一个所述第一控制字产生脉冲信号。
[0109]
示例性地,脉冲子电路均包括频率混合(frequencemixing,fm)子电路,频率混合子电路可以采用直接频率平均(direct frequency average,dfa)技术实现。
[0110]
示例性地,该随机计算电路可以用来实现乘法运算,实现乘法运算时,逻辑运算器112为与门,也即通过与运算实现乘法。该随机计算电路还可以用来实现其他运算,例如加、减、除法、开方、平方等等,比如实现加法运算时,逻辑运算器112为或门,或者数据选择器(multiplexer,mux)。
[0111]
示例性地,计数子电路113包括d触发器(d-flip flop,dff)131。d触发器131的输入端与逻辑运算器112连接,d触发器131的控制端连接时钟子电路132,d触发器131的输出端输出计数结果,也即最终的计算结果。
[0112]
当然,计数子电路113也可以采用其他实现方式实现,例如计数子电路113包括寄存器,采用寄存器实现计数。
[0113]
计数子电路113可以分别对输出的序列中的1(高电平)和0(低电平)进行计数,得到计算结果c1/c10,其中c1为1的计数值,c2为1和0的总计数值。当然,在其他实现方式中,c1也可以为0的计数值。
[0114]
图4示出了本公开实施例提供的一种脉冲子电路的结构示意图。参见图4,脉冲子电路110包括信号发生器101和频率合成器102。频率合成器102分别与信号发生器101、映射电路10和逻辑运算器112电连接。
[0115]
其中,信号发生器101响应于初始脉冲信号产生相位均匀间隔的基准脉冲信号。频率合成器102响应于相位均匀间隔的基准脉冲信号和第一控制字,产生所述脉冲信号。
[0116]
其中,第一控制字包括第一系数和第二系数;脉冲信号包括基于相位均匀间隔的基准脉冲信号和第二系数产生所述第一频率信号和基于相位均匀间隔的基准脉冲信号和第二系数产生所述第二频率信号,脉冲信号中的第一频率信号和第二频率信号的占比由第一系数控制。
[0117]
在该实现方式中,脉冲子电路由两个部分组成,其中,信号发生器负责产生相位均匀间隔的基准脉冲信号,而频率合成器则负责根据相位均匀间隔的基准脉冲信号和第一控制字产生脉冲信号。
[0118]
示例性地,初始脉冲信号可以采用压控振荡器100产生,例如采用电感电容压控振荡器(lc voltage controlled oscillator,lcvco)作为振源产生上述初始脉冲信号。也即,该脉冲子电路还可以包括压控振荡器,压控振荡器的输出端与信号发生器的输入端电连接。不同的脉冲子电路采用不同的lcvco产生初始脉冲信号,然后经过不同的信号发生器,从而使得每个脉冲子电路中的相位均匀间隔的基准脉冲信号的初始相位和噪声特性不同,从而增加最终输出的不可预测性。
[0119]
示例性地,信号发生器101可以为环路振荡器(ring oscillator,ro)。图5示出了环路振荡器的结构示意图,参见图5,该环路振荡器包括多个与非门,多个与非门相连形成环路,该环路振荡器具有多个引脚p0-p15,其中一个引脚可以作为输入端输入一路初始脉冲信号,初始脉冲信号经过与非门产生延迟,由其他引脚作为输出端输出多路基准脉冲信号,且多路基准脉冲信号为相位均匀间隔的基准脉冲信号。
[0120]
相位均匀间隔的基准脉冲信号是指,信号发生器101产生的多路脉冲信号的相位变化情况相同,且多路脉冲信号初始相位的间隔相等。
[0121]
图6为采用图5中的信号发生器产生的k路相位均匀间隔的基准脉冲信号的波形图。参见图6,任意两路信号的波形相同(即周期和幅度相同),且k路信号的波形均匀排布,也即间隔相同,任意两个相邻的信号之间的相位差为基本时间单元δ,k路信号的频率均为fi,k为大于2的整数。
[0122]
在本公开实施例的一种实现方式中,频率合成器200,被配置为按照如下公式生成脉冲信号:
[0123]
t
taf
=(1-r)*ta r*tb,ta=i*δ,tb=(i 1)*δ;
[0124]
也即t
taf
=(1-r)*i*δ r*(i 1)*δ=(i r)*δ,第一控制字f=i r。
[0125]
其中,t
taf
为脉冲信号的周期,ta为第一频率信号(或称为第一周期信号),tb为第二频率信号(或称为第二周期信号);i为前述第二系数,用于从k路基准脉冲信号中进行选择,以进行频率信号的合成;r为前述第一系数,用于控制第一频率信号和第二频率信号出现的
概率,其中r控制tb出现的概率,1-r控制ta出现的概率。
[0126]
例如,第一控制字i为3,r为0.5
……
(后续小数位未示出),则在第一个周期内,从k路基准脉冲信号中选择出两路相位差为3δ的基准脉冲信号,进而合成并输出ta=3δ,在第二个周期内,选择出两路相位差为4δ的基准脉冲信号,进而合成并输出tb=4δ,δ为k路相位均匀间隔的基准脉冲信号中的任意两个相邻信号之间的相位差。
[0127]
在本公开实施例中,第一控制字均可以为整数或小数,每个第一控制字可以拆分为整数部分和小数部分,可以采用整数部分作为前述第二系数,小数部分作为前述第一系数,实现频率信号的合成。例如,第一控制字为5.4
……
,则整数部分为5,小数部分为0.4
……
。再例如,第一控制字为6,则整数部分为6,小数部分为0。
[0128]
下面说明为何两个第一控制字转换成的两个整数值互质时,输出的两个序列不相关:
[0129]
假设两个待计算的数字对应的第一控制字分别为fx和fy,转换出的整数值分别为iqp
x
和iqpy,对应的序列后分别为x和y,x和y可以完成随机计算的前提是x和y不相关。x和y的周期可以采用以下方式表示为t
x
和ty:
[0130]
t
x
=iqp
x
·
δ,ty=iqpy·
δ;
[0131]
可以看出,序列x和y均包含多个周期t
taf
,当以δ为分辨率采样时,x序列可以表示为ω
x

[0132]
ω
x
={x0,x1,x2,

,x
iqpx-1
},xi={0,1},其中i表示序列中元素的序号;
[0133]
当使用y对x进行采样时,得到的序列可以表示为ω
x|y

[0134]
ω
x|y
={iqpy·
i mod iqp
x
∶i∈n};n为自然数集合;
[0135]
当iqp
x
和iqpy互为质数时,ω
x
和ω
x|y
相等,即
[0136][0137]

[0138][0139]
因为满足p(x)p(y)=p(x∩y),所以x和y在iqpx和iqpy互为质数时独立,x和y独立,说明x和y不相关。
[0140]
在本公开实施例中,序列采用周期t
x
=iqp
x
·
δ,ty=iqpy·
δ表示,其中每个δ时间可以定义为0或1,实现以δ为单位的编码特性,也即本公开实施例提供的随机计算电路具有数字计算特性。同时,周期内部的占空比(也即表示的序列中1的占比)参与计算,用来表示待计算的数字,也即本公开实施例提供的随机计算电路具有模拟计算特性。通过频率周期和占空比的结合共同来表示一个数字,体现了数字和模拟结合的双重特性,使得随机计算精度更高、效率更高。
[0141]
图7为采用频率合成器进行脉冲信号合成的原理示意图。参见图7,该频率合成器利用时间平均频率概念来合成输出脉冲信号。下面以第一频率信号的合成为例进行说明:频率合成器接收第一控制字和k路相位均匀间隔的基准脉冲信号。第一控制字f=i r,其中i是整数部分,r是小数部分;k路相位均匀间隔的基准脉冲信号中的任意两个相邻的信号之间的相位差为基本时间单元δ。频率合成器首先根据基本时间单元δ和第一控制字f中的
整数部分i,构建两种不同的时钟周期ta和tb,ta=i
·
δ,tb=(i 1)
·
δ,tb相较于ta周期更大,在图7中表现为tb的高电平(或低电平)的长度比ta长。之后,频率合成器基于第一控制字f中的小数部分r,控制ta和tb出现的概率,也即前文所说的第一频率信号和第二频率信号的占比,从而产生脉冲信号。
[0142]
第一控制字的小数部分影响ta和tb出现的概率,当小数部分为0.5时,ta和tb出现的概率相等,参见图7所示的脉冲信号,其中ta和tb交替出现。当小数部分小于0.5时,ta出现的概率大于tb,特殊情况是当小数部分为0时,该脉冲信号只有ta一个成分;当小数部分大于0.5时,tb出现的概率大于ta。
[0143]
图8为本公开提供的一种频率合成器的结构示意图。参见图8,频率合成器可以包括第一处理单元21、第二处理单元22以及输出单元23。
[0144]
第一处理单元21,与映射电路10连接,基于第一控制字分别产生第一控制信号和第二控制信号;第二处理单元22,与第一处理单元21连接,基于第一控制信号从相位均匀间隔的基准脉冲信号中选出第一脉冲信号,以及基于第二控制信号从所述基准脉冲信号中选出第二脉冲信号,并从第一脉冲信号和第二脉冲信号中选择一个作为输出信号;
[0145]
输出单元23,与第二处理单元22连接,基于第二处理单元22的输出信号产生所述脉冲信号。
[0146]
下面结合图8对第一处理单元21、第二处理单元22以及输出单元23的详细工作过程进行说明:
[0147]
第一处理单元21包括第一逻辑控制器211、第二逻辑控制器212。
[0148]
参考图8,第一逻辑控制器211包括第一加法器2111、第一寄存器2112和第二寄存器2113,第一寄存器2112分别与第一加法器2111和第二寄存器2113连接。第一逻辑控制器211的作用是产生第一控制信号。
[0149]
第一加法器2111将第一控制字f和第一寄存器2112存储的最高有效位(most significant bits,例如,5比特)相加,然后在第二时钟频率clk2的上升沿时将相加结果保存到第一寄存器2112中;或者,第一加法器2111可以将第一控制字f和第一寄存器2112存储的所有比特相加,然后在第二时钟频率clk2的上升沿时将相加结果保存到第一寄存器2112中。在第二时钟频率clk2的下一个上升沿时,第一寄存器2112存储的最高有效位将被存储到第二寄存器2113中,作为第一k

1多路复用器221的选择信号,也即前述第一控制信号,用于从k路相位均匀间隔的基准脉冲信号中选择一路信号作为第一脉冲信号。
[0150]
在将第一控制字f和第一寄存器2112存储的最高有效位相加时,假设第一寄存器2112内的值小于1,如果相加结果的小数部分进位,则存入第二寄存器2113的最高有效位为i 1,如果相加时第一控制字未发生进位,则存入第二寄存器2113的最高有效位为i。当第二寄存器2113中为i 1时,频率合成器对应输出的是tb=(i 1)
·
δ,当第二寄存器2113中为i时,频率合成器对应输出的是ta=i
·
δ,可以看出输出ta还是tb与第一控制字的小数部分大小相关,第一控制字的小数部分越小,越不容易发生进位,则输出ta的概率越大,反之则输出tb的概率大。
[0151]
这里,第一寄存器2112可以包括存储整数的第一部分和存储小数的第二部分。相加时,将第一控制字f的整数部分和第一部分中的内容相加,将第一控制字f的小数部分和第二部分中的内容相加。相加时为二进制相加,由加法器实现。
[0152]
第二逻辑控制器212包括第二加法器2121、第三寄存器2122和第四寄存器2123。第三寄存器2122分别与第二加法器2121以及第四寄存器2123连接。第二逻辑控制器212的作用是产生第二控制信号。
[0153]
第二加法器2121将高电平占比控制字d和第一寄存器2112存储的最高有效位相加,然后在第二时钟频率clk2的上升沿时将相加结果保存到第三寄存器2122中。在将相加结果保存到第三寄存器2122中之后,在第一时钟频率clk1的上升沿时,第三寄存器2122存储的信息将被存储到第四寄存器2123中,并作为第二k

1多路复用器222的选择信号,也即前述第二控制信号,用于从k个多相位输入信号中选择一路信号作为第二脉冲信号。其中,第二时钟频率clk2为第一时钟频率clk1经过非门后的信号。其中,高电平占比控制字d用于指示ta中高电平的占比以及tb中高电平的占比。示例性地,d包括两个数值,其中一个数值用于控制ta中高电平的占比,另一个数值用于控制tb中高电平的占比,两个数值周期性交替输入到第二加法器2121中。
[0154]
参考图8,第二处理单元22包括第一k

1多路复用器221、第二k

1多路复用器222和2

1多路复用器223。第一k

1多路复用器221和第二k

1多路复用器222分别包括多个输入端、控制输入端和输出端。2

1多路复用器223包括控制输入端、输出端、第一输入端和第二输入端。第一k

1多路复用器221的输出端和2

1多路复用器223的第一输入端连接,第二k

1多路复用器222的输出端和2

1多路复用器223的第二输入端连接;第一k

1多路复用器221的多个输入端、第二k

1多路复用器222的多个输入端均与信号发生器连接;第一k

1多路复用器221的控制输入端与第二寄存器2113连接,第二k

1多路复用器222的控制输入端与第四寄存器2123连接。
[0155]
第一k

1多路复用器221的控制输入端在第一逻辑控制器211产生的第一控制信号的控制下,从k路相位均匀间隔的基准脉冲信号中选择一路信号作为输出信号,也即第一脉冲信号;第二k

1多路复用器222的控制输入端在第二逻辑控制器212产生的第二控制信号控制下,从k路相位均匀间隔的基准脉冲信号中选择一路信号作为输出信号,也即第二脉冲信号。
[0156]
以第一k

1多路复用器为例,在选择输出信号时,可以根据第二寄存器2113存储的值,也即第一控制信号的数值选择,例如,第一控制信号为3,则选择k路相位均匀间隔的基准脉冲信号中的第3路作为输出。
[0157]2→
1多路复用器223可以在第一时钟频率clk1的上升沿时,选择来自第一k

1多路复用器221输出的第一脉冲信号和来自第二k

1多路复用器222输出的第二脉冲信号中的一个,作为2

1多路复用器223的输出信号。例如,在第一个上升沿时开始选择第一脉冲信号直到第二个上升沿,在第二个上升沿时开始选择第二脉冲信号直到第三个上升沿,依次类推。
[0158]
由于2

1多路复用器是在两个k

1多路复用器的输出中进行选择的,两个k

1多路复用器的输出拼合形成新的周期,由于两个k

1多路复用器的输出的第一脉冲信号和第二脉冲信号间相差整数个δ,并且存在相差i个δ和相差i 1个δ两种情况,使得最终频率合成器输出的脉冲信号中存在ta和tb两个不同的周期。
[0159]
参考图8,输出单元23包括触发电路。触发电路用于生成脉冲串。触发电路包括d触发器231、第一反相器232和第二反相器233。d触发器231包括数据输入端、时钟输入端和输
出端。第一反相器232包括输入端和输出端。第二反相器233包括输入端和输出端。d触发器231的时钟输入端与2

1多路复用器223连接,d触发器231的数据输入端与第一反相器232的输出端连接,d触发器231的输出端分别与第一反相器232的输入端和第二反相器233的输入端连接。d触发器231的输出端或第二反相器233的输出端可以作为频率合成器的输出端,也即产生脉冲信号的一端,因此,频率合成器输出的脉冲信号也即图8中的第一时钟频率clk1或者第二时钟频率clk2。
[0160]
在本公开实施例中,第一时钟信号和第二时钟信号是输入不同第一控制字时,频率合成器输出的第一时钟频率clk1。或者,第一时钟信号和第二时钟信号是输入不同第一控制字时,频率合成器输出的第二时钟频率clk2。
[0161]
d触发器231的时钟输入端接收来自2

1多路复用器223的输出端的输出,并通过输出端输出第一时钟频率clk1;第一反相器232的输入端接收第一时钟频率clk1,并将输出信号输出给d触发器231的数据输入端;第二反相器233的输入端接收第一时钟频率clk1,并通过输出端输出第二时钟频率clk2。
[0162]
图9是本公开实施例提供的一种随机计算方法的流程图。参见图9,所述随机计算方法包括:
[0163]
901:将待计算的两个数字分别映射为一个第一控制字,得到两个第一控制字。
[0164]
902:基于所述两个第一控制字产生两个序列,以及对所述两个序列进行逻辑运算,对所述逻辑运算输出的结果序列进行计数,得到计算结果。
[0165]
903:在所述两个第一控制字满足条件时,输出所述计算结果;在所述两个第一控制字不满足条件时,不输出计算结果,以及将所述待计算的两个数字映射为两个第二控制字,所述第二控制字和第一控制字不同;在所述两个第二控制字满足条件时,输出基于所述两个第二控制字得到的计算结果。
[0166]
其中,所述两个第一控制字满足条件时,所述两个序列不相关,所述两个第一控制字不满足条件时,所述两个序列相关。
[0167]
在本公开实施例中,先将待计算的数字映射为两个控制字,控制字一方面可以用来产生随机计算时使用的序列;另一方面,控制字还可以用来判断随机计算时使用的序列是否具有相关性,当两个第一控制字满足条件时,说明两个序列不相关,此时计算电路采用两个序列进行逻辑运算得到的计算结果准确,控制计算电路输出该计算结果,当两个第一控制字不满足条件时,说明两个序列相关,此时计算电路采用两个序列进行逻辑运算得到的计算结果不准确,控制计算电路不输出该计算结果,并且重新进行控制字的映射,以及重复计算和判断过程,直到最终能够输出准确的计算结果。该方法首先能够保障随机计算的准确性,同时计算结果不准确时,重新映射控制字,重新计算,浪费时间少,计算效率高。该随机计算电路可以作为数字知识产权核集成在各种芯片中,成本低、可移植性好。
[0168]
图10是本公开实施例提供的一种随机计算方法的流程图。参见图10,所述随机计算方法包括:
[0169]
1001:将待计算的两个数字分别映射为一个第一控制字,得到两个第一控制字。
[0170]
示例性地,所述将待计算的两个数字分别映射为一个第一控制字,得到两个第一控制字,包括:
[0171]
获取数字和控制字的映射表,根据所述映射表将所述待计算的两个数字映射为所
述两个第一控制字,所述映射表中的一个数字对应多个控制字,所述多个控制字对应的序列的占空比相同。
[0172]
可选地,该方法还包括:
[0173]
记录当前计算任务中待计算的数字的映射记录,这样后续重新映射时,可以避免重复映射到相同的控制字。
[0174]
该步骤由前述映射电路10执行。
[0175]
1002:基于所述两个第一控制字产生两个序列,以及对所述两个序列进行逻辑运算,对所述逻辑运算输出的结果序列进行计数,得到计算结果。
[0176]
示例性地,基于所述两个第一控制字产生两个序列,包括:
[0177]
响应于所述两个第一控制字,输出两路脉冲信号,所述脉冲信号用于表示所述序列,所述脉冲信号包括第一频率信号和第二频率信号,所述第一频率信号和所述第二频率信号在所述脉冲信号中出现的概率由对应的所述第一控制字控制;
[0178]
对所述两路脉冲信号表示的两个序列进行逻辑运算,输出表示结果序列的脉冲;
[0179]
对所述表示结果序列的脉冲的高低电平进行计数,得到所述计算结果。
[0180]
其中,两路脉冲信号由两个脉冲子电路产生,每个所述脉冲子电路分别根据一个所述第一控制字产生脉冲信号,产生过程如下:
[0181]
响应于初始脉冲信号产生相位均匀间隔的基准脉冲信号;
[0182]
响应于所述基准脉冲信号和所述第一控制字,产生所述脉冲信号;
[0183]
其中,所述第一控制字包括第一系数和第二系数;
[0184]
所述脉冲信号包括基于所述基准脉冲信号和第一系数产生的所述第一频率信号和基于所述基准脉冲信号和第一系数产生的所述第二频率信号,所述脉冲信号中的所述第一频率信号和所述第二频率信号的占比由所述第二系数控制。
[0185]
示例性地,响应于所述基准脉冲信号和所述第一控制字,产生所述脉冲信号,包括:
[0186]
基于所述第一控制字分别产生第一控制信号和第二控制信号;
[0187]
基于所述第一控制信号从相位均匀间隔的基准脉冲信号中选出第一脉冲信号,以及基于所述第二控制信号从所述基准脉冲信号中选出第二脉冲信号,并从所述第一脉冲信号和所述第二脉冲信号中选择一个作为输出信号;
[0188]
基于所述第二处理单元的输出信号产生所述脉冲信号。
[0189]
在本公开实施例中,随机计算可以用来实现乘法运算,实现乘法运算时,逻辑运算为与运算。
[0190]
该步骤由前述计算电路11执行。
[0191]
1003:将所述两个第一控制字分别转换为两个整数值。
[0192]
示例性地,所述第一控制字包括整数部分和小数部分;
[0193]
所述将所述两个第一控制字分别转换为两个整数值,包括:
[0194]
将所述整数部分和所述小数部分之间的虚拟小数点移动到小数部分最末端,并且去除末端为0的位数,得到所述整数值。
[0195]
1004:判断所述两个整数值是否互质;所述两个整数值互质,表示所述两个第一控制字满足条件,执行步骤1005;所述两个整数值不互质,表示所述两个第一控制字不满足条
件,执行步骤1006。
[0196]
示例性地,可以通过二进制欧几里得算法判断所述两个整数值是否互质。
[0197]
1005:在所述两个第一控制字满足条件时,输出所述计算结果。
[0198]
1006:在所述两个第一控制字不满足条件时,不输出计算结果,以及将所述待计算的两个数字映射为两个第二控制字,也即重新执行步骤1001,所述第二控制字和第一控制字不同。在所述两个第二控制字满足条件时,输出基于所述两个第二控制字得到的计算结果。
[0199]
其中,在重新映射控制字时,可以只重新映射其中一个控制字,也可以同时重新映射其中两个控制字。
[0200]
步骤1003至步骤1006由前述控制电路12执行。
[0201]
可选地,该方法还包括:在将所述待计算的两个数字映射为所述两个第二控制字时,停止基于所述两个第一控制字的计算。
[0202]
图11示出了本公开实施例提供的时序图,如图11所示,其中20表示控制电路的时序,30表示计算电路的时序,t表示时间(time)。
[0203]
在20中,a表示控制电路判断两个第一控制字满足条件,记为命中,hit。b表示控制电路空闲状态。c表示控制电路判断两个第一控制字不满足条件,记为未命中miss。在30中,p1、p2、p3和p4表示4次运算任务,这4次运算任务可以分别对应4个进程(process),或者是1个或多个进程的4次运算。
[0204]
参见图11,当控制电路判断命中时,计算电路计算并输出计算结果,如p1、p3和p4所示。当控制电路判断未命中时,计算电路停止计算,并且重新映射控制字,然后控制电路重新判断,当重新判断命中时,计算电路计算并输出计算结果,如p2所示。
[0205]
由于未命中时,控制电路会控制计算电路停止计算,因此损失的时间很少,如图中d所示的时间长度,因此,这种计算方式造成的失效损失(miss penalty)较小,计算效率高。
[0206]
在本公开实施例中,通过判断互质确定是否命中,由于偶数的互质较好判断,并且当第一控制字包含非0小数时,转换而成的整数值iqp通常为奇数(因为iqp=i*2m p,i*2m为偶数,p为奇数,偶数和奇数的和为奇数),当任意给两个奇数时,这两个数互质的概率一般情况下大于80%,也即命中概率较高。单次的计算任务定义为一个进程,任意一个进程在刚开始工作时,默认两个整数值iqp1和iqp2互质,此时控制电路和计算电路开始以及行处理,控制电路在几个时钟周期内将会完成互质判断,然后将互质结果输出给计算电路,若两数互质(hit),则继续计算直至输出结果,若两数不互质(miss),则计算电路停止计算,返回进行重新映射。总体的计算时间为:
[0207]
总时间=进程数
×
(平均实施时间 未命中概率
×
未命中损失的时间)。
[0208]
其中,平均实施时间是指计算电路从计算开始到输出计算结果的时间。由于采用互质判断时,对于具有非0小数位的控制字判断出现互质的概率较大,因此未命中概率小,同时,对于都是偶数等情况下判断较快,也即未命中损失的时间小,综上,未命中情况下损失的时间小,使得总体的计算时间短,计算效率高。
[0209]
需要说明的是:上述实施例提供的随机计算方法与随机计算电路实施例属于同一构思,其实现过程详见装置实施例,这里不再赘述。
[0210]
以上仅为本公开的示例性实施例,并不用以限制本公开,凡在本公开的精神和原
则之内,所作的任何修改、等同替换、改进等,均应包含在本公开所附权利要求书限定的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献