Diary/2011-8-5
JavaRock開発日記(3)
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; } }