5

FPGA 上で動作するニューラル ネットワークを構築しています。パズルの最後のピースは、シグモイド関数をハードウェアで実行することです。これは次のいずれかです。

1/(1 + e^-x)

また

(atan(x) + 1) / 2

残念ながら、ここの x は float 値 ( realSystemVerilog の値) です。

SystemVerilog でこれらの関数のいずれかを実装する方法に関するヒントはありますか?

これらの関数はどちらも複雑であり、浮動小数点値であるという複雑さが増すため、どこから実装を開始すればよいかさえわからないため、これは本当に混乱します。

4

5 に答える 5

0

お気づきのように、型 real は合成可能ではありません。整数型の仮数部と整数型の指数部を別々に操作し、完了したらそれらを結合して、符号を追跡する必要があります。(e^-x) を処理したら、あとは簡単です。

簡単な説明については、このページを試してください: https://www.geeksforgeeks.org/floating-point-representation-digital-logic/

詳細な説明/例については、「浮動小数点デジタル設計」で検索してください。

于 2018-04-16T15:36:37.907 に答える