月別アーカイブ: 2014年8月

FPGAにBrainF**kインタプリタを実装する話

+-><[].の羅列によるプログラミング言語BrainF**kは,使うには苦労しますが,実装するのは簡単です.

というわけで(?),Synthesijerのサンプルとして同梱されている実装の試し方を紹介します.このサンプルは同じソフトウェア(BarinF**kインタプリタのカーネル)がPCでもFPGAでも同じように動作する事例です.

続きを読む

True DualportBlockRAMに変更しました

プログラム中の配列をTrue Dualport BlockRAMに変更し,それぞれのポートをインスタンス内部と外部からのアクセスで使うようにしました.

この修正によって,

Test003.javaの,

t.a[1]=50;// 1 <- 50

のように,インスタンスの配列に直接、値を代入できるようになりました.

この機能は,Synthesijer-1.1から使うことができます.また,1.1では,1.0にあったバグの修正もしています.

メモリをTrue Dualport BlockRAMに変更

Synthesijerでは配列をブロックRAMとして扱っています.

これまでは,Writeポート/Readポートを持ったSimple Dualport Block RAMをインスタンシエーションしていましたが,ローカルとインスタンス外部の両方からアクセスできるように,True Dualport Block RAMに変更しました.

次は,インスタンス外部にポートを引き出せばOK…のはずです.

Synthesijer.Scalaをはじめました

Synthesijerの開発をはじめたときからJavaをHDLにするだけじゃなくて,ClojureかScala”で”簡単にハードウェアモジュールを書きたいと思いつつ手を出せていませんでした.

ここ2,3日の空いた時間を使って,ScalaでUDPTest.scalaのようにかけるようにしてみました.76行目あたりのステートマシンの記述がちょっとお気に入りです.

続きを読む