原创 sigmoid函数基于LUT的FPGA实现

2013-12-3 09:50 5620 30 30 分类: FPGA/CPLD 文集: FPGA相关

在神经网络中,经常以sigmoid函数作为激励函数。sigmoid函数的实现主要有以下几种方法:泰勒级数展开、分段多项式逼近、LUT(查找表)法、以及分段多项式与查找表结合。

其中,查找法实现起来比较简单,几乎可以实现任意精度(精度越高,消耗的硬件资源越多)。下图是文献【1】给出的一种LUT实现方式。

s_function.jpg
它的寻址公式如下:
 
adder.jpg
adder(x)为乘法器输出的地址。x为输入变量。max(x),min(x)分别为x定义域的最大最小值。 n为寻址深度。
 我要实现的函数为logsig函数。x的定义域我定义为[-6,6],即max(x)=6,min(x)=-6.因为当x<-6时,logsig(x)约等于0.x>6时,logsig(x)约等于1.寻址深度我定义为10,即n=10.
问题:
1、输入输出的位宽如何设置(输入输出均含小数。整数部分和小数部分各设置多少位)?
2、仿真时,如何观察结果是否正确?(modlesim中不能将数据设置为小数,quartus ii 中,只能设置成(-1,1)的小数,而x的取值范围为[-6,6].)
 
文献【1】:数字神经元网络的实现与分析研究 ,时瑀。

文章评论0条评论)

登录后参与讨论
我要评论
0
30
关闭 站长推荐上一条 /2 下一条