2015年5月5日火曜日

ubuntuで作ったsynthesijerのテストプログラムをminiSpartan6+で動かす

Synthesijer とはJavaのコードからvhdのコードまたはverilog hdlのコードを生成する高位合成言語です。
試行錯誤の結果、動作確認まで成功しました。
やり方を共有します。

全体像


  1. Java8の設定
  2. syntesijerのダウンロード
  3. Javaからvhdを生成
  4. 生成したvhdをISEのプロジェクトに追加
  5. ucfファイルを設定
  6. bitファイルの作成
  7. bitファイルの書き込み
  8. 動作確認


Java8の設定

下記のコマンドでJava8をインストールします。
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer

Java8 に切り替えます。
sudo update-java-alternatives -s java-8-oracle

Javaのバージョンが8になっていることを確認します。
java -version


synthesijerのダウンロード

下記のページからsynthesijerをダウンロードしてください。
Synthesijer Files

今回はsynthesijer-20150426.jarを使います。


Javaからvhdを生成

Test.javaを作成します。

Test.java
public class Test{
  public boolean flag;
  private int count;

  public void run(){
    while(true){
      count++;
      if(count > 5000000){
        count = 0;
        flag = !flag;
      }
    }
  }
}

下記コマンドでTest.vhdを生成します。
java -cp synthesijer-20150311.jar synthesijer.Main Test.java

Test.javaと同じフォルダで、Top.javaを作成します。

Top.java
import synthesijer.rt.*;

@synthesijerhdl
public class Top{
  private final Test test = new Test();

  @auto
  public boolean flag(){
    return test.flag;
  }

  @auto
  public void main(){
    test.run();
  }
}

下記コマンドでTop.vhdを生成します。
java -cp synthesijer-20150311.jar synthesijer.Main Test.java Top.java


生成したvhdをISEのプロジェクトに追加

まず、ISEのプロジェクトを作ります。
ISEの設定がまだな方は、こちらが参考になるかもしれません。
ubuntuからminiSpartan6+にテストプログラムを送信する

File -> New Project
今回は「SynthesijerTest」という名前のプロジェクトを作ります。

プロジェクトのフォルダにTest.vhdとTop.vhdをコピーしただけでは、ISEがファイルを認識してくれません。
そのため、下記の手順でファイルを追加します。

Project -> New Source


VHDL Packageを選択して、ファイル名にTestと入力します。

Test.vhdがISEで作られます。


SynthesijerTestのTest.vhdを先ほど作成したTest.vhdと置き換えます。
cp (path for vhd from java)/Test.vhd (path for ISE projects)/synthesijerTest/

Top.vhdも同じように作成します。


cp (path for vhd from java)/Top.vhd (path for ISE projects)/synthesijerTest/

ucfファイルを設定

HierarchyのTopを選択した状態で、Source -> Source Properties


View AssociationをImplementationにして、Applyを押した後にOKを押します。

Project -> New Srouce -> Implementation Constraints Fileを選択し、ファイル名をminiSpartan6とします。

下記内容を記述します。

miniSpartan6.ucf
NET clk         LOC ="K3";
NET flag_return LOC="P11";

他のピンを割り当てたい場合は、データシートから期待するピンを探します。
miniSpartan6+_Rev_B.pdf

bitファイルの作成

Process -> Implement Top Module

うまくいくと、warningを出しつつもProcessが成功します。

Generate Programming Fileをダブルクリックして、bitファイルを作成します。

bitファイルの書き込み

ISEプロジェクトとして作成したsynthesijerTestのフォルダまで、コンソールで移動します。
cp (path for ISE projects)/synthesijerTest/

xc3sprogでspartan6に書き込みます。
sudo sudo xc3sprog -c ftdi Top.bit


動作確認

チッカチッカと0番のLEDが点滅していたら成功です。


以上です。

参考

0 件のコメント :