トップ 一覧 Farm 検索 ヘルプ RSS ログイン

Diary/2011-8-5の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!JavaRock開発日記(3)

[JavaRock|http://sourceforge.net/projects/javarock/]は鋭意開発中なわけですが,↓のようなJavaのコードを書いたら,
シリアル経由でちゃんとリード/ライトできるハードウェア(HDL)を合成できるようになった.
Java配列を置換しているBlockRAMのリードサイクルがずれるバグを発見,修正.
演算子も必要に応じて鋭意追加中.
構文としては,whileを抜けるときにbreak使えるようにしたいけど,
スコープに応じたステートの管理をもう少しきちんと見直す必要がありそう.

そろそろドキュメントとか使い方とか整備するかな.

 import net.wasamon.javarock.rt.*;
 
 public class echo implements Synthesizable{
         rs232c obj = new rs232c();
         byte[] data = new byte[128];
         @auto
         public void test(){
                 obj.write((byte)'>');
                 int i = 0;
                 byte c = 0;
                 boolean flag = true;
                 while(flag){
                         c = obj.read();
                         if(c == (byte)'\n' || c == (byte)'\r'){
                                 flag = false;
                         }else{
                                 data[i] = c;
                                 i++;
                         }
                 }
                 for(int j = 0; j < i; j++){
                         c = data[j];
                         obj.write(c);
                 }
                 obj.write((byte)'\n');
         }
 }

 import net.wasamon.javarock.libraries.*;
 import net.wasamon.javarock.rt.*;
 public class rs232c implements Synthesizable{
 	RS232C_TX tx = new RS232C_TX("66000000", "19200");
 	RS232C_RX rx = new RS232C_RX("66000000", "19200");
 	public byte read(){
 		boolean d_rd = true;
 		while(true){
 			if(d_rd == false && rx.rd == true){
 				return rx.dout;
 			}else{
 				d_rd = rx.rd;
 			}
 		}
 	}
 	public void write(byte data){
 		while(tx.ready == false) ;
 		tx.din = data;
 		tx.wr = true;
 		tx.wr = false;
 	}
 }