数据转换装置、系统及方法与流程

文档序号:20838510发布日期:2020-05-22 17:11阅读:176来源:国知局
数据转换装置、系统及方法与流程

本申请涉及信息处理技术领域,特别涉及一种数据转换装置、系统及方法。



背景技术:

阻变式存储器(resistiverandomaccessmemory,rram)阵列可以应用于神经网络的矩阵运算中。其中,rram阵列包括多行,每行包括多个rram单元。根据rram在线性区间的特性,每个rram单元两端的电压v、通过该rram单元的电流i与该rram单元的电导g符合欧姆定律,即i=v*g。基于此,在进行rram阵列运算时,rram阵列的每行的输入端输入一个电压,且各行输入的电压不同,在每行包括的多个rram单元中的每个rram单元两端加相应行输入的电压。在这种情况下,流经每个rram单元的电流就等于该rram单元两端的电压与该rram单元当前电阻值之间的比值。rram阵列中每列输出的总电流就等于相应列中每个rram单元输出的电流值的总和。这意味着,rram阵列中每列输出的总电流,等于该列中每个rram单元的电压乘以该rram的电导的总和。如果将rram单元的电导值作为权值,将输入到rram单元的电压作为特征数据,则可以利用rram阵列进行神经网络中的卷积运算。

需要说明的是,输入rram阵列的电压是模拟信号,而每列输出的电流也是模拟信号,也即,rram阵列运算是在模拟域上进行的。然而,由于当前还无法实现模拟信号的路由和存储等,因此,待处理的输入数据通常均为数字信号,此时,则需要将该待处理的输入数据对应的数字信号转换为模拟信号,而在输出端,由于每列输出的电流的模拟信号,因此,需要通过转换装置将每列输出的电流的模拟信号转换为数字信号,以便进行后续的路由或存储等。

相关技术中,通常选用模拟数字转换器(analog-to-digitalconverter,adc)作为转换装置。其中,为了保证运算结果的精度,选用的adc的精度需要大于指定精度,该指定精度由输入数据的精度、rram单元的精度和rram阵列的行数确定得到。例如,当前rram单元的精度通常为4比特,假设输入数据的精度为8比特,rram阵列的行数为512,则指定精度=4+8+log2512=21比特,也即,选用的adc的精度需要大于21比特。而高精度的adc在工艺上难以制作,且面积和功耗都很大。而adc的精度降低之后,adc能够转换和表示的数据的范围将大大缩小,例如,当adc的精度从10比特降低为8比特时,能够通过该adc转换并表示的数据的范围也将从0-1023缩小为0-255。因此,如何在adc的精度降低的情况下,提高或者保持adc转换并表示的数据的范围成为了亟待解决的问题。



技术实现要素:

本申请提供了一种数据转换装置、系统和方法,可以在保持adc精度降低的情况下,提高或者保持adc转换以及表示的数据的范围。所述技术方案如下:

第一方面,本申请提供了一种数据转换装置,所述装置包括:第一运算放大器,用于接收第一数据,并对所述第一数据进行调整,得到第二数据;模拟数字转换器adc,用于接收所述第二数据,并对所述第二数据进行模数转换,得到第三数据;增益控制电路,用于根据所述第三数据和所述adc的精度获得第一增益系数,所述第一增益系数用于指示所述第一数据的幅度范围;所述第一运算放大器还用于:接收所述增益控制电路输出的所述第一增益系数;根据所述第一增益系数调整所述第一数据,得到第四数据;所述adc还用于:对所述第四数据进行模数转换,得到第五数据,其中,第一数据的转换结果包括第五数据和第一增益系数,该第五数据用于指示转换结果的尾数,该第一增益系数用于指示转换结果的指数。

本申请实施例提供的数据转换装置可以通过第一运算放大器对第一数据进行调整得到第二数据,通过adc对第二数据进行模数转换,得到第三数据,由增益控制电路根据第三数据和adc的精度来确定第一增益系数,进而由第一运算放大器根据第一增益系数将第一数据重新调整至合适的数值范围之内,得到第四数据,之后,再次通过adc对调整得到的第四数据进行模数转换,得到第五数据,最终的转换结果包括第五数据和第一增益系数。由于可以通过第一增益系数和第五数据来表达转换结果,因此,即使采用较低精度的adc,通过该adc转换并表示的数据的最大范围也将远远大于adc本身精度所能表示的数据范围。也即,通过本申请提供的数据转换装置进行模数转换时,在adc精度保持不变的情况下,可以有效的提高adc转换并表达的数据的范围。

根据本申请的第一方面,在一种可能的实现方式中,所述装置还包括第二运算放大器,所述第一运算放大器分别与所述第二运算放大器和所述adc连接。其中,所述第二运算放大器用于接收第六数据,根据预设的第二增益系数对所述第六数据进行调整,得到所述第一数据;将所述第一数据发送给所述第一运算放大器,其中,当有多通道分时选择电路时,第六数据可以是指由多通道分时选择电路根据rram阵列输出的电流输出的数据;当没有多通道分时选择电路时,可以是rram阵列直接输出的数据。第二增益系数是预先对rram阵列的运算结果进行统计之后得到的。

通过增加第二运算放大器,数据转换装置可以首先通过第二运算放大器按照第二增益系数对第六数据进行调整,之后,再通过第一运算放大器进行调整,这样,可以使得经第二运算放大器和第一运算放大器调整后的数据处于更为合适的范围之内,进而保证最终的转换结果能够表示在更合适的范围之内。

根据本申请的第一方面,在另一种可能的实现方式中,所述adc还用于输出溢出标识,所述溢出标识用于指示所述第三数据是否溢出。

根据本申请的第一方面,在另一种可能的实现方式中,在数据转换装置中设置增益调整电路,该增益调整电路可以收集adc发出的溢出标识和增益控制电路发出的第一增益系数,并根据该溢出标识和第一增益系数来控制第二运算放大器将第二增益系数调整到更为合适的范围,这样,在对后续数据进行转换时,可以根据调整后的第二增益系数将电流或电压调整在更为合适的范围之内。

第二方面,本申请提供了一种数据转换系统,该系统包括rram阵列和连接该rram阵列的数据转换装置,该数据转换装置用于对rram阵列的输出数据进行数据转换,该数据转换装置包括:第一运算放大器,用于接收第一数据,并对所述第一数据进行调整,得到第二数据;模拟数字转换器adc,用于接收所述第二数据,并对所述第二数据进行模数转换,得到第三数据;增益控制电路,用于根据所述第三数据和所述adc的精度获得第一增益系数,所述第一增益系数用于指示所述第一数据的幅度范围;所述第一运算放大器还用于:接收所述增益控制电路输出的所述第一增益系数;根据所述第一增益系数调整所述第一数据,得到第四数据;所述adc还用于:对所述第四数据进行模数转换,得到第五数据,其中,所述第一数据的转换结果包括所述第五数据和所述第一增益系数,所述第五数据用于指示所述转换结果的尾数,所述第一增益系数用于指示所述转换结果的指数。

根据本申请的第二方面,在一种可能的实现方式中,该数据转换装置还包括第二运算放大器,第一运算放大器分别于第二运算放大器和adc连接。其中,rram阵列用于将第六数据发送给第二运算放大器,该第六数据为rram阵列的输出数据;第二运算放大器用于接收第六数据,根据预设的第二增益系数对该第六数据进行调整,得到第一数据,并将该第一数据发送给第一运算放大器。

根据本申请的第二方面,在另一种可能的实现方式中,adc还用于输出溢出标识,该溢出标识用于指出第三数据是否溢出。

根据本申请的第二方面,在另一种可能的实现方式中,数据转换装置还包括增益调整电路,所述增益调整电路分别与所述adc、所述增益控制电路和所述第二运算放大器相连接,其中:所述增益调整电路用于接收所述adc输出的所述溢出标识和所述增益控制电路输出的所述第一增益系数,并根据所述溢出标识和所述第一增益系数,调整所述第二增益系数。

根据本申请的第二方面,在另一种可能的实现方式中,数据转换系统还包括多个数字模拟转换器dac和多个第三运算放大器,所述多个dac和所述多个第三运算放大器一一对应,所述多个第三运算放大器与rram阵列相连接,其中:所述多个dac中的第一dac用于接收输入数据,并对所述输入数据进行数模转换,得到第七数据;所述多个第三运算放大器中的与所述第一dac对应的第三运算放大器用于:接收对应的dac输出的所述第七数据;根据预设的第三增益系数对所述第七数据进行调整,得到所述第八数据;将所述第八数据发送给所述rram阵列;所述rram阵列用于处理所述多个第三运算放大器输出的数据,得到所述第六数据,其中所述多个第三运算放大器输出的数据包括所述第八数据。

根据本申请的第二方面,在另一种可能的实现方式中,增益调整电路分别与adc、增益控制电路和第三运算放大器连接。其中,该增益调整电路用于接收adc输出的溢出标识和增益控制电路输出的第一增益系数,调整第三增益系数。

第三方面,本申请提供了一种数据转换方法,该方法用于数据转换装置,该方法包括:根据初始增益系数对第一数据进行调整,得到第二数据;对所述第二数据进行模数转换,得到第三数据;根据所述第三数据和所述adc的精度获得第一增益系数,所述第一增益系数用于指示所述第一数据的幅度范围;根据所述第一增益系数调整所述第一数据,得到第四数据;对所述第四数据进行模数转换,得到第五数据;其中,所述第一数据的转换结果包括所述第五数据和所述第一增益系数,所述第五数据用于指示所述转换结果的尾数,所述第一增益系数用于指示所述转换结果的指数。

根据本申请的第三方面,在一种可能的实现方式中,该方法还包括:接收第六数据,根据预设的第二增益系数对所述第六数据进行调整,得到所述第一数据。

根据本申请的第三方面,在另一种可能的实现方式中,该方法还包括:输出溢出标识,所述溢出标识用于指示所述第三数据是否溢出。

根据本申请的第三方面,在另一种可能的实现方式中,该方法还包括:接收所述adc输出的所述溢出标识和所述增益控制电路输出的所述第一增益系数,并根据所述溢出标识和所述第一增益系数,调整所述第二系数。

第四方面,本申请提供了一种数据转换设备,上述第一方面中的数据转换装置包含与所述数据转换设备中,且所述数据转换设备的结构中包括处理器和存储器,所述存储器用于存储支持所述数据转换装置进行数据转换的程序,以及存储在上述第一方面所提供的数据转换装置进行数据转换的过程中所涉及的数据。所述处理器被配置为用于执行所述存储器中存储的程序。所述存储设备的操作装置还可以包括通信总线,该通信总线用于该处理器与存储器之间建立连接。

本申请提供的技术方案带来的有益效果至少包括:本申请实施例提供的数据转换装置可以通过第一运算放大器对第一数据进行调整得到第二数据,通过adc对第二数据进行模数转换,得到第三数据,由增益控制电路根据第三数据和adc的精度来确定第一增益系数,进而由第一运算放大器根据第一增益系数将第一数据重新调整至合适的数值范围之内,得到第四数据,之后,再次通过adc对调整得到的第四数据进行模数转换,得到第五数据,其中,所述第一数据的转换结果包括所述第五数据和所述第一增益系数,所述第五数据用于指示所述转换结果的尾数,所述第一增益系数用于指示所述转换结果的指数。由于可以通过第一增益系数和第五数据来表示转换结果,因此,通过该adc转换并表示的数据的最大范围将远远大于adc本身精度所能表示的数据范围。也即,通过本申请提供的数据转换装置进行模数转换时,在adc精度保持不变的情况下,可以有效的提高adc转换并表达的数据的范围。

附图说明

图1是本申请实施例提供的一种数据转换装置的结构示意图;

图2是本申请实施例提供的另一种数据转换装置的结构示意图;

图3是本申请实施例提供的又一种数据转换装置的结构示意图;

图4是本申请实施例提供的一种数据转换系统的结构示意图;

图5是本申请实施例提供的一种数据转换方法的流程图;

图6是本申请实施例提供的一种数据转换设备的结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

在对本申请实施例进行详细的解释说明之前,先对本申请实施例涉及的应用场景予以介绍。

随着人工智能技术的发展,神经网络被越来越多的应用于各行各业中。在神经网络算法中,需要大量用到卷积运算。当前,相较于利用中央处理器(centralprocessingunit,cpu)或图形处理器(graphicsprocessingunit,gpu)等处理器来进行神经网络算法中的卷积运算,利用rram阵列进行卷积运算时,运算性能更高且功耗更低。而本申请提供的数据转换装置、系统和方法即可以应用于基于rram阵列进行卷积运算的过程中。

图1是本申请实施例提供的一种数据转换装置的示意图,如图1所示,该装置包括多通道分时选择电路101、第一运算放大器102、adc103和增益控制电路104。

其中,多通道分时选择电路101的多个输入端与rram阵列的多列输出端一一对应,多通道分时选择电路101的输出端与第一运算放大器102的第一输入端连接。第一运算放大器102的输出端与adc103的输入端连接;adc103的第一输出端与增益控制电路104的输入端连接,adc103的第二输出端用于输出对rram阵列输出的数据进行转换后的转换结果;增益控制电路104的第一输出端与第一运算放大器102的第二输入端连接。

需要说明的是,rram阵列可以为一个m×n大小的阵列,也即,该rram阵列可以包括n列,每列包括m个rram单元,每列的m个rram单元的电流累加后可以通过相应列输出端输出。

示例性的,多通道分时选择电路101可以包括与该rram阵列的n列输出端中的多列输出端一一对应的多个输入端101a以及一个输出端101b,多通道分时选择电路101可以通过该多个输入端101a中的每个输入端101a接收对应的rram阵列的输出端输出的电流。

在接收到rram阵列的多个输出端输出的电流之后,根据该数据转换装置中包括的adc103的类型的不同,多通道分时选择电路101可以对接收到的电流做不同的处理。示例性的,若adc103为电流型adc,则多通道分时选择电路101可以从接收到的多列输出电流中选择一列输出电流,并通过输出端101b输出选择的电流,该输出的选择的电流即为第一数据。若adc103为电压型adc,则多通道分时选择电路101可以将接收到的多列输出电流转换为电压,并判断电压的正负,若电压为负,则通过对电压进行补偿将该电压转换为正,并输出符号标志位,之后,多通道分时选择电路101可以从转换得到的多路电压中选择一路电压,并通过输出端101b输出选择的电压,该输出的选择的电压即为第一数据。

第一运算放大器102包括第一输入端102a和输出端102b。其中,第一输入端102a与多通道分时选择电路101的输出端101b连接,通过该第一输出端102a,第一运算放大器102可以接收输出端101b输出的第一数据。当接收到多通道分时选择电路输出的第一数据之后,第一运算放大器102可以按照初始增益系数对该第一数据进行调整,从而得到第二数据,之后,通过输出端102b输出第二数据。

需要说明的是,初始增益系数可以为预先设置的不大于第一数值的增益系数,例如,在本申请实施例中,该初始增益系数可以为1。

adc103包括输入端103a和第一输出端103b。其中,输入端103a与第一运算放大器102的输出端102b连接,通过该输入端103a,adc103可以接收第一运算放大器102输出的第二数据。在接收到第二数据之后,adc103可以对第二数据进行模数转换,得到第三数据,之后,通过第一输出端103b输出第三数据。

增益控制电路104包括输入端104a和第一输出端104b。其中,输入端104a与adc103的第一输出端103b连接,通过该输入端104a,增益控制电路104可以接收adc103的第一输出端103b输出的第三数据,并根据该第三数据和adc103的精度来确定第一增益系数,之后,增益控制电路104可以通过第一输出端104b将该第一增益系数反馈给第一运算放大器102。

第一运算放大器102还可以包括第二输入端102c。其中,第二输入端102c与增益控制电路104的输出端104b连接,第一运算放大器102可以通过第二输入端102c接收输出端104b输出的第一增益系数,并根据该第一增益系数对接收到的第一数据重新进行调整,从而得到第四数据,之后,再次通过输出端102b输出第四数据。

adc103还可以包括第二输出端103c。在接收到第一运算放大器102根据第一增益系数重新调整第一数据得到的第四数据之后,adc103可以对第四数据进行模数转换,得到第五数据,并通过第二输出端103c输出第五数据。其中,第一数据的转换结果包括第五数据和第一增益系数,其中,第五数据用于指示该转换结果的尾数,而第一增益系数用于指示该转换结果的指数。

在本申请实施例所提供的一种实现方式中,当得到第五数据和第一增益系数时,可以将他们先存入缓存中,最后再根据该第五数据和第一增益系数输出第一数据的转换结果。

在本申请实施例中,通过在数据转换装置中设置第一运算放大器以及增益控制电路,可以将待转换的第一数据调整到合适的范围之内,最终,可以通过第一增益系数和adc输出的第五数据来共同表达转换结果,这样,通过该adc转换并表示的数据的最大范围也将远远大于adc本身精度所能表示的数据范围。也即,通过本申请提供的数据转换装置进行模数转换时,在adc精度保持不变的情况下,可以有效的提高adc转换并表达的数据的范围。因此,通过本申请实施例提供的数据转换装置,可以在采用较低精度的adc时,在保证数据转换范围和表示范围的不缩小的情况下,降低rram阵列运算的功耗。

图2是本申请实施例提供的另一种数据转换装置的示意图,如图2所示,该装置包括多通道分时选择电路201、第一运算放大器202、adc203、增益控制电路204和第二运算放大器205。

其中,多通道分时选择电路201的多个输入端与rram阵列的多列输出端一一对应,多通道分时选择电路201的输出端与第二运算放大器205的第一输入端连接。第二运算放大器205的输出端与第一运算放大器202的第一输入端连接;第一运算放大器202的输出端与adc203的输入端连接;adc203的第一输出端与增益控制电路204的输入端连接,adc203的第二输出端用于输出对rram阵列输出的数据进行转换得到的转换结果;增益控制电路204的第一输出端与第一运算放大器202的第二输入端连接。

需要说明的是,多通道分时选择电路201可以参考前述实施例中介绍的多通道分时选择电路101,输出选择的电流或电压,此时,该输出的选择的电流或电压为第六数据。

其中,第二运算放大器205包括第一输入端205a和输出端205b。其中,第一输入端205a可以接收多通道分时选择电路201根据rram阵列输出的电流确定并输出的第六数据。之后,第二运算放大器可以通过预先设置的第二增益系数对接收到的第六数据进行调整,得到第一数据,并将第一数据通过输出端205b输出。其中,第二增益系数可以是预先对需要通过rram阵列进行运算的数据所对应的运行结果进行统计之后得到的。例如,当该rram阵列用于神经网络算法时,rram阵列可以用于每一层的特征数据的计算,在这种情况下,可以在神经网络模型的训练阶段,通过rram阵列对每一层的数据进行运算,并对运算结果进行统计,从而得到运算结果的数值范围,之后,根据该运算结果的数值范围确定第二增益系数。

第一运算放大器202包括第一输入端202a和输出端202b。其中,第一输入端202a与第二运算放大器205的输出端205b连接,通过该第一输入端202a,第一运算放大器202可以接收输出端205b输出的根据第二增益系数调整得到的第一数据。当接收到第二运算放大器205输出的第一数据之后,第一运算放大器202可以按照初始增益系数对该第一数据进行调整,得到第二数据之后,通过输出端202b输出第二数据。

需要说明的是,初始增益系数可以为预先设置的不大于第一数值的增益系数,例如,在本申请实施例中,该初始增益系数可以为1。

adc203包括输入端203a和第一输出端203b。其中,输入端203a与第一运算放大器202的输出端202b连接,通过该输入端203a,adc203可以接收第一运算放大器202输出的第二数据。在接收到第二数据之后,adc203可以对第二数据进行模数转换,得到第三数据,之后,通过第一输出端203b输出第三数据。

增益控制电路204包括输入端204a和第一输出端204b。其中,输入端204a与adc203的第一输出端203b连接,通过该输入端204a,增益控制电路204可以接收adc203的第一输出端203b输出的第三数据,并根据该第三数据和adc203的精度来确定第一增益系数,之后,增益控制电路204可以通过第一输出端204b将该第一增益系数反馈给第一运算放大器202。

第一运算放大器202还可以包括第二输入端202c。其中,第二输入端202c与增益控制电路204的输出端204b连接,第一运算放大器202可以通过第二输入端202c接收输出端204b输出的第一增益系数,并根据该第一增益系数对接收到的第一数据重新进行调整,从而得到第四数据,之后,再次通过输出端202b输出第四数据。

adc203还可以包括第二输出端203c。在接收到第一运算放大器202根据第一增益系数重新调整第一数据得到的第四数据之后,adc203可以对第四数据进行模数转换,得到第五数据,并通过第二输出端203c输出第五数据。其中,所述第一数据的转换结果包括所述第五数据和所述第一增益系数,第五数据用于指示该转换结果的尾数,而第一增益系数用于指示该转换结果的指数。

在本申请实施例所提供的一种实现方式中,当得到第五数据和第一增益系数时,可以将他们先存入缓存中,最后再根据该第五数据和第一增益系数输出第一数据的转换结果。

本申请实施例在图1所示的数据转换装置的基础上增加了第二运算放大器,该第二运算放大器可以根据预先设置的第二增益系数来对多通道分时选择电路输出的电流或电压进行调整,之后,再由第一运算放大器进行调整。由于第二增益系数是预先对rram阵列的运算结果进行统计之后得到的。因此,通过第二运算放大器调整之后再由第一运算放大器进行调整,可以使得调整后的电流或电压处于更为合适的范围之内,进而保证最终的转换结果能够表示在更合适的范围之内。

图3是本申请实施例提供的另一种数据转换装置的示意图,如图3所示,该装置包括多通道分时选择电路301、第一运算放大器302、adc303、增益控制电路304、第二运算放大器305和增益调整电路306。

其中,多通道分时选择电路301的多个输入端与rram阵列的多列输出端一一对应,多通道分时选择电路301的输出端与第二运算放大器305的第一输入端连接。第二运算放大器305的输出端与第一运算放大器302的第一输入端连接;第一运算放大器302的输出端与adc303的输入端连接;adc303的第一输出端与增益控制电路304的输入端连接,adc303的第二输出端用于输出对rram阵列运算输出的数据进行转换得到的转换结果,adc303的第三输出端与增益调整电路306的第一输入端连接;增益控制电路304的第一输出端与第一运算放大器302的第二输入端连接,增益控制电路304的第二输出端与增益调整电路306的第二输入端连接,增益调整电路的输出端与第二运算放大器305连接。

需要说明的是,多通道分时选择电路301的相关说明可以参考前述实施例中关于多通道分时选择电路201的说明,本申请实施例对此不再赘述。

其中,第二运算放大器305包括第一输入端305a和输出端305b。其中,第一输入端305a可以接收多通道分时选择电路101根据rram阵列输出的电流确定并输出的第六数据。之后,第二运算放大器305可以通过预先设置的第二增益系数对接收到的第六数据进行调整,得到第一数据,并将第一数据通过输出端305b输出。

其中,第二增益系数可以是预先对需要通过rram阵列进行运算的数据所对应的运算结果进行统计之后得到的。例如,当该rram阵列用于神经网络算法时,rram阵列可以用于每一层的特征数据计算,在这种情况下,可以在神经网络模型训练阶段,通过rram阵列对对神经网络模型中每一层的数据进行运算,并对运算结果进行统计,从而得到运算结果的数值范围,之后,根据该运算结果的数值范围确定第二增益系数。

需要说明的是,多通道分时选择电路的相关说明可以参考前述实施例中关于多通道分时选择电路的相关说明,本申请实施例在此不再赘述。

第一运算放大器302包括第一输入端302a和输出端302b。其中,第一输入端302a与第二运算放大器305的输出端305b连接,通过该第一输出端302a,第一运算放大器302可以接收输出端305b输出的根据第二增益系数调整得到的第一数据。当接收到第二运算放大器305输出的第一数据之后,第一运算放大器302可以按照初始增益系数对该第一数据进行调整,得到第二数据,之后,通过输出端302b输出第二数据。

需要说明的是,初始增益系数可以为预先设置的不大于第一数值的增益系数,例如,在本申请实施例中,该初始增益系数可以为1。

adc303包括输入端303a、第一输出端303b和第二输出端303c。其中,输入端303a与第一运算放大器302的输出端302b连接,通过该输入端303a,adc303可以接收第一运算放大器302根据初始增益系数调整得到的第二数据。在接收到第二数据之后,adc303可以对第二数据进行模数转换,得到第三数据,并通过第一输出端303b输出转换得到的第三数据。与此同时,adc303还可以通过第二输出端303c输出用于指示第三数据是否溢出的溢出标识。

增益控制电路304包括输入端304a、第一输出端304b和第二输出端304c。其中,输入端304a可以接收adc303的第一输出端303b输出的第三数据,并根据该第三数据和adc303的精度来确定第一增益系数,之后,增益控制电路304可以通过第一输出端304b将该第一增益系数反馈给第一运算放大器302。与此同时,增益控制电路304还可以通过第二输出端304c将该第一增益系数发送至增益调整电路306。

第一运算放大器302还可以包括第二输入端302c。其中,第二输入端302c与增益控制电路304的第一输出端304b连接,第一运算放大器302可以通过第二输入端302c接收第一输出端304b输出的第一增益系数,并根据该第一增益系数对第一数据重新进行调整,从而得到第四数据,之后,再次通过输出端302b输出第四数据。

adc303还可以包括输出端303d。在接收到第一运算放大器302根据第一增益系数重新调整第一数据得到的第四数据之后,adc303可以对第四数据进行模数转换,得到第五数据,并通过输出端303d输出第五数据。其中,所述第一数据的转换结果包括所述第五数据和所述第一增益系数,第五数据用于指示该转换结果的尾数,而第一增益系数用于指示该转换结果的指数。

在本申请实施例所提供的一种实现方式中,当得到第五数据和第一增益系数时,可以将他们先存入缓存中,最后再根据该第五数据和第一增益系数输出第一数据的转换结果。

增益调整电路306包括第一输入端306a、第二输入端306b和输出端306c。其中,第一输入端306a与adc303的第二输出端303c连接,通过第一输入端306a,增益调整电路306可以接收adc303发送的溢出标识。第二输入端306b与增益控制电路304的第二输出端304c连接,通过第二输入端306b,增益调整电路306可以接收增益控制电路304发送的第一增益系数。在接收到溢出标识和第一增益系数之后,增益调整电路可以根据该溢出标识和第一增益系数生成控制信息,并通过输出端306c将该控制信息反馈至第二运算放大器305。

第二运算放大器305还可以包括第二输入端305c,且第二输入端305c与增益调整电路306的输出端306c连接。通过该第二输入端305c,第二运算放大器305可以接收增益调整电路306发送的控制信息,并基于该控制信息对第二增益系数进行调整,以便根据该调整后的第二增益系数对后续接收到的第六数据进行调整。

本申请实施例在图2所示的数据转换装置的基础上增加了增益调整电路,该增益调整电路可以收集adc发出的溢出标识和增益控制电路发出的第一增益系数,并根据该溢出标识和第一增益系数来控制第二运算放大器将第二增益系数调整到更为合适的范围,这样,在对后续数据进行转换时,可以根据调整后的第二增益系数将电流或电压调整在更为合适的范围之内。

图4是本申请实施例提供的一种数据转换系统400,该数据转换系统400可以包括rram阵列401、多个dac402、多个第三运算放大器403、多通道分时选择电路404、第一运算放大器405、adc406、增益控制电路407,其中,多个dac和多个第三运算放大器一一对应,且dac和对应的第三运算放大器相连接,多个第三运算放大器与rram阵列相连接。

其中,rram阵列401的每行输入端可以连接一个第三运算放大器403,而每个第三运算放大器可以连接一个dac402。这样,每个dac402可以对输入数据进行数模转换,得到第七数据,并将该第七数据输出至对应的第三运算放大器403,第三运算放大器403在接收到对应的dac402发送的第七数据时,可以根据预设的第三增益系数对该第七数据进行调整,得到第八数据,之后,将该第八数据输出到对应的rram阵列401的输入端。

其中,第三增益系数可以是预先对需要通过rram阵列进行运算的数据所对应的运算结果进行统计之后得到的。例如,当该rram阵列用于神经网络算法时,rram阵列可以用于每一层的特征数据的计算,在这种情况下,可以在神经网络模型训练阶段,通过rram阵列对神经网络模型中每一层的特征数据进行运算,并对运算结果进行统计,从而得到运算结果的数值范围,之后,根据该运算结果的数值范围确定第三增益系数。

需要说明的是,rram阵列401可以为m×n大小的阵列,也即,rram阵列401包括m行,n列。rram阵列401的m行中的每行对应一个输入端,n列中的每列对应一个输出端。对于m行中的每行,在每行包括的多个rram单元中的每个rram单元两端加相应行输入的电压。之后,每列中的m个rram单元的电流累加后可以通过相应列输出端输出。

其中,rram阵列的n个输出端中的多个输出端可以与多通道分时选择电路404的多个输入端一一对应,通过该多个输入端,多通道分时选择电路404可以从接收到的多路电流中选择一路电流,并将选择的电流输出,或者,多通道分时选择电路404可以将接收到的多路电流转换为电压,并从中选择一路电压,将选择的电压输出,该输出的电流或电压即为第一数据。

第一运算放大器405可以分别与多通道分时选择电路404、adc406和增益控制电路407连接,当接收到第一数据之后,第一运算放大器405可以根据初始增益系数对第一数据进行调整,得到第二数据,并将该第二数据发送至adc406。

adc406可以分别与第一运算放大器405和增益控制电路407连接,在接收到第一运算放大器405发送的第二数据之后,adc406可以对第二数据进行模数转换,得到第三数据,并将该第三数据发送至增益控制电路407。

增益控制电路407分别与adc406和第一运算放大器405连接。其中,增益控制电路407可以接收adc406输出的第三数据,并根据第三数据和adc406的精度确定第一增益系数,将该第一增益系数发送至第一运算放大器405。

第一运算放大器405在接收到增益控制电路407发送的第一增益系数之后,可以根据该第一增益系数重新对第一数据进行调整,得到第四数据,并将该第四数据输出值adc406。

adc406在接收到第四数据之后,可以对第四数据进行模数转换,得到第五数据。其中,所述第一数据的转换结果包括所述第五数据和所述第一增益系数,第五数据用于指示该转换结果的尾数,而第一增益系数用于指示该转换结果的指数。

在本申请实施例所提供的一种实现方式中,当得到第五数据和第一增益系数时,可以将他们先存入缓存中,最后再根据该第五数据和第一增益系数输出第一数据的转换结果。

可选的,如图4所示,该数据转换系统400中还可以包括增益调整电路408,该增益调整电路408可以分别与adc406、增益控制电路407和多个第三运算放大器403连接。在这种情况下,adc406可以向增益调整电路408发送用于指示第三数据是否溢出的溢出标识,并且,增益控制电路407可以向增益调整电路408发送第一增益系数。在接收到adc406输出的溢出标识以及增益控制电路407输出的第一增益系数之后,该增益调整电路408可以根据该溢出标识和第一增益系数生成控制信息,并将该控制信息发送至多个第三运算放大器403。第三运算放大器403在接收到该控制信息时,可以基于该控制信息对第三增益系数进行调整,以便后续在接收到对应的dac输出的第七数据时,基于该调整后的第三增益系数对该第七数据进行调整。

可选地,如图4所示,该数据转换系统400还可以包括第二运算放大器409,该第二运算放大器409可以分别与多通道分时选择电路404、第一运算放大器405和增益调整电路408连接。在这种情况下,该第二运算放大器409的实现方式可以参考前述实施例中第二运算放大器305的实现方式,本申请实施例在此不再赘述。

可选地,在一种可能的实现方式中,上述每个dac402和每个dac402连接的第二运算放大器403可以集成在一起,形成量程可变的dac,换句话说,该数据转换系统400中可以包括多个量程可变的dac,其中,每个量程可变的dac可以对接收到的数字信号进行数模转换,并对转换得到的模拟信号的幅度进行调整,最终输出调整后的模拟信号。

在本申请实施例中,数据转换系统400可以通过dac和第三运算放大器,或者是量程可变的dac,对输入的数字信号进行数模转换,并对转换得到的模拟信号进行调整,也即,在本申请中可以通过在rram阵列的输入端调整输入电压信号的幅度来对控制输出端的电流的范围。之后,在rram阵列的输出端,再通过第一运算放大器以及增益控制电路,将待转换的第一数据调整到合适的范围之内,最终,可以通过两个运算放大器的增益系数和adc输出的第五数据来共同表示转换结果,这样,即使采用较低精度的adc,通过该adc转换并表示的数据的最大范围也将远远大于adc本身精度所能表示的数据范围。也即,通过本申请提供的数据转换系统400进行模数转换时,在adc精度保持不变的情况下,可以有效的提高adc转换并表达的数据的范围。并且,由于用于对模拟电压信号进行调整的第三增益系数是预先对需要通过rram阵列进行运算的数据所对应的运算结果进行统计之后得到的。因此,第三运算放大器根据第三增益系数对电压信号进行调整之后,可以使得调整后的电压信号处于更为合适的范围之内,从而保证rram输出端的输出的电流能够处于更合适的范围之内。

接下来对本申请实施例提供的数据转换方法进行解释说明。

图5是本申请实施例提供的一种数据转换方法的流程图。该方法可以应用于前述实施例中介绍的数据转换装置或者前述实施例介绍的数据转换系统中的模数转换装置中,参见图6,该方法包括以下步骤:

步骤501:多通道分时选择电路接收rram阵列输出的多个运算结果,并从多个运算结果中选择一个运算结果,输出选择的运算结果。

其中,rram阵列可以为一个m×n大小的阵列,也即,该rram阵列可以包括m行,n列,每行包括n个rram单元,每列包括m个rram单元。在每行包括的n个rram单元中的每个rram单元两端加相应行输入的电压。之后,每列中的m个rram单元的电流累加后可以通过相应列输出端输出。换句话说,在本申请实施例中,rram阵列输出的多个运算结果可以是指rram阵列的多列输出端输出的累加得到的多个电流。

多通道分时选择电路在接收到rram阵列输出的多个电流之后,根据数据转换装置包括的adc的类型的不同,多通道分时选择电路可以对接收到rram阵列输出的多个电流执行不同的处理。当adc为电流型adc时,多通道分时选择电路可以直接从该多个电流中选择一路电流输出。当adc为电压型adc时,多通道分时选择电路可以将接收到的多列输出电流转换为电压,并判断电压的正负,若电压为负,则通过对电压进行补偿将该电压转换为正,并输出符号标志位,之后,多通道分时选择电路可以从转换得到的多个电压中选择一路电压输出。也即是,在本申请实施例中,多通道分时选择电路输出的第一运算结果可能是多路电流中的任一路电流,也可能是多路电压中的任一路电压。

其中,多通道分时选择电路可以按照多个电流对应的列的顺序来依次选择一路电流或一路电流对应的电压进行输出。示例性的,例如,多通道分时选择电路可以从rram阵列的第一列开始,首先选择rram阵列的第一列输出端输出的电流或由第一列输出端输出的电流转换得到的电压输出,之后,再选择rram阵列的第二列输出端输出的电流或由第二列输出端输出的电流转换得到的电压输出,以此类推。

步骤502:第一运算放大器接收第一数据,并根据初始增益系数对第一数据进行调整,得到第二数据,输出第二数据,第一数据根据选择的运算结果得到。

示例性的,在一种可能的实现方式中,第一数据即为多通道分时选择电路输出的电流或电压,也即,在多通道分时选择电路输出选择的电流或电压之后,第一运算放大器可以接收该电流或电压,并根据初始增益系数对电流或电压进行调整,得到第二数据,之后,将该第二数据发送至adc。

其中,初始增益系数可以是指预先设置的不大于第一数值的增益系数,例如,在本申请实施例中,该初始增益系数可以为1。其中,当初始增益系数为1时,第一运算放大器根据初始增益系数对第一数据进行调整后得到的第二数据和第一数据实际上是相同的。换句话说,第一运算放大器根据数值为1的初始增益系数来调整第一数据和不对第一数据进行调整的效果是一样的。

可选地,在另一种可能的实现方式中,若第一运算放大器和多通道分时选择电路之间还连接有第二运算放大器,则多通道分时选择电路可以将选择的电流或电压发送至第二运算放大器,第二运算放大器可以根据第二增益系数对接收到的电流或电压进行调整,并将调整后的电流或电压作为第一数据发送至第一运算放大器,也即,第一数据是由第二运算放大器对多通道分时选择电路输出的电流或电压进行调整得到的。第一运算放大器在接收到第一数据之后,可以根据初始增益系数对该第一数据进行调整,从而得到第二数据,并向adc发送该第二数据。

其中,第二增益系数可以是预先对需要通过rram阵列进行运算的数据所对应的运算结果进行统计之后得到的。例如,当该rram阵列用于神经网络算法时,rram阵列可以用于每一层的特征数据的计算,在这种情况下,可以在神经网络模型训练阶段,通过rram阵列对神经网络模型中每一层的特征数据进行计算,并对运算结果进行统计,从而得到运算结果的数值范围,之后,根据该运算结果的数值范围确定第二增益系数。这样,当第二运算放大器接收到多通道分时选择电路发送的电流或电压时,就可以根据第二增益系数将该电流或电压调整到更接近运算结果的数值范围内。

步骤503:adc接收第二数据,并对第二数据进行模数转换,得到第三数据。

当adc接收到第一运算放大器发送的第二数据时,adc可以对第二数据进行模数转换,从而得到第三数据。

需要说明的是,通过adc可以将第二数据转换为与adc的运算精度具有相同比特数的第三数据。示例性的,当adc的运算精度为8比特时,则转换得到的第三数据也将为8比特的数字。然而,由于第二数据对应的真实数值可能大于8比特的数字所能表示的最大数值,因此,第三数据可能存在溢出,基于此,adc在输出第三数据的同时,还可以输出用于指示第三数据是否溢出的溢出标识。

步骤504:增益控制电路基于第三数据和adc的精度确定第一增益系数,并输出第一增益系数。

当adc输出第三数据之后,增益控制电路可以接收adc输出的第三数据。之后,增益控制电路可以根据第三数据的大小和adc的精度来确定第一增益系数,以便后续根据第一增益系数控制第一运算放大器重新对第一数据进行调整,进而保证再次通过adc转换得到的数据能够位于更为合适的数值范围之内。

示例性的,增益控制电路可以根据adc的精度获取期望数值范围,该期望数值范围是指期望adc输出的转换后的数据的所处的数值范围。之后,增益控制控制电路可以判断第三数据的高比特位是否均为0,若高比特位均为0,则说明第三数据的数值较小,此时,可以根据期望数值范围确定调整倍数,并根据确定的调整倍数来确定第一增益系数。其中,调整倍数是指将第一数据调整到期望数值范围内所需要的调整倍数。

例如,假设第三数据为8比特的数据00001111,则增益控制电路可以判断第三数据的高四位是否均为0,由于第一数据的高四位均为0,因此可确定第三数据的数值偏小,假设期望数值范围是1111xxxx,则可以确定将第三数据调整到期望数值范围内所需的调整倍数为16倍,此时,增益控制电路可以基于该调整倍数确定第一增益系数,从而使得后续根据第一增益系数对第一数据进行调整后重新采样得到的数据能处于该期望数值范围内。

需要说明的是,在本申请实施例中,若在步骤602中,第一运算放大器根据取值为1的初始增益系数对第一数据进行了调整,则增益控制电路可以直接将确定的调整倍数确定为第一增益系数。若第一运算放大器根据不为1的初始增益系数对第一数据进行了调整,则增益控制电路可以在初始增益系数的基础上加上该调整倍数,从而得到第一增益系数。

当确定第一增益系数之后,增益控制电路可以将该第一增益系数反馈至第一放大器。

可选地,若数据转换装置中还包括第二运算放大器和增益调整电路,则增益控制电路还可以将该第一增益系数发送至增益调整电路,增益调整电路可以接收增益控制电路发送的第一增益系数,并收集adc输出的溢出标识,之后,增益调整电路可以根据该第一增益系数和溢出标识生成用于控制第二运算放大器对第二增益系数进行调整的控制信息,以便第二运算放大器根据调整后的第二增益系数对多通道分时选择电路后续输出的电流或电压进行调整。

步骤505:第一运算放大器接收第一增益系数,并基于第一增益系数对第一数据进行调整,得到第四数据,输出第四数据。

第一运算放大器在接收到增益控制电路发送的第一增益系数之后,可以根据该第一增益系数重新对第一数据进行调整,从而得到第四数据,之后,将第四数据发送至adc。

步骤506:adc对第四数据进行模数转换,得到第五数据。其中,第一数据的转换结果包括第五数据和第一增益系数,第五数据用于指示转换结果的尾数,第一增益系数用于指示转换结果的指数。

当adc接收到根据第一增益系数调整得到的第四数据时,可以对该第四数据进行模数转换,从而得到第五数据。由于第一增益系数是通过将第三数据和期望数值范围进行比较后确定得到的,因此,根据该第一增益系数对第一数据的幅度重新进行调整,得到的第四数据再次经过adc转换后,得到的第五数据将处于期望数值范围内。此时,数据转换装置可以将第五数据作为尾数,将第一增益系数和初始增益系数之和作为指数,从而得到第一运算结果对应的转换结果。示例性的,假设第五数据为a,第一增益系数为b,初始增益系数为c,则转换结果将为:2^(b+c)*a。

可选地,若数据转换装置中还包括第二运算放大器,且第二运算放大器通过第二增益系数对多通道分时选择电路输出的电流或电压进行了调整,则在本步骤中,数据转换装置可以将第五数据作为尾数,将第一增益系数、第二增益系数和初始增益系数之和作为指数,从而得到转换结果。示例性的,假设第五数据为a,第一增益系数为b,初始增益系数为c,第二增益系数为d,则转换结果将为:2^(b+c+d)*a。

在本申请实施例中,由于可以通过第一运算放大器以及增益控制电路,将待转换的电压或电流调整到合适的范围之内后再通过adc进行转换,并通过第一运算放大器的增益系数和adc转换的第五数据来共同表示转换结果,因此,即使采用较低精度的adc,通过该adc转换并表示的数据的最大范围也将远远大于adc本身的精度所能表示的数据范围。通过本申请提供的数据转换装置进行模数转换时,在adc精度保持不变的情况下,可以有效的提高adc转换并表达的数据的范围。在此基础上,由于adc的精度越低,adc的运算频率越高,而adc的运算频率越高,则对于一个rram阵列的n列而言,所需要的adc的数量也就越少,因此,可以在本申请实施例提供的数据转换装置中采用较低精度的adc,以此来保证数据转换范围和表示范围的不缩小的情况下,降低rram阵列运算的功耗。

另外,在本申请实施例中,在通过第一运算放大器对电压或电流进行调整之前,还可以先由第二运算放大器根据第二增益系数对电压或电流进行调整,由于第二增益系数是预先对需要通过rram阵列进行运算的数据所对应的运算结果进行统计之后得到的。因此,通过第二运算放大器调整之后再由第一运算放大器进行调整,可以使得调整后的电流或电压处于更为合适的范围之内,进而保证最终的转换结果能够表示在更合适的范围之内。

需要说明的是,图5所示实施例中主要介绍了将第二运算放大器设置在rram阵列的输出端时,对rram阵列的多列输出端输出的模拟进行模数转换的具体实现方式中。可选地,根据图4所示的数据转换装置可知,rram阵列的输入端还可以设置有多个dac以及与dac一一对应的第三运算放大器,或者,rram阵列的输入端还可以设置有量程可变的dac,在这种情况下,在rram阵列的输入端,可以根据第三增益系数对每一行的输入数据进行调整,并将第三增益系数间接发送至adc,在rram阵列的输出端,可以参照图5所示实施例中提供的方法对rram阵列的多列输出端输出的数据进行模数转换,并在adc转换得到第五数据后,数据转换装置基于第五数据、初始增益系数、第一增益系数和第三增益系数来确定转换结果。

其中,第三增益系数可以是预先对需要通过rram阵列进行运算的数据所对应的运算结果进行统计之后得到的。

可选地,在rram阵列的输入端与adc、增益控制电路之间还可以连接有增益调整电路,在这种情况下,可以参考前述实施例中步骤504中的相关介绍,通过该增益调整电路收集adc的溢出标识以及增益控制电路的第一增益系数,进而根据该溢出标识和第一增益系数生成控制信息,以控制第二运算放大器或量程可变的dac对第三增益系数进行调整。

综上所述,在本申请实施例中,可以通过在rram阵列的输入端调整输入电压信号的幅度来对控制输出端的电流的范围。由于第三增益系数是预先对需要通过rram阵列进行运算的数据所对应的可能的运算结果进行统计之后得到的。因此,通过第三运算放大器对电压信号进行调整之后,可以使得调整后的电压信号处于更为合适的范围之内,从而保证rram输出端的输出的电流能够处于更合适的范围之内。

图6是本申请实施例提供的一种数据转换设备的结构示意图。图1-4所示的数据转换装置可以包含与该数据转换设备中。参见图6,该数据转换设备包括至少一个处理器601,通信总线602,存储器603和至少一个通信接口604。

处理器601可以是一个通用中央处理器(centralprocessingunit,cpu),微处理器,特定应用集成电路(application-specificintegratedcircuit,asic),现场可编程门阵列(field-programmablegatearray,fpga),或一个或多个用于控制本申请方案程序执行的集成电路。或者,处理器601还可以是一个用于控制本申请方案程序执行的专用硬件。

通信总线602可包括一通路,在上述组件之间传送信息。

存储器603可以用于存储程序代码以及接收到的llr值,其中,存储器603可以是只读存储器(read-onlymemory,rom)或可存储静态信息和指令的其它类型的静态存储设备,随机存取存储器(randomaccessmemory,ram))或者可存储信息和指令的其它类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、只读光盘(compactdiscread-onlymemory,cd-rom)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器603可以是独立存在,通过通信总线602与处理器601相连接。存储器603也可以和处理器601集成在一起。

通信接口604,使用任何收发器一类的装置,用于与其它设备或通信网络通信,如以太网,无线接入网(ran),无线局域网(wirelesslocalareanetworks,wlan)等。

在具体实现中,作为一种实施例,处理器601可以包括一个或多个cpu,例如图6中所示的cpu0和cpu1。

在具体实现中,作为一种实施例,数据转换设备可以包括多个处理器,例如图6中所示的处理器601和处理器107。这些处理器中的每一个可以是一个单核(single-cpu)处理器,也可以是一个多核(multi-cpu)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。

上述的数据转换设备可以是一个通用数据转换设备或者是一个专用数据转换设备。在具体实现中,数据转换设备可以是台式机、便携式电脑、网络服务器、通信设备或者嵌入式设备。本申请实施例不限定数据转换设备的类型。

其中,存储器603用于存储执行本申请方案的程序代码,并由处理器601来控制执行。处理器601可以用于执行存储器603中存储的程序代码。程序代码中可以包括一个或多个软件模块。处理器601通过执行存储器603中的程序代码中的一个或多个软件模块,来完成数据转换。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述为本申请提供的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1