goo blog サービス終了のお知らせ 

組み込まれたエンジニア

我輩は石である。名前はまだ無い。

ポケコン、USB通信ケーブルを作る

2009-11-24 21:22:00 | Weblog
秋月電子のFT232RL基板(通販コード:K-01977)とL型ピンヘッダを用いて、ポケコン用のUSB通信ケーブルを作った。

結果として安定稼動しているが、教えていただいた参考リンクにあったシャープの旧モデルの回路図で少々はまった。

普通、GNDが+5Vで、VGGが0Vとは読まないよなぁ。。
VGGと書いているのをVCCだと読み間違え、電源を逆につないでいた。
(壊れなくて良かった)

FTPROGをダウンロードし、インタフェース信号を負論理に変更し、TeraTERMで接続すると、無事に通信可能である。

ファイルのアップロード時にCtrl-Zを入れないと通信が終了しないのはご愛嬌だが、これで、PCでファイルを作成可能なのはうれしい。ROMダンプをPCに送れば、解析が必要になった場合には、逆アセンブルもできる。

送信割込みを使うと、約1mSのタイマを作れるなぁ。。(精度がないから制御には使えないけれど)などと、考えながら半田付け。

送信・受信のピンを逆にしたり、いろいろあったけれど、とりあえず完成。

ポケコン(PC-G850VS)来る

2009-11-21 09:58:21 | Weblog
武善さんから、ポケコンが到着した。

え~っと、これが入るポケットってどんなんよ?(これから冬場だからコートのポケットには入るかもしれないけど 

早速、マニュアルを見ているけれど、興味深い機能が多い。

ただ、やりたいことをするには、時間を計る機能が必要なのに、これがポケコンのマニュアルからはどうしても見つからない。

ネットで検索すると、IPポート 14H が1秒タイマらしい。この周期をプログラムを使って測ってみると、(ストップウォッチがないので厳密じゃないけど)、大体、1秒周期で、デューティーは50%になっているみたい。

これを使えば、できないわけではないけれど、ポーリングしないといけないし、ちょっと1秒というのは、コンピュータには長すぎないか?

このタイマを動かすためにはタイマ割込みが内部で使われているはずなので、タイマ割り込みをトラップして、コールバックルーチンを呼び出すように出来れば、やりたいことができるはずなんだけれど、どうしたものやら。。。

タイマはBIOSが動かしているのだろうから、メモリをサーチして、14Hに出力しているルーチンのあたりを逆アセンブルして眺めてみるのがいいか?

追記:簡単なCのプログラムを作り、因みにサーチして探したら、8988番地に見つかった。
   IN A,14h
   RRA
   JNC 88C4
   OUT 14h,A
という感じになっているので、この辺りで処理していることは間違いなさそう。う~む、ディスアセンブラが欲しいところですね

普通に考えれば、タイマ割込みなんだから、割込みベクトルあたりを探せば見つかりそうだけれど、0番地からダンプして見ている限り、RST 30H, RST 38H以外のエントリはなさそう。

これだけ長く世の中に愛されているポケコンだから、さぞかし解析も進んでいるかと思いきや、ネットで検索にかかるのは、あまり深い話が載っていないような気がする? 学販専用などと言わずに、ちゃんと使えれば楽しいのだからもっと積極的に売ってみてもいいような気がするのだ。

ところで、教師用マニュアルってどうやったら入手できるんでしょうね?

ファイルディスクリプタリーク

2009-11-14 16:57:14 | Weblog
sfl2vl linux non-profit版のライセンスチェックで、socketのクロースを忘れるミスがあった。お粗末。

これ、ディスクリプタリークになるのだけれど、debianで動かしているマシンでは、なぜかsocketがstraceに出てこなくて発見が遅れた。ubuntuではsocketが出ていたのだけれど、さっと眺めただけなので、きちんと追求してなかった。

商用版、Windows版、MacOSX版は、ライセンスチェックルーチンの通る場所が異なり、問題なし。

ポケコン

2009-11-12 09:45:13 | Weblog
QWERTYキーボードを備え、Cとアセンブラが使えて、IOポートを持っている乾電池で動くマシンなんてのが、未だに売っているんですね~

シャープ:PC-G850VS

これで外部との通信インタフェースを持っていたら完璧なんだけれど、IOポートがあるから、自分で作れということ?。
SDカードインタフェースくらいなら簡単に作れそうなので、試してみる価値は多いにありそうだ。
(詳細情報がHPには出ていないので、どこまで使えるのか分かりませんが。。)

NSL:論理演算

2009-10-31 08:29:18 | Weblog
C言語では、ブール演算と、論理演算(条件判定などに使う)を分けている。
これはCの「真」「偽」の判定が、「0以外」「0」となっていて、偽の反転は真だけれど、真の反転は偽にはならないという事情から必須。

でも、論理回路だったら、論理演算とブール演算、どちらも1ビットの信号で行なえるので、分ける必然性はほとんどないので、SFLでは分けていない。

一方、Verilogユーザから、論理演算をサポートして欲しいという要望があり、それ自体は大した手間ではないので、NSLで「!」「&&」「||」をサポートした。

これらの演算はC言語互換にしている。つまり、0が偽で、0以外が真の扱い。


10000時間

2009-10-20 07:42:37 | Weblog
最近読んだ本コンサルタントの習慣術: 野口吉昭の冒頭に
10000時間――分子生物学者・福岡伸一
【「あすへの話題」08.08.21日経新聞(夕刊)】
の紹介があった。


世界的コンクールで優勝するピアニスト、囲碁や将棋の名人たち、トップアスリート。彼ら彼女らについて、ふつう私たちは半ばため息をつきつつ、つぎのように感じている。あのような人たちは天賦の才能の持ち主なのだ。われわれ凡人とはそもそもの出来が全く異なるのだと。

ところがプロフェッショナルたちの多くは皆、ある特殊な時間を共有しているのである。10000時間。

いずれの世界でも彼ら彼女らは、幼少時を起点として少なくとも10000時間、例外なくそのことだけに集中し専心したゆまぬ努力をしているのだ。


福岡氏は、天才のDNAはなく、この10000時間を費やす努力をしているかどうかが、決め手だというのだ。

この時間はどの程度かというと、一日8時間、週5日、年50週働くと、一年間で2000時間となる。これを5年続けると、10000時間となる。

従来、会社では5,6年選手が中堅・一人前となっていく時間と大体符合する。もちろん、「専心する」というのが、昨今の短期決戦ばかりの職場では難しいし、雑用の方が多い現状では、8時間の「専心する」時間をとろうとしたら、職場において、相当残業をせざるを得ないだろう。

ところで、一人前になるまで5年も6年も待っていられないというのが、近年の傾向である。諸外国では、大学生が毎日圧倒的に勉強し続けることで、おそらく、4年間で10000時間を越えると思われる。
(以前、長期研修に来た人から、学生時代に勉強ばかりで食事も満足に取らず、身体を痛める人が多いと言っていたので、それ以上やっているかも?)

日本人には、勉強というと暗記だと勘違いしている人が多いが、短期間に詰め込み、終わったら忘れる方法だけ訓練しても社会では何の意味もないのはもちろんである。

人の採用に余裕がなくなってきている今の世情では、ダメな学生を入社させないという厳しいスタンスを公言して厳密に実施していけば、学生側の意識も改革できるのかと思うが、未だに会社に損失を与えるような人材を平気で採用する会社が多いのは、まだまだ日本社会に余裕があるのかもしれない。

オーディオ用電流増幅アンプ

2009-10-12 08:58:13 | Weblog
D氏より、JLHアンプの紹介を受け、回路を眺めていたが、気に入らない点がいくつかあったので、独自に改良してみた。

実は、JLHアンプの記事をいくつも紹介されたのだけれど、記事を読むより、回路を読んだほうが楽しいので、記事は全く見ていない。

結局、JLHアンプのキーポイントは、A級動作のアンプというよりは、電流アンプなのだ。で、電流アンプなのに、電圧フィードバックを電流回路に入れているのが、一番気に入らない点。

なので、差動アンプとカレントミラーを組み合わせたVI変換機を作成し、フィードバックを差動アンプに電圧で入れることにした。

シミュレーションでは、きれいに動きそうな結果が出ている。
果たして、実力はいかに・・・

歴史的システムのFPGAによる蘇生

2009-10-03 08:07:30 | Weblog
Lake Tahoeで行なわれるコンピュータ設計の学会ICCD2009での発表準備中。
発表タイトルは表題の通りで、実は招待講演である。(物好きは世界中にいるらしい)

タホ湖ってどこ?から始まり、航空券の手配、宿の手配、ESTAの登録など、最低限のことは、なんとか済ませてきたが、月曜の発表なのに、まだ、プレゼン資料は半ば。

母親が見たら、「何でいつもあなたはギリギリなの?」と小言を言われそうだ :-O

でも、アメリカと日本には時差がありますから :-)

シリアル通信モジュールの例題

2009-09-29 07:04:51 | Weblog
私が、最近、for文だの、なんだのとごちゃごちゃやっていたのは、
次のようなモジュールの記述をするためです。(自分でも書き下ろしただけで未確認)
このモジュールは調歩同期(RS232C)の送信モジュールです。
こういった記述ができると、ずいぶん分かりやすいと思ってますが、どうでしょう?


細かな話をすると、送信を開始するときには、start信号とdiをセットします。
外部に、タイマモジュールを用意し、ackが入ったら、送信タイミングごとに
sckが入るとしています。送信終了すると、finが出てくるので、この信号で、タイマモジュールを止めます。


module sout {
 input di[8];
 output so;
 func_out ack,fin;
 func_in start;
 func_in sck;
 reg r;

 proc_name put_so(r);

 function start seq {
     reg i[4], td[8];
     {td:=di; ack();}
     put_so(0b0);
     for(i:=0x0;i<0x8;i++) {
         put_so(td[i]);
     }
     put_so(0b1);
     fin();
 }

proc put_so {
     so = r;
     if(sck) finish;
 }
}

NSL: for文とwhile文

2009-09-27 09:22:34 | Weblog
seq構文の中で、ステップ実行を行うようにして、goto文も使えるようにしたので、これを拡張して、for文とwhile文も使えるようにした(はず)。

Alpha版の sfl2vlwin-20090927.msi からのサポート。



SFL2VL配布ページにて、ダウンロード可能。

NSL: seqの拡張 goto文の導入

2009-09-23 11:03:01 | Weblog
procの呼び出しを待ち合わせる変更をしたが、ついでに、実行制御ができると面白いと思い、goto文をサポートしてみた。
確認はほとんどしていないので、Early Alpha版であるが、
2009092320090925版として、IP ARCH, Inc.のホームページからダウンロード可能(Windows版のみ)

ただ、今の仕組みだと、前方ジャンプはできないかも? 見直して、ラベルを2パスで探すように変更。動作確認は十分ではないけれど、それらしい形になってきた気がする。

9/25追記:seqとproc, gotoの関係を整理し、関連コードを書き直しました。


module sqx {

 output f[8];
 func_in ex;

function ex
 seq {
 label_name l1,l2;
  f = 0x00;
l1:
  f = 0x01;
  f = 0x02;
  if (ex) goto l1;
  f = 0x03;
l2:
  f = 0x04;
  if(~ex) goto l2;
 }
}


NSL: seqブロックにおけるproc呼び出し

2009-09-22 17:42:41 | Weblog
sfl2vlでは、seqブロックは、何が何でも :-) 1クロックずつ進む構文としていたが、NSLでは、procを呼び出した場合には、procが終了するまで次に進まないようにしようとしている。

現在、20090922版(アルファ版)でのみサポートしているが、こうすることで、手続き的な記述がシンプルになる(はず)。

たとえば、下のコードで、ackが帰るまで、p1は終わらないので、p2の起動はそれまで待たせる。

もちろん、proc中にseqを使うこともできるけれど、procは、終了条件が発生するまでは、動作し続けるので、seqが何度も起動されることを防ぐ工夫が必要なので、使い方に注意がいる。

module seqtest {

func_in ex,ack;
output f[8];

proc_name p1;
proc_name p2;

function ex seq {
  p1();
  p2();
}

proc p1 { f=0x01; if(ack) finish;}
proc p2 { f=0x02; finish;}
}


XSLTコンパイラ

2009-09-21 15:51:12 | Weblog
Xalanのコンパイラを使えば、XSLTCがXSLをJavaのクラスファイルに変換してくれるので、.NETに依存するより、便利だと思っていたが、Xalanのページは、今一つ読みにくく、ほったらけにしていた。

だが、さすがに、重い腰を上げ、コンパイラの使い方を調べ、Java版のコンパイラを作成した。

UML2NSL.ZIP

を、IP ARCH, Inc.のホームページに置いた。GUIなど何もない変換エンジンだけなので、とりあえず、こんなことができるというだけ。


NSL文法

2009-09-20 12:06:39 | Weblog
IP ARCHのホームページに記載があるといっても、NSLの文法が理解されていないようなので、文法を表すBNFっぽい文法書を作成してみた。

NSL文法のBNFっぽい文法書

処理系のシンタックスファイルからではなく、新たに書き下ろしたので、間違いはあると思うけれど、概要は把握できるはず。