読者です 読者をやめる 読者になる 読者になる

Thanksgivingの成果

これだけ安いと普段買うのがばからしくなるので、そこそこにしておいて欲しい

 

f:id:natsutan:20151130072607p:plain

今日の進捗

長門パイプラインシステムがとりあえず動くようになった。

(add-load-path "../../src/" :relative)
(use npsv)

; initialize
(npsv-initialize! "npsv_top")

; instancation
(define inp (make-inmem-from-file "./setting/inmem.scm"))
(define sinrom (make-rom-from-file "./setting/sin.scm"))
(define outp (make-outmem-from-file  "./setting/outmem.scm"))

; wire connection
(connect inp sinrom)
(connect sinrom outp)

; output
(make-all-rtl "./output/rtl")
(make-initialize-file inp)
(make-top-testbench "./output/tb")
(make-dataflow)

こんな感じでschemeを書くとVerilogを出してくれる。

データフロー図では、データ入力用のメモリと、ROM引きのsin関数、データ出力用のメモリが接続されている。データ入力用のメモリとROMのアドレスが直結できないので変換のモジュールが自動的に入る。

f:id:natsutan:20151129155516p:plain

入力メモリに-4~+4までの値を入れて、sinを求めた結果

f:id:natsutan:20151129155823j:plain

それっぽい。

モジュール間のプロトコルは単純で、データの有効なときはvoがH、処理が終わったらfoがHになる。これを順番に渡していくと、最後のメモリに値が書き終わったときに、最後のfoがHで終了通知になる。

後は、加算とか行列計算とかのモジュールを必要な分だけ作っていけば、複雑な計算で必要な精度の試行錯誤が楽にできそう。

今日の日記

作ったsin関数って、精度が悪くて使い物にならないことに気が付いた。二次の補正くらい欲しい。まあ、精度ひどくても動くところまで頑張ろう

GDG神戸のLTどうしよっかな。

今日の進捗

ポートの意味(ビットの割付)が違うところは、ポート変換が必要。

名前が長いがしょうがない。

f:id:natsutan:20151123183224p:plain

メモリから数値読み出して、sinのROMを引いてメモリに書き込むだけでも、先長い。

今日の進捗

すばらしい

shtaxxx.hatenablog.com

 

早速データフロー図をgraphvizで書くところをぱくった。

f:id:natsutan:20151118153640p:plain