ScalaでFPGAプログラミング

ScalaFPGAプログラミングするという話。

KernelVM Kyotoでこのネタで発表したときのスライドはここ。 chisel - Google スライド

適当にLEDでカウンタを回すのん。ターゲットはDE0nanoなのん。

  1. build.sbtとLED.scalaを書く

  2. sbt

  3. run LED --backend v

  4. 出てきたVerilogのモジュールを食うVerilogのコードを書く。DE0nanoのボタンはアクティブローなのを思い出す。

  5. Quartus IIに4のファイルたちを食わせる。出てきたファイルのうち、`ifndef SYNTHESISのブロックはビルドが通らないから削る。これ地味にウザいんでなんとかできねえかな。

  6. 適当にピンを指定する。

  7. 焼く。

gistf91bcd2985c5b0cfe720 カウンタを眺めておしまい。

松買え

松の板材(400x1800x18)を買ってアパートにおいた。本棚と本棚の上に架けて、立ち飲みバーのカウンターみたいな高さになってる。

足疲れるから足高な椅子を買うか本棚を殴って縮めるかしようと考えている。

ところで部屋が狭いので、どんどん松の微小粒子が放出され、めちゃくちゃ薫りだかい感じになっている、帰るたびに匂いが強くなっており、大変よい。

みんなも松の新しめの何かを適当に買ってきて部屋に置くといいと思う。

Arietta G25について

多めに買ったら見事余ったので、紹介記事を書こうと思いつつ書いてませんでした。

友達に売りつけたら、紹介記事を書いてくれていた(万雷の拍手!) (主体の新旗手に讃えあれ!) (人民の希望の新星だ!)(白頭山の雷のように一夜で偉業を成し遂げた!)ので、紹介します。

あと、まだまだ余ってるんで、言ってくれたら個人で一個輸入して買うよりは安く売ります。 具体的な価格は僕に直接問い合わせてください。 おわり。(手抜き)

下に彼の記事を貼っておきます! ↓↓↓↓↓↓↓↓↓↓↓↓↓↓

Arietta G25 - Hatena Blog細胞

Typing some customized alphabets like ñ or ḍ with UIM

If you are linux user, and have started to learn Sanskrit, Arabic, Turkish, Spanish, German or some other languages using "customized" alphabets like which are with dots below or accent marks on textbook and are wishing to take a note with your laptop, you can type such alphabets with UIM.

The code pasted below is a lisp code but nothing is difficult. This is just a definitions list. Also there are comments to show what sequence you need to type that.

What you have to do is just add m17n-latn-post in input method list on UIM. You can access the list with config button on uim-toolbar-gtk3 or something else.

I added some letters with dot below. So If you have to type them, tweak your code probably on /usr/share/m17n/latn-post.mim as code below.

もしあなたがLinuxユーザで、かつサンスクリット語アラビア語トルコ語、スペイン語、ドイツ語のような、アクセント付きのアルファベットを教科書に使っている言語を学ぼうと思って、コンピュータでそのノートをとりたいとき、UIMでそれができます。 そのタイプシーケンスは下に示すとおりです。m17n-latn-postをUIMのリストに登録すればほぼ完成です。ドットが下についている文字は僕が追加したので、デフォルトでは動かないと思います。 下のコードをパチって/usr/share/m17n/latn-post.mimに追記すればいいです。

m17n-latn-post

Convert String into Int in Haskell

There is well-known function read :: Read a => String -> a. Many blogs tell you to use "read" to convert string to number or something else (if it's a instance of Read class).

There are 3 problems.

  • Prelude Exception is told obsolete. use Control.Exception instead.
  • "read" produces Prelude.Exception.
  • In many case you are not sure you feed good stuff to "read".

In that case, use readMaybe :: Read a => String -> Maybe a. If you are not sure about Maybe, you should learn for your hereafter.

min-caml/SPARC

今はmin-camlはx86に対応しているんだけど、もともとはSPARC専用コンパイラだった。 そういうわけで今回はmin-camlが吐いたコードを適当にSPARCの上で走らせます。

はじめに

DigilentのAtlysが都合により手元にあったからこれを使いますけど、別にXilinxが好きなわけではなし。

とにかく以下を見よ

hardware setup

  1. install Xilinx ISE or something like so
  2. $ export XILINX=/opt/Xilinx/14.4/ISE_DS/ISE
  3. $ source $XILINX/../settingsXX.Xsh
  4. enter the directory named designs/leon3-${vendor}-${board}
  5. see, talk, and obey make's output

とにかくRTEのここでも読みなさい。

software setup

BCC manualを読みなさい。

build min-caml

$ git clone git@github.com:esumii/min-caml.git
$ cd min-caml
$ ./to_sparc
$ make

ここで、makeが失敗しちゃいます。これは、SPARCでのself-hostingを前提に走るからです。しかし、min-camlコンパイラ自体は完成していることでしょう。 以下、ただのハックです。きちんとやった人は私に教えること(任意同行です)。

min-caml as cross-compiler

$ mkdir test/cross-test
$ ../../min-caml ../fib # - ☆
$ cp ../../libmincaml.S .
$ cp ../../stub.c .
$ sparc-elf-gcc libmincaml.S stub.c fib.s -lm 

☆で、fib.sが生成されることを確認すること。これが一番あなたがよみたかったものですよ。 これで生成されたバイナリはgrmonから食わせて走らせることができます。

こんなかんじ:

sp = 0x47f0bd28, hp = 0x40012690 832040

たねあかし

float.cで依存している、caml_copy_int32のシンボルが見つからないので、/usr/lib/ocamlを食わせたりしても、とうぜんundefined-refernceとなりますから、今回は整数を相手にしました。 OCamlSPARC向けにコンパイルしてパチってくればよろしいはずだが、意外と面倒くさそうだからやりません。 やったら教えてください。

レスコー

なんかさあ、つらいことかんがえちゃったり、それを考えたくなくて昼ねてたら昼寝るくせがついちゃって、そのせいなのか夜眠れなかったり、いろいろあるよね。

こうやってずっとなにか胸が疼いたり、ずっとなにかちょっとここには書きたくないようなことを考えちゃって落ち着かなくなったり、それを表に出さないようにしてたりして、それでもこういう話になるとたまに激しちゃったりして、なんかさあ、もうこれが普通だって思ってて最近まで忘れてたんだけど、ちょっと健康!ってかんじじゃないんだなぁ。

お医者さんは、夜しっかり眠れば昼も起きてられて、ゆきだるま式によくなるっていってたけど、お医者さんの出したデパスはあんまり効いた気がしないし、でも夜ねれないのだけはほんとになんとかしなくちゃって思う。

実はさ、授業にもまともにでれてないんだよね。授業に向かう一歩がさ、幸せに近づいてるのかなってかんがえちゃう。戻りたい。いや、ぜんぜんそうじゃなくて、単に気力がもう他の事のためにいっぱいいっぱいになってるのかも。

よくわかんないけど、でも夜寝るべきなのだけはきっと確かなんだと思う。でもお医者さんのおくすりは、落ち着かないのをちょっと鎮めてくれてるきはするけど、きっとブラセボな気がする。まあ効果があるならなんでもいいんだけど、とにかくおやすみするのに、もっと効くおくすりがあって、友達に教わったんだけど、けっこういいかもしれない。

レスタミンコーワってゆう、アレルギーのおくすりなんだけど、副作用でねむくなるんだよね。 これを適宜いっぱいのむ。成分はドリエルと一緒なんだけど、レスコーのほうが薬価がやすいんだ。

途中でおきちゃったりもするけど、すぐねればまた寝れるし、抜けがわるいのが欠点だけど、まあ、のんでるのんでる。

いまは、耐性ついちゃったらやだなーとか、夜寝れても昼何も考えないためにねちゃうっていうのはまだあんまりなおってないなーとか、そういうことをかんがえて茶色いビンを蛍光灯に透かして眺めたりしてるんだ。