トップ 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

Diary/2011-7-23

JavaRock

JavaでHDLを書くのがJHDLですが,JavaをHDLに変換したくなったので.
研究ツールのベースにすべく,並列性の抽出化とか,性能とか,そういうのは後回しにして,
まずは,そこそこ使える状態まで実装していきたいところ.

とりあえずLEDチカチカができるようになった...

import net.wasamon.javarock.rt.*;
public class led implements Synthesizable {
	counter c = new counter();
	public boolean led() {
		c.up();
		int v = c.read();
		if (v == 2) {
			c.clear();
			return true;
		} else {
			return false;
		}
	}
	@unsynthesizable
	public static void main(String[] args){
		System.out.println("start.");
		led l = new led();
		while(true){
			if(l.led()){
				System.out.println("ON");
			}else{
				System.out.println("OFF");
			}
		}
	}
}

import net.wasamon.javarock.rt.*;
public class counter implements Synthesizable{
  int counter = 0;
  public synchronized void up(){
    counter++;
  }
  @combination
  public int read(){
    return counter;
  }
  public synchronized void clear(){
    counter = 0;
  }
}

こんなコードを書くと,なあなあなVHDLに変換します.
↓は,できたVHDLコードをiSimでシミュレーションしたところ.


VHDLBlock内の複数ステートをまともに取り扱っていないのが,喫緊の課題.
並行して,演算子とかを増やしつつ,VHDLBLockの複数ステートを取り扱えるようにしなければ.
それが一段落したら,インタンスとか配列とかを引数に取る関数呼び出しとかの実装をする予定.
現状では,引数にプリミティブ型しかとれない...と,ここまで書いて,
引数渡しの方法をいろいろ考えた結果,がっさり削ったんだった.
まずは引数取れるようにしなきゃ.

と,できたー♪といえる日は,もう少し先かもですが,
とりあえず http://sourceforge.net/projects/javarock/ で鋭意開発します.