基于FPGA实现BP神经网络模型(Verilog)这篇文章。针对使用代码时出现的一些问题,对生成脚本python代码的一些改正,而且这篇代码中转换定点数的过程并没有写明白。但是大佬的最后转变出来是对的,所以就修改一下大佬贴出来的脚本生成源代码:
def dec2bin(dec_num, bit_wide): #
if dec_num >= 0:
_, bin_num = bin(int(dec_num*(2**bit_wide))).split('b')
if len(bin_num) >= bit_wide:
bin_num=_+bin_num #加上符号位
else:# 数值超出bit_wide长度所能表示的范围
bin_num = _+bin_num.rjust(bit_wide, '0') #加上符号位且用0补全位数
else:
_, bin_num = bin(int(2**bit_wide + dec_num*(2**bit_wide))).split('b')#转换定点数并转换成为二进制
if len(bin_num) >= bit_wide:
bin_num='1'+bin_num #加上符号位
else:# 数值超出bit_wide长度所能表示的范围
bin_num = '1'+bin_num.rjust(bit_wide, '0') #加上符号位且用0补全位数
return bin_num
FPGA定点数的转换机制可以参考这篇文章FPGA浮点小数与定点小数的换算及应用,讲得很清楚。