●回路削減しても判定結果が合っているか確認

 図11‐22はシミュレーションを1500usほど走らせたようすです。ANSWERが判定結果で7、2、1、0、4、1、4、9と
正解が続きます。パイプライン化されているので判定結果は100us毎に出てきます



  図11-22 
MNISTの最初の8枚の判定結果。シミュレーションには10時間以上かかった


●judge.vhdのAINにAffine2層目の出力が入る

 図11-23のAINは判定回路の入力(Affine2層目の出力)です。7+1番目が1番大きいので判定結果は’7’になります。これはMNIST画像の最初の1枚です。



  図11-23 Pythonの結果(図11‐26の1行目)と比較してみよう


 図11-24のAIN信号では2+1番目が1番大きいので判定結果は’2’になります。これはMNIST画像の2枚目です。



  図11-24 Pythonの結果(図11‐26の2行目)と比較してみよう


 図11‐25のAIN信号では9+1番目が1番大きいので判定結果は’9’になります。これはMNIST画像の8枚目です。



  図11-25 Pythonの結果(図11‐26の8行目)と比較してみよう


●PythonでもEXCELでもVHDLでも同じ結果になる

 図11-26はPythonにおけるAffine2層目の出力です。1行目はMNIST1枚目、2行目はMNIST2枚目、8行目はMNIST8枚目です。上のシミュレーションと比べてすべての値が
ピタリ一致していることを確認します。

 ビット削減したので以前より各値は小さくなっていますが、かなり余裕をもって正解しています。一番下には正解率がありますが、VHDLにおいてもこの数字(
98.53%)になるはずです



  図11-26 Anaconda jupyter labでPythonを走らせた結果


●使用率は6割強なのでまだ余裕がある

 図11‐27は係数2ビット化後の論理合成結果です。以前より回路規模が2割程度減り、ロジックの使用量が63%となりました。後々回路を追加することを考えると、これくらいの余裕があると安心です


  図11-27 論理合成すると使用率は63%


最初のページへ


目次へ戻る