一种基于MOS晶体管的基本运算电路及其扩展电路的制作方法

文档序号:18738462发布日期:2019-09-21 01:29阅读:293来源:国知局
一种基于MOS晶体管的基本运算电路及其扩展电路的制作方法
本发明涉及
技术领域
,特别涉及一种基于MOS晶体管的基本运算电路及其扩展电路。
背景技术
:乘加逻辑在很多领域中有较多的应用,是许多算法在实现过程中的主要逻辑运算。比如通信中的滤波运算,以及深度学习算法中的卷积运算都是以乘加运算为基本运算的。但是采用当前传统的CMOS数字电路实现方式,用标准单元库设计的乘加电路一般都需要较大的面积,因此可以集成的乘加电路并行规模比较受限,这也直接影响了一些需要大量并行乘加运算的应用的实现。技术实现要素:本发明提供一种基于MOS晶体管的基本运算电路及其扩展电路,解决现有技术中CMOS数字电路占用面积达,影响扩展应用规模的技术问题。为解决上述技术问题,本发明提供了一种基于MOS晶体管的基本运算电路,包括:MOS晶体管;所述MOS晶体管的漏极连接电源端VDD,所述MOS晶体管的源极作为电路输出端;所述MOS晶体管的栅极作为第一输入端,所述MOS晶体管的衬底作为第二输入端;其中,所述第一输入端采用二值输入a:VDD/VG0;第二输入端采用二值输入b:VX1/VX2;所述VG0的获取方法为:在所述MOS晶体管的衬底加载相对大值电压VX1,在所述MOS晶体管的栅极加载从VDD到VSS的扫描电压,获取所述MOS晶体管的第一导通电流图;在所述MOS晶体管的衬底加载相对小值电压VX2,在所述MOS晶体管的栅极加载从VDD到VSS的扫描电压,获取所述MOS晶体管的第二导通电流图;比较所述第一导通电流图和第二导通电流图,获取导通电流差值最大时的栅极电压,即为VG0。一种bit乘加运算电路,包括:多个所述的基本运算电路;所述多个基本运算电路的漏极相连,多个所述多个基本运算电路的源极与电路输出端相连。进一步地,所述bit乘加运算电路还包括:模数转换电路ADC;所述模数转换电路与所述电路输出端相连;其中,所述bit乘加运算电路的运算关系为:一种向量乘加运算电路,包括:所述的bit乘加运算电路、第一移位器以及第一加法器;所述bit乘加运算电路的输出端与所述第一移位器相连,形成乘加运算单元;多个所述乘加运算单元的输出端分别与所述第一加法器相连,形成初级向量乘加运算电路;其中,所述初级向量乘加运算电路的运算关系为:进一步地,包括:所述初级向量乘加运算电路、第二移位器以及第二加法器;所述初级向量乘加运算电路的输出端与所述第二移位器相连,形成初级向量乘加运算单元;多个所述初级向量乘加运算单元的输出端与所述加法器相连,形成并行向量乘加运算电路,实现输入个数和输入位宽可调的向量乘加运算结构。进一步地,包括:所述初级向量乘加运算电路、第三移位器、第三加法器、寄存器、状态机以及数据输入模块;所述初级向量乘加运算电路的输出端与所述第三移位器相连;所述第三移位器的输出端以及所述寄存器的输出端分别与所述第三加法器的输入端相连;所述第三加法器的输出端与所述寄存器的输出端相连;所述状态机分别与所述第三移位器、所述第三加法器以及所述第三寄存器相连,实现串行移位和迭代运算结构;所述数据输入模块分别与所述初级向量乘加运算电路的输入端以及所述状态机相连。一种二进制乘法电路,包括:所述的bit乘加运算电路、第一模数转换器、第四移位器以及第四加法器;所述bit乘加运算电路的漏极连接使能信号EN,所述bit乘加运算电路的第一输入端连接A操作数,第二输入端连接B操作数,形成部分和产生模块PAdd;所述部分和产生模块的输出端与所述第一模数转换器相连,形成累加电流数字转换单元;所述累加电流数字转换单元的输出端与所述第四移位器相连,形成移位操作单元;多个所述移位操作单元的输出端分别与所述第四加法器相连,形成二进制数据A[n-1:0]·B[m-1:0]的乘法电路;其中,A[n-1]所接的mos管的宽长比W/L是A[n-2]所接的mos管的宽长比W/L的2倍。一种矩阵乘法电路,包括:所述的部分和产生模块PAdd、第二模数转换器、第五移位器以及第五加法器;多个所述部分和产生模块PAdd分别与所述第二模数转换模块相连,所述第二模数转换模块的输出端与所述第五移位器相连,形成矩阵运算单元;多个所述矩阵运算单元分别与所述第五加法器相连,形成矩阵单点运算的VVMUL模块。进一步地,包括:VVMUL模块、第一操作数存储模块MEM_VA、第二操作数存储模块MEM_VB、结果存储模块MEM_VM以及控制逻辑模块;所述VVMUL模块的输入端分别与所述第一操作数存储模块和第二操作数存储模块相连,所述VVMUL模块的输出端与所述结果存储模块;所述控制逻辑模块分别与所述VVMUL模块、所述第一操作数存储模块、所述第二操作数存储模块以及所述结果存储模块相连,产生操作数存储模块地址、读使能信号、EN使能信号以及结果存储器的对应地址和使能信号。进一步地,所述矩阵乘法电路包括多个VVMUL模块;所述多个VVMUL模块并行连接,分别与所述第一操作数存储模块、第二操作数存储模块、所述结果存储模块以及所述控制逻辑模块相连,形成并行矩阵乘法电路。本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:本申请实施例中提供的基于MOS晶体管的基本运算电路,通过利用基于MOS管衬底加载电压实现单管阈值可调基本运算电路,并以此来扩展搭建乘加电路,乘加电路的规模较大时,我们只需要增加单管基本运算阵列的规模,并不会像传统乘加电路那样需要线性增长电路规模,因此在面积和集成度上会有较大的优势。从而能够在扩展架构上,在不同电路层次上来进行并行度和运算速度的权衡设计,在同等面积下具备更好的运算速度和并行度,所以对各种实际应用具有较好的适用性。附图说明图1为本发明实施例提供的基于MOS晶体管的基本运算电路的结构示意图;图2为本发明实施例提供的VG0的确定电路的结构示意图;、图3为本发明实施例提供的基于图2的导通电流扫描图;图4为本发明实施例提供的bit乘加电路的结构示意图;图5为图4的数字化转化结构示意图;图6为本发明实施例提供的初级向量乘加运算单元的结构示意图;图7为本发明实施例提供的并行向量乘加运算电路的结构示意图;图8为本发明实施例提供的串行向量乘加运算电路的结构示意图;图9为本发明实施例提供的部分和产生模块PAdd的结构示意图;图10为本发明实施例提供的部分和产生模块PAdd的数字化结构示意图;图11为本发明实施例提供的二进制乘法电路结构示意图;图12为本发明实施例提供的VVMUL模块的结构示意图;图13为本发明实施例提供的矩阵运算电路的结构示意图;图14为本发明实施例提供的矩阵运算并行电路的结构示意图。具体实施方式本申请实施例通过提供一种基于MOS晶体管的基本运算电路及其扩展电路,解决现有技术中CMOS数字电路占用面积达,影响扩展应用规模的技术问题。为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细说明,应当理解本发明实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互组合。实施例一参见图1,一种基于MOS晶体管的基本运算电路,包括:MOS晶体管;所述MOS晶体管的漏极连接电源端VDD,所述MOS晶体管的源极作为电路输出端;所述MOS晶体管的栅极作为第一输入端,所述MOS晶体管的衬底作为第二输入端;其中,所述第一输入端采用二值输入a:VDD/VG0;第二输入端采用二值输入b:VX1/VX2。值得说明的是:MOS管作为一种4端器件,通过加在栅端的电压决定了源端与漏端之间有多少电流流过。具体来说,当栅上加的电压达到阈值电压VT时,MOS管道通使得电流流过。而体,B端,也即衬底是晶体管的第四个端口,它可以起到调节器件特性和参数的作用。在本申请中,充分利用了晶体管B端对晶体管阈值电压的影响来实现电路功能。参见图2,为了确定VG0,基于PMOS管设计了具体的测试电路。尺寸相同的两个PMOS管PM1管和PM2管,PM1管的B端接VX1而PM2管的B端接VX2。PM1管和PM2管的D端接VDD而S端接VSS,PM1管和PM2管的栅极都接VG。所述VG0的获取方法为:在所述MOS晶体管的衬底加载相对大值电压VX1,在所述MOS晶体管的栅极加载从VDD到VSS的扫描电压,获取所述MOS晶体管的第一导通电流图;在所述MOS晶体管的衬底加载相对小值电压VX2,在所述MOS晶体管的栅极加载从VDD到VSS的扫描电压,获取所述MOS晶体管的第二导通电流图;比较所述第一导通电流图和第二导通电流图,获取导通电流差值最大时的栅极电压,即为VG0。图3,对VG进行电压扫描从VDD一直到VSS,则PM1管的导通电流为中间曲线所示,PM2管的导通电流如右上曲线所示。因此可以选得合适的区间,在该区间内PM1管的导通电流远大于PM2管,近似可以认为PM1管导通而PM2管截止,我们选取VG0电压使得PM1管电流值与PM2管电流值的比重最大。PMOS管D端接VDD,S端接VSS。PMOS管的栅极作为输入a,PMOS管的B端作为输入b。a为二值输入VDD/VG0。b为二值输入VX1/VX2。对应b输入,只需要在输入之前将VDD映射为VX1,0映射为VX2。则可以实现如下的逻辑运算,PMOS管实现运算真值表:abb映像IdsVDDVX1VDD0VDDVX200VG0VX1VDDIVG0VX200也即,利用单MOS管实现了一个二输入的逻辑运算,控制通断,并以电流的形式作为输出。类似的,也可以采用NMOS管实现二输入的逻辑运算,如下NMOS管实现运算真值表:ab映像Ids0VDD0000VG0VDD0VG00I实现的逻辑表达式如下表:本实施例后续所述电路均采用PMOS管进行电路实现与扩展,采用PMOS管实现只是一种实施方式,本专利阐述的扩展电路并不只限于PMOS管构成,对于NMOS管实施方式亦可适用。下面将就上述基本运算电路展开多种具体的扩展应用方案。实施例二参见图4,一种bit乘加运算电路,包括:多个所述的基本运算电路;所述多个基本运算电路的漏极相连,多个所述多个基本运算电路的源极与电路输出端相连。基于单MOS管二值逻辑运算电路得到的电流输出,可以进行扩展得到单bit乘加运算电路。每个MOS管实现基本运算电路中所述的二值逻辑运算并以电流的形式输出,多个MOS管的S端相连进行电流求和,因此可以实现如下逻辑关系:我们对输入an进行求反变换的预处理,也即则上式就化成:o=a0×b0+a1×b1+a2×b2+a3×b3后续说明中,为了便于描述,均对an在输入前进行取反变换预处理,不再赘述。参见图5,进一步地,基于以上论述的扩展功能电路,我们可以利用模数转换电路ADC将模拟电流值进行数字化处理,即可完成单bit乘加的数字运算实现。即,所述bit乘加运算电路还包括:模数转换电路ADC;所述模数转换电路与所述电路输出端相连。并具体以N=8为例即并联8个MOS管进行运算,实际上该电路可以并连较多的MOS管,完成大规模的单bit乘加数字运算,比如并联128个MOS管甚至1024个MOS管。本专利论述的方法适用于N取各种整数值的情况。其中,所述bit乘加运算电路的逻辑运算关系为:an和bn都为单bit数。实施例三参见图6,本实施例还一种向量乘加运算电路,包括:所述的bit乘加运算电路、第一移位器以及第一加法器。所述bit乘加运算电路的输出端与所述第一移位器相连,形成乘加运算单元;多个所述乘加运算单元的输出端分别与所述第一加法器相连,形成初级向量乘加运算电路。其中,所述初级向量乘加运算电路的运算关系为:具体来说,初级向量乘加运算电路结构完成如下运算:图6中左边MOS管阵列第一行各MOS的栅极分别输入a0[0],a1[0],a2[0],...aN[0],与从各MOS管的B端输入的b0[0],b1[0],b2[0],..b.N[0]进行bit乘加运算,得到类似的第二行各MOS管栅极输入a0[1],a1[1],a2[1],...aN[1],仍然与b0[0],b1[0],b2[0],...bN[0]进行bit乘加运算,得到该行an[1]比an[0]在二进制数上高一位,因此最终的求和s01需要乘2;依次类推求得最终图中×2n运算只需进行左移n位即可实现。基于上述的初级向量乘加运算电路进行了并行扩展和串行扩展;下面具体说明。参见图7,向量乘加运算电路包括:所述初级向量乘加运算电路、第二移位器以及第二加法器。所述初级向量乘加运算电路的输出端与所述第二移位器相连,形成初级向量乘加运算单元;多个所述初级向量乘加运算单元的输出端与所述加法器相连,形成并行向量乘加运算电路,实现输入个数和输入位宽可调的向量乘加运算结构。采用上述初级向量乘加运算电路,可以实现只需要将初级向量乘加电路中的输入bn[0]替换成bn[l]即可完成Sl的运算。利用式来求取最终的S。Sl与S的关系如下式由于bn[1]比bn[0]在二进制数上高一位,因此需要对得到的s1进行乘2运算,依次类推对Sl进行×2l的运算,最终对各个Sl进行×2l(移位)后求和即可得到S。其中,每个子Sl的运算都是利用初级向量乘加运算电路得到,各个Sl的运算可以并行实现。实施例四下面基于上述的初级向量乘加运算电路进行了串行扩展。参见图8,具体包括:所述初级向量乘加运算电路、第三移位器、第三加法器、寄存器、状态机以及数据输入模块。所述初级向量乘加运算电路的输出端与所述第三移位器相连;所述第三移位器的输出端以及所述寄存器的输出端分别与所述第三加法器的输入端相连;所述第三加法器的输出端与所述寄存器的输出端相连;所述状态机分别与所述第三移位器、所述第三加法器以及所述第三寄存器相连,实现串行移位和迭代运算结构;所述数据输入模块分别与所述初级向量乘加运算电路的输入端以及所述状态机相连。利用初级向量乘加电路,还可以构造串行扩展电路来完成求解S的向量乘加运算,具体步骤如下:步骤1:初始状态下控制逻辑对寄存器R进行清零,之后控制输入数据输入an[t:0]和bn[0],利用初级向量乘加电路进行运算得到S0,控制逻辑控制对S0移位0,然后与当前R(为清零值)进行相加,并存入R中;步骤2:控制逻辑控制输入an[t:0]和bn[1],利用初级向量乘加电路进行运算得到S1,控制逻辑控制对S1移位1,然后与当前R(S0)进行相加,得到结果(stmp=s1×2+s0)存入R中;步骤3:类似步骤2进行迭代运算,直到完成所有Sl的运算,这时R中存储的值即为最终所求S值。类似的我们可以采用多个所述初级向量乘加电路来提高并行度,还可以实现部分并行的扩展,只需利用串行电路进行改进,设定初级向量乘加电路的并行个数,同时进行多路Sl的运算和移位相加处理,最后再将各路电路得到的部分和相加即可完成最终S的求解运算。实施例五本实施例还提出了一种二进制乘法电路,包括:所述的bit乘加运算电路、第一模数转换器、第四移位器以及第四加法器。参见图9,所述bit乘加运算电路的漏极连接使能信号EN,所述bit乘加运算电路的第一输入端连接A操作数,第二输入端连接B操作数,形成部分和产生模块PAdd;参见图10,所述部分和产生模块的输出端与所述第一模数转换器相连,形成累加电流数字转换单元;参见图11,所述累加电流数字转换单元的输出端与所述第四移位器相连,形成移位操作单元;多个所述移位操作单元的输出端分别与所述第四加法器相连,形成二进制数据A[n-1:0]*B[m-1:0]的乘法电路。下面具体说明。利用所述bit乘加运算电路可以构造出任意长度两个数据的相乘运算,具体实现方法如下:设两个数据长度分别为nbit和mbit,二进制数据A[n-1:0]*B[m-1:0]的乘法算式可以表达为如下公式A[n-1:0]*B[m-1:0]=A[n-1:0]*B[0]+21*A[n-1:0]*B[1]+22*A[n-1:0]*B[2]+…+2m-2*A[n-1:0]*B[m-2]+2m-1*A[n-1:0]*B[m-1]要完成整个乘法运算可以分为2步:第一步,计算A[n-1:0]和B中每一比特相乘后的部分积;第二步,将所有的部分积经过移位后累加即可得到最终结果。参见图9,具体来说,部分积的产生可以利用所述的bit乘加运算电路实现,以pmos管为例,并不只限于pmos管构成网络;对于nmos管实施方式亦可适用。网络由n个mos管构成,并且A[n-1]所接的mos管的宽长比W/L是A[n-2]的2倍,以此类推,以实现不同二进制权重的开关电流控制,每个mos管的栅极接nbit的A操作数,调节阈值用的衬底统一接同一个比特B,pmos管的源极统一接EN信号用于控制该行部分和运算是否使能,当每个pmos管的栅电压和衬底电压都接高电平时,pmos管漏极输出最大电流,最后每个pmos管漏极电流累加后输出至同一个Iout,得到模拟信号累加电流。值得说明的是,实施例一~四的运算电路采用的乘加电路的输入在二进制权重上是相同的,因此对应的mos管的宽长比W/L是相同的,因此开关导通电流也是相同的。相应的,本实施例采用的bit乘加电路由于输入是A[n-1:0],即其对应的二进制权重不同,因此对应的mos管的宽长比W/L也是不同的;一般需要利用W/L来控制开关导通电流与二进制权重对应。参见图10,部分和产生模块PAdd可以直接用于产生n比特向量和1bit标量信号的乘累加操作,部分和产生模块PAdd已经输出了模拟累加电流值,为了得到相应的数字结果,只需要在输出端接入一个模数转换器即可。参见图11,电路用来完成n*m比特乘法运算部分积的移位累加功能。通过m个结构相同的部分积产生模块可以产生m个部分积的模拟电流信号,该模拟信号需要先经过模数转换模块ADC转化为数字信号,然后通过不同位数的移位操作后进行m个数据的累加,最终得出向量A[n-1:0]*B[m-1:0]的相乘结果。实施例六参见图12,本实施例还提出一种矩阵乘法电路,包括:所述的部分和产生模块PAdd、第二模数转换器、第五移位器以及第五加法器。多个所述部分和产生模块PAdd分别与所述第二模数转换模块相连,所述第二模数转换模块的输出端与所述第五移位器相连,形成矩阵运算单元;多个所述矩阵运算单元分别与所述第五加法器相连,形成矩阵单点运算的VVMUL模块。具体来说,设所要完成的矩阵乘法运算如下:VA为i行j列,每个数据位nbit,VB为j+1行i+1列,每个数据为mbit,则结果矩阵VM为i+1行i+1列,其中每一个元素需要完成j+1个n*m数据的累加操作,其中结果矩阵VM中参见图12,利用我们的新型bit乘加电路可以简单实现上述公式中一个乘法结果元素的乘累加操作,以求解VM(0,0)为例,形成VVMUL模块。PAdd模块依旧为图1的部分和产生模块,每个VA*VB乘法均为一个n*m乘法,因此对应于m个行的部分积,不同VA*VB其结果可以先部分积累加,再统一移位后求和,这样只需要扩展PAdd模块的网络规模即可,对于公式3中j+1个n*m数据的累加,相当于将Padd的规模扩展为j+1*m个即可,因为VB为m行,因此所有乘法都会产生m个部分积,每一行PAdd模块扩展为j+1个,其输出电流直接累加。再通过ADC转换为数字信号后进行部分积移位累加最终得到VM(0,0)。实际上,上述公式既可以作为求矩阵乘法运算中一个点结果的公式,同时该公式也可以表示矩阵操作中一类通用类型操作,只是用于乘累加的向量点根据操作不同顺序会有所不同。比如向量的卷积运算,卷积矩阵结果中的每个值也是类似公式的乘累加结果形成。又比如两个向量的点积运算,也可以归纳到公式的结构类型,因此,VVMUL模块可以适用任意2个向量数据的乘累加操作。VVMUL模块给出的是矩阵运算中一个点的运算结构,也可以认为是2个单向量乘累加的实现电路,对于矩阵操作,需要依次把矩阵中所有点求解出来,因此需要一个操作控制模块对求解过程加以控制。参见图13,基于VVMUL模块形成一个完整的矩阵运算电路,包括:VVMUL模块、第一操作数存储模块MEM_VA、第二操作数存储模块MEM_VB、结果存储模块MEM_VM以及控制逻辑模块。所述VVMUL模块的输入端分别与所述第一操作数存储模块和第二操作数存储模块相连,所述VVMUL模块的输出端与所述结果存储模块;所述控制逻辑模块分别与所述VVMUL模块、所述第一操作数存储模块、所述第二操作数存储模块以及所述结果存储模块相连,产生操作数存储模块地址、读使能信号、EN使能信号以及结果存储器的对应地址和使能信号。实现完整矩阵运算的模块结构,可以完成一组向量VA和VB的乘累加运算,MEM_VA和MEM_VB为操作数存储模块,用来存放向量操作数,MEM_VM为结果存储模块,用于存放最后运算结果。Ctrl控制逻辑用来根据矩阵的操作类型产生相应的操作数存储模块的地址、读使能使得在每一轮运算中可以从MEM_VA,MEM_VB中给出合适的向量数据送给VVMUL,同时可以根据向量数据的数值产生相应行的EN使能信号送给VVMUL以及产生结果存储器的对应地址和使能信号,VVMUL运算结束后将结果数据写入Ctrl给定的MEM_VM相应地址中,一次操作结束,再开始下一轮同样类型的操作,直到整个矩阵运算完成。参见图14,为了进一步加速矩阵运算,亦可以采用并行化展开的方式,将向量乘累加操进行并排展开,读写存储模块的位宽加倍即可实现速率的提升。所述矩阵乘法电路包括多个VVMUL模块;所述多个VVMUL模块并行连接,分别与所述第一操作数存储模块、第二操作数存储模块、所述结果存储模块以及所述控制逻辑模块相连,形成并行矩阵乘法电路。本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:本申请实施例中提供的基于MOS晶体管的基本运算电路,通过利用基于MOS管衬底加载电压实现单管阈值可调基本运算电路,并以此来扩展搭建乘加电路,乘加电路的规模较大时,我们只需要增加单管基本运算阵列的规模,并不会像传统乘加电路那样需要线性增长电路规模,因此在面积和集成度上会有较大的优势。从而能够在扩展架构上,在不同电路层次上来进行并行度和运算速度的权衡设计,在同等面积下具备更好的运算速度和并行度,所以对各种实际应用具有较好的适用性。最后所应说明的是,以上具体实施方式仅用以说明本发明的技术方案而非限制,尽管参照实例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1