[go: up one dir, main page]

CN109816105A - 一种可配置的神经网络激活函数实现装置 - Google Patents

一种可配置的神经网络激活函数实现装置 Download PDF

Info

Publication number
CN109816105A
CN109816105A CN201910041332.7A CN201910041332A CN109816105A CN 109816105 A CN109816105 A CN 109816105A CN 201910041332 A CN201910041332 A CN 201910041332A CN 109816105 A CN109816105 A CN 109816105A
Authority
CN
China
Prior art keywords
input
flip
output
gate
input terminal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201910041332.7A
Other languages
English (en)
Other versions
CN109816105B (zh
Inventor
车德亮
李娜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Microelectronic Technology Institute
Mxtronics Corp
Original Assignee
Beijing Microelectronic Technology Institute
Mxtronics Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Microelectronic Technology Institute, Mxtronics Corp filed Critical Beijing Microelectronic Technology Institute
Priority to CN201910041332.7A priority Critical patent/CN109816105B/zh
Publication of CN109816105A publication Critical patent/CN109816105A/zh
Application granted granted Critical
Publication of CN109816105B publication Critical patent/CN109816105B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Logic Circuits (AREA)

Abstract

本发明公开了一种可配置的神经网络激活函数实现装置,包括控制器、符号判断模块、范围探测模块、参数寄存器、浮点乘法器、浮点加法器、相反数运算器、地址产生器、查找表、第一选通锁存器和第二选通锁存器。通过配置控制信号M实现sigmoid函数与tanh函数的运算,装置实现结构简单,采用同步时钟设计,便于时序检查与验证,面积小,功耗低,便于在芯片上实现,增强了嵌入式应用的实用性;利用本发明计算神经网络激活函数时,处理流程简单,易于控制,提高了神经网络激活函数计算的效率;该装置可根据tanh计算精度需要,方便地扩展地址产生器模块和查找表模块来满足函数精度变换的需求。因此本发明是嵌入式神经网络处理器激活函数实现的理想结构。

Description

一种可配置的神经网络激活函数实现装置
技术领域
本发明涉及一种可配置的神经网络激活函数实现装置,属于计算机技术领域。
背景技术
近年来人工智能技术应用发展迅猛。特别是以机器学习为基础的各种类型的神经网络结构在数据挖掘、分类、图像语音识别等应用领域取得了长足的发展。将特定智能应用训练完成的神经网络硬件化,以提高嵌入式应用系统智能处理能力的需求呈暴发式增长的态势。激活函数是神经网络里神经元功能的核心。如何高效、简洁的实现激活函数已成为神经网络嵌入式应用的关键技术问题之一。激活函数属于超越函数,其具体硬件的实现方式是国外封锁的核心技术。
发明内容
本发明的技术解决问题是:提供了一种可配置的神经网络激活函数实现装置,实现结构简单、面积小,功耗低,便于在芯片上实现,利用本发明计算神经网络激活函数时,处理流程简单,易于控制,提高了神经网络激活函数计算的效率,增强了嵌入式应用的实用性。
本发明的技术解决方案是:
一种可配置的神经网络激活函数实现装置,包括控制器、符号判断模块、范围探测模块、参数寄存器、浮点乘法器、浮点加法器、相反数运算器、地址产生器、查找表、第一选通锁存器和第二选通锁存器;
控制器:根据配置控制信号M的值产生不同激活函数整个运算数据路径中需要的锁存控制信号以及运算完成信号done;
符号判断模块:接收输入的运算数据,判断该数据的正负,如果为正则将该数据输出给范围探测模块、地址产生器和浮点乘法器;否则将该数据的绝对值输出给范围探测模块、地址产生器和浮点乘法器,同时将该数据的符号输出给地址产生器和第一选通锁存器;
范围探测模块:判断接收的数据值处在哪个区间,向参数寄存器发送范围区间标识信号;
参数寄存器:存储用来逼近sigmoid激活函数的一次函数的参数,即一次项系数和偏移量;根据范围区间标识信号选择逼近sigmoid激活函数的一次函数,向浮点乘法器输出该一次函数的一次项系数,向浮点加法器输出该一次函数的偏移量;
浮点乘法器:从参数寄存器模块中提取范围探测模块输出的一次函数的一次项系数,并计算该一次函数的一次项系数与数据值的乘积,输出给浮点加法器;
浮点加法器:从参数寄存器模块中提取范围探测模块输出的一次函数的偏移量,计算来自浮点乘法器的乘积与偏移量之和,并将得到的结果输出给相反运算器和第一选通锁存器;
相反运算器:计算浮点加法器输出结果的相反数,输出给第一选通锁存器;
第一选通锁存器:当输入运算数据的符号为正时,将来自浮点加法器的计算结果选通输出给第二选通锁存器,当输入运算数据的符号为负时,将来自相反运算器的计算结果选通输出给第二选通锁存器;
地址产生器:根据符号判断模块输出的数据值所处的区间,生成17位地址值,作为查找表索引;
查找表:存放每个数据区间所对应的tanh激活函数值,根据地址产生器中的查找表索引查找输入运算数据对应的tanh激活函数值,输出给第二选通锁存器;
第二选通锁存器:根据配置控制信号M的值,选通输出并锁存sigmoid激活函数的运算结果或是tanh激活函数的运算结果。
M=1表示sigmoid激活函数运算,控制器产生sigmoid激活函数整个运算数据路径中需要的8个锁存控制信号mcycle[7:1];M=0表示tanh激活函数运算,控制器产生tanh激活函数整个运算数据路径中需要的4个锁存控制信号nmcycle[3:1]。
所述控制器包括D触发器dff_0、D触发器dff_1、D触发器dff_2、D触发器dff_3、D触发器dff_4、D触发器dff_5、D触发器dff_6、D触发器dff_7、D触发器dff_8、与门and21_0、与门and21_1、与门and21_2、与门and21_3、与门and21_4、与门and21_5、与门and21_6、与门and21_7、与门and21_8、与门and21_9、与门and21_10、或门or21_0、or21_1、二输入或非门nor21_0、反向器inv_0和反向器inv_1;
D触发器dff_0、D触发器dff_1、D触发器dff_2、D触发器dff_3、D触发器dff_4、D触发器dff_5、D触发器dff_6、D触发器dff_7和D触发器dff_8的时钟输入端clk连接外部输入时钟信号clk,D触发器dff_0的数据输入端d连接“1”及高电位,D触发器dff_0的输出端q一方面输出周期控制信号cycle0,另一方面连接触发器dff_1的数据输入端d;D触发器dff_1的输出端q连接D触发器dff_2的数据输入端d;D触发器dff_2的输出端q连接D触发器dff_3的数据输入端d;D触发器dff_3的输出端q连接D触发器dff_4的数据输入端d;D触发器dff_4的输出端q连接D触发器dff_5的数据输入端d;D触发器dff_5的输出端q连接D触发器dff_6的数据输入端d;D触发器dff_6的输出端q连接D触发器dff_7的数据输入端d;D触发器dff_7的输出端q连接D触发器dff_8数据输入端d;
反向器inv_0的输入端连接配置控制信号M;反向器inv_0的输出端同时连接与门and21_0的第一输入端、与门and21_2的第一输入端和与门and21_4的第一输入端,D触发器dff_1的输出端q同时连接与门and21_0的第二输入端和与门and21_1的第一输入端,配置控制信号M同时连接与门and21_1的第二输入端、与门and21_3的第二输入端、与门and21_5的第二输入端、与门and21_6的第二输入端、与门and21_7的第二输入端、与门and21_8的第二输入端、与门and21_9的第二输入端以及与门and21_10的第二输入端,D触发器dff_2的输出端q同时连接与门and21_2的第二输入端和与门and21_3的第一输入端,D触发器dff_3的输出端q同时连接与门and21_4的第二输入端和与门and21_5的第一输入端,D触发器dff_4的输出端q同时连接与门and21_6的第一输入端,D触发器dff_5的输出端q同时连接与门and21_7的第一输入端,D触发器dff_6的输出端q同时连接与门and21_8的第一输入端,D触发器dff_7的输出端q同时连接与门and21_9的第一输入端,D触发器dff_8的输出端q同时连接与门and21_10的第一输入端;
与门and21_0的输出端输出信号nmcycle[1],与门and21_1的输出端输出信号mcycle[1],与门and21_2的输出端输出信号nmcycle[2],与门and21_3的输出端输出信号mcycle[2],与门and21_4的输出端输出信号nmcycle[3],与门and21_5的输出端输出信号mcycle[3],与门and21_6的输出端输出信号mcycle[4],与门and21_7的输出端输出信号mcycle[5],与门and21_8的输出端输出信号mcycle[6],与门and21_9的输出端输出信号mcycle[7];
与门and21_6的输出端与或门or21_1的第一输入端连接,与门and21_10的输出端与或门or21_1的第二输入端连接,或门or21_1的输出端一方面输出运算完成信号done,另一方面与二输入或非门nor21_0的第一输入端连接,反向器inv_1的输入端连接外部输入的复位信号rst,反向器inv_1的输出端与二输入或非门nor21_0的第二输入端连接,二输入或非门nor21_0的输出端同时连接D触发器dff_0、dff_1、dff_2、dff_3、dff_4、dff_5、dff_6、dff_7以及dff_8的复位输入端rst;与门and21_5的输出端与或门or21_0的第一输入端连接,与门and21_9的输出端与或门or21_0的第二输入端连接,或门or21_0的输出端输出信号result_clk。
所述符号判断模块包括数据相反数补码运算器DD1、16位数据锁存器和D触发器dff_9;
数据相反数补码运算器DD1的输入端DIN和16位数据锁存器的输入端d2同时与输入的运算数据连接,数据相反数补码运算器DD1的输出端DOUT与16位数据锁存器的输入端d1连接;
输入运算数据的第11位data[11]同时连接16位数据锁存器的控制输入端ctrl和D触发器dff_9的数据输入端d;
周期控制信号cycle0同时连接16位数据锁存器的时钟输入端clk和D触发器dff_9的时钟输入端clk;外部输入的复位信号rst同时连接16位数据锁存器的复位输入端rst和D触发器dff_9的复位输入端rst;
16位数据锁存器的输出端d3输出输入运算数据的绝对值data_abs[15:0],D触发器dff_9的输出端q输出输入运算数据的符号neg。
所述相反运算器包括数据相反数补码运算器DD2和D触发器dff_21,
数据相反数补码运算器DD2的输入端DIN连接浮点加法器输出的结果,输出端DOUT接D触发器dff_21的数据输入端的d;
D触发器dff_21的时钟输入端clk连接mcycle[5],D触发器dff_21的复位输入端rst与外部输入复位信号rst连接,D触发器dff_21的输出端q输出浮点加法器输出结果的相反数。
数据相反数补码运算器DD1和数据相反数补码运算器DD2实现流程相同,具体如下:
第1步,记输入端DIN接收的数据为DIN[15:0],计算DIN[15:0]尾数的相反数补码D_MID[13:0],同时进行第2步、第3步和第4步,对D_MID[13:0]进行判断;
第2步,判断D_MID[13:0]是否为0,若是,则进入第5步;
第3步,判断D_MID[13:0]是否溢出,如果D_MID[13]xorD_MID[12]=1即为溢出,若溢出,则进入第6步;
第4步,如果D_MID[13]xorD_MID[12]=0,则进入第7步;
第5步,置D_MID[17:14]为最大的负值,以得到0的正确表示法,同时进行第8步、第9步和第10步,对D_MID[17:14]进行判断;
第6步,D_MID[13:0]右移一位,且指数D_MID[17:14]=DIN[15:12]加1,同时进行第8步、第9步和第10步,对D_MID[17:14]进行判断;
第7步,D_MID[13:0]左移K位,且指数D_MID[17:14]=DIN[15:12]减K,同时进行第8步、第9步和第10步,对D_MID[17:14]进行判断;
第8步,判断指数运算结果D_MID[17:14]是否正向溢出,如果是,则进入第11步;
第9步,判断指数运算结果D_MID[17:14]是否负向溢出,如果是,则进入第12步;
第10步,判断指数运算结果D_MID[17:14]是否在范围内,如果是,则进入第13步;
第11步,如果D_MID[13:0]>0,置D_MID为浮点数最大正值;如果D_MID[13:0]<0,置D_MID为浮点数最大负值,进入第13步;
第12步,设置D_MID[13:0]为0,D_MID[17:14]为-8,进入第13步;
第13步,将18位运算数据D_MID去掉符号扩展位,去掉隐含位,即得到DOUT段输出的16位浮点格式数据DOUT[15:0],其中DOUT[15:12]=D_MID[17:14],DOUT[11]=D_MID[12],DOUT[10:0]=D_MID[10:0]。
范围探测模块包括浮点比较器fcom_1、浮点比较器fcom_2、浮点比较器fcom_3、反相器inv_3、反相器inv_4、反相器inv_5、二输入或门or21_2、三输入或门or31_0、三输入或门or31_1、D触发器dff_11、D触发器dff_12、D触发器dff_13和D触发器dff_14;
浮点比较器fcom_1的第一输入端连接符号判断模块输出的数据data_abs[15:0],第二输入端连接常数C0,C0为(5.0000)10
浮点比较器fcom_2的第一输入端连接符号判断模块输出的数据data_abs[15:0],第二输入端连接常数C1,C1为(1.0000)10
浮点比较器fcom_3的第一输入端连接符号判断模块输出的数据data_abs[15:0],第二输入端连接常数C2,C2为(1.0000)10
浮点比较器fcom_1的输出端同时与D触发器dff_11的数据输入端d以及反相器inv_3的输入端连接,反相器inv_3的输出端同时与二输入或门or21_2的第一输入端、三输入或门or31_0的第一输入端以及三输入或门or31_1的第一输入端连接,浮点比较器fcom_2的输出端同时与反相器inv_4的输入端以及二输入或门or21_2的第二输入端连接;二输入或门or21_2的输出端与D触发器dff_12的数据输入端d连接;反相器inv_4的输出端同时与三输入或门or31_0的第二输入端以及三输入或门or31_1的第二输入端连接;浮点比较器fcom_3的输出端同时与三输入或门or31_0的第三输入端以及反相器inv_5的输入端连接,反相器inv_5的输出端与三输入或门or31_1的第三输入端连接,三输入或门or31_0的输出端与D触发器dff_13的数据输入端d连接,三输入或门or31_1的输出端与D触发器dff_14的数据输入端d连接;
D触发器dff_11、D触发器dff_12、D触发器dff_13和D触发器dff_14的复位输入端rst与外部输入的复位信号rst连接,D触发器dff_11、D触发器dff_12、D触发器dff_13和D触发器dff_14的时钟输入端clk端连接mcycle[1],D触发器dff_14输出端q输出信号range[0],D触发器dff_13输出端q输出信号range[1],D触发器dff_12输出端q输出信号range[2],D触发器dff_11输出端q输出信号range[3]。
所述地址产生器包括四个4位地址产生模块addrgen1、addrgen2、addrgen3和addrgen4;
addrgen1的cin端接地,addrgen1的cout端连接addrgen2的cin端,addrgen2的cout端连接addrgen3的cin端,addrgen3的cout端连接addrgen4的cin端;addrgen1、addrgen2、addrgen3和addrgen4的clk端连接nmcycle[1];addrgen1、addrgen2、addrgen3和addrgen4的rst端连接外部输入的复位信号rst,addrgen1、addrgen2、addrgen3和addrgen4的d[15:0]端连接符号判断模块输出的数据;addrgen1的d3[15:0]端接常数(8)10对应的浮点数、d2[15:0]端接常数(7.5)10对应的浮点数、d1[15:0]端接常数(7)10对应的浮点数、d0[15:0]端接常数(6.5)10对应的浮点数,addrgen1的输出端out[3:0]输出地址addr[16:13];
Addrgen2的d3[15:0]端接常数(6)10对应的浮点数、d2[15:0]端接常数(5.5)10对应的浮点数、d1[15:0]端接常数(5)10对应的浮点数、d0[15:0]端接常数(4.5)10对应的浮点数,addrgen1的输出端out[3:0]输出地址addr[12:9];
Addrgen3的d3[15:0]端接常数(4)10对应的浮点数、d2[15:0]端接常数(3.5)10对应的浮点数、d1[15:0]端接常数(3)10对应的浮点数、d0[15:0]端接常数(2.5)10对应的浮点数,addrgen1的输出端out[3:0]输出地址addr[8:5];
Addrgen4的d3[15:0]端接常数(2)10对应的浮点数、d2[15:0]端接常数(1.5)10对应的浮点数、d1[15:0]端接常数(1)10对应的浮点数、d0[15:0]端接常数(0.5)10对应的浮点数,addrgen1的输出端out[3:0]输出地址addr[4:1],addrgen4的cout端输出addr[0]。
4位地址产生模块addrgen1、addrgen2、addrgen3和addrgen4结构相同,均包括浮点比较器fcom_4、浮点比较器fcom_5、浮点比较器fcom_6、浮点比较器fcom_7、反相器inv_6、反相器inv_7、反相器inv_8、反相器inv_9、二输入或门or21_3、三输入或门or31_2、四输入或门or41_0、五输入或门or51_0、五输入或门or51_1、D触发器dff_16、D触发器dff_17、D触发器dff_18和D触发器dff_19;
浮点比较器fcom_4、浮点比较器fcom_5、浮点比较器fcom_6、浮点比较器fcom_7均具备两个输入端;
浮点比较器fcom_4的第一输入端为4位地址产生模块的d[15:0]端,第二输入端作为4位地址产生模块的d3[15:0]端;
浮点比较器fcom_5的第一输入端与浮点比较器fcom_4的第一输入端连接,第二输入端作为4位地址产生模块的d2[15:0]端;
浮点比较器fcom_6的第一输入端与浮点比较器fcom_4的第一输入端连接,第二输入端作为4位地址产生模块的d1[15:0]端;
浮点比较器fcom_7的第一输入端与浮点比较器fcom_4的第一输入端连接,第二输入端作为4位地址产生模块的d0[15:0]端;
二输入或门or21_3的第一输入端、三输入或门or31_2的第一输入端、四输入或门or41_0的第一输入端、五输入或门or51_0的第一输入端以及五输入或门or51_1的第一输入端相连接后作为4位地址产生模块的cin端;
浮点比较器fcom_4的输出端同时与反相器inv_6的输入端以及二输入或门or21_3的第二输入端连接,二输入或门or21_3的输出端与D触发器dff_16的输入端d连接;
浮点比较器fcom_5的输出端同时与反相器inv_7的输入端以及三输入或门or31_2的第三输入端连接,反相器inv_6的输出端与三输入或门or31_2的第二输入端连接,三输入或门or31_2的输出端与D触发器dff_17的输入端d连接;
浮点比较器fcom_6的输出端同时与反相器inv_8的输入端以及四输入或门or41_0的第四输入端连接,反相器inv_6的输出端与四输入或门or41_0的第二输入端连接,反相器inv_7的输出端与四输入或门or41_0的第三输入端连接,四输入或门or41_0的输出端与D触发器dff_18的输入端d连接;
浮点比较器fcom_7的输出端同时与反相器inv_9的输入端以及五输入或门or51_0的第五输入端连接,反相器inv_6的输出端与五输入或门or51_0的第二输入端连接,反相器inv_7的输出端与五输入或门or51_0的第三输入端连接,反相器inv_8的输出端与五输入或门or51_0的第四输入端连接,五输入或门or51_0的输出端与D触发器dff_19的输入端d连接;
反相器inv_6的输出端与五输入或门or51_1的第二输入端连接,反相器inv_7的输出端与五输入或门or51_1的第三输入端连接,反相器inv_8的输出端与五输入或门or51_1的第四输入端连接,反相器inv_9的输出端与五输入或门or51_1的第五输入端连接,五输入或门or51_1的输出端作为4位地址产生模块的cout端;
D触发器dff_16、D触发器dff_17、D触发器dff_18和D触发器dff_19的复位输入端rst相连接后作为4位地址产生模块的rst端,时钟输入端clk相连接后作为4位地址产生模块的clk端,D触发器dff_16输出第3位地址,D触发器dff_17输出第2位地址,D触发器dff_18输出第1位地址,D触发器dff_19输出第0位地址。
浮点比较器fcom_1、浮点比较器fcom_2、浮点比较器fcom_3、浮点比较器fcom_4、浮点比较器fcom_5、浮点比较器fcom_6、浮点比较器fcom_7工作流程相同,每个浮点比较器工作流程具体如下:
第1步,比较第一输入端输入数据和第二输入端常数:
根据浮点数据格式,添加尾数隐含位,同时扩展一位符号位;
用第一输入端输入数据的尾数减去第二输入端常数的尾数,结果记为dm[13:0];
第2步,比较第一输入端输入数据和第二输入端常数的指数:
扩展一位符号位,用第一输入端输入数据的指数减去第二输入端常数的指数,结果记为de[4:0];
第3步,对尾数比较结果dm[13:0]进行符号判断:
利用如下公式计算sdm:sdm=dm[13]xor dm[12];
sdm为0时,dm[13:0]为正数;sdm为1时,dm[13:0]为负数;
第4步,对指数比较结果de进行符号判断:
利用如下公式计算sde:sde=de[4]xor dm[3];
sde为0时,de[4:0]为正数;sde为1时,de[4:0]为负数;
第5步,比较结果判断,如果sde为0且de[4:0]不为0,第一输入端输入数据大于第二输入端常数,输出为0;如果sde为0、de[4:0]为0且sdm为0,第一输入端输入数据大于第二输入端常数,输出为0;如果sde为0、de[4:0]为0且sdm为1,第一输入端输入数据小于第二输入端常数,输出为1;如果sde为1,第一输入端输入数据小于第二输入端常数,输出为1。
所述参数寄存器包括四个32位三态控制门和一个32位D触发器dff_15,第j个32位三态控制门的控制信号端连接范围探测模块输出的范围区间标识信号的第j位,j=0,1,2,3;四个32位三态控制门的复位信号端均连接外部输入的复位信号rst,四个32位三态控制门的输出端均与32位D触发器dff_15的数据输入端d,32位D触发器dff_15的复位输入端rst连接外部输入的复位信号rst,32位D触发器dff_15的时钟输入端clk连接外mcycle[2],32位D触发器dff_15的输出端q输出的高16位为一次项系数A[15:0],低16位为偏移量B[15:0]。
所述查找表包括33个16位三态控制门、33个二输入或门、16个反相器和1个16位D触发器dff_20;
前17个二输入或门的第二输入端均与符号判断模块输出的符号连接,前17个二输入或门中,第k1个二输入或门的第一输入端连接地址产生器生成的第k位地址值,k1=0,1,2,……16;
后16个二输入或门与16个反相器一一对应,后16个二输入或门的第二输入端均与对应的反相器输出端连接,16个反相器的输入端均与符号判断模块输出的符号连接,后16个二输入或门中,第k2个二输入或门的第一输入端连接地址产生器生成的第k2-16位地址值,k2=17,18,19,……32;
每个二输入或门的输出端均与对应的16位三态控制门的第二输入端连接,33个16位三态控制门的第一输入端以及16位D触发器dff_20的复位输入端rst均与外部输入复位信号rst连接,33个16位三态控制门的输出端连接在一起后与16位D触发器dff_20的数据输入端d连接,16位D触发器dff_20的时钟输入端clk与nmcycle[2]连接,16位D触发器dff_20的输出端q输出输入运算数据对应的tanh激活函数值lut_data[15:0]。
所述第一选通锁存器包括16个结构相同的选通锁存单元;
第p个选通锁存单元包括选择器mux_1、反向器inv_2和D触发器dff_22,选择器mux_1的A输入端连接浮点加法器计算结果的第p位,选择器mux_1的B输入端连接相反运算器计算结果的第p位,选择器mux_1的输出端与D触发器dff_22的d输入端连接,反向器inv_2的输入端以及选择器mux_1的AS端同时与符号判断模块输出的数据符号连接,反向器inv_2的输出端与选择器mux_1的BS端连接;D触发器dff_22的时钟输入端clk与mcycle[6]连接,D触发器dff_22的复位输入端rst与外部输入的复位信号连接,D触发器dff_22的输出端输出第一选通锁存器的第p位输出数据,p=0,1,2,3,……15。
所述第二选通锁存器包括16个结构相同的选通锁存单元;第q个选通锁存单元包括选择器mux_2、反向器inv_2’和D触发器dff_23,选择器mux_2的A输入端连接查找表输出结果的第p位,选择器mux_2的B输入端连接第一选通锁存器输出结果的第p位,选择器mux_2的输出端与D触发器dff_23的d输入端连接,反向器inv_2’的输入端以及选择器mux_2的AS端同时与配置控制信号M连接,反向器inv_2’的输出端与选择器mux_2的BS端连接;D触发器dff_23的时钟输入端clk与控制器的周期控制信号连接,D触发器dff_23的复位输入端rst与外部输入的复位信号连接,D触发器dff_23的输出端输出第二选通锁存器的第p位输出数据。
本发明具有以下优点:
(1)本发明采用查表计算tanh函数值和一次函数拟合计算sigmoid函数值,两种函数计算方式结构简便;同时本发明根据时序控制可共用sigmoid函数与tanh函数的运算数据路中的部分功能模块,相较于分别独立实现,减小了实现的面积;sigmoid函数与tanh函数的运算数据路中的功能模块只有在相应的周期控制信号有效时,才有动态功耗,其它时候无动态功耗,因此整体电路功耗低;另外,本发明采用同步时钟设计,便于时序检查与验证,增强了嵌入式应用的实用性。
(2)利用本发明计算神经网络激活函数时,只需给一位的模式控制选则、时钟以及复位信号,就可控制函数值的产生,控制流程简单;如果利用本发明装置只计算一类函数值,则该装置构成计算流水线,可提高神经网络激活函数计算的效率。
(3)本发明可根据tanh计算精度需要,方便地扩展地址产生器模块和查找表模块来满足函数精度变换的需求。
附图说明
图1是一种16位浮点数据格式;
图2是本发明的组成结构;
图3是控制器结构;
图4是符号判断模块结构;
图5是数据相反数补码运算流程图;
图6是一位选通锁存的结构,其中(a)为第一选通锁存器一位结构示意图,(b)为第二选通锁存器一位结构示意图;
图7是范围探测模块的结构;
图8是浮点比较器流程图;
图9是4个32位字长的参数寄存器结构;
图10是浮点乘法器运算流程图;
图11是浮点加法器运算流程图;
图12是地址产生器结构;
图13是4位地址产生模块结构;
图14是查找表结构;
图15是相反运算器的结构。
具体实施方式
为了更清楚的理解本发明,以下结合附图对本发明作进一步的详细描述。
根据神经网络数据运算的特点,本发明中所处理的数据采用如下的数据格式定义:数据长度为16位二进制数,数据为浮点数;16位二进制数中[15:12]4位是浮点数的指数区,第11位为符号位;一个隐含位隐含在[11:10]之间;[10:0]是浮点数的小数部分;16位的浮点数各部分均以二进制补码表示。如图1所示。在位11和位10之间的隐含位在运算中要以一个二进制点位添加到运算器位来完成操作,当这个最高位的非符号位要表示出来时,其位置在紧靠二进制小数点的左侧,在此浮点格式中浮点二进制补码x通过下面的形式给出:
X=01.f×2e if s=0
X=10.f×2e if s=0
X=0 if e=-8
在此短浮点格式中必须使用下面给出的保留值来表示0:
e=-8
s=0
f=0
该浮点格式的范围和精度:
最大正数:x=(2-2-11)×27=2.5594×102
最小正数:x=1×2-7=7.8125×10-3
最小负数:x=(-1-2-11)×2-7=-7.8163×10-3
最大负数:x=-2×2-7=-2.5600×102
在上述基础上,本发明提出一个可配置的神经网络激活函数的实现装置,如图2所示,主要由一个控制器和sigmoid函数与tanh函数的运算数据路径组成。整个可配置的神经网络激活函数的实现装置有4个输入信号:外部输入时钟信号clk、外部输入复位信号rst、配置控制信号M、激活函数自变量的数据值DATA[15:0](即输入的运算数据,此为16位的浮点数据),浮点格式如前文所示;2个输出信号:激活函数的运算结果result[15:0](此为16位的浮点数据)、激活函数运算完成的状态信号DONE。
当进行sigmoid激活函数运算时,配置控制信号M配置为1;配置控制信号M与外部输入时钟信号clk、外部输入复位信号rst输入到控制器,产生完成sigmoid激活函数运算数据路径的8个时钟周期的控制信号cycle0、mcycle[6:1]以及result_clk;sigmoid激活函数运算数据路径由符号判断模块、范围探测模块、参数寄存器、浮点乘法器、浮点加法器、相反数运算器、第一选通锁存器、第二选通锁存器组成。sigmoid激活函数运算过程如下:sigmoid激活函数自变量的数据值DATA[15:0]首先进入符号判断模块,在该模块中判断输入运算数据的值的正负情况,如果输入数据值为正则输出该数据,否则输出该数据的相反数,即该数据的绝对值,结果为data_abs[15:0]以及输出DATA的符号neg,neg为1表示DATA为负数,neg为0表示DATA为正数,并且data_abs[15:0]以及neg信号均由sigmoid激活函数的时钟周期控制信号cycle0负责锁存;符号判断模块的输出data_abs[15:0]输入到范围探测模块,data_abs[15:0]的取值范围划分为4个数值区间,范围探测就是判定data_abs[15:0]所处在哪个数值区间中,根据数据值所处的区间,再决定采用较逼近的一次函数来估算sigmoid激活函数的值,确定了取值区间的同时也形成了一次函数系数与偏移量的寄存器地址rang[3:0],周期控制信号mcycle[1]负责一次函数系数与偏移量的寄存器地址rang[3:0]输出的锁存;rang[3:0]输出到参数寄存器,用于选择逼近sigmoid激活函数的一次函数的参数,即一次项系数和偏移量,参数寄存器位宽32位,其中高16位为一次项系数A[15:0],低16位为偏移量B[15:0],周期控制信号mcycle[2]负责参数寄存器的输出,即A[15:0]与B[15:0]的输出锁存;A[15:0]和data_abs[15:0]输入到浮点乘法器,进行浮点乘法计算,周期控制信号mcycle[3]负责浮点乘法器的输出AX[15:0]的锁存;浮点乘法器的输出AX[15:0]与参数寄存器的输出B[15:0]输入到浮点加法器,进行浮点加法计算,周期控制信号mcycle[4]负责浮点加法器的输出Y[15:0]的锁存;浮点加法器的输出Y[15:0]输入到相反运算器,用于计算Y[15:0]的相反数的值NY[15:0],周期控制信号mcycle[5]负责相反运算器的输出NY[15:0]的锁存;相反运算器的输出NY[15:0]与浮点加法器的输出Y[15:0]输入到第一选通锁存器,根据数据符号判断模块输出的数据符号neg选通输出,当neg=0选通输出浮点加法器的运算结果Y[15:0],当neg=1选通输出相反运算器的结果NY[15:0],周期控制信号mcycle[6]负责第一选通锁存器的输出sigmoid_result[15:0]的锁存;第一通锁存器的输出sigmoid_result[15:0]输入到第二选通锁存器,根据配置控制信号M的值,选通输出并锁存sigmoid激活函数的运算结果或是tanh激活函数的运算结果,当M=1时第二选通锁存器选通输出sigmoid_result[15:0],周期控制信号result_clk负责第二选通锁存器的输出result[15:0]的输出,即sigmoid激活函数的运算结果的输出;控制器输出DONE(高有效),表征sigmoid激活函数的运算完成。当进行tanh激活函数运算时,配置控制信号M配置为0,配置控制信号M与外部输入时钟信号clk以及复位信号rst输入到控制器,产生完成tanh激活函数运算数据路径的4个时钟周期的控制信号cycle0、nmcycle[2:1]以及result_clk;tanh激活函数运算数据路径由符号判断模块、地址产生模块、查找表模块、选通锁存器2组成。tanh激活函数运算过程如下:tanh激活函数自变量的数据值DATA首先进入符号判断模块,在该模块中判断输入运算数据的值的正负情况,如果输入数据值为正则输出该数据,否则输出该数据的相反数的值即该数据的绝对值,结果为data_abs[15:0]以及输出DATA的符号neg,neg为1表示DATA为负数,neg为0表示DATA为正数,并且data_abs[15:0]以及neg信号均由tanh激活函数的时钟周期控制信号cycle0负责锁存;符号判断模块的输出data_abs[15:0]输入到地址产生模块,data_abs[15:0]的取值分为2n个数值区间(n根据tanh函数精度要求而定,本说明书n取4),地址产生需要快速判定data_abs[15:0]所处在哪个数值区间中,根据数据值所处的区间,形成查找表地址addr[17:0],周期控制信号nmcycle[1]负责查找表地址addr[17:0]输出的锁存;addr[17:0]输出到查找表,用于选择存储在查找表中的tanh激活函数的函数值,周期控制信号nmcycle[2]负责参tanh激活函数的函数值的输出锁存;tanh激活函数的函数值tanh_result[15:0]输入到第二选通锁存器,第二选通锁存器根据配置控制信号M的值选通输出并锁存,当M=0时第二选通锁存器选通输出tanh激活函数的函数值,周期控制信号result_clk负责第二选通锁存器的输出,result[15:0]即tanh激活函数的运算结果的输出。控制器输出DONE(高有效),表征tanh激活函数的运算完成。参考图1,sigmoid函数与tanh函数的运算数据路径中符号判断模块和第二选通锁存器为两个激活函数数据路径中共用的模块。
控制器(参考图2,图3)的输入信号为配置控制信号M与外部输入时钟信号clk、外部输入复位信号rst,输出信号为周期控制信号cycle0、mcycle[6:1]、nmcycle[3:1]、result_clk以及运算完成信号DONE。其功能为:根据配置控制信号m的值产生不同激活函数的运算数据路径的周期控制信号和激活函数运算完成的标示信号DONE;当M=0时,控制器产生tanh激活函数运算数据路径的4个锁存控制信号;当M=1时,控制器产生sigmoid激活函数运算数据路径的8个锁存控制信号。
控制器主要由9位D触发器结构组成,每位D触发器结构相同,控制器的结构如图3所示,控制器包括D触发器dff_0、D触发器dff_1、D触发器dff_2、D触发器dff_3、D触发器dff_4、D触发器dff_5、D触发器dff_6、D触发器dff_7、D触发器dff_8、与门and21_0、与门and21_1、与门and21_2、与门and21_3、与门and21_4、与门and21_5、与门and21_6、与门and21_7、与门and21_8、与门and21_9、与门and21_10、或门or21_0、or21_1、二输入或非门nor21_0、反向器inv_0和反向器inv_1。D触发器dff_0、D触发器dff_1、D触发器dff_2、D触发器dff_3、D触发器dff_4、D触发器dff_5、D触发器dff_6、D触发器dff_7和D触发器dff_8的时钟输入端clk连接外部输入时钟信号clk,D触发器dff_0的数据输入端d连接“1”及高电位,D触发器dff_0的输出端q一方面输出周期控制信号cycle0,另一方面连接触发器dff_1的数据输入端d;D触发器dff_1的输出端q连接D触发器dff_2的数据输入端d;D触发器dff_2的输出端q连接D触发器dff_3的数据输入端d;D触发器dff_3的输出端q连接D触发器dff_4的数据输入端d;D触发器dff_4的输出端q连接D触发器dff_5的数据输入端d;D触发器dff_5的输出端q连接D触发器dff_6的数据输入端d;D触发器dff_6的输出端q连接D触发器dff_7的数据输入端d;D触发器dff_7的输出端q连接D触发器dff_8数据输入端d;
反向器inv_0的输入端连接配置控制信号M;反向器inv_0的输出端同时连接与门and21_0的第一输入端、与门and21_2的第一输入端和与门and21_4的第一输入端,D触发器dff_1的输出端q同时连接与门and21_0的第二输入端和与门and21_1的第一输入端,配置控制信号M同时连接与门and21_1的第二输入端、与门and21_3的第二输入端、与门and21_5的第二输入端、与门and21_6的第二输入端、与门and21_7的第二输入端、与门and21_8的第二输入端、与门and21_9的第二输入端以及与门and21_10的第二输入端,D触发器dff_2的输出端q同时连接与门and21_2的第二输入端和与门and21_3的第一输入端,D触发器dff_3的输出端q同时连接与门and21_4的第二输入端和与门and21_5的第一输入端,D触发器dff_4的输出端q同时连接与门and21_6的第一输入端,D触发器dff_5的输出端q同时连接与门and21_7的第一输入端,D触发器dff_6的输出端q同时连接与门and21_8的第一输入端,D触发器dff_7的输出端q同时连接与门and21_9的第一输入端,D触发器dff_8的输出端q同时连接与门and21_10的第一输入端;
与门and21_0的输出端输出信号nmcycle[1],与门and21_1的输出端输出信号mcycle[1],与门and21_2的输出端输出信号nmcycle[2],与门and21_3的输出端输出信号mcycle[2],与门and21_4的输出端输出信号nmcycle[3],与门and21_5的输出端输出信号mcycle[3],与门and21_6的输出端输出信号mcycle[4],与门and21_7的输出端输出信号mcycle[5],与门and21_8的输出端输出信号mcycle[6],与门and21_9的输出端输出信号mcycle[7];
与门and21_6的输出端与或门or21_1的第一输入端连接,与门and21_10的输出端与或门or21_1的第二输入端连接,或门or21_1的输出端一方面输出运算完成信号done,另一方面与二输入或非门nor21_0的第一输入端连接,反向器inv_1的输入端连接外部输入的复位信号rst,反向器inv_1的输出端与二输入或非门nor21_0的第二输入端连接,二输入或非门nor21_0的输出端同时连接D触发器dff_0、dff_1、dff_2、dff_3、dff_4、dff_5、dff_6、dff_7以及dff_8的复位输入端rst;与门and21_5的输出端与或门or21_0的第一输入端连接,与门and21_9的输出端与或门or21_0的第二输入端连接,或门or21_0的输出端输出信号result_clk。
符号判断模块的输入信号为输入数据DATA[15:0]、周期控制信号cycle0、复位信号rst;输出信号为数据正负标识符号neg、数据绝对值data_abs[15:0]。其功能为:当输入数据的符号位第11位DATA[11]=0时,输入数据为正,cycle0有效时锁存该数据并输出;当DATA[11]=1时,输入数据为负,cycle0有效时锁存该数据的相反数的补码值并输出;输入数据的符号位DATA[11],当cycle0有效时锁存并输出为neg;复位信号rst有效时可将输出信号data_abs[15:0]与neg置为0。
符号判断模块的结构如图4所示,输入的16位数据接数据相反数补码运算器DD1的输入端DIN和16位数据锁存器的D2输入端;数据相反数补码运算器D1的输出端DOUT接16位数据锁存器的D1输入端;输入的16位数据的第11位DATA[11]接锁存器的控制输入端ctrl和D触发器dff_9的数据输入端d;输入周期控制信号cycle0接锁存器的时钟输入端clk和D触发器dff_9的的时钟输入端clk;外部输入复位信号rst接通16位数据锁存器的复位输入端rst和D触发器dff_9的复位输入端rst。
数据相反数补码运算器的运算流程图(参考图5)是实现一个16位浮点数据DIN[15:0]相反数的补码,需要13个步骤。
第1步,求16位浮点数DIN[15:0]尾数的相反数补码。根据浮点数运算的规则,16位浮点数DIN[15:0]要扩展成为18位的运算数据D[17:0],DIN的4位指数DIN[15:12]位宽不变,对应D[17:14],DIN的12位尾数DIN[11:0]扩展为14位D[13:0],其中D[10:0]=DIN[10:0],D[11]=~DIN[11]是添加了浮点格式中的隐含位,D[12]=DIN[11]是尾数的符号位,D[13]=DIN[11]是尾数符号位扩展一位。数据扩展完成后,D[13:0]按位取反,并在最低位加1,运算结果为D_MID[13:0]。同时进行第2步、第3步和第4步,对D_MID[13:0]进行判断;
第2步,是判断运算数据的尾数运算结果D_MID[13:0]是否为0,若是,则进入第5步。
第3步,是判断运算数据的尾数运算结果D_MID[13:0]是否溢出,如果D_MID[13]xorD_MID[12]=1即为溢出,若溢出,则进入第6步。
第4步,D_MID[13:0]无溢出,即D_MID[13]xorD_MID[12]=0时,则进入第7步;
第5步,尾数运算结果D_MID[13:0]为0时,置D_MID[17:14]为最大的负值,来得到0正确的表示法,同时进行第8步、第9步和第10步,对D_MID[17:14]进行判断。
第6步,尾数运算结果D_MID[13:0]溢出时,尾数数D_MID[13:0]右移一位并且指数DIN[15:12]加1,同时进行第8步、第9步和第10步,对D_MID[17:14]进行判断。
第7步,是尾数运算结果D_MID[13:0]无溢出时的处理方式,尾数数D_MID[13:0]左移K位并且指数DIN[15:12]减K,同时进行第8步、第9步和第10步,对D_MID[17:14]进行判断。
第8步,是判断指数运算结果D_MID[17:14]是否是正向溢出,如果是,则进入第11步。
第9步,是判断指数运算结果D_MID[17:14]是否是负向溢出,如果是,则进入第12步。
第10步,是判断指数运算结果D_MID[17:14]是否在表数范围内,如果是,则进入第13步。
第11步,如果D_MID[13:0]>0,置D_MID为浮点数最大正值;如果D_MID[13:0]<0,置D_MID为浮点数最大负值,进入第13步。
第12步,设置D_MID[13:0]为0,D_MID[17:14]为-8,进入第13步。
第13步,将18位运算数据D_MID转换为16位浮点格式数据,去掉符号扩展位,去掉隐含位,即输出16位浮点格式数据DOUT[15:0],其中DOUT[15:12]=D_MID[17:14],DOUT[11]=D_MID[12],DOUT[10:0]=D_MID[10:0]。
第一选通锁存器和第二选通锁存器均为16位并行结构。
第一选通锁存器包括16个结构相同的选通锁存单元。
第p个选通锁存单元包括选择器mux_1、反向器inv_2和D触发器dff_22,选择器mux_1的A输入端连接浮点加法器计算结果的第p位,选择器mux_1的B输入端连接相反运算器计算结果的第p位,选择器mux_1的输出端与D触发器dff_22的d输入端连接,反向器inv_2的输入端以及选择器mux_1的AS端同时与符号判断模块输出的数据符号连接,反向器inv_2的输出端与选择器mux_1的BS端连接;D触发器dff_22的时钟输入端clk与mcycle[6]连接,D触发器dff_22的复位输入端rst与外部输入的复位信号连接,D触发器dff_22的输出端输出第一选通锁存器的第p位输出数据,p=0,1,2,3,……15。如图6中(a)所示。
其功能为:当符号判断模块输出的数据符号neg=0时,选择D1[p],在clk有效时锁存选通数据并输出D3[p];当neg=1时,选择D2[p],在clk有效时锁存选通数据并输出D3[p]。
第二选通锁存器包括16个结构相同的选通锁存单元。
第q个选通锁存单元包括选择器mux_2、反向器inv_2’和D触发器dff_23,选择器mux_2的A输入端连接查找表输出结果的第p位,选择器mux_2的B输入端连接第一选通锁存器输出结果的第p位,选择器mux_2的输出端与D触发器dff_23的d输入端连接,反向器inv_2’的输入端以及选择器mux_2的AS端同时与配置控制信号M连接,反向器inv_2’的输出端与选择器mux_2的BS端连接;D触发器dff_23的时钟输入端clk与控制器的周期控制信号连接,D触发器dff_23的复位输入端rst与外部输入的复位信号连接,D触发器dff_23的输出端输出第二选通锁存器的第p位输出数据。如图6中(b)所示。
范围探测模块的输入信号为:时序控制信号mcycle[1]、复位信号rst、16位浮点数据data_abs;输出信号为4位范围信号range[3:0]。其功能为:复位信号有效,置常数C0为(5.0000)10、常数C1为(1.0000)10、常数C2为(1.0000)10;输入数据通过浮点比较器同时跟C0、C1、C2进行比较;当输入的浮点数据data_abs大于C0时,输出range[3]为0,range[2]为1,range[1]为1,range[0]为1;当输入的浮点数据data_abs大于C1时,输出range[2]为0,range[3]为1,range[1]为1,range[0]为1;当输入的浮点数据data_abs大于C2时,输出range[1]为0,range[3]为1,range[2]为1,range[0]为1;如果浮点数据data_abs小于C0、C1、C2时,range[3]输出为1,range[2]输出为1,range[1]输出为1,range[0]输出为0。范围探测模块结构如图7:包括浮点比较器fcom_1、浮点比较器fcom_2、浮点比较器fcom_3、反相器inv_3、反相器inv_4、反相器inv_5、二输入或门or21_2、三输入或门or31_0、三输入或门or31_1、D触发器dff_11、D触发器dff_12、D触发器dff_13和D触发器dff_14;
浮点比较器fcom_1的第一输入端连接符号判断模块输出的数据data_abs[15:0],第二输入端连接常数C0,C0为(5.0000)10
浮点比较器fcom_2的第一输入端连接符号判断模块输出的数据data_abs[15:0],第二输入端连接常数C1,C1为(1.0000)10
浮点比较器fcom_3的第一输入端连接符号判断模块输出的数据data_abs[15:0],第二输入端连接常数C2,C2为(1.0000)10
浮点比较器fcom_1的输出端同时与D触发器dff_11的数据输入端d以及反相器inv_3的输入端连接,反相器inv_3的输出端同时与二输入或门or21_2的第一输入端、三输入或门or31_0的第一输入端以及三输入或门or31_1的第一输入端连接,浮点比较器fcom_2的输出端同时与反相器inv_4的输入端以及二输入或门or21_2的第二输入端连接;二输入或门or21_2的输出端与D触发器dff_12的数据输入端d连接;反相器inv_4的输出端同时与三输入或门or31_0的第二输入端以及三输入或门or31_1的第二输入端连接;浮点比较器fcom_3的输出端同时与三输入或门or31_0的第三输入端以及反相器inv_5的输入端连接,反相器inv_5的输出端与三输入或门or31_1的第三输入端连接,三输入或门or31_0的输出端与D触发器dff_13的数据输入端d连接,三输入或门or31_1的输出端与D触发器dff_14的数据输入端d连接;
D触发器dff_11、D触发器dff_12、D触发器dff_13和D触发器dff_14的复位输入端rst与外部输入的复位信号rst连接,D触发器dff_11、D触发器dff_12、D触发器dff_13和D触发器dff_14的时钟输入端clk端连接mcycle[1],D触发器dff_14输出端q输出信号range[0],D触发器dff_13输出端q输出信号range[1],D触发器dff_12输出端q输出信号range[2],D触发器dff_11输出端q输出信号range[3]。
浮点比较器流程图(参考图8)是实现一个16位数data_abs[15:0]和1个进位位Ci[2:0]的浮点比较器需要5个步骤。
第1步,比较第一输入端输入数据data_abs和第二输入端常数Ci,i的尾数,其中i=0,1,2:
根据浮点数据格式,添加尾数隐含位,同时扩展一位符号位;
用data_abs的尾数减去Ci的尾数,结果记为dm[13:0];
第2步,比较第一输入端输入数据data_abs和第二输入端常数Ci的指数:
扩展一位符号位,用data_abs的指数减去常数Ci的指数,结果记为de[4:0];
第3步,对尾数比较结果dm[13:0]进行符号判断:
利用如下公式计算sdm:sdm=dm[13]xor dm[12];
sdm为0时,dm[13:0]为正数;sdm为1时,dm[13:0]为负数;
第4步,对指数比较结果de进行符号判断:
利用如下公式计算sde:sde=de[4]xor dm[3];
sde为0时,de[4:0]为正数;sde为1时,de[4:0]为负数;
第5步,比较结果判断,如果sde为0且de[4:0]不为0,第一输入端输入数据data_abs大于第二输入端常数Ci,输出为0;如果sde为0、de[4:0]为0且sdm为0,第一输入端输入数据data_abs大于第二输入端常数Ci,输出为0;如果sde为0、de[4:0]为0且sdm为1,第一输入端输入数据data_abs小于第二输入端常数Ci,输出为1;如果sde为1,第一输入端输入数据data_abs小于第二输入端常数Ci,输出为1。
4个字长的32位参数寄存器(参看图2,图9)的输入信号为范围区间标识信号range[3:0],时钟信号clk,复位信号rst,输出信号为逼近sigmoid函数的一次函数的一次相系数A[15:0]以及偏移量B[15:0]。其功能为:当rst有效时,参数寄存器置位,4个字长的32位参数寄存器的每个字分别置成sigmoid函数输入的自变量的4个划分区间所对应的4组一次函数的一次项系数与偏移量,依照范围区间标识信号range[3:0]的对应的顺序依次为(A,B)10:(0.0000,0.0000)10;(0.0313,0.8438)10;(0.1250,0.6250)10;(0.2500,0.5000)10。根据范围区间标识信号range选出对应的32位的字,用来逼近sigmoid激活函数的一次函数的参数,即一次项系数A[15:0]和偏移量B[15:0],并根据时钟信锁存输出。参数寄存器包括四个32位三态控制门和一个32位D触发器dff_15,第j个32位三态控制门的控制信号端连接范围探测模块输出的范围区间标识信号的第j位,j=0,1,2,3;四个32位三态控制门的复位信号端均连接外部输入的复位信号rst,四个32位三态控制门的输出端均与32位D触发器dff_15的数据输入端d,32位D触发器dff_15的复位输入端rst连接外部输入的复位信号rst,32位D触发器dff_15的时钟输入端clk连接外mcycle[2],32位D触发器dff_15的输出端q输出的高16位为一次项系数A[15:0],低16位为偏移量B[15:0]。
浮点乘法器的运算流程图(参看图10)是实现二个16位浮点数据A[15:0]和data_abs[15:0]乘法运算需要5个步骤。
第1步,运算数据准备,将A[15:0]16位浮点格式数据转换为18位运算数据AIN[17:0],转换过程如下:
AIN[17:14]=A[15:12],AIN[13]=A[11],AIN[12]=A[11],AIN[11]=~A[11],AIN[10:0]=A[10:0];
同时将data_abs[15:0]16位浮点格式数据转换为18位运算数据XIN[17:0],如果range[3]=1,那么XIN[17:0]的格式如下:{XIN[17:14]=data_abs[15:12],XIN[13]=data_abs[11],XIN[12]=data_abs[11],XIN[11]=~data_abs[11],XIN[10:0]=data_abs[10:0]};如果range[3]=0,那么XIN[17:0]置为常数1。
第2步,数据乘法运算,AIN和XIN尾数相乘,得AXIN尾数:AXIN[27:0]=AIN[13:0]×XIN[13:0];
AIN XIN指数相加,得AXIN指数:AXIN[31:28]=AIN[17:14]+XIN[17:14]。
第3步,乘法尾数运算结果AXIN[27:0]判定,如果AXIN[27:14]=0,则AXIN[31:28]=-8;如果AXIN[27:14]>>1为规格化数,则{AXIN[27:14]}>>1,AXIN[31:28]=AXIN[31:28]+1};如果AXIN[27:14]>>2为规格化数,则
{AXIN[27:14]>>2,AXIN[31:28]=AXIN[31:28]+2},AXIN[27:14]为规格化数。
第4步,乘法指数运算结果AXIN[31:28]判定,如果AXIN[31:28]上溢且AXIN[27:14]>0,则{AXIN[31:28]=7};如果AXIN[31:28]上溢且
AXIN[27:14]<0,则{AXIN[31:28]=-8};如果AXIN[31:28]下溢,则
{AXIN[31:28]=-8,AXIN[27:14]=0},AXIN[31:28]在取值范围内。
第5步,乘法运算结果锁存输出,如果rst=1且clk上升有效,则
{AX[15:12]=AXIN[31:28],AX[11]=AXIN[27],AX[10:0]=AXIN[25:15]},输出结果:AX[15:0]=A[15:0]×data_abs[15:0]。
浮点加法器的运算流程图(参看图11)是实现二个16位浮点数据AX[15:0]和B[15:0]的加法运算,需要7个步骤。
第1步,运算数据准备,将AX[15:0]16位浮点格式数据转换为18位运算数据AXIN[17:0],转换方式如下:AXIN[17:14]=AX[15:12],AXIN[13]=AX[11],AXIN[12]=AX[11],AXIN[11]=~AX[11],AXIN[10:0]=AX[10:0]。
将B[15:0]16位浮点格式数据转换为18位运算数据BIN[17:0],转换方式如下:BIN[17:14]=B[15:12],BIN[13]=B[11],BIN[12]=B[11],BIN[11]=~B[11],BIN[10:0]=B[10:0]。
第2步,计算两个浮点运算数据的指数差,即:N=AXIN[17:14]-BIN[17:14]。
第3步,将两个浮点运算数据根据指数差进行尾数对阶,即:如果N>0,则{BIN[13:0]=BIN[13:0]>>N YIN[17:14]=AXIN[17:14]};否则{AXIN[13:0]=AXIN[13:0]>>|N|YIN[17:14]=BIN[17:14]}。
第4步,将两个浮点运算数据尾数进行加法运算,即:YIN=AXIN[13:0]+BIN[13:0]。
第5步,尾数加法运算结果YIN[13:0]判定,如果YIN[13:0]=0,则YIN[17:14]=-8;如果YIN[13:0]溢出,则{YIN[13:0]=YIN[13:0]>>1,YIN[17:14]=YIN[17:14]+1};如果YIN[13:0]<<K成为规格化数,则{YIN[13:0]=YIN[13:0]<<K,YIN[17:14]=YIN[17:14]-K}。
第六步,加法运算结果指数YIN[17:14]判定,如果YIN[17:14]上溢且YIN[13:0]>0则{YIN[17:14]=7};如果YIN[17:14]上溢且YIN[13:0]<0,则{YIN[17:14]=-8};如果YIN[17:14]下溢,则{YIN[17:14]=-8,YIN[13:0]=0},YIN[17:14]在取值范围内。
第七步,加法运算结果锁存输出,如果rst=1且clk上升有效,{Y[15:12]=YIN[15:14],Y[11]=YIN[13},Y[10:0]=YIN[10:0]},输出Y[15:0]=AX[15:0]+B[15:0]。
地址产生器(参看图12,图13)的输入信号为时钟nmycle[1]、复位信号rst、16位数据data_abs[15:0];输出信号为17位地址addr[16:0]。其功能为:用于产生查找表的地址,根据数据所处的值的区间,生成17位地址值;16位输入数据data_abs[15:0]同时与4位地址产生模块addrgen1、addrgen2、addrgen3、addrgen4进行比较;当输入数据6.5≤data_abs[15:0]≤8时,addrgen1的输出addr[3:0]其中一位为0,其它地址产生模地址输出为1;当输入数据4.5≤data_abs[15:0]≤6时,addrgen2的输出adr[3:0]其中一位为0,其它地址产生模地址输出为1;当输入数据2.5≤data_abs[15:0]≤4时,addrgen3的输出addr[3:0]其中一位为0,其他地址产生模地址输出为1;当输入数据0.5≤data_abs[15:0]≤2时,addrgen4的输出adr[3:0]其中一位为0,其它地址产生模地址输出为1。地址产生器的结构如图12所示:地址产生器包括四个4位地址产生模块addrgen1、addrgen2、addrgen3和addrgen4;
addrgen1的cin端接地,addrgen1的cout端连接addrgen2的cin端,addrgen2的cout端连接addrgen3的cin端,addrgen3的cout端连接addrgen4的cin端;addrgen1、addrgen2、addrgen3和addrgen4的clk端连接nmcycle[1];addrgen1、addrgen2、addrgen3和addrgen4的rst端连接外部输入的复位信号rst,addrgen1、addrgen2、addrgen3和addrgen4的d[15:0]端连接符号判断模块输出的数据;addrgen1的d3[15:0]端接常数(8)10对应的浮点数、d2[15:0]端接常数(7.5)10对应的浮点数、d1[15:0]端接常数(7)10对应的浮点数、d0[15:0]端接常数(6.5)10对应的浮点数,addrgen1的输出端out[3:0]输出地址addr[16:13];
Addrgen2的d3[15:0]端接常数(6)10对应的浮点数、d2[15:0]端接常数(5.5)10对应的浮点数、d1[15:0]端接常数(5)10对应的浮点数、d0[15:0]端接常数(4.5)10对应的浮点数,addrgen1的输出端out[3:0]输出地址addr[12:9];
Addrgen3的d3[15:0]端接常数(4)10对应的浮点数、d2[15:0]端接常数(3.5)10对应的浮点数、d1[15:0]端接常数(3)10对应的浮点数、d0[15:0]端接常数(2.5)10对应的浮点数,addrgen1的输出端out[3:0]输出地址addr[8:5];
Addrgen4的d3[15:0]端接常数(2)10对应的浮点数、d2[15:0]端接常数(1.5)10对应的浮点数、d1[15:0]端接常数(1)10对应的浮点数、d0[15:0]端接常数(0.5)10对应的浮点数,addrgen1的输出端out[3:0]输出地址addr[4:1],addrgen4的cout端输出addr[0]。
4位地址产生模块(参看图13)的输入信号为时钟信号nmcycle[1]、16位数据data_abs[15:0]、复位信号rst、16位数据d0、16位数据d1、16位数据d2、16位数据d3、进位位CIN;输出信号为4位地址addr[3:0]、进位输出cout。其功能为:16位输入数据data_abs[15:0]同时与四个tanh函数自变量取值区间的划分值常数d0、d1、d2、d3(且d0<d1<d2<d3)进行比较;当输入数据data_abs[15:0]≥d3时,addr[3]为0,其他地址输出为1,级联输出控制cout为1;当输入数据d2≤data_abs[15:0]<d3时,addr[2]为0,其他输出地址为1,级联输出控制cout为1;当输入数据d1≤data_abs[15:0]<d2时,addr[1]为0,其他地址输出为1,级联输出控制cout为1;当输入数据d0≤data_abs[15:0]<d1时,addr[0]为0,其他地址输出为1,级联输出控制cout为1;当级联输入控制信号CIN有效时,地址addr[3:0]为1,级联输出控制cout为1。4位地址产生模块结构如图13所示:4位地址产生模块addrgen1、addrgen2、addrgen3和addrgen4结构相同,均包括浮点比较器fcom_4、浮点比较器fcom_5、浮点比较器fcom_6、浮点比较器fcom_7、反相器inv_6、反相器inv_7、反相器inv_8、反相器inv_9、二输入或门or21_3、三输入或门or31_2、四输入或门or41_0、五输入或门or51_0、五输入或门or51_1、D触发器dff_16、D触发器dff_17、D触发器dff_18和D触发器dff_19;
浮点比较器fcom_4、浮点比较器fcom_5、浮点比较器fcom_6、浮点比较器fcom_7均具备两个输入端;
浮点比较器fcom_4的第一输入端作为4位地址产生模块的d[15:0]端,第二输入端作为4位地址产生模块的d3[15:0]端;
浮点比较器fcom_5的第一输入端与浮点比较器fcom_4的第一输入端连接,第二输入端作为4位地址产生模块的d2[15:0]端;
浮点比较器fcom_6的第一输入端与浮点比较器fcom_4的第一输入端连接,第二输入端作为4位地址产生模块的d1[15:0]端;
浮点比较器fcom_7的第一输入端与浮点比较器fcom_4的第一输入端连接,第二输入端作为4位地址产生模块的d0[15:0]端;
二输入或门or21_3的第一输入端、三输入或门or31_2的第一输入端、四输入或门or41_0的第一输入端、五输入或门or51_0的第一输入端以及五输入或门or51_1的第一输入端相连接后作为4位地址产生模块的cin端;
浮点比较器fcom_4的输出端同时与反相器inv_6的输入端以及二输入或门or21_3的第二输入端连接,二输入或门or21_3的输出端与D触发器dff_16的输入端d连接;
浮点比较器fcom_5的输出端同时与反相器inv_7的输入端以及三输入或门or31_2的第三输入端连接,反相器inv_6的输出端与三输入或门or31_2的第二输入端连接,三输入或门or31_2的输出端与D触发器dff_17的输入端d连接;
浮点比较器fcom_6的输出端同时与反相器inv_8的输入端以及四输入或门or41_0的第四输入端连接,反相器inv_6的输出端与四输入或门or41_0的第二输入端连接,反相器inv_7的输出端与四输入或门or41_0的第三输入端连接,四输入或门or41_0的输出端与D触发器dff_18的输入端d连接;
浮点比较器fcom_7的输出端同时与反相器inv_9的输入端以及五输入或门or51_0的第五输入端连接,反相器inv_6的输出端与五输入或门or51_0的第二输入端连接,反相器inv_7的输出端与五输入或门or51_0的第三输入端连接,反相器inv_8的输出端与五输入或门or51_0的第四输入端连接,五输入或门or51_0的输出端与D触发器dff_19的输入端d连接;
反相器inv_6的输出端与五输入或门or51_1的第二输入端连接,反相器inv_7的输出端与五输入或门or51_1的第三输入端连接,反相器inv_8的输出端与五输入或门or51_1的第四输入端连接,反相器inv_9的输出端与五输入或门or51_1的第五输入端连接,五输入或门or51_1的输出端作为4位地址产生模块的cout端;
D触发器dff_16、D触发器dff_17、D触发器dff_18和D触发器dff_19的复位输入端rst相连接后作为4位地址产生模块的rst端,时钟输入端clk相连接后作为4位地址产生模块的clk端,D触发器dff_16输出第3位地址,D触发器dff_17输出第2位地址,D触发器dff_18输出第1位地址,D触发器dff_19输出第0位地址。
查找表(参考图14)的输入信号为复位信号rst、地址数据addr[16:0]、nmcycle[2]、符号neg;输出信号为lut_data[15:0]。其功能为:当复位信号rst有效时,查找表置数,即查找表项的值置为tanh函数自变量区间所对应的函数值;neg与addr共同形成查找表中表项的索引地址;当索引地址有效时,输出对应查找表表项的存储值lut_data[15:0]。查找表结构如图14所示:查找表主要由33个查找表项组成,粘合逻辑由33个两输入二或门和一个16位D触发器组成;33个查找表项mem_i(i=32…0)从地址高位到地址底位存储值依次置为:
(1.00000)10,(1.00000)10,(0.99999)10,(0.99999)10,(0.99998)10,(0.99996)10,(0.99909)10,(0.99975)10,(0.99932)10,(0.99817)10,(0.99505)10,(0.98661)10,(0.96402)10,(0.90514)10,(0.76159)10,(0.46211)10,(0)10,(-0.50000)10,(-0.10000)10,(-0.15000)10,(-0.20000)10,(-0.25000)10,(-0.30000)10,(-0.35000)10,(-0.40000)10,(-0.45000)10,(-0.50000)10,(-0.55000)10,(-0.60000)10,(-0.65000)10,(-0.70000)10,(-0.75000)10,(-0.80000)10;33个两输入二或门的输出端分别接33个查找表项mem_i(i=32…0)的三态控制端,neg和addr[15:0]分别接17个二输入或门的两个输入端;neg和!addr[15:0]分别接16个二或门的两个输入端接。33个存储单元输出接在一起,但每次只能输出一个值,输出值接触发器dff_20的数据端d,nmcycle[2]接触发器dff_20的时钟端clk,触发器dff_20的输出端q为lut_data[15:0]。
相反运算器(参考图2,图5,图15)的输入信号为浮点加法器的输出数据Y[15:0]、周期控制信号mcycle[5]、复位信号rst;输出信号为NY[15:0]。其功能为:计算输入数据的相反数的补码。相反运算器的结构如图14所示,相反运算器包括数据相反数补码运算器DD2和D触发器dff_21,
数据相反数补码运算器DD2的输入端DIN连接浮点加法器输出的结果,输出端DOUT接D触发器dff_21的数据输入端的d;D触发器dff_21的时钟输入端clk连接mcycle[5],D触发器dff_21的复位输入端rst与外部输入复位信号rst连接,D触发器dff_21的输出端q输出浮点加法器输出结果的相反数。其中数据相反数补码运算器DD2的运算流程参考图5。
本发明可通过配置控制字实现神经网络领域应用最广泛的两种激活函数sigmoid函数与tanh函数的运算,实现结构简单,采用同步时钟设计,便于时序检查与验证,面积小,功耗低,便于在芯片上实现,增强了嵌入式应用的实用性;利用本发明计算神经网络激活函数时,处理流程简单,易于控制,提高了神经网络激活函数计算的效率;该可配置的神经网络激函数的实现装置可根据tanh计算精度需要,方便地扩展地址产生器模块和查找表模块来满足函数精度变换的需求。因此其是嵌入式神经网络处理器激活函数实现的理想结构。
本发明未详细说明部分属本领域技术人员公知常识。

Claims (14)

1.一种可配置的神经网络激活函数实现装置,其特征在于,包括控制器、符号判断模块、范围探测模块、参数寄存器、浮点乘法器、浮点加法器、相反数运算器、地址产生器、查找表、第一选通锁存器和第二选通锁存器;
控制器:根据配置控制信号M的值产生不同激活函数整个运算数据路径中需要的锁存控制信号以及运算完成信号done;
符号判断模块:接收输入的运算数据,判断该数据的正负,如果为正则将该数据输出给范围探测模块、地址产生器和浮点乘法器;否则将该数据的绝对值输出给范围探测模块、地址产生器和浮点乘法器,同时将该数据的符号输出给地址产生器和第一选通锁存器;
范围探测模块:判断接收的数据值处在哪个区间,向参数寄存器发送范围区间标识信号;
参数寄存器:存储用来逼近sigmoid激活函数的一次函数的参数,即一次项系数和偏移量;根据范围区间标识信号选择逼近sigmoid激活函数的一次函数,向浮点乘法器输出该一次函数的一次项系数,向浮点加法器输出该一次函数的偏移量;
浮点乘法器:从参数寄存器模块中提取范围探测模块输出的一次函数的一次项系数,并计算该一次函数的一次项系数与数据值的乘积,输出给浮点加法器;
浮点加法器:从参数寄存器模块中提取范围探测模块输出的一次函数的偏移量,计算来自浮点乘法器的乘积与偏移量之和,并将得到的结果输出给相反运算器和第一选通锁存器;
相反运算器:计算浮点加法器输出结果的相反数,输出给第一选通锁存器;
第一选通锁存器:当输入运算数据的符号为正时,将来自浮点加法器的计算结果选通输出给第二选通锁存器,当输入运算数据的符号为负时,将来自相反运算器的计算结果选通输出给第二选通锁存器;
地址产生器:根据符号判断模块输出的数据值所处的区间,生成17位地址值,作为查找表索引;
查找表:存放每个数据区间所对应的tanh激活函数值,根据地址产生器中的查找表索引查找输入运算数据对应的tanh激活函数值,输出给第二选通锁存器;
第二选通锁存器:根据配置控制信号M的值,选通输出并锁存sigmoid激活函数的运算结果或是tanh激活函数的运算结果。
2.根据权利要求1所述的一种可配置的神经网络激活函数实现装置,其特征在于,M=1表示sigmoid激活函数运算,控制器产生sigmoid激活函数整个运算数据路径中需要的8个锁存控制信号mcycle[7:1];M=0表示tanh激活函数运算,控制器产生tanh激活函数整个运算数据路径中需要的4个锁存控制信号nmcycle[3:1]。
3.根据权利要求2所述的一种可配置的神经网络激活函数实现装置,其特征在于,所述控制器包括D触发器dff_0、D触发器dff_1、D触发器dff_2、D触发器dff_3、D触发器dff_4、D触发器dff_5、D触发器dff_6、D触发器dff_7、D触发器dff_8、与门and21_0、与门and21_1、与门and21_2、与门and21_3、与门and21_4、与门and21_5、与门and21_6、与门and21_7、与门and21_8、与门and21_9、与门and21_10、或门or21_0、or21_1、二输入或非门nor21_0、反向器inv_0和反向器inv_1;
D触发器dff_0、D触发器dff_1、D触发器dff_2、D触发器dff_3、D触发器dff_4、D触发器dff_5、D触发器dff_6、D触发器dff_7和D触发器dff_8的时钟输入端clk连接外部输入时钟信号clk,D触发器dff_0的数据输入端d连接“1”及高电位,D触发器dff_0的输出端q一方面输出周期控制信号cycle0,另一方面连接触发器dff_1的数据输入端d;D触发器dff_1的输出端q连接D触发器dff_2的数据输入端d;D触发器dff_2的输出端q连接D触发器dff_3的数据输入端d;D触发器dff_3的输出端q连接D触发器dff_4的数据输入端d;D触发器dff_4的输出端q连接D触发器dff_5的数据输入端d;D触发器dff_5的输出端q连接D触发器dff_6的数据输入端d;D触发器dff_6的输出端q连接D触发器dff_7的数据输入端d;D触发器dff_7的输出端q连接D触发器dff_8数据输入端d;
反向器inv_0的输入端连接配置控制信号M;反向器inv_0的输出端同时连接与门and21_0的第一输入端、与门and21_2的第一输入端和与门and21_4的第一输入端,D触发器dff_1的输出端q同时连接与门and21_0的第二输入端和与门and21_1的第一输入端,配置控制信号M同时连接与门and21_1的第二输入端、与门and21_3的第二输入端、与门and21_5的第二输入端、与门and21_6的第二输入端、与门and21_7的第二输入端、与门and21_8的第二输入端、与门and21_9的第二输入端以及与门and21_10的第二输入端,D触发器dff_2的输出端q同时连接与门and21_2的第二输入端和与门and21_3的第一输入端,D触发器dff_3的输出端q同时连接与门and21_4的第二输入端和与门and21_5的第一输入端,D触发器dff_4的输出端q同时连接与门and21_6的第一输入端,D触发器dff_5的输出端q同时连接与门and21_7的第一输入端,D触发器dff_6的输出端q同时连接与门and21_8的第一输入端,D触发器dff_7的输出端q同时连接与门and21_9的第一输入端,D触发器dff_8的输出端q同时连接与门and21_10的第一输入端;
与门and21_0的输出端输出信号nmcycle[1],与门and21_1的输出端输出信号mcycle[1],与门and21_2的输出端输出信号nmcycle[2],与门and21_3的输出端输出信号mcycle[2],与门and21_4的输出端输出信号nmcycle[3],与门and21_5的输出端输出信号mcycle[3],与门and21_6的输出端输出信号mcycle[4],与门and21_7的输出端输出信号mcycle[5],与门and21_8的输出端输出信号mcycle[6],与门and21_9的输出端输出信号mcycle[7];
与门and21_6的输出端与或门or21_1的第一输入端连接,与门and21_10的输出端与或门or21_1的第二输入端连接,或门or21_1的输出端一方面输出运算完成信号done,另一方面与二输入或非门nor21_0的第一输入端连接,反向器inv_1的输入端连接外部输入的复位信号rst,反向器inv_1的输出端与二输入或非门nor21_0的第二输入端连接,二输入或非门nor21_0的输出端同时连接D触发器dff_0、dff_1、dff_2、dff_3、dff_4、dff_5、dff_6、dff_7以及dff_8的复位输入端rst;与门and21_5的输出端与或门or21_0的第一输入端连接,与门and21_9的输出端与或门or21_0的第二输入端连接,或门or21_0的输出端输出信号result_clk。
4.根据权利要求2所述的一种可配置的神经网络激活函数实现装置,其特征在于,所述符号判断模块包括数据相反数补码运算器DD1、16位数据锁存器和D触发器dff_9;
数据相反数补码运算器DD1的输入端DIN和16位数据锁存器的输入端d2同时与输入的运算数据连接,数据相反数补码运算器DD1的输出端DOUT与16位数据锁存器的输入端d1连接;
输入运算数据的第11位data[11]同时连接16位数据锁存器的控制输入端ctrl和D触发器dff_9的数据输入端d;
周期控制信号cycle0同时连接16位数据锁存器的时钟输入端clk和D触发器dff_9的时钟输入端clk;外部输入的复位信号rst同时连接16位数据锁存器的复位输入端rst和D触发器dff_9的复位输入端rst;
16位数据锁存器的输出端d3输出输入运算数据的绝对值data_abs[15:0],D触发器dff_9的输出端q输出输入运算数据的符号neg。
5.根据权利要求2所述的一种可配置的神经网络激活函数实现装置,其特征在于,所述相反运算器包括数据相反数补码运算器DD2和D触发器dff_21,
数据相反数补码运算器DD2的输入端DIN连接浮点加法器输出的结果,输出端DOUT接D触发器dff_21的数据输入端的d;
D触发器dff_21的时钟输入端clk连接mcycle[5],D触发器dff_21的复位输入端rst与外部输入复位信号rst连接,D触发器dff_21的输出端q输出浮点加法器输出结果的相反数。
6.根据权利要求4或5所述的一种可配置的神经网络激活函数实现装置,其特征在于,数据相反数补码运算器DD1和数据相反数补码运算器DD2实现流程相同,具体如下:
第1步,记输入端DIN接收的数据为DIN[15:0],计算DIN[15:0]尾数的相反数补码D_MID[13:0],同时进行第2步、第3步和第4步,对D_MID[13:0]进行判断;
第2步,判断D_MID[13:0]是否为0,若是,则进入第5步;
第3步,判断D_MID[13:0]是否溢出,如果D_MID[13]xorD_MID[12]=1即为溢出,若溢出,则进入第6步;
第4步,如果D_MID[13]xorD_MID[12]=0,则进入第7步;
第5步,置D_MID[17:14]为最大的负值,以得到0的正确表示法,同时进行第8步、第9步和第10步,对D_MID[17:14]进行判断;
第6步,D_MID[13:0]右移一位,且指数D_MID[17:14]=DIN[15:12]加1,同时进行第8步、第9步和第10步,对D_MID[17:14]进行判断;
第7步,D_MID[13:0]左移K位,且指数D_MID[17:14]=DIN[15:12]减K,同时进行第8步、第9步和第10步,对D_MID[17:14]进行判断;
第8步,判断指数运算结果D_MID[17:14]是否正向溢出,如果是,则进入第11步;
第9步,判断指数运算结果D_MID[17:14]是否负向溢出,如果是,则进入第12步;
第10步,判断指数运算结果D_MID[17:14]是否在范围内,如果是,则进入第13步;
第11步,如果D_MID[13:0]>0,置D_MID为浮点数最大正值;如果D_MID[13:0]<0,置D_MID为浮点数最大负值,进入第13步;
第12步,设置D_MID[13:0]为0,D_MID[17:14]为-8,进入第13步;
第13步,将18位运算数据D_MID去掉符号扩展位,去掉隐含位,即得到DOUT段输出的16位浮点格式数据DOUT[15:0],其中DOUT[15:12]=D_MID[17:14],DOUT[11]=D_MID[12],DOUT[10:0]=D_MID[10:0]。
7.根据权利要求2所述的一种可配置的神经网络激活函数实现装置,其特征在于,范围探测模块包括浮点比较器fcom_1、浮点比较器fcom_2、浮点比较器fcom_3、反相器inv_3、反相器inv_4、反相器inv_5、二输入或门or21_2、三输入或门or31_0、三输入或门or31_1、D触发器dff_11、D触发器dff_12、D触发器dff_13和D触发器dff_14;
浮点比较器fcom_1的第一输入端连接符号判断模块输出的数据data_abs[15:0],第二输入端连接常数C0,C0为(5.0000)10
浮点比较器fcom_2的第一输入端连接符号判断模块输出的数据data_abs[15:0],第二输入端连接常数C1,C1为(1.0000)10
浮点比较器fcom_3的第一输入端连接符号判断模块输出的数据data_abs[15:0],第二输入端连接常数C2,C2为(1.0000)10
浮点比较器fcom_1的输出端同时与D触发器dff_11的数据输入端d以及反相器inv_3的输入端连接,反相器inv_3的输出端同时与二输入或门or21_2的第一输入端、三输入或门or31_0的第一输入端以及三输入或门or31_1的第一输入端连接,浮点比较器fcom_2的输出端同时与反相器inv_4的输入端以及二输入或门or21_2的第二输入端连接;二输入或门or21_2的输出端与D触发器dff_12的数据输入端d连接;反相器inv_4的输出端同时与三输入或门or31_0的第二输入端以及三输入或门or31_1的第二输入端连接;浮点比较器fcom_3的输出端同时与三输入或门or31_0的第三输入端以及反相器inv_5的输入端连接,反相器inv_5的输出端与三输入或门or31_1的第三输入端连接,三输入或门or31_0的输出端与D触发器dff_13的数据输入端d连接,三输入或门or31_1的输出端与D触发器dff_14的数据输入端d连接;
D触发器dff_11、D触发器dff_12、D触发器dff_13和D触发器dff_14的复位输入端rst与外部输入的复位信号rst连接,D触发器dff_11、D触发器dff_12、D触发器dff_13和D触发器dff_14的时钟输入端clk端连接mcycle[1],D触发器dff_14输出端q输出信号range[0],D触发器dff_13输出端q输出信号range[1],D触发器dff_12输出端q输出信号range[2],D触发器dff_11输出端q输出信号range[3]。
8.根据权利要求2所述的一种可配置的神经网络激活函数实现装置,其特征在于,所述地址产生器包括四个4位地址产生模块addrgen1、addrgen2、addrgen3和addrgen4;
addrgen1的cin端接地,addrgen1的cout端连接addrgen2的cin端,addrgen2的cout端连接addrgen3的cin端,addrgen3的cout端连接addrgen4的cin端;addrgen1、addrgen2、addrgen3和addrgen4的clk端连接nmcycle[1];addrgen1、addrgen2、addrgen3和addrgen4的rst端连接外部输入的复位信号rst,addrgen1、addrgen2、addrgen3和addrgen4的d[15:0]端连接符号判断模块输出的数据;addrgen1的d3[15:0]端接常数(8)10对应的浮点数、d2[15:0]端接常数(7.5)10对应的浮点数、d1[15:0]端接常数(7)10对应的浮点数、d0[15:0]端接常数(6.5)10对应的浮点数,addrgen1的输出端out[3:0]输出地址addr[16:13];
Addrgen2的d3[15:0]端接常数(6)10对应的浮点数、d2[15:0]端接常数(5.5)10对应的浮点数、d1[15:0]端接常数(5)10对应的浮点数、d0[15:0]端接常数(4.5)10对应的浮点数,addrgen1的输出端out[3:0]输出地址addr[12:9];
Addrgen3的d3[15:0]端接常数(4)10对应的浮点数、d2[15:0]端接常数(3.5)10对应的浮点数、d1[15:0]端接常数(3)10对应的浮点数、d0[15:0]端接常数(2.5)10对应的浮点数,addrgen1的输出端out[3:0]输出地址addr[8:5];
Addrgen4的d3[15:0]端接常数(2)10对应的浮点数、d2[15:0]端接常数(1.5)10对应的浮点数、d1[15:0]端接常数(1)10对应的浮点数、d0[15:0]端接常数(0.5)10对应的浮点数,addrgen1的输出端out[3:0]输出地址addr[4:1],addrgen4的cout端输出addr[0]。
9.根据权利要求8所述的一种可配置的神经网络激活函数实现装置,其特征在于,4位地址产生模块addrgen1、addrgen2、addrgen3和addrgen4结构相同,均包括浮点比较器fcom_4、浮点比较器fcom_5、浮点比较器fcom_6、浮点比较器fcom_7、反相器inv_6、反相器inv_7、反相器inv_8、反相器inv_9、二输入或门or21_3、三输入或门or31_2、四输入或门or41_0、五输入或门or51_0、五输入或门or51_1、D触发器dff_16、D触发器dff_17、D触发器dff_18和D触发器dff_19;
浮点比较器fcom_4、浮点比较器fcom_5、浮点比较器fcom_6、浮点比较器fcom_7均具备两个输入端;
浮点比较器fcom_4的第一输入端为4位地址产生模块的d[15:0]端,第二输入端作为4位地址产生模块的d3[15:0]端;
浮点比较器fcom_5的第一输入端与浮点比较器fcom_4的第一输入端连接,第二输入端作为4位地址产生模块的d2[15:0]端;
浮点比较器fcom_6的第一输入端与浮点比较器fcom_4的第一输入端连接,第二输入端作为4位地址产生模块的d1[15:0]端;
浮点比较器fcom_7的第一输入端与浮点比较器fcom_4的第一输入端连接,第二输入端作为4位地址产生模块的d0[15:0]端;
二输入或门or21_3的第一输入端、三输入或门or31_2的第一输入端、四输入或门or41_0的第一输入端、五输入或门or51_0的第一输入端以及五输入或门or51_1的第一输入端相连接后作为4位地址产生模块的cin端;
浮点比较器fcom_4的输出端同时与反相器inv_6的输入端以及二输入或门or21_3的第二输入端连接,二输入或门or21_3的输出端与D触发器dff_16的输入端d连接;
浮点比较器fcom_5的输出端同时与反相器inv_7的输入端以及三输入或门or31_2的第三输入端连接,反相器inv_6的输出端与三输入或门or31_2的第二输入端连接,三输入或门or31_2的输出端与D触发器dff_17的输入端d连接;
浮点比较器fcom_6的输出端同时与反相器inv_8的输入端以及四输入或门or41_0的第四输入端连接,反相器inv_6的输出端与四输入或门or41_0的第二输入端连接,反相器inv_7的输出端与四输入或门or41_0的第三输入端连接,四输入或门or41_0的输出端与D触发器dff_18的输入端d连接;
浮点比较器fcom_7的输出端同时与反相器inv_9的输入端以及五输入或门or51_0的第五输入端连接,反相器inv_6的输出端与五输入或门or51_0的第二输入端连接,反相器inv_7的输出端与五输入或门or51_0的第三输入端连接,反相器inv_8的输出端与五输入或门or51_0的第四输入端连接,五输入或门or51_0的输出端与D触发器dff_19的输入端d连接;
反相器inv_6的输出端与五输入或门or51_1的第二输入端连接,反相器inv_7的输出端与五输入或门or51_1的第三输入端连接,反相器inv_8的输出端与五输入或门or51_1的第四输入端连接,反相器inv_9的输出端与五输入或门or51_1的第五输入端连接,五输入或门or51_1的输出端作为4位地址产生模块的cout端;
D触发器dff_16、D触发器dff_17、D触发器dff_18和D触发器dff_19的复位输入端rst相连接后作为4位地址产生模块的rst端,时钟输入端clk相连接后作为4位地址产生模块的clk端,D触发器dff_16输出第3位地址,D触发器dff_17输出第2位地址,D触发器dff_18输出第1位地址,D触发器dff_19输出第0位地址。
10.根据权利要求7或9所述的一种可配置的神经网络激活函数实现装置,其特征在于,浮点比较器fcom_1、浮点比较器fcom_2、浮点比较器fcom_3、浮点比较器fcom_4、浮点比较器fcom_5、浮点比较器fcom_6、浮点比较器fcom_7工作流程相同,每个浮点比较器工作流程具体如下:
第1步,比较第一输入端输入数据和第二输入端常数:
根据浮点数据格式,添加尾数隐含位,同时扩展一位符号位;
用第一输入端输入数据的尾数减去第二输入端常数的尾数,结果记为dm[13:0];
第2步,比较第一输入端输入数据和第二输入端常数的指数:
扩展一位符号位,用第一输入端输入数据的指数减去第二输入端常数的指数,结果记为de[4:0];
第3步,对尾数比较结果dm[13:0]进行符号判断:
利用如下公式计算sdm:sdm=dm[13]xor dm[12];
sdm为0时,dm[13:0]为正数;sdm为1时,dm[13:0]为负数;
第4步,对指数比较结果de进行符号判断:
利用如下公式计算sde:sde=de[4]xor dm[3];
sde为0时,de[4:0]为正数;sde为1时,de[4:0]为负数;
第5步,比较结果判断,如果sde为0且de[4:0]不为0,第一输入端输入数据大于第二输入端常数,输出为0;如果sde为0、de[4:0]为0且sdm为0,第一输入端输入数据大于第二输入端常数,输出为0;如果sde为0、de[4:0]为0且sdm为1,第一输入端输入数据小于第二输入端常数,输出为1;如果sde为1,第一输入端输入数据小于第二输入端常数,输出为1。
11.根据权利要求2所述的一种可配置的神经网络激活函数实现装置,其特征在于,所述参数寄存器包括四个32位三态控制门和一个32位D触发器dff_15,第j个32位三态控制门的控制信号端连接范围探测模块输出的范围区间标识信号的第j位,j=0,1,2,3;四个32位三态控制门的复位信号端均连接外部输入的复位信号rst,四个32位三态控制门的输出端均与32位D触发器dff_15的数据输入端d,32位D触发器dff_15的复位输入端rst连接外部输入的复位信号rst,32位D触发器dff_15的时钟输入端clk连接外mcycle[2],32位D触发器dff_15的输出端q输出的高16位为一次项系数A[15:0],低16位为偏移量B[15:0]。
12.根据权利要求2所述的一种可配置的神经网络激活函数实现装置,其特征在于,所述查找表包括33个16位三态控制门、33个二输入或门、16个反相器和1个16位D触发器dff_20;
前17个二输入或门的第二输入端均与符号判断模块输出的符号连接,前17个二输入或门中,第k1个二输入或门的第一输入端连接地址产生器生成的第k位地址值,k1=0,1,2,……16;
后16个二输入或门与16个反相器一一对应,后16个二输入或门的第二输入端均与对应的反相器输出端连接,16个反相器的输入端均与符号判断模块输出的符号连接,后16个二输入或门中,第k2个二输入或门的第一输入端连接地址产生器生成的第k2-16位地址值,k2=17,18,19,……32;
每个二输入或门的输出端均与对应的16位三态控制门的第二输入端连接,33个16位三态控制门的第一输入端以及16位D触发器dff_20的复位输入端rst均与外部输入复位信号rst连接,33个16位三态控制门的输出端连接在一起后与16位D触发器dff_20的数据输入端d连接,16位D触发器dff_20的时钟输入端clk与nmcycle[2]连接,16位D触发器dff_20的输出端q输出输入运算数据对应的tanh激活函数值lut_data[15:0]。
13.根据权利要求2所述的一种可配置的神经网络激活函数实现装置,其特征在于,所述第一选通锁存器包括16个结构相同的选通锁存单元;
第p个选通锁存单元包括选择器mux_1、反向器inv_2和D触发器dff_22,选择器mux_1的A输入端连接浮点加法器计算结果的第p位,选择器mux_1的B输入端连接相反运算器计算结果的第p位,选择器mux_1的输出端与D触发器dff_22的d输入端连接,反向器inv_2的输入端以及选择器mux_1的AS端同时与符号判断模块输出的数据符号连接,反向器inv_2的输出端与选择器mux_1的BS端连接;D触发器dff_22的时钟输入端clk与mcycle[6]连接,D触发器dff_22的复位输入端rst与外部输入的复位信号连接,D触发器dff_22的输出端输出第一选通锁存器的第p位输出数据,p=0,1,2,3,……15。
14.根据权利要求2所述的一种可配置的神经网络激活函数实现装置,其特征在于,所述第二选通锁存器包括16个结构相同的选通锁存单元;
第q个选通锁存单元包括选择器mux_2、反向器inv_2’和D触发器dff_23,选择器mux_2的A输入端连接查找表输出结果的第p位,选择器mux_2的B输入端连接第一选通锁存器输出结果的第p位,选择器mux_2的输出端与D触发器dff_23的d输入端连接,反向器inv_2’的输入端以及选择器mux_2的AS端同时与配置控制信号M连接,反向器inv_2’的输出端与选择器mux_2的BS端连接;D触发器dff_23的时钟输入端clk与控制器的周期控制信号连接,D触发器dff_23的复位输入端rst与外部输入的复位信号连接,D触发器dff_23的输出端输出第二选通锁存器的第p位输出数据。
CN201910041332.7A 2019-01-16 2019-01-16 一种可配置的神经网络激活函数实现装置 Active CN109816105B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910041332.7A CN109816105B (zh) 2019-01-16 2019-01-16 一种可配置的神经网络激活函数实现装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910041332.7A CN109816105B (zh) 2019-01-16 2019-01-16 一种可配置的神经网络激活函数实现装置

Publications (2)

Publication Number Publication Date
CN109816105A true CN109816105A (zh) 2019-05-28
CN109816105B CN109816105B (zh) 2021-02-23

Family

ID=66604394

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910041332.7A Active CN109816105B (zh) 2019-01-16 2019-01-16 一种可配置的神经网络激活函数实现装置

Country Status (1)

Country Link
CN (1) CN109816105B (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110414677A (zh) * 2019-07-11 2019-11-05 东南大学 一种适用于全连接二值化神经网络的存内计算电路
CN110610235A (zh) * 2019-08-22 2019-12-24 北京时代民芯科技有限公司 一种神经网络激活函数计算电路
CN111047007A (zh) * 2019-11-06 2020-04-21 北京中科胜芯科技有限公司 一种针对量化后的lstm的激活函数计算单元
CN111860792A (zh) * 2020-08-31 2020-10-30 南京宁麒智能计算芯片研究院有限公司 一种激活函数的硬件实现装置和方法
CN112256094A (zh) * 2020-11-13 2021-01-22 广东博通科技服务有限公司 一种基于深度学习的激活函数装置及其使用方法
CN112612542A (zh) * 2020-12-21 2021-04-06 北京时代民芯科技有限公司 一种新型启动交换芯片的实现装置
CN112734023A (zh) * 2021-02-02 2021-04-30 中国科学院半导体研究所 应用于循环神经网络的激活函数的可重构电路
CN112784957A (zh) * 2019-11-05 2021-05-11 瑞萨电子株式会社 数据处理设备、其操作方法以及程序
TWI755043B (zh) * 2019-09-04 2022-02-11 美商聖巴諾瓦系統公司 硬體中s型函數及包括其之可重組態資料處理器
CN114611682A (zh) * 2020-12-08 2022-06-10 国际商业机器公司 一种用于有用神经网络激活函数的vlsi实现的有效方法
CN115146769A (zh) * 2022-07-20 2022-10-04 杭州颐达软件科技有限公司 一种基于范围可寻址查找表计算tanh函数的数字电路模块
TWI849164B (zh) * 2019-10-31 2024-07-21 韓商愛思開海力士有限公司 用於神經網路的算術設備

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020066046A1 (en) * 2000-10-24 2002-05-30 Chin-Shuing Liu Apparatus for directly connecting to the internet and method thereof
TW201331855A (zh) * 2012-01-19 2013-08-01 Univ Nat Taipei Technology 具自由回饋節點的高速硬體倒傳遞及回饋型類神經網路
CN105987775A (zh) * 2016-07-20 2016-10-05 天津理工大学中环信息学院 一种基于bp神经网络的温度传感器非线性校正方法及系统
CN106022468A (zh) * 2016-05-17 2016-10-12 成都启英泰伦科技有限公司 人工神经网络处理器集成电路及该集成电路的设计方法
CN107003989A (zh) * 2014-12-19 2017-08-01 英特尔公司 用于人工神经网络中的分布式与协作计算的方法和装置
CN107844439A (zh) * 2016-09-20 2018-03-27 三星电子株式会社 支持命令总线训练的存储设备和系统及其操作方法
EP3343463A1 (en) * 2016-12-31 2018-07-04 VIA Alliance Semiconductor Co., Ltd. Neural network unit with re-shapeable memory
CN108564169A (zh) * 2017-04-11 2018-09-21 上海兆芯集成电路有限公司 硬件处理单元、神经网络单元和计算机可用介质
KR20180120009A (ko) * 2017-04-26 2018-11-05 광주과학기술원 인공 신경망에 사용되는 활성 함수의 확률적 구현 방법 및 그를 포함하는 시스템
CN108781265A (zh) * 2016-03-30 2018-11-09 株式会社尼康 特征提取元件、特征提取系统及判定装置
CN108885600A (zh) * 2016-03-16 2018-11-23 美光科技公司 使用经压缩及经解压缩数据进行操作的设备及方法

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020066046A1 (en) * 2000-10-24 2002-05-30 Chin-Shuing Liu Apparatus for directly connecting to the internet and method thereof
TW201331855A (zh) * 2012-01-19 2013-08-01 Univ Nat Taipei Technology 具自由回饋節點的高速硬體倒傳遞及回饋型類神經網路
CN107003989A (zh) * 2014-12-19 2017-08-01 英特尔公司 用于人工神经网络中的分布式与协作计算的方法和装置
CN108885600A (zh) * 2016-03-16 2018-11-23 美光科技公司 使用经压缩及经解压缩数据进行操作的设备及方法
CN108781265A (zh) * 2016-03-30 2018-11-09 株式会社尼康 特征提取元件、特征提取系统及判定装置
CN106022468A (zh) * 2016-05-17 2016-10-12 成都启英泰伦科技有限公司 人工神经网络处理器集成电路及该集成电路的设计方法
CN105987775A (zh) * 2016-07-20 2016-10-05 天津理工大学中环信息学院 一种基于bp神经网络的温度传感器非线性校正方法及系统
CN107844439A (zh) * 2016-09-20 2018-03-27 三星电子株式会社 支持命令总线训练的存储设备和系统及其操作方法
EP3343463A1 (en) * 2016-12-31 2018-07-04 VIA Alliance Semiconductor Co., Ltd. Neural network unit with re-shapeable memory
CN108564169A (zh) * 2017-04-11 2018-09-21 上海兆芯集成电路有限公司 硬件处理单元、神经网络单元和计算机可用介质
KR20180120009A (ko) * 2017-04-26 2018-11-05 광주과학기술원 인공 신경망에 사용되는 활성 함수의 확률적 구현 방법 및 그를 포함하는 시스템

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CHE-WEI LIN,ET AL: "《A digital circuit design of hyperbolic tangent sigmoid function for neural networks》", 《2008 IEEE INTERNATIONAL SYMPOSIUM ON CIRCUITS AND SYSTEMS》 *
吴成均等: "《面向神经网络加速器的近似加法器的电路设计》", 《航空科学技术》 *

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110414677A (zh) * 2019-07-11 2019-11-05 东南大学 一种适用于全连接二值化神经网络的存内计算电路
CN110610235A (zh) * 2019-08-22 2019-12-24 北京时代民芯科技有限公司 一种神经网络激活函数计算电路
CN110610235B (zh) * 2019-08-22 2022-05-13 北京时代民芯科技有限公司 一种神经网络激活函数计算电路
TWI755043B (zh) * 2019-09-04 2022-02-11 美商聖巴諾瓦系統公司 硬體中s型函數及包括其之可重組態資料處理器
TWI849164B (zh) * 2019-10-31 2024-07-21 韓商愛思開海力士有限公司 用於神經網路的算術設備
CN112784957A (zh) * 2019-11-05 2021-05-11 瑞萨电子株式会社 数据处理设备、其操作方法以及程序
CN111047007A (zh) * 2019-11-06 2020-04-21 北京中科胜芯科技有限公司 一种针对量化后的lstm的激活函数计算单元
CN111047007B (zh) * 2019-11-06 2021-07-30 北京中科胜芯科技有限公司 一种针对量化后的lstm的激活函数计算单元
CN111860792A (zh) * 2020-08-31 2020-10-30 南京宁麒智能计算芯片研究院有限公司 一种激活函数的硬件实现装置和方法
CN112256094A (zh) * 2020-11-13 2021-01-22 广东博通科技服务有限公司 一种基于深度学习的激活函数装置及其使用方法
CN114611682A (zh) * 2020-12-08 2022-06-10 国际商业机器公司 一种用于有用神经网络激活函数的vlsi实现的有效方法
US12400112B2 (en) 2020-12-08 2025-08-26 International Business Machines Corporation Efficient method for VLSI implementation of useful neural network activation functions
CN112612542A (zh) * 2020-12-21 2021-04-06 北京时代民芯科技有限公司 一种新型启动交换芯片的实现装置
CN112734023A (zh) * 2021-02-02 2021-04-30 中国科学院半导体研究所 应用于循环神经网络的激活函数的可重构电路
CN112734023B (zh) * 2021-02-02 2023-10-13 中国科学院半导体研究所 应用于循环神经网络的激活函数的可重构电路
CN115146769A (zh) * 2022-07-20 2022-10-04 杭州颐达软件科技有限公司 一种基于范围可寻址查找表计算tanh函数的数字电路模块

Also Published As

Publication number Publication date
CN109816105B (zh) 2021-02-23

Similar Documents

Publication Publication Date Title
CN109816105A (zh) 一种可配置的神经网络激活函数实现装置
Liu et al. A stochastic computational multi-layer perceptron with backward propagation
Dong et al. PLAC: Piecewise linear approximation computation for all nonlinear unary functions
Lin et al. A digital circuit design of hyperbolic tangent sigmoid function for neural networks
Qin et al. A novel approximation methodology and its efficient vlsi implementation for the sigmoid function
CN100578440C (zh) 运算电路及其运算控制方法
RISTONO et al. Design Of Reliable And Efficient Manchester Carry Chain Adder Based 8-Bit Alu For High Speed Applications
CN105913118B (zh) 一种基于概率计算的人工神经网络硬件实现装置
Ortega-Zamorano et al. High precision FPGA implementation of neural network activation functions
Chua et al. A Nonlinear Dynamics Perspective of Wolfram's New Kind of Science Part II: Universal Neuron
Zhao et al. Fully fixed-point integrated digital circuit design of discrete memristive systems
Jalilvand et al. Fuzzy-logic using unary bit-stream processing
US10628543B1 (en) Systems and methods for estimating a power consumption of a register-transfer level circuit design
Perri et al. Parallel architecture of power‐of‐two multipliers for FPGAs
Pan et al. A semi-tensor product based all solutions boolean satisfiability solver
Cheng et al. Super-tsetlin: Superconducting tsetlin machines
Madenda et al. New Approach of Signed Binary Numbers Multiplication and Its Implementation on FPGA
Li et al. Gradient-YOLO: Exploring the integration of gradient architecture into the YOLO network
Simonettaa et al. A new approach for designing of computer architectures using multi-value logic
Du et al. A Low-Power DNN Accelerator With Mean-Error-Minimized Approximate Signed Multiplier
Dakhole et al. Multi-digit quaternary adder on programmable device: Design & verification
Zhou et al. Approximate comparator: Design and analysis
Tunheim et al. An all-digital 8.6-nJ/frame 65-nm Tsetlin machine image classification accelerator
CN212569855U (zh) 一种激活函数的硬件实现装置
Ersoy et al. Realization of artificial neural networks on FPGA

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant