一种基于SRAM的存内计算电路、装置及电子设备的制作方法

文档序号:28326313发布日期:2022-01-05 00:56阅读:145来源:国知局
一种基于SRAM的存内计算电路、装置及电子设备的制作方法
一种基于sram的存内计算电路、装置及电子设备
技术领域
1.本技术涉及电子电路领域,具体地涉及一种基于sram的存内计算电路、装置及电子设备。


背景技术:

2.在传统的冯诺依曼计算机体系结构中,数据处理单元和存储器是分开的,两者之间的数据交换通过数据总线进行。随着近年来人工智能、大数据等应用的兴起,大量数据在数据处理单元和存储器之间的交换带来了巨大的能耗并成为了性能提升的主要瓶颈,这种现象被称之为内存墙,而存内计算成为目前解决内存墙问题的关键技术之一。
3.存内计算,是将存储器和数据处理单元结合起来以减少甚至消除计算机中存储器和数据处理单元之间的高频数据传输,如今有很多种存储器被广泛的研究用于发展大规模、高性能、低功耗的存内计算设计。现有的存内计算电路一般需要多条字线同时开启以实现加法和/或乘法运算,实现复杂。


技术实现要素:

4.有鉴于此,本技术提供一种基于sram的存内计算电路、装置及电子设备,以利于解决现有技术中存内计算实现复杂的问题。
5.第一方面,本技术实施例提供了一种一种基于sram的存内计算电路,包括:包含有锁存器的sram存储单元、第一传输单元、第二传输单元及逻辑运算单元;
6.所述第一传输单元的第一控制端与所述sram存储单元内锁存器的第一输出端连接,所述第一传输单元的第二控制端与第一位线连接,所述第一传输单元的第一端与所述逻辑运算单元的第一输入端及第三位线连接;所述第一传输单元的第二端接地或接电源;
7.所述第二传输单元的第一控制端与所述sram存储单元内锁存器的第二输出端连接,所述第二传输单元的第二控制端与第二位线连接,所述第二传输单元的第一端与所述逻辑运算单元的第二输入端及第四位线连接;所述第二传输单元的第二端接地或接电源;
8.所述第一传输单元,用于从sram存储单元的锁存器内获取所述第一操作数,从所述第一位线中获取第二操作数,并根据所述第一操作数及第二操作数控制所述逻辑运算单元的第一输入端接收的第一信号;
9.所述第二传输单元,用于从sram存储单元的锁存器内获取所述第三操作数,从所述第二位线中获取第四操作数,并根据所述第三操作数及第四操作数控制所述逻辑运算单元的第二输入端接收的第二信号;
10.所述逻辑运算单元,用于根据所述第一输入端接收的第一信号及第二输入端接收的第二信号进行逻辑运算,得到所述第一操作数及第二操作数的积,和/或所述第一操作数及第二操作数的和。
11.优选地,还包括:sram选择单元及第一预充单元;
12.所述sram存储单元的输入输出端与sram选择单元的第一端连接,所述sram选择单
元的第二端与所述第一位线连接;
13.所述sram选择单元,用于根据控制端接收的第一控制信号选择sram存储单元;
14.所述第一预充单元的第一端与电源连接,所述第一预充单元的第二端与所述sram选择单元的第一端连接,用于根据控制端接收的第二控制信号向所述sram选择单元的第一端充电。
15.优选地,还包括:逻辑选择单元及第二预充单元;
16.所述逻辑运算单元的第一输入端与第三位线连接包括:
17.所述逻辑运算单元的第一输入端与所述逻辑选择单元的第一端连接,所述逻辑选择单元的第二端与所述第三位线连接;
18.所述第二预充单元的第一端与电源连接,所述第二预充单元的第二端与所述逻辑选择单元的第一端连接,用于根据控制端接收的第三控制信号向所述逻辑选择单元的第一端充电;
19.所述逻辑选择单元,用于根据控制端接收的第四控制信号控制所述逻辑运算单元的第一输入端接收的第一信号。
20.优选地,所述第一传输单元包括:第一晶体管及第二晶体管;
21.所述第一传输单元的第一控制端与所述sram存储单元内锁存器的第一输出端连接,所述第一传输单元的第二控制端与第一位线连接,所述第一传输单元的第一端与所述逻辑运算单元的第一输入端及第三位线连接;所述第一传输单元的第二端接地或接电源包括:
22.所述第一晶体管的栅极与所述sram存储单元内锁存器的第一输出端连接,所述第二晶体管的栅极与所述第一位线连接,所述第一晶体管的源极与所述第二晶体管的漏极连接,所述第一晶体管的漏极接地或接电源,所述第二晶体管的源极与所述逻辑运算单元的第一输入端及第三位线连接。
23.优选地,所述第二传输单元包括:第三晶体管及第四晶体管;
24.所述第二传输单元的第一控制端与所述sram存储单元内锁存器的第二输出端连接,所述第二传输单元的第二控制端与第二位线连接,所述第二传输单元的第一端与所述逻辑运算单元的第二输入端及第四位线连接;所述第二传输单元的第二端接地或接电源包括:
25.第三晶体管的栅极与所述sram存储单元内锁存器的第二输出端连接,所述第四晶体管的栅极与所述第二位线连接,所述第三晶体管的源极与所述第四晶体管的漏极连接,所述第三晶体管的漏极接地或接电源,所述第四晶体管的源极与所述逻辑运算单元的第二输入端及第四位线连接。
26.优选地,在所述第一传输单元的第二端接地,第二传输单元的第二端接地时,所述逻辑运算单元包括:第一异或门,第一与门,第二与门,第一或门及第一非门;
27.所述第一传输单元的第一端与所述逻辑运算单元的第一输入端及第三位线连接包括:
28.所述第一与门的第一输入端与所述第一传输单元的第一端及所述第三位线连接;第一非门的输入端与第一传输单元的第一端及第三位线连接;
29.所述第二传输单元的第一端与所述逻辑运算单元的第二输入端及第四位线连接
包括:
30.所述第一与门的第二输入端与所述第二传输单元的第一端及所述第四位线连接;
31.所述第一与门的输出端与所述第一异或门的第一输入端及第二与门的第一输入端连接,所述第二与门的输出端与第一或门的第一输入端连接,所述第一非门的输入端与所述第三位线连接,所述第一非门的输出端与所述第一或门的第二输入端连接;
32.所述第二与门的第二输入端及第一异或门的第二输入端,用于接收低位进位数;
33.所述第一异或门的输出端,用于输出第一操作数及第二操作数的和;
34.所述第一或门的输出端,用于输出第一操作数及第二操作数的和的高位进位数;
35.所述第一非门的输出端,用于输出第一操作及第二操作的积。
36.优选地,在所述第一传输单元的第二端接电源,第二传输单元的第二端接电源时,所述逻辑单元包括:第二异或门,第三与门,第四与门,第二或门,第二非门,第三非门及第四非门;
37.所述第一传输单元的第一端与所述逻辑运算单元的第一输入端及第三位线连接包括:
38.第二非门的输入端与所述第一传输单元的第一端及所述第三位线连接;
39.所述第二传输单元的第一端与所述逻辑运算单元的第二输入端及第四位线连接包括:
40.第三非门的输入端与所述第二传输单元的第一端及所述第四位线连接;
41.第二非门的输出端与所述第三与门的第一输入端连接,所述第一与门的第二输入端与所述第三非门的输出端连接,所述第三与门的输出端与所述第二异或门的第一输入端及第四与门的第一输入端连接,所述第四与门的输出端与第二或门的第一输入端连接,所述第四非门的输入端与所述第二非门的输出端连接,所述第四非门的输出端与所述第二或门的第二输入端连接;
42.所述第四与门的第二输入端及第二异或门的第二输入端,用于接收低位进位数;
43.所述第二异或门的输出端,用于输出第一操作数及第二操作数的和;
44.所述第二或门的输出端,用于输出第一操作数及第二操作数的和的高位进位数;
45.所述第四非门的输出端,用于输出第一操作及第二操作的积。
46.优选地,所述第一位线及第二位线,还用于所述sram存储单元的数据读写。
47.优选地,所述逻辑选择单元包括:第五晶体管,第二预充单元包括第六晶体管;
48.所述逻辑运算单元的第一输入端与所述逻辑选择单元的第一端连接,所述逻辑选择单元的第二端与所述第三位线连接包括:
49.所述第五晶体管的栅极用于接收选择控制信号,所述第五晶体管的源极连接第三位线,用于接收驱动信号,第五晶体管的漏极连接所述逻辑运算单元的第一输入端;
50.所述第二预充单元的第一端与电源连接,所述第二预充单元的第二端与所述逻辑选择单元的第一端连接包括:
51.所述第六晶体管的栅极用于接收预充控制信号,所述第六晶体管的源极连接电源,所述第六晶体管的漏极连接所述第五晶体管的源极。
52.优选地,所述第一位线内的信号为高电平信号,所述第二位线内的信号为低电平信号,或者,所述第一位线内的信号为低电平信号,所述第二位线内的信号为高电平信号。
也旨在包括多数形式,除非上下文清楚地表示其他含义。
72.应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,甲和/或乙,可以表示:单独存在甲,同时存在甲和乙,单独存在乙这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
73.在对本技术实施例进行具体介绍之前,首先对本技术实施例应用或可能应用的术语进行解释。
74.sram(static random

access memory,静态随机存取存储器)是随机存取存储器的一种。所谓的“静态”,是指这种存储器只要保持通电,里面储存的数据就可以恒常保持。
75.晶体管(transistor)是一种固体半导体器件(包括二极管、三极管、场效应管、晶闸管等,有时特指双极型器件),具有检波、整流、放大、开关、稳压、信号调制等多种功能。晶体管作为一种可变电流开关,能够基于输入电压控制输出电流。与普通机械开关(如relay、switch)不同,晶体管利用电信号来控制自身的开合。
76.相关技术中,在传统的冯诺依曼计算机体系结构中,数据处理单元和存储器是分开的,两者之间的数据交换通过数据总线进行。随着近年来人工智能、大数据等应用的兴起,大量数据在数据处理单元和存储器之间的交换带来了巨大的能耗。为了解决这个问题,存内计算被提出。存内计算,是将存储器和数据处理单元结合起来以减少甚至消除计算机中存储器和数据处理单元之间的高频数据传输。现有实现存内计算的方式是主要通过多个存储器和多条字线来实现乘法运算,通过外置全加器实现加法运算。该方式需要通过多个存储器和多条字线来实现乘法运算,实现复杂。
77.针对上述问题,本技术实施例提供了一种基于sram的存内计算电路及装置,通过sram存储单元、第一传输单元、第二传输单元及逻辑运算单元实现存内计算中的乘法及加法运算。在本技术中仅复用了位线信号,而没有使用字线信号,即为通过位线操作实现逻辑运算,降低了实现难度,且同时可以实现加法及乘法的逻辑运算,进一步提高了存内电路的效率,降低了处理器的功耗。并且本技术是基于单比特存储单元实现乘法逻辑运算,降低了阵列面积,降低了存内电路的整体面积消耗以及能耗,提高了效率。以下进行详细说明。
78.参见图1,为本技术实施例提供的一种基于sram的存内计算电路的结构示意图。在该存内计算电路中包括:包含有锁存器101的sram存储单元10、第一传输单元20、第二传输单元30及逻辑运算单元40。
79.其中,第一传输单元20的第一控制端与sram存储单元10内锁存器101的第一输出端连接,第一传输单元20的第二控制端与第一位线50连接,第一传输单元20的第一端与逻辑运算单元40的第一输入端及第三位线70连接;第一传输单元20的第二端接地或接电源。
80.第二传输单元30的第一控制端与sram存储单元10内锁存器101的第二输出端连接,第二传输单元30的第二控制端与第二位线60连接,第二传输单元30的第一端与逻辑运算单元40的第二输入端及第四位线80连接;第二传输单元30的第二端接地或接电源。
81.逻辑运算单元40的第一输入端与第三位线70连接,逻辑运算单元40的第二输入端与第四位线连80接。
82.第一传输单元20,用于从sram存储单元10的锁存器101内获取第一操作数,从第一位线50中获取第二操作数,并根据第一操作数及第二操作数控制逻辑运算单元40的第一输入端接收的第一信号。
83.第二传输单元30,用于从sram存储单元10的锁存器101内获取第三操作数,从第二位线60中获取第四操作数,并根据第三操作数及第四操作数控制逻辑运算单元40的第二输入端接收的第二信号。
84.逻辑运算单元40,用于根据第一输入端接收的第一信号及第二输入端接收的第二信号进行逻辑运算,得到第一操作数及第二操作数的积,和/或第一操作数及第二操作数的和。
85.在本技术实施例中,sram存储器10中包含有锁存器101,锁存器101内锁存有第一操作数据及第三操作数。第一操作数与第三操作数互为反相数据。即为,当第一操作数为二进制数中的1时,第三操作数为二进制数中的0。第一传输单元20的第一控制端与sram存储器10中锁存器101的第一输出端连接,第一传输单元20的第二控制端与第一位线50连接,第一传输单元20的第一端与逻辑运算单元40的第一输入端及第三位线70连接,第一传输单元20的第二端接地或接电源。这样一来,第一传输单元20可以根据其第一控制端及第二控制端接收的第一操作数及第二操作数控制其第一端及第二端是否导通。在根据第一操作数据及第二操作数据控制其第一端与第二端不导通时,则逻辑运算单元40的第一输入端接收到第三位线70内的电信号,此时,可以将第三位线70内的电信号视为第一信号。此时,第三位线70内的电信号为高电平信号时,则第一信号为高电平信号,第三位线70内的电信号为低电平信号时,则第一信号为低电平信号。在根据第一操作数据及第二操作数据控制其第一端与第二端导通时,由于第一传输单元20的第二端接地或者接电源,则第一传输单元20的第二端接地时,则第三位线70内的电信号被拉低,此时,可以将第三位线70内的被拉低的低电平信号作为第一信号,传输至逻辑运算单元40的第一输入端。在第一传输单元20的第二端接电源时,则第三位线70内的电信号被拉高,此时,可以将第三位线70内的被拉高的高电平信号作为第一信号,传输至逻辑运算单元40的第一输入端。即为,第一传输单元20可以通过获取的第一操作数及第二操作数控制逻辑运算单元40的第一输入端接收的第一信号。
86.第二传输单元30的第一控制端与sram存储器10中锁存器101的第二输出端连接,第二传输单元30的第二控制端与第二位线60连接,第二传输单元30的第一端与逻辑运算单元40的第二输入端及第四位线80连接,第二传输单元30的第二端接地或接电源。这样一来,第二传输单元30可以根据其第一控制端及第二控制端接收的第三操作数及第四操作数控制其第一端及第二端是否导通。在根据第三操作数据及第四操作数据控制其第一端与第二端不导通时,则逻辑运算单元40的第二输入端接收到第四位线80内的电信号,此时,可以将第四位线80内的电信号视为第二信号。此时,第四位线80内的电信号为高电平信号时,则第二信号为高电平信号,第四位线80内的电信号为低电平信号时,则第二信号为低电平信号。在根据第三操作数据及第四操作数据控制其第一端与第二端导通时,由于第二传输单元30的第二端接地或者接电源,则第二传输单元30的第二端接地时,则第四位线80内的电信号被拉低,此时,可以将第四位线80内的被拉低的低电平信号作为第二信号,传输至逻辑运算单元40的第二输入端。在第二传输单元30的第二端接电源时,则第四位线80内的电信号被拉高,此时,可以将第四位线80内的被拉高的高电平信号作为第二信号,传输至逻辑运算单元40的第二输入端。即为,第二传输单元30可以通过获取的第三操作数及第四操作数控制逻辑运算单元40的第二输入端接收的第二信号。
87.逻辑运算单元40的第一输入端与第一传输单元20的第一端及第三位线连接,第二
输入端与第二传输单元30的第一端及第四位线连接,用于根据第一传输单元20的控制获取第一信号及第二信号,并根据第一信号及第二信号进行逻辑运行,得到第一操作数及第二操作数的积和/或第一操作数及第二操作数的和。
88.需要说明的是,第二操作数与第四操作数是反相数据,即为当第二操作数是二进制数中的1时,第四操作数是二进制数中的0,当第二操作数是二进制数中的0时,第四操作数是二进制数中的1。也就是说,当第二操作数是高电平信号时,第四操作数是低电平信号。当第二操作数是低电平信号时,第四操作数是高电平信号。
89.在本技术实施例中,如图2所示,包含有锁存器101的sram存储单元10包括:锁存器101及第七晶体管t7,第八晶体管t8。锁存器101中包含有第九晶体管t9,第十晶体管t10,第十一晶体管t11,第十二晶体管t12,第一输出端q1及第二输出端q2。第九晶体管t9的栅极与第十晶体管t10的漏极、第十二晶体管12的源极及第第十一晶体管t11的栅极连接。第九晶体管t9的源极与电源连接,第九晶体管t9的漏极与第十一晶体管t11的源极、第十晶体管t10的栅极及第十二晶体管t12的栅极连接。第十晶体管t10的源极与电源连接。第十一晶体管t11的漏极接地。第十二晶体管t12的漏极接地。第九晶体管t9与第十一晶体管t11构成一个反相器,第十晶体管t10与第十二晶体管t12构成一个反相器,两个反相器构成锁存器101。第一输出端q1与第九晶体管t9的漏极及第十一晶体管t11的源极连接,第二输出端q2与第十晶体管t10的漏极及第十二晶体管t12的源极连接。第七晶体管t7的栅极与字线(word line)连接,第七晶体管t7的源极与第一位线(bit line)50连接,第七晶体管t7的漏极与锁存器101的第一输出端q1连接。第八晶体管t8的栅极与字线连接,第八晶体管t8的源极与锁存器101的第二输出端q2连接,第八晶体管t8的漏极与第二位线60连接。第七晶体管t7及第八晶体管t8是sram存储单元10到用于读写的第一位线50及第二位线60的控制开关。
90.即为,第一位线50及第二位线60,还用于sram存储单元10的数据读写。在本技术实施例中,第一位线50及第二位线60分别与sram存储单元10的第七晶体管t7及第八晶体管t8连接,用于sram存储单元10的数据读取及写入。
91.由于sram存储单元10有3种状态:standby(电路处于空闲)状态,reading(读)状态与writing(修改内容)状态。
92.当sram存储单元10处于standby状态时,此时字线内为低电平信号,那么作为控制用的第七晶体管t7及第八晶体管t8两个晶体管处于断路,把锁存器101分别与第一位线50及第二位线60隔离。锁存器101维持保存其内存储的数据。
93.当sram存储单元10处于reading状态时,假设sram存储单元10存储的内容为1,即在q1处的电平为高电平信号。在读周期之初,第一位线50及第二位线60预充电为高电平信号,即为第一位线50及第二位线60的预充值为逻辑1,随后字线wl内充电为高电平信号,使得两个访问控制晶体管t7与t8导通。然后锁存器101的第一输出端q1处的值传递至第一位线50,锁存器101的第二输出端q2处的值传递至第二位线60。此时,由于锁存器101的第一输出端q1处的值为1,使得第一位线50内保持高电平信号。锁存器101的第二输出端q2出的值为0,使得第二位线60内预充电压被泻掉,变为低电平信号,这是通过第十二晶体管t12与第八晶体管t8导通后的通路直接接地,使其值为逻辑0(即锁存器101的第一输出端q1的高电平使得第十二晶体管t12导通)。在第一位线50一侧,第九晶体管t9与第七晶体管t7导通,把第一位线50连接到vdd所代表的逻辑1(第九晶体管t9作为p沟道场效应管,由于栅极加了低
电平信号使得第九晶体管t9导通)。如果存sram存储单元10内存储的内容为0,相反的电路状态将会使第二位线60内信号的逻辑值为1,第一位线50内信号的逻辑值为0。只需要第一位线50及第二位线60之间有一个很小的电位差,读取的放大电路将会辨识出哪根位线是高电平信号哪根是低电平信号,敏感度越高,读取速度越快。
94.当sram存储单元10处于writing状态时,在写周期之初,把要写入的状态加载到第一位线50。如果要写入0,则设置第二位线60内的信号逻辑值为1,第一位线50的信号逻辑值为0。随后字线wl加载为高电平信号,第一位线50及第二位线60的状态被载入sram存储单元10的锁存器101内。这是通过第一位线50及第二位线60的输入驱动第七晶体管t7及第八晶体管t8被设计为比锁存器101内的晶体管更为强壮,使得第一位线50及第二位线60可以覆盖锁存器101内交叉耦合的反相器的以前的状态。
95.在本技术实施例中,在通过sram存储单元10进行加法及乘法的运算时,第一位线50及第二位线60用于存储第二操作数及第四操作数,以便第一传输单元20及第二传输单元30获取。
96.进一步地,如图3及图4所示,第一传输单元20包括:第一晶体管t1及第二晶体管t2。此时,第一传输单元20的第一控制端与sram存储单元10内锁存器101的第一输出端连接,第一传输单元20的第二控制端与第一位线50连接,第一传输单元20的第一端与逻辑运算单元40的第一输入端及第三位线70连接;第一传输单元20的第二端接地或接电源包括:
97.第一晶体管t1的栅极与sram存储单元10内锁存器101的第一输出端q1连接,第二晶体管t2的栅极与第一位线50连接,第一晶体管t1的源极与第二晶体管t2的漏极连接,第一晶体管t1的漏极接地,参考图3所示,或者,第一晶体管t1的漏极接电源,参考图4所示,第二晶体管t2的源极与逻辑运算单元40的第一输入端及第三位线70连接。
98.在本技术实施例中,存内计算电路需要进行第一操作数及第二操作数间的加法和/或乘法运算时,可以将第一操作数存储至sram存储单元10内的锁存器101中。此时,与第一操作数据反相的第三操作数也存储至sram存储单元10内的锁存器101中。将第二操作数存储至第一位线50内,即为第一位线50内信号的逻辑值为第二操作数。例如第二操作数可以为1或者0。由于第二操作数及第四操作数互为反相,则在第一位线50内存储有第二操作数时,在第二位线60内存储有第四操作数。此时,第一位线50内的电信号与第二位线60内的电信号互为反相,即为,第一位线50内的信号为高电平信号,第二位线60内的信号为低电平信号,或者,第一位线50内的信号为低电平信号,第二位线60内的信号为高电平信号。
99.具体的,在第一操作数及第二操作数均为1时,sram存储单元10内的锁存器101的第一输出端q1存储的数值为1,对应的输出高电平信号,第一位线50内存储的逻辑值1对应的信号为高电平信号。第一晶体管t1的栅极接收到sram存储单元10内的锁存器101的第一输出端q1输出的高电平信号,第一晶体管t1导通。第二晶体管t2的栅极接收到第一位线50输出的高电平信号,第二晶体管t2导通。由于第二晶体管t2的源极连接第三位线70及逻辑运算单元40的第一输入端,第一晶体管t1的漏极接地或者接电源。在第一晶体管t1的漏极接地时,则第三位线70直接接地,其内预充的高电平信号被拉低,此时,逻辑运算单元40的第一输入端获取到第一信号为低电平信号,即为获取到逻辑值为0的信号。在第一晶体管t1的漏极接电源时,则第三位线70直接接电源,其内预充的高电平信号维持高电平信号,此时,逻辑运算单元40的第一输入端获取到第一信号为高电平信号,即为获取到逻辑值为1的
信号。
100.在第一操作数及第二操作数均为0时,sram存储单元10内的锁存器101的第一输出端q1存储的数值为0,对应的输出低电平信号,第一位线50内存储的逻辑值0对应的信号为低电平信号。第一晶体管t1的栅极接收到sram存储单元10内的锁存器101的第一输出端q1输出的低电平信号,第一晶体管t1断开。第二晶体管t2的栅极接收到第一位线50输出的低电平信号,第二晶体管t2断开。此时,逻辑运算单元40的第一输入端获取到第一信号为第三位线70内的信号。在本技术实施例中,当第一晶体管t1的漏极接地时,第三位线70在存内计算电路的运算初期,预充为高电平信号。此时,逻辑运算单元40的第一输入端获取到第一信号为高电平信号,即为获取到逻辑值为1的信号。当第一晶体管t1的漏极接电源时,第三位线70在存内计算电路的运算初期,预充为低电平信号。此时,逻辑运算单元40的第一输入端获取到第一信号为低电平信号,即为获取到逻辑值为0的信号。
101.在第一操作数为0,第二操作数为1时,sram存储单元10内的锁存器101的第一输出端q1存储的数值为0,对应的输出低电平信号,第一位线50内存储的逻辑值1对应的信号为高电平信号。第一晶体管t1的栅极接收到sram存储单元10内的锁存器101的第一输出端q1输出的低电平信号,第一晶体管t1断开。第二晶体管t2的栅极接收到第一位线50输出的高电平信号,第二晶体管t2导通。由于第一晶体管t1断开,因此,第二晶体管t2至第一晶体管t1的通路是断开的,此时,逻辑运算单元40的第一输入端获取到第一信号为第三位线70内的信号。在本技术实施例中,当第一晶体管t1的漏极接地时,第三位线70在存内计算电路的运算初期,预充为高电平信号。此时,逻辑运算单元40的第一输入端获取到第一信号为高电平信号,即为获取到逻辑值为1的信号。当第一晶体管t1的漏极接电源时,第三位线70在存内计算电路的运算初期,预充为低电平信号。此时,逻辑运算单元40的第一输入端获取到第一信号为低电平信号,即为获取到逻辑值为0的信号。
102.在第一操作数为1,第二操作数为0时,sram存储单元10内的锁存器101的第一输出端q1存储的数值为1,对应的输出高电平信号,第一位线50内存储的逻辑值0对应的信号为低电平信号。第一晶体管t1的栅极接收到sram存储单元10内的锁存器101的第一输出端q1输出的高电平信号,第一晶体管t1导通。第二晶体管t2的栅极接收到第一位线50输出的低电平信号,第二晶体管t2断开。由于第二晶体管t2断开,因此,第二晶体管t2至第一晶体管t1的通路是断开的,此时,逻辑运算单元40的第一输入端获取到第一信号为第三位线70内的信号。在本技术实施例中,当第一晶体管t1的漏极接地时,第三位线70在存内计算电路的运算初期,预充为高电平信号。此时,逻辑运算单元40的第一输入端获取到第一信号为高电平信号,即为获取到逻辑值为1的信号。当第一晶体管t1的漏极接电源时,第三位线70在存内计算电路的运算初期,预充为低电平信号。此时,逻辑运算单元40的第一输入端获取到第一信号为低电平信号,即为获取到逻辑值为0的信号。
103.需要说明的是,在本技术实施例中,以高电平信号的逻辑值为1,低电平信号的逻辑值为0为例进行说明。当然,还可以以低电平信号的逻辑值为0,高电平信号的逻辑值为1,本技术对此不作限制。
104.进一步地,参考图3及图4所示,上述第二传输单元30包括:第三晶体管t3及第四晶体管t4。
105.第二传输单元30的第一控制端与sram存储单元10内锁存器101的第二输出端连
接,第二传输单元30的第二控制端与第二位线60连接,第二传输单元30的第一端与逻辑运算单元40的第二输入端及第四位线80连接;第二传输单元30的第二端接地或接电源包括:
106.第三晶体管t3的栅极与sram存储单元10内锁存器101的第二输出端q2连接,第四晶体管t4的栅极与第二位线60连接,第三晶体管t3的源极与第四晶体管t4的漏极连接,第三晶体管t3的漏极接地参考图3所示,或者,第三晶体管t3的漏极接电源,参考图4所示,第四晶体管t4的源极与逻辑运算单元40的第二输入端及第四位线80连接。
107.由于第二传输单元30需要根据获取的第三操作数及第四操作数控制第三晶体管t3及第四晶体管t4的导通与断开,因此需要获取第三操作数及第四操作数。第三操作数与第一操作数互为反相,第二操作数与第四操作数互为反相,因此在第一操作数及第二操作数确定后,第三操作数及第四操作数即可确定。
108.此时,当第一操作数及第二操作数均为1时,则第三操作数及第四操作数均为0,sram存储单元10内的锁存器101的第二输出端q2存储的数值为0,对应的输出低电平信号,第二位线60内存储的逻辑值0对应的信号为低电平信号。第三晶体管t3的栅极接收到sram存储单元10内的锁存器101的第二输出端q2输出的低电平信号,第三晶体管t3断开。第四晶体管t4的栅极接收到第二位线60输出的低电平信号,第四晶体管t4断开。此时,逻辑运算单元40的第二输入端获取到第二信号为第四位线80内的信号。在本技术实施例中,当第三晶体管t3的漏极接地时,第四位线80在存内计算电路的运算初期,预充为高电平信号。此时,逻辑运算单元40的第二输入端获取到第二信号为高电平信号,即为获取到逻辑值为1的信号。当第一晶体管t1的漏极接电源时,第四位线80在存内计算电路的运算初期,预充为低电平信号。此时,逻辑运算单元40的第二输入端获取到第二信号为低电平信号,即为获取到逻辑值为0的信号。
109.当第一操作数及第二操作数均为0时,则第三操作数及第四操作数均为1,sram存储单元10内的锁存器101的第二输出端q2存储的数值为1,对应的输出高电平信号,第二位线60内存储的逻辑值1对应的信号为高电平信号。第三晶体管t3的栅极接收到sram存储单元10内的锁存器101的第二输出端q2输出的高电平信号,第三晶体管t3导通。第四晶体管t4的栅极接收到第二位线60输出的高电平信号,第四晶体管t4导通。由于第四晶体管t4的源极连接第四位线80及逻辑运算单元40的第二输入端,第三晶体管t2的漏极接地或者接电源。在第三晶体管t3的漏极接地时,则第四位线80直接接地,其内预充的高电平信号被拉低,此时,逻辑运算单元40的第二输入端获取到第二信号为低电平信号,即为获取到逻辑值为0的信号。在第三晶体管t3的漏极接电源时,则第四位线80直接接电源,其内预充的高电平信号维持高电平信号,此时,逻辑运算单元40的第二输入端获取到第二信号为高电平信号,即为获取到逻辑值为1的信号。
110.当第一操作数为0,第二操作数为1时,则第三操作数为1,第四操作数为0,sram存储单元10内的锁存器101的第二输出端q2存储的数值为1,对应的输出高电平信号,第二位线60内存储的逻辑值0对应的信号为低电平信号。第三晶体管t3的栅极接收到sram存储单元10内的锁存器101的第二输出端q2输出的高电平信号,第三晶体管t3导通。第四晶体管t4的栅极接收到第二位线60输出的低电平信号,第四晶体管t4断开。由于第四晶体管t4断开,因此,第四晶体管t4至第三晶体管t3的通路是断开的,此时,逻辑运算单元40的第二输入端获取到第二信号为第四位线80内的信号。在本技术实施例中,当第三晶体管t3的漏极接地
时,第四位线80在存内计算电路的运算初期,预充为高电平信号。此时,逻辑运算单元40的第二输入端获取到第二信号为高电平信号,即为获取到逻辑值为1的信号。当第一晶体管t1的漏极接电源时,第四位线80在存内计算电路的运算初期,预充为低电平信号。此时,逻辑运算单元40的第二输入端获取到第二信号为低电平信号,即为获取到逻辑值为0的信号。
111.当第一操作数为1,第二操作数为0时,则第三操作数为0,第四操作数为1,sram存储单元10内的锁存器101的第二输出端q2存储的数值为0,对应的输出低电平信号,第二位线60内存储的逻辑值1对应的信号为高电平信号。第三晶体管t3的栅极接收到sram存储单元10内的锁存器101的第二输出端q2输出的低电平信号,第三晶体管t3断开。第四晶体管t4的栅极接收到第二位线60输出的高电平信号,第四晶体管t4导通。由于第三晶体管t3断开,因此,第四晶体管t4至第三晶体管t3的通路是断开的,此时,逻辑运算单元40的第二输入端获取到第二信号为第四位线80内的信号。在本技术实施例中,当第三晶体管t3的漏极接地时,第四位线80在存内计算电路的运算初期,预充为高电平信号。此时,逻辑运算单元40的第二输入端获取到第二信号为高电平信号,即为获取到逻辑值为1的信号。当第一晶体管t1的漏极接电源时,第四位线80在存内计算电路的运算初期,预充为低电平信号。此时,逻辑运算单元40的第二输入端获取到第二信号为低电平信号,即为获取到逻辑值为0的信号。
112.通过上述电路,逻辑运算单元40的第一输入端接收第一信号,第二输入端接收第二信号,逻辑运算单元40可以根据第一信号及第二信号进行逻辑运算,进而输出第一操作数及第二操作数据的积和/或输出第一操作数及第二操作数据的和。
113.进一步地,由于第一传输单元20的第二端可以接地也可以接电源,同样,第二传输单元30的第二端可以接地也可以接电源,逻辑运算单元40的具体实现根据第一传输单元20的第二端,第二传输单元30的第二端连接的信号不同而不同,具体如下。
114.第一传输单元20的第二端接地,第二传输单元30的第二端接地时,逻辑运算单元40包括:第一异或门401,第一与门402,第二与门403,第一或门404及第一非门405,如图5所示。
115.第一传输单元20的第一端与逻辑运算单元40的第一输入端及第三位线70连接包括:第一与门402的第一输入端与第一传输单元20的第一端及第三位线70连接;第一非门405的输入端与第一传输单元20的第一端及第三位线70连接。
116.第二传输单元30的第一端与逻辑运算单元40的第二输入端及第四位线80连接包括:第一与门402的第二输入端与第二传输单元30的第一端及第四位线80连接。
117.第一与门402的输出端与第一异或门401的第一输入端及第二与门403的第一输入端连接,第二与门403的输出端与第一或门404的第一输入端连接,第一非门405的输入端与第三位线70连接,第一非门405的输出端与第一或门404的第二输入端连接。
118.第二与门403的第二输入端及第一异或门401的第二输入端,用于接收低位进位数;
119.第一异或门401的输出端,用于输出第一操作数及第二操作数的和。
120.第一或门404的输出端,用于输出第一操作数及第二操作数的和的高位进位数。
121.第一非门405的输出端,用于输出第一操作及第二操作的积。
122.在本技术实施例中,当对第一操作数及第二操作数进行乘法运算时,通过sram存储单元10的写入功能,将第一操作数写入至sram存储单元10的锁存器101内,此时,锁存器
内包含有第一操作数及第三操作数,其中第一操作数及第三操作数互为反相。将第二操作数传入第一位线50内,同时保持sram存储单元10的字线wl内的信号为低电平信号。将第二操作数存储为第一位线50的电压值,此时第一位线50与第二位线60内的信号互为反相。
123.在存内运算电路中,第一晶体管t1,第二晶体管t2的通断分别根据锁存器101内第一输出端q1及第一位线50的电位来控制。第三晶体管t3,第四晶体管t4的通断分别根据锁存器101内第二输出端q2及第二位线60的电位来控制。第三位线70及第四位线80预充电为高电平信号。逻辑运算电路40中的第一与门401的第一输入端及第一非门405的输入端接收的第一信号由第一晶体管t1,第二晶体管t2的通断来控制。逻辑运算电路40中的第一与门401的第二输入端接收的第二信号由第三晶体管t3,第四晶体管t4的通断来控制。
124.在进行乘法运算时,第一非门405的输入端接收到第一信号后,经过第一非门405的一级反向器得到乘法运算的结果mout。其中,下述表1为乘法运算的一种真值表具体如下。
125.表1
126.第一操作数0011第二操作数0101第一信号1110积(mout)0001
127.例如,当第一操作数为0,第二操作数为0时,通过上述电路可知,第一信号为逻辑值为1的高电平信号,此时,第一非门405的输入端接收到逻辑值为1的高电平信号,其输出端输出为逻辑值为0的低电平信号。即为,第一操作数及第二操作数的乘积为0。
128.或者,当第一操作数为0,第二操作数为1时,通过上述电路可知,第一信号为逻辑值为1的高电平信号,此时,第一非门405的输入端接收到逻辑值为1的高电平信号,其输出端输出为逻辑值为0的低电平信号。即为,第一操作数及第二操作数的乘积为0。
129.或者,当第一操作数为1,第二操作数为0时,通过上述电路可知,第一信号为逻辑值为1的高电平信号,此时,第一非门405的输入端接收到逻辑值为1的高电平信号,其输出端输出为逻辑值为0的低电平信号。即为,第一操作数及第二操作数的乘积为0。
130.或者,当第一操作数为1,第二操作数为1时,通过上述电路可知,第一信号为逻辑值为0的低电平信号,此时,第一非门405的输入端接收到逻辑值为0的低电平信号,其输出端输出为逻辑值为1的高电平信号。即为,第一操作数及第二操作数的乘积为1。
131.在进行加法运算时,第一信号及第二信号传输至逻辑运算单元40的第一与门402的第一输入端及第二输入端,低位进位数的输入信号cin输入至第二与门403的第二输入端及第一异或门401的第二输入端,通过第一异或门401,第一与门402,第二与门403及第一或门404进行逻辑运行,得到第一操作数及第二操作数的和sum及进位输出cout。表2为加法运算的一种真值表具体如下。
132.表2
133.第一操作数00001111第二操作数00110011第一信号11111100
[0134][0135]
例如,当第一操作数为0,第二操作数为0,且低位进位数为0时,通过上述电路可知,第一信号为逻辑值为1的高电平信号,第二信号为逻辑值为0的低电平信号,第一与门402的第一输入端接收到逻辑值为1的高电平信号,第一与门402的第二输入端接收到逻辑值为0的低电平信号,第一与门402的输出端输出逻辑值为0的低电平信号。第一非门405的输入端接收到逻辑值为1的高电平信号,第一非门405的输出端输出逻辑值为0的低电平信号。第一异或门401的第一输入端接收到第一与门402输出端输出的逻辑值为0的低电平信号,第一异或门401的第二输入端接收到的信号为低位进位数的输入信号,其是逻辑值为0的低电平信号,由于第一异或门401的两个输入端接收的信号相同,因此第一异或门401的输出端输出逻辑值为0的低电平信号。即为,第一操作数、第二操作数及低位进位数间的和为0。第二与门403的第一输入端接收到第一与门402输出端输出的逻辑值为0的低电平信号,第二与门403的第二输入端接收到的低位进位数的输入信号,其是逻辑值为0的低电平信号,此时第二与门403的输出端输出逻辑值为0的低电平信号,第一或门404的第一输入端接收到第二与门403输出端输出的逻辑值为0的低电平信号,第一或门404的第二输入端接收到第一非门405输出端输出的逻辑值为0的低电平信号,第一或门404的输出端输出逻辑值为0的低电平信号,即为第一操作数、第二操作数及低位进位数间的和的高位进位数为0。
[0136]
或者,当第一操作数为1,第二操作数为0,且低位进位数为1时,通过上述电路可知,第一信号为逻辑值为1的高电平信号,第二信号为逻辑值为1的高电平信号,第一与门402的第一输入端接收到逻辑值为1的高电平信号,第一与门402的第二输入端接收到逻辑值为1的高电平信号,第一与门402的输出端输出逻辑值为1的高电平信号。第一非门405的输入端接收到逻辑值为1的高电平信号,第一非门405的输出端输出逻辑值为0的低电平信号。第一异或门401的第一输入端接收到第一与门402输出端输出的逻辑值为1的高电平信号,第一异或门401的第二输入端接收到的信号为低位进位数的输入信号,其是逻辑值为1的高电平信号,由于第一异或门401的两个输入端接收的信号相同,因此第一异或门401的输出端输出逻辑值为0的低电平信号。即为,第一操作数、第二操作数及低位进位数间的和为0。第二与门403的第一输入端接收到第一与门402输出端输出的逻辑值为1的高电平信号,第二与门403的第二输入端接收到的低位进位数的输入信号,其是逻辑值为1的高电平信号,此时第二与门403的输出端输出逻辑值为1的高电平信号,第一或门404的第一输入端接收到第二与门403输出端输出的逻辑值为1的高电平信号,第一或门404的第二输入端接收到第一非门405输出端输出的逻辑值为0的低电平信号,第一或门404的输出端输出逻辑值为1的高电平信号,即为第一操作数、第二操作数及低位进位数间的和的高位进位数为1。
[0137]
或者,当第一操作数为1,第二操作数为1,且低位进位数为1时,通过上述电路可知,第一信号为逻辑值为0的低电平信号,第二信号为逻辑值为1的低电平信号,第一与门402的第一输入端接收到逻辑值为0的低电平信号,第一与门402的第二输入端接收到逻辑
值为1的高电平信号,第一与门402的输出端输出逻辑值为0的低电平信号。第一非门405的输入端接收到逻辑值为0的低电平信号,第一非门405的输出端输出逻辑值为1的高电平信号。第一异或门401的第一输入端接收到第一与门402输出端输出的逻辑值为0的低电平信号,第一异或门401的第二输入端接收到的信号为低位进位数的输入信号,其是逻辑值为1的高电平信号,由于第一异或门401的两个输入端接收的信号不同,因此第一异或门401的输出端输出逻辑值为1的高电平信号。即为,第一操作数、第二操作数及低位进位数间的和为1。第二与门403的第一输入端接收到第一与门402输出端输出的逻辑值为0的低电平信号,第二与门403的第二输入端接收到的低位进位数的输入信号,其是逻辑值为1的高电平信号,此时第二与门403的输出端输出逻辑值为0的低电平信号,第一或门404的第一输入端接收到第二与门403输出端输出的逻辑值为0的低电平信号,第一或门404的第二输入端接收到第一非门405输出的逻辑值为1的高电平信号,第一或门404的输出端输出逻辑值为1的高电平信号,即为第一操作数、第二操作数及低位进位数间的和的高位进位数为1。
[0138]
需要说明的是,第一操作数、第二操作数及低位进位数的其他情况可以参数上述示例,本技术不再赘述。
[0139]
在另一种实施例中,在第一传输单元20的第二端接电源,第二传输单元30的第二端接电源时,逻辑单元40包括:第二异或门406,第三与门407,第四与门408,第二或门409,第二非门410,第三非门411及第四非门412,如图6所示。
[0140]
第一传输单元20的第一端与逻辑运算单元40的第一输入端及第三位线70连接包括:第二非门410的输入端与第一传输单元20的第一端及第三位线70连接。
[0141]
第二传输单元30的第一端与逻辑运算单元40的第二输入端及第四位线80连接包括:第三非门411的输入端与第二传输单元30的第一端及第四位线80连接。
[0142]
第二非门410的输出端与第三与门407的第一输入端连接,第三与门407的第二输入端与第三非门411的输出端连接,第三与门407的输出端与第二异或门406的第一输入端及第四与门408的第一输入端连接,第四与门408的输出端与第二或门409的第一输入端连接,第四非门412的输入端与第二非门410的输出端连接,第四非门412的输出端与第二或门409的第二输入端连接。
[0143]
第四与门408的第二输入端及第二异或门406的第二输入端,用于接收低位进位数。
[0144]
第二异或门406的输出端,用于输出第一操作数及第二操作数的和。
[0145]
第二或门409的输出端,用于输出第一操作数及第二操作数的和的高位进位数。
[0146]
第四非门412的输出端,用于输出第一操作及第二操作的积。
[0147]
在本技术实施例中,当对第一操作数及第二操作数进行乘法运算时,通过sram存储单元10的写入功能,将第一操作数写入至sram存储单元10的锁存器101内,此时,锁存器内包含有第一操作数及第三操作数,其中第一操作数及第三操作数互为反相。将第二操作数传入第一位线50内,同时保持sram存储单元10的字线wl内的信号为低电平信号。将第二操作数存储为第一位线50的电压值,此时第一位线50与第二位线60内的信号互为反相。
[0148]
在存内运算电路中,第一晶体管t1,第二晶体管t2的通断分别根据锁存器101内第一输出端q1及第一位线50的电位来控制。第三晶体管t3,第四晶体管t4的通断分别根据锁存器101内第二输出端q2及第二位线60的电位来控制。第三位线70及第四位线80预充电为
低电平信号。逻辑运算电路40中的第二非门410输入端接收的第一信号由第一晶体管t1,第二晶体管t2的通断来控制。逻辑运算电路40中的第三非门411接收的第二信号由第三晶体管t3,第四晶体管t4的通断来控制。
[0149]
在进行乘法运算时,第二非门410的输入端接收到第一信号后,传输至第四非门412,经第四非门412的一级反向器得到乘法运算的结果mout。其中,下述表3为乘法运算的另一种真值表具体如下。
[0150]
表3
[0151]
第一操作数0011第二操作数0101第一信号0001积(mout)0001
[0152]
例如,当第一操作数为0,第二操作数为0时,通过上述电路可知,第一信号为逻辑值为0的低电平信号,此时,第二非门410的输入端接收到逻辑值为0的低电平信号,其输出端输出为逻辑值为1的高电平信号,并传输至第四非门412的输入端。第四非门412的输出端输出逻辑值为0的低电平信号,即为,第一操作数及第二操作数的乘积为0。
[0153]
或者,当第一操作数为0,第二操作数为1时,通过上述电路可知,第一信号为逻辑值为0的低电平信号,此时,第二非门410的输入端接收到逻辑值为0的低电平信号,其输出端输出为逻辑值为1的高电平信号,并传输至第四非门412的输入端。第四非门412的输出端输出逻辑值为0的低电平信号,即为,第一操作数及第二操作数的乘积为0。
[0154]
或者,当第一操作数为1,第二操作数为0时,通过上述电路可知,第一信号为逻辑值为0的低电平信号,此时,第二非门410的输入端接收到逻辑值为0的低电平信号,其输出端输出为逻辑值为1的高电平信号,并传输至第四非门412的输入端。第四非门412的输出端输出逻辑值为0的低电平信号,即为,第一操作数及第二操作数的乘积为0。
[0155]
或者,当第一操作数为1,第二操作数为1时,通过上述电路可知,第一信号为逻辑值为1的高电平信号,此时,第二非门410的输入端接收到逻辑值为1的高电平信号,其输出端输出为逻辑值为0的低电平信号,并传输至第四非门412的输入端。第四非门412的输出端输出逻辑值为1的高电平信号,即为,第一操作数及第二操作数的乘积为1。
[0156]
在进行加法运算时,第一信号及第二信号传输至逻辑运算单元40的第二非门410的输入端及第三非门411的输入端,低位进位数的输入信号cin输入至第四与门408的第二输入端及第二异或门406的第二输入端,通过第二异或门406,第三与门407,第四与门408及第二或门409进行逻辑运行,得到第一操作数及第二操作数的和sum及进位输出cout。表4为加法运算的另一种真值表具体如下。
[0157]
表4
[0158]
[0159][0160]
例如,当第一操作数为0,第二操作数为0,且低位进位数为0时,通过上述电路可知,第一信号为逻辑值为0的低电平信号,第二信号为逻辑值为1的高电平信号,第二非门410的输入端接收到逻辑值为0的低电平信号,第三非门411的输入端接收到逻辑值为1的高电平信号,第四非门412的输入端接收第二非门410输出端输出的逻辑值为1的高电平信号。第三与门407的第一输入端接收到第二非门410输出端输出的逻辑值为1的高电平信号,第三与门407的第二输入端接收到第三非门输出端输出的逻辑值为0的低电平信号,第三与门407的输出端输出逻辑值为0的低电平信号。第四非门412的输入端接收到第二非门410输出端输出的逻辑值为1的高电平信号,第四非门412的输出端输出逻辑值为0的低电平信号。第二异或门406的第一输入端接收到第三与门407的输出端输出的逻辑值为0的低电平信号,第二异或门406的第二输入端接收到的信号为低位进位数的输入信号,其是逻辑值为0的低电平信号,由于第二异或门406的两个输入端接收的信号相同,第二异或门406的输出端输出逻辑值为0的低电平信号。即为,第一操作数、第二操作数及低位进位数间的和为0。第四与门408的第一输入端接收到第三与门407的输出端输出的逻辑值为0的低电平信号,第四与门408的第二输入端接收到的低位进位数的输入信号。其是逻辑值为0的低电平信号,此时第四与门408的输出端输出逻辑值为0的低电平信号,第二或门409的第一输入端接收到第四与门408的输出端输出的逻辑值为0的低电平信号,第二或门409的第二输入端接收到第四非门412输出端输出的逻辑值为0的低电平信号,第二或门409的输出端输出逻辑值为0的低电平信号,即为第一操作数、第二操作数及低位进位数间的和的高位进位数为0。
[0161]
或者,当第一操作数为0,第二操作数为1,且低位进位数为1时,通过上述电路可知,第一信号为逻辑值为0的低电平信号,第二信号为逻辑值为0的低电平信号,第二非门410的输入端接收到逻辑值为0的低电平信号,第三非门411的输入端接收到逻辑值为0的低电平信号,第四非门412的输入端接收第二非门410输出端输出的逻辑值为1的高电平信号。第三与门407的第一输入端接收到第二非门410输出端输出的逻辑值为1的高电平信号,第三与门407的第二输入端接收到第三非门输出端输出的逻辑值为1的高电平信号,第三与门407的输出端输出逻辑值为1的高电平信号。第四非门412的输入端接收到第二非门410输出端输出的逻辑值为1的高电平信号,第四非门412的输出端输出逻辑值为0的低电平信号。第二异或门406的第一输入端接收到第三与门407的输出端输出的逻辑值为1的高电平信号,第二异或门406的第二输入端接收到的信号为低位进位数的输入信号,其是逻辑值为1的高电平信号,由于第二异或门406的两个输入端接收的信号相同,第二异或门406的输出端输出逻辑值为0的低电平信号。即为,第一操作数、第二操作数及低位进位数间的和为0。第四与门408的第一输入端接收到第三与门407的输出端输出的逻辑值为1的高电平信号,第四与门408的第二输入端接收到的低位进位数的输入信号。其是逻辑值为1的高电平信号,此时第四与门408的输出端输出逻辑值为1的高电平信号,第二或门409的第一输入端接收到第四与门408的输出端输出的逻辑值为1的高电平信号,第二或门409的第二输入端接收到
第四非门412输出端输出的逻辑值为0的低电平信号,第二或门409的输出端输出逻辑值为1的高电平信号,即为第一操作数、第二操作数及低位进位数间的和的高位进位数为1。
[0162]
或者,当第一操作数为1,第二操作数为1,且低位进位数为1时,通过上述电路可知,第一信号为逻辑值为1的高电平信号,第二信号为逻辑值为0的低电平信号,第二非门410的输入端接收到逻辑值为1的高电平信号,第三非门411的输入端接收到逻辑值为0的低电平信号,第四非门412的输入端接收第二非门410输出端输出的逻辑值为0的低电平信号。第三与门407的第一输入端接收到第二非门410输出端输出的逻辑值为0的低电平信号,第三与门407的第二输入端接收到第三非门输出端输出的逻辑值为1的高电平信号,第三与门407的输出端输出逻辑值为0的低电平信号。第四非门412的输入端接收到第二非门410输出端输出的逻辑值为0的低电平信号,第四非门412的输出端输出逻辑值为1的高电平信号。第二异或门406的第一输入端接收到第三与门407的输出端输出的逻辑值为0的低电平信号,第二异或门406的第二输入端接收到的信号为低位进位数的输入信号,其是逻辑值为1的高电平信号,由于第二异或门406的两个输入端接收的信号不同,因此第二异或门406的输出端输出逻辑值为1的高电平信号。即为,第一操作数、第二操作数及低位进位数间的和为1。第四与门408的第一输入端接收到第三与门407的输出端输出的逻辑值为0的低电平信号,第四与门408的第二输入端接收到的低位进位数的输入信号。其是逻辑值为1的高电平信号,此时第四与门408的输出端输出逻辑值为0的低电平信号,第二或门409的第一输入端接收到第四与门408的输出端输出的逻辑值为0的低电平信号,第二或门409的第二输入端接收到第四非门412输出端输出的逻辑值为1的高电平信号,第二或门409的输出端输出逻辑值为1的高电平信号,即为第一操作数、第二操作数及低位进位数间的和的高位进位数为1。
[0163]
需要说明的是,第一操作数、第二操作数及低位进位数的其他情况可以参数上述示例,本技术不再赘述。
[0164]
在本技术的一些实施例中,如图7所示,上述存内计算电路还包括:sram选择单元90及第一预充单元100。
[0165]
sram存储单元10的输入输出端与sram选择单元90的第一端连接,sram选择单元90的第二端与所述第一位线50连接。
[0166]
sram选择单元90,用于根据控制端接收的第一控制信号选择sram存储单元10。
[0167]
第一预充单元100的第一端与电源连接,第一预充单元100的第二端与sram选择单元90的第一端连接,用于根据控制端接收的第二控制信号向sram选择单元90的第一端充电。
[0168]
在本技术实施例中,sram选择单元90设置在第一位线50与sram存储单元10的输入输出端之间,从而可以通过控制sram选择单元90的通断,控制是否导通第一位线50与sram存储单元10的输入输出端之间的通路,进而实现选择的存内计算电路的sram存储单元10。在选择该sram存储单元10时,控制sram选择单元90导通,进而导通第一位线50与sram存储单元10的输入输出端之间的通路。在不选择该sram存储单元10时,控制sram选择单元90断开,进而断开第一位线50与sram存储单元10的输入输出端之间的通路。
[0169]
第一预充单元100用于对第一位线50进行预充电。
[0170]
进一步地,如图8所示,上述sram选择单元包括第十三晶体管t13。其中,sram存储单元10的输入输出端与sram选择单元90的第一端连接,所述sram选择单元90的第二端与所
述第一位线50连接包括:
[0171]
第十三晶体管t13的源极与第一位线50连接,用于接收第一位线50的驱动信号。第十三晶体管t13的漏极与sram存储单元10的输入输出端连接。第十三晶体管的栅极用于接收控制信号。
[0172]
第一预充单元100包括第十四晶体管t14。其中,第一预充单元100的第一端与电源连接,第一预充单元100的第二端与sram选择单元90的第一端连接包括:第十四晶体管t14的源极与电源连接,第十四晶体管t14的漏极与第十三晶体管的漏极连接。
[0173]
这样,可以通过控制给第十四晶体管t14的栅极输入的信号来控制第十四晶体管t14的通断,进而控制给第一位线50预充电。
[0174]
进一步地,上述第十四晶体管t14为p型沟道晶体管。当第十四晶体管t14栅极接收到低电平信号时,第十四晶体管t14被导通,此时第十四晶体管t14的源极连接的电源将第十三晶体管t13的漏极上拉至高电平信号,以便sram存储单元10的输入输出端接收到高电平信号。当第十四晶体管t14栅极接收到高电平信号时,第十四晶体管t14被断开,则第十三晶体管t13的漏极处于无源高电平状态,即为,sram存储单元10的输入输出端接收到无源高电平信号。
[0175]
需要说明的是,在附图8中,以第一晶体管t1的漏极及第第三晶体管t3的漏极接地为例进行说明,当第一晶体管t1的漏极及第第三晶体管t3的漏极接电源时,可以参考附图8中第十三晶体管t13及第十四晶体管t14的连接结构,在此不再赘述。
[0176]
在本技术的一些实施例中,如图9所示,上述存内计算电路还包括:逻辑选择单元110及第二预充单元120。
[0177]
其中,逻辑运算单元40的第一输入端与第三位线70连接包括:
[0178]
逻辑运算单元40的第一输入端与逻辑选择单元110的第一端连接,逻辑选择单元110的第二端与第三位线70连接;
[0179]
第二预充单元120的第一端与电源连接,第二预充单元120的第二端与逻辑选择单元110的第一端连接,用于根据控制端接收的第三控制信号向逻辑选择单元110的第一端充电;
[0180]
逻辑选择单元110,用于根据控制端接收的第四控制信号控制逻辑运算单元40的第一输入端接收的第一信号。
[0181]
在本技术实施例中,逻辑选择单元110设置在逻辑运算单元40与第三位线70之间,从而可以通过控制逻辑选择单元110的通断,控制是否导通第三位线70与逻辑运算单元40的第一输入端之间的通路,进而实现选择的存内计算电路的逻辑运算单元40。在选择该逻辑运算单元40时,控制逻辑选择单元110导通,进而导通第三位线70与逻辑运算单元40的第一输入端之间的通路。在不选择该逻辑运算单元40时,控制逻辑选择单元110断开,进而断开第三位线70与逻辑运算单元40的第一输入端之间的通路。
[0182]
第二预充单元120用于为第三位线70预充电。
[0183]
进一步地,如图10所示,逻辑选择单元110包括:第五晶体管t5,第二预充单元120包括第六晶体管t6。
[0184]
逻辑运算单元40的第一输入端与逻辑选择单元110的第一端连接,逻辑选择单元110的第二端与第三位线70连接包括:第五晶体管t5的栅极用于接收选择控制信号,第五晶
体管t5的源极连接第三位线70,用于接收驱动信号,第五晶体管t5的漏极连接逻辑运算单元40的第一输入端。
[0185]
第二预充单元120的第一端与电源连接,第二预充单元120的第二端与逻辑选择单元110的第一端连接包括:第六晶体管t6的栅极用于接收预充控制信号,第六晶体管t6的源极连接电源,第六晶体管t6的漏极连接第五晶体管t5的源极。
[0186]
这样,在第五晶体管t5控制的逻辑运算单元40被选中时,可以向第五晶体管t5的栅极发送高电平的选择控制信号,第五晶体管t5被导通,则第三位线70与逻辑运算单元40第一输入端间的通路被导通,从而可以进行相应的逻辑运算。当第五晶体管t5控制的逻辑运算单元40未被选中时,可以向第五晶体管t5的栅极发送低电平的选择控制信号,第五晶体管t5被关断,则第三位线70与逻辑运算单元40第一输入端间的通路被断开,无法进行逻辑运算。
[0187]
在需要进行预充电时,将第六晶体管t6导通,第五晶体管t5的源极接收到高电平信号,传输至逻辑运算单元40第一输入端。
[0188]
进一步地,上述第六晶体管t6为p型沟道晶体管。当第六晶体管t6栅极接收到低电平信号时,第六晶体管t6被导通,此时第六晶体管t6的源极连接的电源将第五晶体管t5的漏极上拉至高电平信号,以便逻辑运算单元40第一输入端接收到高电平信号。当第六晶体管t6栅极接收到高电平信号时,第六晶体管t6被断开,则第六晶体管t6的漏极处于无源高电平状态,即为,逻辑运算单元40第一输入端接收到无源高电平信号。
[0189]
需要说明的是,在附图10中,以第一晶体管t1的漏极及第第三晶体管t3的漏极接地为例进行说明,当第一晶体管t1的漏极及第第三晶体管t3的漏极接电源时,可以参考附图10中第五晶体管t5及第六晶体管t6的连接结构,在此不再赘述。
[0190]
通过本技术实施例的基于sram的存内计算电路,仅通过使用单个sram的存储单元及位线实现单比特乘法运算及加法运算,无需使用多个sram的存储单元及字线实现乘法运算,降低了实现的复杂度,降低了处理器的功耗。并且本技术是基于单比特存储单元实现乘法逻辑运算,降低了阵列面积,降低了存内电路的整体面积消耗以及能耗,提高了效率。
[0191]
本技术实施例还提供了一种存内装置,包含至少一个上述实施例所述的基于sram的存内计算电路。
[0192]
进一步地,在包含有至少两个基于sram的存内计算电路时,相邻低位存内计算电路的高位进位数的输出端与相邻高位存内计算电路的低位进位数的输入端连接,相邻低位存内计算电路的乘积输出端与相邻高位存内计算电路的操作数的输入端连接,如图11所示。
[0193]
存内装置中包含有至少两个基于sram的存内计算电路时,可以实现多比特数的乘法及加法运行。下面以两组数据的乘法为例进行说明。
[0194]
示例性的,在第一存内计算电路中计算第一组数据的乘法运算,在第二存内计算电路中计算第二组数据的乘法运算。在进行第一组数据的乘法运算时,先通过控制第一存内计算电路的sram存储选择单元导通,将第一位线与sram存储单元的输入输出端间的通路导通,将第一组数据中的第一操作数存储至sram存储单元,将第二操作数存储至第一位线中。通过导通第一存内计算电路的逻辑选择单元,将第三位线与逻辑运算单元的第一输入端间的通路导通,第一传输单元获取第一操作数据及第二操作数,第二传输单元获取第三
操作数及第四操作数,第一传输单元根据获取的第一操作数及第二操作数据,控制第三位线输出的第一信号,第二传输单元根据获取的第三操作数及第四操作数控制第四位线输出的第二信号,逻辑运算单元获取第一信号及第二信号,并根据获取的第一信号及第二信号进行逻辑运行,得到第一组数据的乘积mout0。同理,在进行第二组数据的乘法运算时,可以通过第二存内计算电路获取到第二组数据的乘积mout1。其中,通过第二存内计算电路获取到第二组数据的乘积mout1具体可以参数通过第一存内计算电路获取到第一组数据的乘积mout0,在此不再赘述。
[0195]
将第一组数据的乘积mout0及第二组数据的乘积mout1分别作为第三存内计算电路的第一操作数及第二操作数传输至第三存内计算电路,通过第三存内计算电路的逻辑运算单元进行全加运算,得到第一组数据的乘积mout0及第二组数据的乘积mout1间的和,进而得到第一组数据及第二组数据的乘积。
[0196]
在本技术实施例中,进行多组乘积的全加运算时,需通过将每两组部分和通过重写回存内计算电路,进行再次求和,直至得到最终的总和。对于2*n个乘法运算而言,需要重写回不小于log
2 n的整数次,才能求的多组乘积的总和。
[0197]
在本技术实施例中,多比特运算的时候可以通过将多比特输入的乘加运算拆分为多个单比特输入的乘加运算来实现。
[0198]
进一步地,本技术实施例还提供了一种电子设备,包括上述实施例所述的存内装置。
[0199]
本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
[0200]
本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于装置实施例和终端实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1