2003年08月
08月01日(ひのえ うま:7月04日:三碧仏滅)
  • サンプルはサンプル
     本や雑誌に出しているサンプルはあくまでもサンプルなのだけど、相変わらずそのままパクッて製品にしてしまっている人も多いようだ。何が起きても知らないよというのはとりあえず置いておくとして、そこに持ってきていきなり「○○がわからないのですが」という質問が来たりする。まぁ、名前を検索エンジンに放り込めば一発で出てくるから、そこのwebmaster宛に送ってしまえということなのだろうけども、雑誌やら別の会社の製品のことについてダイレクトに質問するっていうのは掟破りでしょう。
     で、質問の中身はと見ると、マニュアルにも全部書いてあるし、ちょっと検索すればすぐわかることだったりする。確かにドキュメントが英文というのはあるけれど、英語がトコトン苦手で受験の時に英語が無いところはないかと探し回っていたくらいの私でさえ必要な情報は英文の中から発掘しているのだが、どうもそういうことをする習慣そのものがないらしい。
     そんな調子で大丈夫?
    少し不安になった8月1日の暑い昼だった。
08月02日(ひのと ひつじ:7月05日:二黒大安)
  • MSDN Libraryが使えない?
     MSDN Libraryの2001年10月版をXP機にインストール。これ以降のバージョンになると旧VisualStudio系なツールと連携ができなくなるらしいので、仕方ない。ところがである。これがまったく動かない。デスクトップに作られたアイコンをダブルクリックしてみても、「ファイルが無い」と称するダイアログが出るだけ。でも、そこに出ているディレクトリを手繰っていくとちゃんとファイルはあるし、エディタで開くとそれなりの内容が書かれている。アンインストールして再度入れてみてもやっぱり駄目。いったい何が起きているのかさっぱりわからないので、あきらめてアンインストールする。ヘルプが欲しかったんだけど駄目ということなのだろうか。こんな基本的なものが動かなくてどうするんだろう。あぁ不思議な世界。
     ひょっとしてOffice2000がいると駄目?そんなことは無いと言い切れないM$製品。M$の辞書には常識とかマナーという言葉は無い・・というより、常識で考えたあと、頭にnotを付けると正解なんだよな、これが。
08月03日(つちのえ さる:7月06日:一白赤口)
  • バグはもうひとつある
    ビックカメラの製品サポート情報という名の不具合情報。ふと携帯電話関係のバグが目にとまる。以前バグ騒ぎが起きたときに「こういう風にやってるから世の中に出るまでには完璧だ」みたいな公式発表をしているメーカもあったけども、現実はそんなに甘くは無い。
    「バグはもうひとつある」これは永久に付いて回るのだろう。
08月04日(つちのと とり:7月07日:九紫先勝)
  • 解決
     本日七夕である。この時期になるとさすがに梅雨もあけているのだし、笹の葉さらさらと夕涼みが懐かしい。やっぱり伝統行事関係は旧暦でやるべきではないのだろうか。
     さて、そんなところで話は飛んでイスカンダル。MSDNライブラリが動かなくて四苦八苦していたのだが、ようやっと解決した。あれこれやっていたらなんとなくうまくいってしまったということで、決して誉められたものではないのだが、結局、私がログインしていたアカウントの下にあったhhcolreg.datをリネームしてからアンインストールして、その後再インストールしてみた。hhcolreg.datは新規にはつくられず、All Usersの方にhhcolreg.datが作成されている。
     デスクトップにショートカットも作らなかったので、インストールした後で探して実行したらいつものエラーダイアログが出ない。これはひょっとしてうまくいったのか?と待っていたらヘルプが現われた。ついでにVBを起動してF1を叩くとこれも大丈夫。
     本当の原因は不明だけれども、これでとにもかくにもうまくいったようだ。一体全体どういうことになっているんだろうかという疑問は残るが、とにかくうまくいったので良しとしておこう。
08月05日(かのえ いぬ:7月08日:八白友引)
  • 冬のソナタ
     遅ればせながら録画してあった冬のソナタとやらを一話だけ見る。人気があるということでこういう事を書くのも悪い気がするけど、やはり私の目から見たそれはなんだか変なドラマであるということに尽きる。ドラマにしても映画にしても小説にしてもそうだけど、「筋に入る」のが必要だと思うのだけど、筋に入れない。一応こぎれいに作った映像と筋の上を「ツーーーー」「まぁいいんだけどねぇーー」と言いながら腹ばいで滑っていく白熊状態である。
     1カットが終わる。次のシーンにつながる筈なのだけど、そこで「はい、次のスキットです」と思わず言いたくなる。そう、そうなのだ。撮り方やせりふ回しがまるで教育テレビの語学講座なのである。まるでメトロノームで測ったかのような正しいリズムで交わされる会話と、どこをとっても教科書的な行儀良のいい映像で、画面に抑揚がない。とにかく小奇麗すぎるのである。
     話自体は一話見ただけで、あぁこいつとこいつはこういう関係で、親がむにゃむにゃで、最後はこいつがこうなるんだろう・・と、まぁ全部透けて見える程度のものである。別にそれ自体は別に悪いことではないけれど、それならそれで以前の大映ドラマのようにクサいけど癖になるような部分が欲しい。
     この手のクサいドラマは場末のラーメンである。小奇麗に磨き上げられ、間接照明が似合うような場所でナイフとフォークとスプーンでお行儀良く「まったりとして、それでいてちっともしつこくない」などと食うようなものではないのだ。「おばぁ!!指!指!!」「大丈夫さぁ、熱くないよぉ」・・そういう問題じゃないんだけど・・こうでなくてはいけない
     本日の結論。「冬のソナタは語学講座である」
08月06日(かのと い:7月09日:七赤先負)
  • ノイズ
     ずっとノイズに悩まされていた。音ではなくて電波の方。ラジオがザーッ・・それに混じってブンブンブン・・という約500ms周期の音が入ってまったく放送受信できず。この周期からみて発信源はすぐにわかっていた。メ○コの無線LANである。中波放送の帯域までこんなノイズを出すようなものを良くも商品として出したなと思いながら(某社にいたときはVCCI通すので結構しんどい思いをした)放置していたのだが、ちょっと気になり始めたので原因追求。まずACアダプタを抜く。静かなものだ。入れればうるさい。LANケーブルは抜いてみても変化なし。じゃあというので、ACアダプタのケーブルを抜いた。これで静かになるなら、やっぱり機器・・と思っていたら消えたのは500ms周期の音だけで、バースト的に入っているノイズそのものに変化がない。ACアダプタを抜くと静か、入れると駄目。なんと、スイッチング式のACアダプタそのものがノイズ源。保安的な意味合いの安全基準はあるけれど、確かにノイズについては無かったな。
     それならばとJUNK-BOXをあさってみれば、あったあった、出力電圧、電流ともほぼ同じスイッチング式のアダプタ。これは刺しても静かなもの。ためしに交換して無線LANを動かしてみたのだが、まったく問題ない。ラジオも聞こえるようになり、今机の横には小さなラジカセが鎮座している。
08月07日(みずのえ ね:7月10日:六白仏滅)
  • 数学
     工学部で学ぶ数学なる本を買った。腰巻に「現役京大正が欲張りな独習書を書き上げました」というところで、行列、ベクトル解析、常微分方程式、複素関数論、フーリエ解析、ラプラス変換とまぁ、盛りだくさんの欲張り本で2500円ならまぁそこらにつっころがしておくにもちょうどいいかというところ。
     考えてみると、この筆者が生まれたとき、私はすでに○○歳。子供の一人もいたって別におかしくはない年齢だったのだ。言うなれば自分の子供に教わるようなのだな。まだ足し算も知らなかったのがこうなるのだなと思いながらページをめくるとわずか10年20年という期間も結構すごいものだと思う。
     やはり自分自身の進歩が今ひとつなのが気になってくる。一丁仕切りなおしてやってみるとするか。
08月08日(みずのと うし:7月11日:五黄大安)
  • 五月雨リクエスト
     一式終わってファイルを送る。「JPEGじゃなくてBMPにしてもらえますか」というので、ファイルがでかくなるけど仕方ないかと元のBMPをLZH圧縮して送る。送ってみたら、今度は「たくさんあるんですけど、コメント入れてもらえますか?」。数があることは最初から分かっていただろうに。元データは渡っているはずだからと、WORDでWORD図を入れて、その中にイメージファイルを貼り付けて、上から吹き出しなどをペタペタと貼り付ける。これなら後から外すのも簡単だろう。
     「写真ください」・・はいはい・・下手糞なカメラマンが持ってるこれまた近接撮影にはあまり向かないデジカメですけどね。なんかゆがんでるけど、こんなのでいいのかな?きっと次は「やっぱり物を貸してください」って言ってくるんだろう。
     「この図何とかなりませんか」・・えっと、分かりにくいといっても、デバイスの中身のことで、本文でも「とりあえず分からなくてもいい。なんとなくこんな感じかぁと思ってくれ」と書いているんだし、簡略化したら意味が変わっちゃうんだけどな。信号の意味書き足す位でいいのかな?
     さて、次の五月雨リクエストはいったいなんだろうか。
08月09日(きのえ とら:7月12日:四緑赤口)
  • スケルトン
     またまたVisualBasicをいじることに。MSDNライブラリのヘルプを眺めながら、一方でドライバのソースを見て、VC++のサンプルと突き合わせたりしながら、VBからIOCTRLする方法を調査。VBとVC++アプリと、VC++で書かれたドライバ、呼ぶ側と呼ばれる側と、間を取り持つWindowsのKernel32.DLLの呼び出しと・・なんだか入り組んできてややこしい。もっとも、そんなに難しいところでも無いはずでもあるし、これは単に頭の中で整理できていないだけのこと。
     この手のことは結構多くて、一度に二つ三つと重なるとその実体以上に複雑に見えることがある。複雑さはアイテム数の自乗に比例すると思っている私の基本戦術はやはり敵を分断して各個撃破である。まず、各ソースコードから不要な部分をザクザクと切り落としていく。本当に必要な部分だけ切り出したところで、メモ。これが渡される先でどうなるのかをチェック。これまた不要な部分を全部切り落として整理していたったらあっけないほど単純なところに帰着である。
     とりあえずスケルトンになったところで、あとの処理を眺める。なるほどよくわかる!と言いたいところだけど世の中そんなに甘くはない。肉付け部分の方がいろいろ例外的な処理もあったりしてややこしいんだよね。まっそれでも一本筋が通っただけに気が楽っていうのは確かだけどね。
08月10日(きのと う:7月13日:三碧先勝)
  • エアコン始動
     というところで、夕方になってこの夏初めてのエアコン始動である。考えてみたら1年もの間ぜんぜん動かしてないわけで、これはさすがによろしくないであろう。たまには動かしてやらないとということ、そしてもうひとつの理由はなんだか体が熱っぽいということ。
     いわゆる体温が高くて表面温度が上がっているような感じではなくて、体の中に熱がこもっているような変な感じで、ややだるい。扇風機にあたっていても今ひとつ。まぁ、ちょうど試運転も兼ねてちょうどいいか、電力ピークも過ぎている時間帯の筈だしと、ちょっとだけ運転。
     これが効いた。熱が下がっていく実感があって、しばらくしたら妙なだるさも取れてきた。ひょっとして熱中症のなりかけ状態だったのかもしれない。それなりの年齢でもあるし、体温の調節能力も一頃に比べたら落ちてきているのかもしれない。別段毛嫌いする必要もないのだし、車に乗ったときはいつも使っているのだし、あえて避けなくてはならない理由があるとすれば電気代と電力不足が心配という程度のこと。適度に付き合っていくことにするか。
08月11日(ひのえ たつ:7月14日:二黒友引)
  • よしよし
     一昨日からごそごそとやっていた、VBからのIOCTLがようやく全線開通。データの送受もできるし、コマンドもちゃんと届いている。動くのがあたりまえのことなのだが、これで結構遊べるようになった。一応コンパイルして.EXEを作ってみたけれど、こんなものかな?別に速度なんてぜんぜん気にしてないから、どうでもいいようなものだけど。
     こんなことをやらなくてはならなくなった理由の一つは雑誌や書籍のサンプルで使ったUSBのベンダIDやプロダクトIDを勝手に使う人がいたからというのが情けない。もちろん個人の趣味のレベルや友達の間でやり取りする程度のもので、仮IDとして使う程度ならそれこそイーサネットのプライベートなIPアドレスやMACアドレスなんかと同じように勝手なものを使ってしまえば良いのだけれども、そのIDを断りも無く使用して同人ハードとして販売してしまうということになると話が違ってくる。
     頼むから最低限のルールは守って欲しいものだ。そんなにIDが必要なら年間1、2万円程度で20人も集まれば年会費は出るんで代行ができないわけもない。IDの再販売はまずいから、そこの製品っていう扱いになってしまうけどね。
08月12日(ひのと み:7月15日:一白先負)
  • 移植
     昨日開通したルートを使って、ワンチップマイコンのライターソフトを移植。今までDLLの方で用意していたお助け関数が剥き出しのIOCTLになってしまうのはいかにも格好悪いので、一枚皮をかぶせる格好で標準モジュールを用意する。いずれはこの部分を切り出してActiveXコントロールにでもしてやるとするか。
08月13日(つちのえ うま:7月16日:九紫仏滅)
  • エフェクタ
     アナログ回路のおさらい兼ねて、ひよこのページなるところで、エフェクタの回路図を眺めていた。エフェクタ、それも特にひずみ系のそれは特性の綺麗じゃないところを積極的に使うというものなので、見ていてそれなりに面白い。なるほど、こういうやり方をするのかと見ていて非常に面白いし、興味深い。ついでにエフェクタ関係で検索してあちこち見ていると、結構この世界じゃアナログ回路の説明をしているところもある。掲示板でも結構アナログ回路の話で盛り上がっていたりで、ちょっと意外な場所で意外なものを見た感じである。
     中にはちょっとオカルト入っているような説明をしているページもあるのだけど、総じて結構説明は当たっている。この雰囲気の懐かしさ、それは紛れもなくかつてのラジオ少年のそれである。デジタル回路主体になって、論理的に全部が割り切り、ノイズは邪魔なもの、ひずみはない方がいいものという世界にどっぷりと浸っていると、「ゲルマニウムダイオードを百本単位で買って好みの音が出るものを探す」なんていうのは実に楽しい世界に見えてくる。シミュレーションで波形がどうだ、シンクロで眺めて・・アイパターンがどうだ、S/N比がどうしたとかいうより先に、やはりアナログの原点は耳で聴き、目で楽しむものだというところを忘れていた自分に気づかされた。
08月14日(つちのと ひつじ:7月17日:八白大安)
  • アンサンブル
     冷たい雨な天気で、なんと石油ファンヒーターが登場してしまった。いささか寒くなって避暑ならぬ避寒用で秋物を買ってくる。とはいえ高い物は要らないので2000円足らずで2枚重なったアンサンブル。とりあえず外側だけでいいんだけど、ほかに手ごろなものもないし。暦の上では立秋過ぎたとはいえ、いささかこの季節にこの服というのは変な気もする。
08月15日(かのえ さる:7月18日:七赤赤口)
  • OCPとAXI
     LSIの内部バスの話として、表題のようなことが日経エレクトロニクスのLeading Trends解説である。要するに今まではバスを獲得して、リード/ライト要求をしたら、その応答が返ってくるまで待ち状態に入るのが普通だったけども、これを分割して要求と応答の間はバスを開放し、他のバスマスタなどがバスを利用できるようにすることでバスの使用効率を引き上げるということを言っているようなのだけども、ちょっと引っかかるのは、この解説で「マルチプロセッサ構成を採るサーバー機のメインボード・・・(中略)・・・ところが1990年代に入って「スプリットトランザクション」と呼ぶ、要求と応答を非同期に扱える機能を備えたバスが登場した。・・(以下略)」となっていること。
     1990年というのは大嘘である。そんなアーキテクチャはずいぶん昔から存在する。いわゆるミニコンなどでないと言い張るのかもしれないが、残念ながら既に1980年代後半にはマイクロプロセッサシステムで同様のことをやったマルチバスIIがあったことを知らないというなら、ずいぶんと不勉強ではないだろうか。名もないメーカの独自バスというならまだしも、マルチバスIIはIntelである。
     マルチバスIIのデータ転送はパケット(メッセージ)単位でやり取りする。アービトレーションはPCIのようなアービターがいるのではなくて、バスマスタになりたい物が3クロックでジャンケンのようなことをして決めるという方法をとっている。当然、バスを取りたいものが複数いれば、ジャンケンに勝ったものがバスサイクルを行っている間に次にバスを使うのが誰かというのを再びジャンケンして決めているので、バスが混んできても3クロックが無駄に費やされることはない。
     相手を決めて送るモードの他に全ボードに同報で通知するモードもある。割り込みさえメッセージとして伝わるということに感動したのも記憶に新しい。
     結局そのあとマルチバスIIIなんていうのも耳にしないままになっていたけれど、PCI-XにOCPにAXI・・リニューアルオープンというところか。
     再びチャンネル・アーキテクチャやらI/Oプロセッサ、そしてバスはシリアル化されてトランスピュータの再来となるのだろうか。
08月16日(かのと とり:7月19日:六白先勝)
  • だらだら
     暑くもないのに夏ばてか。少々調子狂い気味で、ペースダウンしておく。ぼんやりと書籍に掲載する製作記事関係を検討。これが昔いた会社で製品にするならもっとまじめにやるところだけど、目的が目的だけに部品は必要最小限に抑えたい。部品の種類も減らしたい。その昔秋葉原まで部品を買出しに行って、帰りの駅ホームで買い忘れた部品があったことに気づいたりしたことが度々あったからでもある。信越(今の秋月)行けば抵抗なんて100本100円だったりするわけで、100本買ってしまえば良いのだけど、それならその一種類で間に合わせたい。結果として、少々どうかな?という定数になったりもするけれど、そこは割り切りだろう。
     作ってもらうことを目的にするか、作ることを目的にするかで視点が変わってくるのだよな。
08月17日(かのと とり:7月20日:五黄友引)
  • 100円買出し
     先日考えたものにつなぐ相手を物色しに100円ショップへ。ピンポンとなるらしいチャイムが、スイッチ+ケーブル付、鞄などに付けるLEDフラッシャー、あと先日も買ったLEDイルミネーション。こちらはよく見たら自己点滅タイプもあったけど、今回は連続点灯にしておく。
     チャイムをばらしてみたらどうもIC一顧にトランジスタ一石でバッファ兼増幅。一応フィルムコンデンサを使っている。8Ωのスピーカーで、結構大きな音がする。これは単なる外部スピーカーモジュールにしてしまっても良いかもしれない。
     フラッシャーの方も結構な明るさ。裏は例によって導電ゴムを使ったもので、接点を流れる電流は微々たるもの。とりあえず普通のシリコンダイオードの順方向程度なら問題なくONすることはわかったので、ここから引き出すことにする。
     これでスイッチとスピーカーと、高輝度LEDに電線5mの4点セット。これで210円なのだから便利な世の中。本はチェックしてないけど、「100円で作る電子工作シリーズ」といった類のものもきっとあるんだろうな。
08月18日(みずのと い:7月21日:四緑先負)
  • 四つの運命
     恋愛の取説なるところで、ためしにやった4つの運命。私が試した結果はというと、予想通り「職人」らしい。あたらずといえども遠からず。
08月19日(きのえ ね:7月22日:三碧仏滅)
  • 飲酒運転手
     酒を飲んでバスを運転していてつかまったということを話題に取り上げているのを小耳にはさむ。「どうしてこういうことが起きるのか」とか「気が緩んでいる」とかいろいろあるようだが、「仕事にプライドを持てない」というのが一番大きいことのような気がしてくる。
     どこの誰が言い出したのかわからないけれども「勝ち組み/負け組み」という下品きわまりない言葉が横行している。何をもって勝ち負けを判断しているかというと、結局は「金」。大もうけすれば勝ちで、儲からなければ負けということらしい。
    ゴシップと性情報が売りな三文週刊誌で使うならばまだしも、いわゆるビジネス誌だの、新聞まで使いはじめているというのは読まされる方が恥ずかしくなってくる。とうとう「いずれ90%が負け組みに」なんていうことを赤面も無く書く愚者まで現れる始末で、手の施しようが無い。
     いくらもっともらしい前置きがあっても、理屈付けがあっても、この一言があるとあぁ、この人は拝金主義者なんだなとしか思えなくなる。すべてが台無しである。
     「勝ちも負けもないよ」というと宗教家や負け犬の遠吠えと取られかねないこの空気だけど、もし、金がすべてなら、そして人が亡くなるのを見ていれば「死んだら負け」というのは明らかだ。なぜならその瞬間その人の金はゼロになるのだから。つまり、どんなにたいそうなことをやろうと、結局最後はみんな負け。最後に負けるために勝ちを目指しているというのだから、こんなに愚かなことは無い。
08月20日(きのと うし:7月23日:二黒大安)
  • (無題)
     たまにはいいよね、と一休みである。
08月21日(ひのえ とら:7月24日:一白赤口)
  • モーターのMHz駆動
     とあるもの向けの予備実験。DCモーターを数MHzなんかで駆動するとどうなるんだろうという実験。安物のDCモーターだから、ブラシが付いていて電流の向きがコロコロ切り替わるという仕組みだけど、いったいどういうことになるのか。普通にLCで共振するというのは良く見るけれど、相手が回るってことは、こっちの都合と関係なくLの向きが突然ひっくり返るわけだ。いったい何が起きるのかと思いながら実験してみたけれど、なんとなくそれなりの動き。ちゃんとパルス幅をいじってやるとそれなりに応答して回転数が変わる。周波数が高いっていうのが幸いしてか、かなりの低速回転までちゃんと追従してくるところが面白い。少々スイッチング周波数が高いためかFETはほんのちょっと温まっている感じもあるけど、ヒートシンクは不要だろう。
     試しにスパークキラー用と思ってコンデンサを入れてみたら結構派手に暴れてくれて、なるほどLCだなというのを実感する。とりあえずダイオード一本入れて保護。まぁ、ドライブしているパワーMOS-FETもスイッチング用でしかも結構大きいものだし、この程度のサージには耐えられるだろうとは思うけど。
08月22日(ひのと う:7月25日:九紫先勝)
  • ブラックボックス
     昔のマイコン時代と違って、今のPCではハードもソフトもブラックボックス化されていてわからない部分がたくさんある。すべてを知るのは到底無理だとは思うけれど、時には知らない範囲のことだってなんとなくイメージができていないと困ることもある。こんなときには勘に頼るしかない。勘といっても、まぁ普通のものなら、なんとなく設計した人間の気持ちになって考えるとそれなりに合理的な落しどころがあることが多かった。自分ならこの制約のなかではこういう風にやるだろうなと思って手を出せば、大体当たっているということが多かった。
     しかし、近頃になってこの「気持ちになる」ことができない製品というのも少なくないような気がしている。苦し紛れに追加したのか、あるいは場当たり的に決めたのか、はたまたはじめは綺麗だったのに会議を重ねるうちにお偉いさんの一言で捻じ曲がったのか・・いずれにしても「おまえ、それはおかしいだろう」と思うことにぶつかることがある。「画面に出ているからいい」ということではない。理屈じゃそれでいいかもしれないけど、暗黙のお約束っていうのがあるだろう。
     いくら中身がわからなくたって、いくらなんでもこの入力に対してこの出力結果は変だろうと感じる程度の知識と教養と感覚は持ちつづけていたいものだと、そう思う。
     ところで、中東方面でイマジンを歌っただのなんだのというニュースが流れてきた。この半年の間にやってきたことを見れば「この入力に対してこの出力はどうだろうか?」と考える程度の感性を失いたくはないものだ。
08月23日(つちのえ たつ:7月26日:八白友引)
  • アナログ演算は面白い?
     アナログ演算といえばオペアンプなのだが、プログラマブルなアナログICにも当然オペアンプが入っている。こいつの使い方の勉強を兼ねて、先日のページからまず手ごろそうなのを選んで実現してみた。なれるまでがなかなか大変だったのだけど、要領が飲み込めてきたらそれほど難しいものでもない。歪系なエフェクタで必須の整流はどうやるのかといったら、グランドレベルを基準に極性を反転することで実現する。これだと全波整流になるので、半波整流にしたいときは元の信号と加算すれば良いという考え方。じゃあ中心じゃなくて適当なところで切りたいときはどうするのかとか、ほかのブロックでこいつを増幅してさらに畳み込んでなどといろいろ考えていくと「入力に正弦波を入れたらいったいどういう波形になるでしょうか?」なパズルの世界である。
     オペアンプで回路を組んで実験していると、基板もどんどん汚くなるけれど、これなら気楽。しかもシミュレーションとは違って実際に音を入れて聞くことができるわけで、これが興味を引く。こうやったらどういう音になるのだろうとつい遊んでみたくなる。ちょっとしたパラメータの変更で確かに音の雰囲気ががらりと変わるのは、回路シミュレータではなかなか味わえない(もちろん、音が出るようなシミュレータを作ることも不可能じゃないけれど)。
     気が付けばすぐ1時間2時間。久々のハマり物になったようだ。
08月24日(つちのと み:7月27日:七赤先負)
  • 準備
     明日、出かけるための準備で資料読みをしておく。どういうことになるのかわからないけれども、まぁ、一応こんなものかというところまでは頭に入れておかないと。
08月25日(かのえ うま:7月28日:六白仏滅)
  • Cで行く
     ハードウェアをプログラミング言語のようなもので記述するということは、結構前から始まっていて、今の二大巨頭はVerilogーHDLとVHDL。風のうわさではMIPSなんかもVerilogで書かれているらしい。ただ、両者ともハード的なアプローチから出ているので、ハード的な処理をイメージしながら書くのには向いていても、ソフトウェア的なアルゴリズム主体のものは今ひとつ苦手ということがあった。
     これに対して最近出てきているのがC言語をベースにハードウェア記述のための拡張を施したもの。これまたひとつにはまとまらずにいくつか派閥ができているようだけども、今日その中のひとつについて教わりに行った。
     以前いじったJavaベースのものはコンセプトとしては面白かったものの、美味しさという面では今ひとつという印象がぬぐいきれなかったし、今回もCとは言いながら、手間はそれほど変わらないのではないかというものを思っていた。
     が、予想は完全に覆された。もちろんいい方向に、である。「すげー」と、語尾上げの「えー?」しか言えない。
     Cで書かれた3Dグラフィックスのソースコードがある。所々ハードウェア的な並列実行用の予約語が入ったりするものの、確かにCである。たぶん、ハード向けの予約語のところをとっぱらって、ハード的なビット幅指定(なにせハードなので、5ビット幅とか、13ビットとかの変数なんかも作れるようになっている)などもやめてしまって、そのまま普通にCコンパイラにかければ通りそうなソースである。
     これが合成される。もちろん、CPUコアなどは使わない。純粋にEDIFやVerilog、VHDLに落ちるのである。これがベンダのツールでFPGAなり何なりのデータに変換されるのだ。FPGAの先にLCDがつながっている。今作成されたダウンロードされる。液晶画面では3Dでグラフィックが動き回る。動作クロックは高々数十MHzである。
     「これは入社したときの研修一週間目の課題です」といって出てきたのがブロック崩し。これもソースはありきたりなもので、Cのお勉強で作るものと大差ない。これが実際に合成され、画面ではブロック崩しが動いている。懐かしいボートゲーム(池の中をモーターボードで走り回るようなゲーム)もあった。
     マウスを使ってマウスカーソルが移動する。マウスカーソルが乗ればメニューの文字列が横からスライドしながら入ってきて、クリックすると、そのアプリケーションが起動する。
     何度も言う。CPUはどこにもない。(もちろん、CPUコアも無い)全部ハードウェアロジックで処理されている。
     当然のことだけど、ネチネチとしたチューニングは苦手に違いない。かつてCが生成したコードを読んだアセンブラの達人たちが「こんなコード許せない」と思ったのと同じようなものだろう。でも、何割か知らないけれど出てきたものがRTLレベルで書いたものよりも劣るとしても、その何割かのためにこれを捨てる気にはなれない。
     VerilogやVHDLはインラインアセンブラで書く程度の分量だけで十分だ。これからはCで行くぞと、そう決めた。
08月26日(かのと ひつじ:7月29日:五黄大安)
  • 提案
     とあるところに、とある企画を持ち込む。こちらとしては提案レベルであって、うまくインフラを整えてくれたらその上にこちらが乗っかりたいというものだけど、メールを出したらずいぶん乗り気なので、一回会おうということになった。
     久しぶりに会った社長は相変わらず元気そうで、考え方を軽く図にして話したら、ものの数分で即決Goサイン。このスピード感に思わず振り切られてしまいそうにもなる。
08月27日(みずのえ さる:7月30日:四緑赤口)
  • C合成練習
     Cからの論理合成の練習。試しにレジスタ二つでロードと加算しかないCPUを書いてみる。CPUを書くといっても、要するにオペコードを切り出してオペランドを持ってきてロードしたり、レジスタ間の加算を書くだけだから、ROM領域として定義した配列にプログラムを入れておいて、それをプログラムカウンタをインデックスにして引いてきて、PCをインクリメント。オペコードをswitchで振り分けて代入文が並ぶという程度。一応並列で動けるところだけ並列動作を指示してコンパイルしたらあっさりエラーもなく落ちて、デバッグモードでデータ出力しながらステップ実行をかけるとそれなりに動いている。
     ならばと茶目っ気を出して命令のフェッチとデコード&実行の2段パイプラインにしてみたのだけど、どうということもない無い。ただ単に複数の関数が並列実行されるようにすることと、関数間のメッセージやりとりのための信号を増設するだけのこと。レポートによると使ったF/Fは29個だそうで。
     PCを変更するような命令だとなるほどディレイドブランチさせないと駄目だとか、フェッチ段階でプリデコードしておくのが楽かなど、見えてきて面白い。
     プロジェクトをつくりはじめてここまでおよそ30分。これでいいのか?と思ってしまうけど、これでいいんだよな、きっと。
08月28日(みずのと とり:8月01日:三碧友引)
  • 8月
     太陰暦では今日からが8月。さて、8月最初の一日は久しぶりに町田の部品屋へ。オヤジさんは相変わらず。愛想の無さは相変わらずだけど、にこやかに「いらっしゃいませ」だの最近流行りの「こんにちは」だの言われる部品屋というのはこそばゆくて居心地が悪いに決まっている。一見さんは「素人が何しに来たんだ」という目で見られて、二言三言やりとりしてレベルが水準に達していると見たら「お仲間」。これがパーツ屋、ジャンク屋の王道。
08月29日(きのえ いぬ:8月02日:二黒先負)
  • A/D
     昨日買ってきたA/Dコンバーター接続のための回路を検討。データシートが親切そうでいて今ひとつ不親切な感じもある。とりあえず読み解いた内容に従って回路図を書いて、タイミングを設計。とはいえ、つなぐ相手はFX2なのでGPIFを使ってやれば至極簡単で、ものの見事にグルーロジック無し。FX2と一対一で接続されるだけである。こんなのでいいのかな?とも思うけど、とりあえず大丈夫だろう。
08月30日(きのと い:8月03日:一白仏滅)
  • A/D動作
     昨日書いた回路図に従って組み立て。導通チェックをやってから火入れ(電源投入)とりあえず異常な発熱などもないし、大丈夫かというところで、VBでさらっと読出しプログラムを作成する。
     といっても、やることはきわめて単純なので、ものの1時間もたたずにそれなりに動作。多少画面のレイアウトに手を入れてみたりしてから自作の電源ユニットの出力電圧を測ったり、音声信号を入れてみたりして遊んでみると一応それなりに動いている様子。次はアナログ出力が欲しいところだな。
08月31日(ひのえ ね:8月04日:九紫大安)
  • D/A
     続いてD/Aである。こちらのデバイスはさらに一段と説明が不親切。ようやくわかってきたのは電流を基準で動作するということ。二つある電圧入力端子に流し込む電流値が出力の最大電流値になる。それならばと実験してみたら、出力がまったく出ない。
     こんな単純なデバイスが何で素直に動かないのかと頭を抱えてしまう。結局内部の等価回路を見てわかったのは二つある出力(極性が逆)の両方を同じ抵抗で同じ電圧源に接続しないといけないようだということ。ためしに両方をプルアップしてみたらきちんと動作するようになったようだ。
     それにしても、Typical Applicationというなら、ちゃんと全部電源も何もかもつないだ回路を出してくれと言いたいし、Vref端子じゃなくて、Iref端子じゃないのかなどといくつも文句をつけたくもなろうというもの。
     頼むからもう少し親切なマニュアルを書いてくれ・・と言ってもこのデバイスも既に古典の部類だし、これ以上説明が補足されることはないのだろう。

戻る