- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!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;
}
}