一种基于FeFET存算一体阵列的语音识别方法转让专利

申请号 : CN202311130282.2

文献号 : CN116863936B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 任嵩楠闫力顾佳妮玉虓胡塘刘志威韩根全

申请人 : 之江实验室

摘要 :

本发明公开了一种基于FeFET存算一体阵列的语音识别方法,所述方法包括:获取并预处理待识别的语音信号,得到第一矩阵;对预先训练好的语音识别网络进行拆分,将拆分后的语音识别网络部署在FeFET阵列上;将第一矩阵输入至FeFET阵列,得到第一结果;利用FeFET阵列基于归一化指数函数对第一结果进行处理,得到第二结果;根据第二结果判断语音信号对应的识别类型结果。本发明方法利用FeFET存算一体阵列同时具备存储和计算功能的特性,语音识别网络中的部分卷积运算拆分部署在阵列上,提高了运算速度,降低了运算所需的功耗,节省了硬件资源开销,并具有较好语音识别效果。

权利要求 :

1.一种基于FeFET存算一体阵列的语音识别方法,其特征在于,所述方法包括:获取并预处理待识别的语音信号,得到第一矩阵;

对预先训练好的语音识别网络进行拆分,将拆分后的语音识别网络部署在FeFET阵列上;

将第一矩阵输入至FeFET阵列,得到第一结果;包括:将预先训练好的语音识别网络的卷积核量化成a位二进制的第一数据;将第一数据预先导入至FeFET阵列中;将第一矩阵转化为b位二进制的第二数据,并输入至FeFET阵列中与第一数据按位相乘,得到a个b位二进制的中间数据;将a个b位二进制的中间数据累加,得到第一结果;

利用FeFET阵列基于归一化指数函数对第一结果进行处理,得到第二结果;包括:利用FeFET阵列使用查找表实现归一化指数函数,包括:将结果数据预先存储于FeFET阵列中,将第一结果作为输入地址,从FeFET阵列中读取出经过归一化指数函数处理的第二结果;

根据第二结果判断语音信号对应的识别类型结果。

2.根据权利要求1所述的基于FeFET存算一体阵列的语音识别方法,其特征在于,对待识别的语音信号,并进行预处理的过程包括:对待识别的语音信号进行预加重、分帧、加窗、傅里叶变化、矩阵化。

3.根据权利要求2所述的基于FeFET存算一体阵列的语音识别方法,其特征在于,对待识别的语音信号,并进行预处理的过程包括:采用一阶FIR数字滤波器对待识别的语音信号进行预加重;

对预加重后的待识别的语音信号截取信号中间有效部分,完成分帧;

采用汉明窗对分帧后的待识别的语音信号进行加窗;

对加窗后的待识别的语音信号进行傅里叶变化;

将傅里叶变化后的待识别的语音信号转换为矩阵数据进行矩阵化。

4.根据权利要求1所述的基于FeFET存算一体阵列的语音识别方法,其特征在于,所述语音识别网络采用MobileNetV2网络。

5.根据权利要求4所述的基于FeFET存算一体阵列的语音识别方法,其特征在于,对预先训练好的语音识别网络进行拆分,将拆分后的语音识别网络部署在FeFET阵列上包括:将MobileNetV2网络拆分为第一1×1逐点卷积层、3×3深度卷积层、第二1×1逐点卷积层;将第一1×1逐点卷积层、3×3深度卷积层和/或第二1×1逐点卷积层部署在FeFET阵列上。

6.根据权利要求1或4所述的基于FeFET存算一体阵列的语音识别方法,其特征在于,语音识别网络的训练过程包括:采集语音信号样本作为训练数据;其中,所述语音信号样本包含第一类型、第二类型、……、第N类型;

通过训练数据对语音识别网络进行训练,使得语音识别网络能够区分第一类型、第二类型、……、第N类型的语音信号。

7.一种电子设备,包括存储器和处理器,其特征在于,所述存储器与所述处理器耦接;

其中,所述存储器用于存储程序数据,所述处理器用于执行所述程序数据以实现上述权利要求1‑6任一项所述的基于FeFET存算一体阵列的语音识别方法。

8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1‑6中任一所述的基于FeFET存算一体阵列的语音识别方法。

说明书 :

一种基于FeFET存算一体阵列的语音识别方法

技术领域

[0001] 本发明涉及神经网络领域,尤其涉及一种基于FeFET(Ferroelectric‑Semiconductor FET,铁电场效应晶体管)存算一体阵列的语音识别方法。

背景技术

[0002] 铁电场效应晶体管(FeFET)是一种场效应晶体管,其包括夹在器件(沟道)的栅电极和源极‑漏极导电区域之间的铁电材料。铁电体中的永久电场极化使这种类型的器件在没有任何电偏压的情况下保持晶体管的状态(开或关),因此可以用作非易失性存储器。基于铁电场效应晶体管的存算一体芯片突破了传统硬件体系架构的“存储墙” “功耗墙”瓶颈,通过“电路‑架构‑器件‑算法”的协同设计与优化,显著提高计算能效,相比同一半导体工艺节点下传统CMOS技术加速芯片提高约2个数量级。
[0003] 语音识别是一门交叉学科。近二十年来,语音识别技术取得显著进步,开始从实验室走向市场。人们预计,未来10年内,语音识别技术将进入工业、家电、通信、汽车电子、医疗、家庭服务、消费电子产品等各个领域。传统的语音识别系统普遍采用基于高斯混合模型和隐马尔科夫模型(Gaussian Mixture Model‑Hidden Markov Model,GMM‑HMM)的声学模型以及n‑gram语言模型。近年来随着深度学习的兴起,基于深度神经网络的声学模型和语言模型相比于传统的GMM‑HMM和n‑gram模型分别都获得了显著的性能提升,因此通过深度学习神经网络来完成语言识别已经成了当下的主流。
[0004] 虽然神经网络可以提高语音识别的准确率及效率,但是其运行起来需要大量的存储和计算资源,有可能会导致设备的功耗过高,并且也存在运算时间过长的情况。

发明内容

[0005] 针对现有技术不足,本发明提供了一种基于FeFET存算一体阵列的语音识别方法。
[0006] 第一方面,本发明实施例提供了一种基于FeFET存算一体阵列的语音识别方法,所述方法包括:
[0007] 获取并预处理待识别的语音信号,得到第一矩阵;
[0008] 对预先训练好的语音识别网络进行拆分,将拆分后的语音识别网络部署在FeFET阵列上;
[0009] 将第一矩阵输入至FeFET阵列,得到第一结果;
[0010] 利用FeFET阵列基于归一化指数函数对第一结果进行处理,得到第二结果;
[0011] 根据第二结果判断语音信号对应的识别类型结果。
[0012] 进一步地,对待识别的语音信号,并进行预处理的过程包括:对待识别的语音信号进行预加重、分帧、加窗、傅里叶变化、矩阵化。
[0013] 进一步地,对待识别的语音信号,并进行预处理的过程包括:
[0014] 采用一阶FIR数字滤波器对待识别的语音信号进行预加重;
[0015] 对预加重后的待识别的语音信号截取信号中间有效部分,完成分帧;
[0016] 采用汉明窗对分帧后的待识别的语音信号进行加窗;
[0017] 对加窗后的待识别的语音信号进行傅里叶变化;
[0018] 将傅里叶变化后的待识别的语音信号转换为矩阵数据进行矩阵化。
[0019] 进一步地,语音识别网络采用MobileNetV2网络。
[0020] 进一步地,对预先训练好的语音识别网络进行拆分,将拆分后的语音识别网络部署在FeFET阵列上包括:将MobileNetV2网络拆分为第一1×1逐点卷积层、3×3深度卷积层、第二1×1逐点卷积层;将第一1×1逐点卷积层、3×3深度卷积层和/或第二1×1逐点卷积层部署在FeFET阵列上。
[0021] 进一步地,语音识别网络的训练过程包括:
[0022] 采集语音信号样本作为训练数据;其中,所述语音信号样本包含第一类型、第二类型、……、第N类型;
[0023] 通过训练数据对语音识别网络进行训练,使得语音识别网络能够区分第一类型、第二类型、……、第N类型的语音信号。
[0024] 进一步地,将第一矩阵输入至FeFET阵列,得到第一结果包括:
[0025] 将预先训练好的语音识别网络的卷积核量化成a位二进制的第一数据;
[0026] 将第一数据预先导入至FeFET阵列中;
[0027] 将第一矩阵转化为b位二进制的第二数据,并输入至FeFET阵列中与第一数据按位相乘,得到a个b位二进制的中间数据;
[0028] 将a个b位二进制的中间数据累加,得到第一结果。
[0029] 进一步地,利用FeFET阵列基于归一化指数函数对第一结果进行处理,得到第二结果包括:
[0030] 利用FeFET阵列使用查找表实现归一化指数函数,包括:将结果数据预先存储于FeFET阵列中,将第一结果作为输入地址,从FeFET阵列中读取出经过归一化指数函数处理的第二结果。
[0031] 第二方面,本发明实施例提供了一种电子设备,包括存储器和处理器,所述存储器与所述处理器耦接;其中,所述存储器用于存储程序数据,所述处理器用于执行所述程序数据以实现上述的基于FeFET存算一体阵列的语音识别方法。
[0032] 第三方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述的基于FeFET存算一体阵列的语音识别方法。
[0033] 与现有技术相比,本发明的有益效果为:本发明提供了一种基于FeFET存算一体阵列的语音识别方法,对预先训练好的语音识别网络进行拆分,将拆分后的语音识别网络部署在FeFET阵列上,利用FeFET阵列获取识别结果,提高了运算速度,降低了运算所需的功耗,节省了硬件资源开销,并具有较好语音识别效果。

附图说明

[0034] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0035] 图1为本发明实施例提供的基于FeFET存算一体阵列的语音识别方法的流程图;
[0036] 图2为本发明实施例提供的残差结构的示意图;
[0037] 图3为本发明实施例提供的逆残差结构的示意图;
[0038] 图4为本发明实施例提供的MobileNetV2网络的示意图;
[0039] 图5为本发明实施例提供的二进制乘法的示意图;
[0040] 图6为本发明实施例提供的基于FeFET存算一体阵列的语音识别系统的示意图;
[0041] 图7为本发明实施例提供的一种电子设备的示意图。

具体实施方式

[0042] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0043] 需要说明的是,在不冲突的情况下,下述的实施例及实施方式中的特征可以相互组合。
[0044] 如图1所示,本发明实施例提供了一种基于FeFET存算一体阵列的语音识别方法,所述方法具体包括:
[0045] 步骤S1,获取并预处理待识别的语音信号,得到第一矩阵。
[0046] 具体地,所述步骤S1具体包括以下步骤:
[0047] 步骤S101,通过麦克风采集待识别的语音信号,并生成.wav格式文件。为了确保能够收集到语音信号,在本实例中,将语音采集的时间设置为12秒。进一步地,在采集完成后再对其有效部分进行截取。
[0048] 步骤S102,对采集到的待识别的语音信号进行预处理。
[0049] 需要说明的是,在本实例中,必须对采集到的待识别的语音信号进行预加重、分帧、加窗等预处理操作。尽可能减小因为采集语音信号的设备及其他不可控因素所带来的混叠、高次谐波失真、高频等等因素对语音信号质量的影响。保证后续语音处理得到的信号更均匀、平滑,为信号参数提取提供优质的参数,提高语音识别准确率。
[0050] (1)预加重
[0051] 由于待识别的语音信号在传输过程中的损耗,会随着频率的增加而增加,为了获得更好的语音信号波形,就需要对待识别的语音信号进行预加重,即在发送端对信号高频分量进行补偿,这种方式能够有效的提高输出信噪比,但不会影响噪声。一般通过传递函数如式(1)所示的一阶FIR数字滤波器来实现。
[0052] H(z)=1‑az‑1 (1)
[0053] 式中,a为预加重系数,其取值范围在[0.95,0.97],本实例中a取值为0.95;
[0054] (2)分帧
[0055] 为了能够更好地处理语音信号,一般需要采用傅里叶变化将语音信号由时域转换到频域空间。傅里叶变化对周期函数具有较好的效果。但是语音信号其频率不断变化,是“非周期性”的。如果直接将这样的语音信号进行傅里叶变换,是很难获得其信号频率的良好近似的。
[0056] 为了使待识别的语音信号语音在较短的时间内变化是平稳的,具有短时平稳性,即在10ms‑30ms内语音信号近似不变,在本实例中需要将长语音截断为短的片段,进行短时分析。这段短时语音是具有周期性的,可以对其进行周期延拓,从而获得一个周期函数,以完成傅里叶变换。
[0057] 由于本实例实际处理的语音信号较短,在实际测试过程中我们发现语音信号在经过预加重就具有一定的短时平稳性,所以在本实例中将其简化为直接截取信号中间有效部分。
[0058] (3)加窗
[0059] 为了避免采集到的语音信号过长,导致本实例需要对过长的语音数据进行处理,一般采用的解决办法就是每次截取一段数据,进行分析,然后再取下一段数据,这也就是加窗处理。本实例中采用汉明窗,其公式如式(2)所示:
[0060]  (2)
[0061] 式中,N为窗口宽度。
[0062] (4)傅里叶变化
[0063] 为了更好地获取麦克风采集到音频信号的特征,还需要将音频从时域信号转换成频域信号。所以在经过汉明窗后,每帧还必须通过傅里叶变换(Fast Fourier Transform,FFT)得到频谱上的能量分布。具体方式为,对分帧加窗后的每帧信号进行FFT得到各帧的频谱,并对语音信号的频谱取模平方得到语音信号的功率谱。傅里叶变换的公式如式(3)所示:
[0064]   (3)
[0065] 式中,N为傅里叶变换点数;x(n)为输入的语音信号。
[0066] (5)矩阵化
[0067] 在本实例中采用神经网络来识别语音指令,为了能够更好的适配网络,还需要将傅里叶变换后的数据从原始的语音平铺图转成相应尺寸的矩阵数据。在本实例中最终生成的语音矩阵大小为224×224。
[0068] 步骤S2,对预先训练好的语音识别网络进行拆分,将拆分后的语音识别网络部署在FeFET阵列上。
[0069] 需要说明的是,在本实例中,语音识别需要区分语音的指令类别,由于语音指令较为简单,且前后几乎没有关联度,所以所述语音识别网络采用MobileNetV2网络。
[0070] 进一步地,该MobileNetV2网络相较于其他网络,提出了两个新的概念,即:倒置残差(Inverted Residual)和线性瓶颈(Linear Bottleneck)。倒置残差主要用来增加图像特征的提取以提高精度,而线性瓶颈主要用来避免非线性函数的信息丢失。
[0071] 如图2所示,普通网络的残差结构是首先对输入特征矩阵,通过1x1卷积进行压缩,降低通道的数量;然后通过3x3的卷积核进行卷积处理;最后通过1x1的卷积核来扩充通道数。如图3和图4所示,在MobilenetV2的倒置残差结构中卷积主要分三个部分:第一逐点卷积(Point Wise)、深度卷积(Depth Wise)、第二逐点卷积(Point Wise)。其中,第一逐点卷积Point Wise为点卷积,即把语音信号生成一个高维信息域,通过ReLU6激活函数后,再用深度卷积Depth Wise进行各个通道的单独卷积,此刻由于维度较高又没有降维操作,故激活函数选用的ReLU6函数。具体的运算流程为:通过1x1卷积进行升维,增加通道的大小;然后通过3x3的深度卷积Depth Wise卷积核进行卷积处理;最后通过1x1逐点卷积的卷积核进行降维。还需要说明的是,普通残差结构使用的激活函数是relu,但倒残差结构使用的是relu6激活函数,如式(4)所示:
[0072] y=ReLU6(x)=min(max(x,0),6)   (4)
[0073] 进一步地,本实例发现ReLU6激活函数会对低纬特征造成大量损失, 由于倒残差结构是两头细中间粗的结构,所以输出的时候是一个低纬的特征。为了避免信息的丢失就需要使用一个线性的激活函数替代ReLU6激活函数。该结构也被称为残差块(residual block),其示意图如图3所示。
[0074] 训练语音识别网络的过程包括:采集语音信号样本作为训练数据;其中,所述语音信号样本包含第一类型、第二类型、……、第N类型;通过训练数据对语音识别网络进行训练,使得语音识别网络能够区分第一类型、第二类型、……、第N类型的语音信号。
[0075] 示例性地,在本实例中,设置第一类型为“前进”,第二类型为“后退”,第三类型为“左转”,第四类型为“右转”,第五类型为“停止”。各个类型的语音指令较为简单,且前后几乎没有关联度。采集并预处理关于“前进、后退、左转、右转和停止”的语音数据作为训练集,利用训练集对语音识别网络进行训练,使得语音识别网络能够区分“前进、后退、左转、右转和停止”。
[0076] 对语音识别网络进行拆分,将拆分后的语音识别网络部署在FeFET阵列上包括:将语音识别网络按层进行拆分,将拆分后的语音识别网络中的某一层或各个层部署在FeFET阵列上。
[0077] 示例性地,将MobileNetV2网络拆分为第一1×1逐点卷积层、3×3深度卷积层、第二1×1逐点卷积层;将第一1×1逐点卷积层、3×3深度卷积层和/或第二1×1逐点卷积层部署在FeFET阵列上。在本实例中,将仅第二1×1逐点卷积层部署在FeFET阵列上,但是包括但不限于仅部署第一1×1逐点卷积层,仅部署3×3深度卷积层,或同时将第一1×1逐点卷积层、3×3深度卷积层和第二1×1逐点卷积层部署在FeFET阵列上。
[0078] 需要说明的是,FeFET阵列同时具有存储和计算的功能,因此可以提前将卷积核的权重储存在FeFET阵列中,再将输入矩阵按次序输入FeFET阵列,从而输出结果。
[0079] 步骤S3,将第一矩阵输入至FeFET阵列,得到第一结果。
[0080] 具体地,所述步骤S3包括以下步骤:
[0081] 步骤S301,将预先训练好的语音识别网络的卷积核量化成a位二进制的第一数据;
[0082] 步骤S302,将第一数据预先导入至FeFET阵列中;
[0083] 进一步地,将预先训练好的语音识别网络的卷积核量化成8位二进制数后预先导入铁电FeFET阵列中,量化方式与第一矩阵的量化方式相似。铁电FeFET阵列中的每一个铁电器件负责一位,共计8个铁电器件负责一个卷积核。
[0084] 步骤S303,将第一矩阵转化为b位二进制的第二数据,并输入至FeFET阵列中与第一数据按位相乘,得到a个b位二进制的中间数据;
[0085] 需要说明的是,由于铁电FeFET阵列只能够处理二进制数据,因此需要将第一矩阵内的所有元素都量化为二进制数。为了减小计算量,本实例采用定点量化的方式,简单来说16
就是将每个元素放大2 倍,四舍五入后,再将其转换成32位二进制的第二数据。
[0086] 在本实例中,将32位二进制的第二数据依次从低位到高位输入铁电阵列完成1×1卷积运算,如图5所示,该过程运算原理与二进制数乘法类似,分别与8位卷积核按位相乘,获得一个32位的数。当32位二进制的第二数据输入完成后,得到8个32位二进制的中间数据。
[0087] 步骤S304,将a个b位二进制的中间数据累加,得到第一结果。
[0088] 如图5所示,在本实例中,将8个32位二进制的中间数据累加,得到第一结果。
[0089] 步骤S4,利用FeFET阵列基于归一化指数函数对第一结果进行处理,得到第二结果。
[0090] 具体地,利用FeFET阵列使用查找表实现归一化指数函数,包括:将结果数据预先存储于FeFET阵列中,将第一结果作为输入地址,从FeFET阵列中读取出经过归一化指数函数处理的第二结果。
[0091] 为获得最终的识别结果,还需要对第一结果进行softmax函数处理。在数字电路中,复杂函数的计算往往使用LUT(Look Up Table)查找表的方式来实现,也就是把输入的信号当做地址信号进行查表,找出地址对应的内容,然后输出。因此可以提前把需要结果数据存储在FeFET阵列中,再把第一结果作为输入地址,从相应的FeFET阵列中读取出数据,获取经过Softmax函数后的数据,即第二结果。
[0092] 步骤S5,根据第二结果判断语音信号对应的识别类型结果。
[0093] 判断第二结果对应的数值,根据数值获取对应的类型序号,得到识别类型结果。
[0094] 示例性地,判断第二结果中最大值所处的位置(0‑4,分别对应前进、后退、左转、右转和停止),即到对应的识别类型结果。
[0095] 如图6所述,本发明实施例还提供了一种基于FeFET存算一体阵列的语音识别系统,所述系统包括:
[0096] 控制器,所述控制器与语音信号采集单元连接,所述语音信号采集单元用于采集语音信号;所述控制器包括数据预处理单元和第一通讯单元;所述数据预处理单元,用于对采集的语音信号进行预处理,得到第一矩阵;所述第一通讯单元,用于获取FeFET阵列控制单元反馈的第二结果。
[0097] FeFET阵列控制单元,包括第二通讯单元、模数转换单元、FeFET阵列;所述第二通讯单元,用于获取控制器发送的第一矩阵;所述模数转换单元,用于将预先训练好的语音识别网络的卷积核量化成a位二进制的第一数据,将第一矩阵转化为b位二进制的第二数据,并将第一数据和第二数据输入FeFET阵列中;所述FeFET阵列,用于处理第一数据和第二数据得到第一结果,并基于归一化指数函数对第一结果进行处理,得到第二结果。
[0098] 所述控制器还包括:部署部分的语音识别网络。
[0099] 所述控制器还包括:判断第二结果对应的数值,根据数值获取对应的类型序号,得到识别类型结果。
[0100] 进一步地,所述控制器采用树莓派;所述第一通讯单元和第二通讯单元基于UART接口进行通讯。
[0101] 本说明书还提供了一种计算机可读存储介质,该存储介质存储有计算机程序,计算机程序可用于执行上述数据同步的方法。
[0102] 本说明书还提供了图7所示的电子设备的示意结构图。如图7所述,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,以实现上述数据同步的方法。
[0103] 当然,除了软件实现方式之外,本说明书并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
[0104] 在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device, PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced  Boolean  Expression  Language)、AHDL(Altera  Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very‑High‑SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
[0105] 控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20 以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
[0106] 上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
[0107] 为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
[0108] 本领域内的技术人员应明白,本说明书的实施例可提供为方法、系统、或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD‑ROM、光学存储器等)上实施的计算机程序产品的形式。
[0109] 本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0110] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0111] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0112] 在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
[0113] 内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
[0114] 计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD‑ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0115] 还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0116] 本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD‑ROM、光学存储器等)上实施的计算机程序产品的形式。
[0117] 本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
[0118] 本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0119] 以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。