2019年06月02日

CLE-215+に使えるサンプルのプロジェクトの罠w

FPGAが、そこそこ使えるようになって1か月

暗号アルゴリズムへの制御をするためのGPIOを設定しているのに、PC側から、どうしてもアクセスできない
(FPGAの内部からはアクセスできる)

PCIexpress の仕様を見ながら悩んでいたが、どうやらサンプルプロジェクトがそのままでは動かないようだ

xilinx のxdma IPで、axi-lite をつなぐ設定にすると、PCIのメモリ空間が設定され、BAR0が user, BAR1 が dma 用となる
ポイントは、xdma IP の PCIe: BARs, PCIe to AXI Lite Master Interface, PCIe to AXI Translation の値と Address Editor で表示される値を合わせること

AXI Interconnect は、Address editor の値にしたがって、要求を slave デバイスへ流すのだが、xdma でTranslation 値をサンプルのままにしておくと、アドレスの上位が0 になっているので、user 空間へのアクセスが、0番地となる

そりゃまぁ、不定値参照で、変な値になるわな

以下は、やっとたどり着いた正しい動作
2nd.png


長い戦いであった
posted by とーふ at 10:24| Comment(0) | FPGA

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