2019年05月19日

HLSしたIPは export IPしてから組み込む

自分用メモ

HLSした出力の RTL をそのまま vivado に読み込んでも組み込みはうまく行かない
Vivado HLS 側で、Export  RTL するのが必要(赤枠)
その際、AXI Lite-S に設定したときは、青枠の部分でオフセット確認できる

20190519-174734.png

Vivado では、ExportしたIPを組み込むため、IP Catalog に登録する(赤枠)
20190519-174723.png


posted by とーふ at 17:57| Comment(0) | FPGA

2019年05月18日

PCIeを使うFPGAをプログラムしたとき、デバイスを認識しない場合

以前は、FPGAのロジックを修正してプログラムした後、デバイスマネージャで 無効/有効 をすれば、
その場でテストできた
でも今は、デバイスドライバがエラーになった

Windwos10 のせいかなぁ。サーバマシンのせいかなぁ。
といろいろ悩んでいたが、初期のころとは別の CLE-215 を使っていたのが原因

今使っているCLE-215は Tribus のマイニングソフトを書いたもの
その前に使っていたのは 自分のFPGAプログラムをテスト用にEEPROMに書き込んだもの

どうやら、電源投入時に PCIexpress のリンクが確立したあと、 BAR や64/32bit のモードを変えたFPGAロジックを動かそうとすると、デバイスマネージャの 無効/有効 じゃ認識できないようだ。

それどころか、電源を入れた状態で再起動すると、マシンが暴走するオマケつき

やれやれ

posted by とーふ at 14:21| Comment(0) | FPGA

2019年05月12日

mingw32 で windows の デバイスドライバを呼び出す

yespower (MinGW32前提)と xilinx xdma(windowsのドライバ) を結合するためのメモ

1. ubuntu for windows の準備
 (1) コントロールパネル - プログラムと機能 - Windows の機能の有効化または無効化
  windows Sybsystem for Linux を入れる
 (2) Microsoft Store から ubuntu を入れる

 (3) ディレクトリ変更
      /etc/passwd のユーザの ホームディレクトリを変更 /mnt/c/home/build とか

 (4) パッケージ更新
     apt update; apt upgrade 

2. yespower の ビルド
  README に書いてある通りに実行
  Cross Compile for Windows 64bit, using Ubuntu

3. FPGAのXDMA 用DLLを準備
 (1) MSVC 2015 で xilinx の xdma ソースをビルド
 (2) xdma のドライバを呼び出すためのラッパ DLL 作成用プロジェクト追加
wrapper.def
 LIBRARY WrapLib.dll
 EXPORTS
  init_xdma @1
  exit_xdma @2
  test_xdma @3

wrapper.h
 #pragma once
 extern "C" int __cdecl init_xdma();
 extern "C"  void __cdecl exit_xdma();
 extern "C"  void __cdecl test_xdma();

wrapper.cpp
 simple_dma.c をほぼコピペ

 (3) DLL プロジェクト修正
 プロパティ キャラクタセットを Not Set

 (4) buildしてコピー
  完成した WrapLib.dll WrapLib.lib を cpuminer フォルダにコピー

4. yespower と結合
 (1) makefile
   LIBS = WrapLib.lib

   (2) cpu-miner.c
    
__declspec(dllimport) int __cdecl init_xdma();
__declspec(dllimport) void __cdecl exit_xdma();
__declspec(dllimport) void __cdecl test_xdma();

以上

posted by とーふ at 14:04| Comment(0) | FPGA

2019年05月09日

CLE-215 開発に流用できる Vivado プロジェクトが更新されてた

github をのぞいたら15日前に更新されていた

今までは、Vivado 2018.2 が必須だったけど、Vivado 2018.3 用のプロジェクトが最初からダウンロード可能
また、PCIの識別IDが 215+ から NITE に変更w

わかりやすくなった一方、TBDとなっていた Programming the Flash の項目が、丸ごと消えた。
windows から書き換えるツールのソースが提供されるのを期待してたけど、無理ぽい
現状は、書き込むためには、JTAG必須です

posted by とーふ at 21:53| Comment(0) | FPGA

2019年05月05日

暗号アルゴリズムの一部を高位合成したら遅くてビックリ

CPU向けの yespower をFPGA化したらワンチャンあるか?
と思ってやっとこ一部を高位合成した(高位合成:C言語でFPGA回路を記述すること)

smix という関数が主に時間がかかり、内部は smix1_1, smix1_2, smix2_1, smix2_2 と4段階ある。
さしあたり、smix1_1 の部分を試した。

でも結果を見ると、0.3ms もかかるという驚きの遅さ
CPUだと1スレッドで 0.5kH/s だから、smix すべて実行しても 2ms で終わっちゃう
勝負にならない

どうやらメモリコピーが予想以上に重いのと、
j = wrap(integerify(X, r), i);
のように、実行時にデータを参照する箇所があるので、一度に実行するような回路に展開できないようだ。

なかなか大変だ
20190505-060437.png続きを読む
posted by とーふ at 06:23| Comment(0) | FPGA