ズッキーニの味噌煮込みBlog版

コンピュータのこと、食べ物のこと、なんでもないこと、とんでもないこと。

FPGAにデータを送る準備をする

2016年06月25日 15時00分13秒 | 写落ッ子Jr

本業を言い訳にするつもりはないんだが、趣味に没頭するには落ち着いてものを考えるまとまった時間が必要。

週末には買い物やらなにやらで駆り出されることも多いのでますます時間が限られるが今日に限って嫁さんがひとりでプラプラ買い物をしてきたいという。買い物自体はこちらの気分転換にもなるのでいつもは一緒に出かけるんだが、今日はありがたくコテを温めた。

FPGAのスタックマシンにデータを送り込むのはArduinoに任せようと思っているが、コンパイラができる前でも簡単な実験ができるようにDIPスイッチを基板に乗せた。できるだけシンプルに進めるためにデータはばを8ビットで我慢したこともあって、秋月から取り寄せた10芯のフラットケーブルは大変使い勝手がいい。

さて、ちょっと遊ぶかな。(^^)


FPGAはちょっとお休み

2016年06月19日 15時04分33秒 | FPGA

週末にかけて本業が慌ただしくなって、いまも対応中。落ち着いてFPGAと遊べそうにない。

予定ではArduinoに仮実装するFORTHコンパイラのオブジェクト(==ディクショナリ)構造を楽しく考えるはずだったんだけどね。^^;

もちろん、こういう「お戯れ」ができるのも本業あればこそ。頑張って収めなきゃ。


FPGAのスタックマシンに強力な援軍登場か

2016年06月11日 10時21分31秒 | FPGA

組み込み機器の開発にコンサルとして参加させていただいているのはアタシの本業のひとつ。そのクライアントからWi-Fi機能付きの新製品開発について調査依頼が入った。

我が国には技適というものがあり、これを通っていない対象機器は法律上使ってはいけないことになっている。通すには人もお金もかかりそうなので、「技適通ってます」という製品を使うのが大人の対応というものだ。クライアントからのアドバイスもあり、ESP-WROOM-02なるモジュールを試してみることにした。リンク先は秋月電子通商だが、スイッチサイエンスほか数社から発売されている。秋月のこの製品は同社お得意のDIP化基板スタイルで使いやすく、価格も安い。

このモジュールは無手順シリアル通信(I2Cなどほかの通信規格も可能らしいが試していない)を使いATコマンド(懐かしい)で制御するようになっている。そこで使い慣れたArduinoからシリアルでつないで制御してやろうと目論んだ。Arduinoならシールド基板にまとめた方がスマートだよねと、基板や延長用ピンソケットも取り寄せた。ここまではしごく順当だった。

ところが調べていくうちに、このモジュールがArduino互換機になり得ることがわかってきた。Arduino-IDEで開発したスケッチを書き込んでやると、そのまま実行してくれるらしい。つまりWi-Fiモジュール付きのArduino互換機になるのだ。その代わりスケッチがシステムを完全に上書きしてしまうようでATコマンドは使えなくなるというが、Arduinoとしてプログラミングできるならいらんわ、そんなもん(強気)。

そこで方針変更して写真のような実験機を組み立てた。小型のブレッドボードの上にWi-Fiモジュールと、それと通信するためのUSB<-->シリアル変換基板(これも秋月電子)、それにプルアップ、プルダウン用の若干の抵抗とモード変更ならびにリセットのためのタクトスイッチを乗せてある。Arduino-IDEで開発したスケッチをこのWi-Fiモジュールに書き込むにはそれなりの準備とステップが必要なんだが、それは興味があればGoogle先生に聞いてほしい。念のために言っておくが、明らかに間違ったことを書いていたり、逆に自明なこととして肝心なことを書いていない情報もままある。こうしてできた例がここにもあるので、うまく動かなかったら情報もとより自分の勉強不足と若干の不運を嘆くがいいぞ。うにゅ。(^^)

さらに珍しくお節介をすると、書き込み時のモード切り替えを忘れないこと。Wi-Fiモジュールに与える3V3の電源は少なくとも300mA以上の容量を持っていること。電源ラインに0.1μF程度のパスコンを入れておくこと。あとはふだんの行いに気をつけておくこと。もちろんこれは冗談だ。

いまこの実験機の上でArduino-IDE上で開発した割り込み型のLチカアプリが動いている。割り込み周りはCPUがUNOなどとは違うので、独自の仕組みを組み込む必要がある。そういうところは面倒だが、UNOの8bitと比べてこのWi-FiモジュールのCPUは32bitだという。いつも気になるRAMエリアはUNOが2KBほどなのに比べて50KBも使える。もちろんコードエリアも数百KBという広大さだ。Arduinoでの開発で苦労していた人たちは、気絶しないように注意しようね。アタシも初めて見たときはめまいがした。^^;

そんなことで、Arduinoにコンパイラを仕込んでFPGAスタックマシンを制御しようと思っていたものを、このWi-Fiモジュールを使うことに決めた。メモリ空間が広いしWi-Fiも使えるしスケッチレベルでArduino互換機だ。どれもスタックマシンとは関係ないような気がするが、気にしないことにする。あぁそうだよ、単なる新しい物好きだよ。

I/Oピン数が少し少ないので、8bitパラレルでスタックマシンにデータを送り込むところは再検討かも知れないなぁ。それはそれでまた、楽しい。(^^)

 


FPGAのスタックマシンはArduinoとつながるか

2016年06月04日 11時09分55秒 | FPGA

いつもの週末が来た。そらま来るわな、フツー。(^^)

目が覚めてからずっと、このFORTHマシンのことをずっと考えていた。これは週末恒例だ。アタシはいつでも高齢だ。

\(・_\)ソレハ(/_・)/オイトイテ

既に書いているが、最終的な形態はMAX10にAltera提供の汎用CPUコアNiosⅡ/e(無償版)をコンフィグレーションして、あわよくばその機能のひとつとしてスタックマシンを組み込んでしまおうという目論見だ。つまりコンパイラを実装する汎用CPUがスタック操作命令群を持った状態。これが理想であり、最終形態。

しかしFPGA入門者にはNiosⅡのコンフィグだけでも荷が重い(単なる苦手意識なんだろうが^^;)。それに、FPGAについてまだいろいろ試してみたいことがあるから、そっちに時間をかけたい。そこで当初ちょっと考えた、「ArduinoをNiosⅡの代わりに使う」という企みが鎌首をもたげる。

構想を練ったりアイデアを試してみたり、またオブジェクトの構造を考えるのにArduinoはお手軽だ。デジタルI/Oポートがたくさんあるので、8bitデータにハンドシェーク用2bitで合計10bitは楽に取れる。だからArduinoでコンパイルをやってFORTHのオブジェクトコード(Threadedコードのことだ(ならそう書けよ(うるせーよ)))をMAX10のスタックマシンとハンドシェークをやりながら送り込んでやるというのはできそうだ。

一般的なThreadedコードはFORTHディクショナリの実メモリ上のアドレスを指しているんだが、MAX10の方はハードウェアなので「実メモリ上のアドレス」という概念が馴染まない。配列のインデクシングがそれに変わるので、オブジェクトが一段抽象的になる。この辺りも含めて、ちょびっと構想を練ってみたい。

------- *

ここで言っている「ハンドシェークの2bit」というのは、MAX10からArduinoに「いまデータ送っていいっすよ」という1bitと、ArduinoからMAX10に「データの用意ができたから読んでね」という1bitのことだ。

つまりArduinoはMAX10からの送信可信号を受けてデータをデジタルポートにセットし、MAX10に受信可信号を送るという仕組み。MAX10にシリアル通信機能を実装すればいいんだが、せっかく使い慣れたArduinoを持ち出してきたのでこの方が楽だからね。