Sim's blog

電子工作はじめてみました

Interface 12月号

2007-10-30 23:44:25 | V850
GNUのtool chainを使う話みたいです。
V850付録基板用のクロス開発環境を作る話が載っています。
付録DVDに一通りはいっているみたいです。
11月号に載っていたなひたふさんのJTAGデバッガもDVDにはいっています。

p.143からはPSoc first touchの紹介記事が載っています。
V850コンテストの紹介は2月号からみたいです。
ET2007でCQ筆者陣によるミニ講演会が開かれるみたいです。

GDBを使った実践的デバッグ手法という本も売っていたので買ってきました。


PICO computingのPCカードFPGAボード

2007-10-28 22:31:52 | FPGA
picoで調べていたら、こんなのが見つかりました(URL)。

PCカード型のFPGAボードです。先のほうに色々なインタフェースがつながるようになっているみたいです。CFカード型もあるみたいです。複数枚させるsuper clusterというのもあります。

ロゴがまるでアルテラですがザイリンクスです。

作りながら学ぶコンピュータアーキテクチャ

2007-10-23 00:39:39 | FPGA
この前買ってきた本です(出版社のリンク)。ただいま勉強中です。
ググって見つけた関連リンクです。

サポートページ (慶応大の天野先生のページ。正誤表とかもあります)

立命館大学の卒業論文(2003年)
ハードウェア記述言語による教育用マイクロプロセッサの設計(Ⅰ) (pdf)
ハードウェア記述言語による教育用マイクロプロセッサの設計(II)(pdf)
マルチサイクルパイプライン方式による教育用マイクロプロセッサの設計と検証 (pdf)

関連論文
HDL によるマルチサイクル・パイプラインプロセッサの設計(I) (pdf)

卒論ってことは大学の4年生の1年だけでCPUとか作っちゃうってことですよね。すごく優秀です。卒論にはverilogコードも載っています。10ページくらいでコンパクトにまとまっているようです。

URLを削ってみると、元々は立命館大学の高性能計算研究所の卒論でした。
最近はこうやって卒論や修論をpdfで公開していたりするんですね。

メモ

2007-10-19 01:20:00 | FPGA
なにげにググっていたらstarter kitでDDRコントローラを作っている方を発見したのでメモ

犬山回路研究所 DDR
モノづくりが大好き! のホームページ DDR2

モノづくりが大好き!さんは、かなり精力的に色々されています。

もちろん、ここも必須ですね

FPGAの部屋 "DDR SDRAMコントローラ"の目次

FPGAの部屋さんは、目次の目次をマークしておくと幸せになれそう

その他、見てておもしろかったのがCPLDで遊ぼう!です。
電子工作の王道ともいえるラジオとマイコンやCPLDをつないでいます。バリキャップというのを使って電圧で容量を制御するみたいです(バリコンのかわり)。

バリキャップといえば、ブレッドボードラジオさんでも実験されています(LMF501T+バリキャップチューニング)。LM501Tというのはラジオ用のICとのことです。

そういえば、エレキジャックNo.4はラジオの特集です。

エレキジャックのホームページを見てみたら、回路図エディタのPCBEの本が出るみたいです。

なんか最近自分で手を動かしてないです。

作って学ぶCPU設計入門

2007-10-12 02:10:48 | FPGA
「作って学ぶCPU設計入門 - エミュレータでよくわかる!内部動作とAHDL設計・FPGA実装」という本が出るみたいです(出版社へのリンク)。アマゾンでは10/10発売になっていたので駅前の本屋さんに行ってみましたがまだ入荷していないようです。

CPUを作るというとあの「CPUの創り方」を思い出します。本家本元ということだと「コンピュータの設計と構築」なんでしょうね。

買うのを忘れていたトラ技11月号を買いました。

かわりと言ってはなんですが「作りながら学ぶコンピュータアーキテクチャ」という本を買ってきました(出版社へのリンク)。この本ではPICO-16というオリジナルのRISC CPUを作っています。SFLというハードウェア記述言語で記述しています。本にはSFLの簡単な説明も含まれています。

VerilogとかHDLを覚えたからには、やっぱり何かCPUは作ってみたいなあ

ICFP2007 (28) 主催者の種明かし

2007-10-10 23:10:41 | ICFPプログラミングコンテスト
ICFP2007 (27) 画像修復(5) 完成の続きです

主催者の種明かしレポートが公表されているそうです(ここ)。

このテクニカルレポートに書かれている謎はほとんど解明できたと思います。優勝チームはgoogleチームで、なんと二連覇だそうです。

まだ残っているのは以下です。
- sunの正しい修復方法。私はダンプリストと逆アセンブルリストを見ながら手で直しました。
- bioMul_adaptationの修復。草の乱数の初期値はbioMul_adaptationのあたりを修復すればいいという方針はほとんど合っていたみたいですが、動かすところまではできていません。
- ドキュメントには、audio hintという話が書いてありますが見つけていません。

ドキュメントには3903バイトという信じられないような短いprefixが載っています。私の現在のprefixは6312バイトなので半分くらいです。

現在のprefixは、compressorのパクリで、自分の後ろにバックアップのコピーがいて、その後に次の書き換え場所までのオフセットとデータ長さ、データの三つ組みがひたすら並んでいるというコードになっています。(?P)(?P)(?P)とすると自分の後ろにある数字を3つ取り出せます。まだ実装できていませんが、考えているのはquoteを使うことでデータや数値を圧縮することと、MSBが必ず1なのは冗長なのでMSB抜きにする(浮動小数点と同じ考え方)ことの2つくらいです。あとはパッチを当てる修正箇所の最適化くらいでしょうか。

別のアイデアは登場するデータはICFPの4通りしかないので、例えばIだけについて圧縮して次にCについて書き換え箇所を圧縮してと4回繰り返す方法です。データを載せなくていいぶん縮みそうな気もします。数値のエンコード方法を工夫すればなんとかなるかもしれません。4種類の文字があるので4進にするのもあるかもしれません。

DNA中の部分列をコピーすることで縮むかと思いましたが、patchは結構細切れなのであまりうまくいっていません。

主催者が使ったツールを作るのに使われたプログラミング言語が書かれていたりしてなかなか楽しめるドキュメントでした。

ICFP2007 (27) 画像修復(5) 完成

2007-10-07 02:01:40 | ICFPプログラミングコンテスト
ICFP2007 (26) 画像修復(4)の続きです

ついに完成しました。最後に残っていたのはふきだしの中の文字μでした。文字の形はcharInfo_Tempus-Bold-Huge_Mに格納されていますが、このデータは暗号化されていました。
暗号化の鍵はstickyの画像に書かれているno1@Ax3でした。

試しにprefixを作ってみました。長さは9565バイトです。うまく作ればもっと短くなりそうですが、とりあえずはこんな感じです。大きそうなのがballoonの座標データが2kくらい、cloudの修復も2kくらいです。prefixは1つの代入文で、全てパッチを当てています。サブルーチンコールとかはscenarioの中に埋め込まれているので、これもパッチで作っています。
cow-tailへのパッチは暗号化されたまま行っています。RC4は乱数をxorするだけなので、原文と乱数が分かっていれば暗号化されたままでも修正できます。
cloudを反転するコードは難しそうなので、差分だけをパッチあてしています。

ふーっ、長かったー。でも、かなり楽しませてもらいました。

完成した画像です。prefix 9565 bytes risk 9565


ICFP2007 (26) 画像修復(4)

2007-10-02 00:17:52 | ICFPプログラミングコンテスト
ICFP2007 (25) Steganographyの続きです。

草の乱数の初期値が分かりました。
地面の草を描くdrawGrassPatchは第一パラメータの59文字の文字列を乱数seedとして受け取ります。drawGrassPatchの一番最初の処理は文字配列seedとint24配列biomorphPerturbを要素毎に加えています。biomorphPerturbの初期値は0です。biomorphPerturbを書き換えると草が生える場所が変わります。通常のコードでbiomorphPerturbを変更するコードはpayloadBioMorphという関数にしかありません。payloadBioMorphは2つのパラメータindexとvalueをとって(名前は適当に決めました)、biomorphPerturb[index] = valueという処理を行います。
payloadBioMorphはpayloadBioMorph_adaptationから呼ばれています。そしてpayloadBiomorphはmainで一番最初に呼ばれているadaptationであるbiomorph_adaptationで呼ばれています。
さて、このbiomorph_adaptationですが壊れています。少なくともbiomorph_adaptationを修復する必要があります。関連して中で呼ばれているbioMul_adaptationも修復する必要があります。このあたりの話はhelp-initial-condに書かれています。似た記法でbioMulを書いてみると次のようになるはずです。
bioMul Zero     y = Zero
bioMul (Succ x) y = bioAdd (bioMul x y) y

C風に書くと次のような再帰関数になると思います。
int bioMul(int x, int y)
{
    if(x == 0) return 0;
    else bioMul(x - 1, y) + y;
}

今のところ、biomorph_adaptationの完全な修復はできていません。数値の形式が何種類かあるみたいで、どのadaptationにどの形式を渡せばいいのかがよく分かっていません。少なくとも、mkほにゃの形式、bioほにゃの形式、intBoxの形式があります。
biomorph_adaptationの中で一番最初に呼ばれているのはenableBioMorph_adaptationです。中身はfalseになっていますが、trueに変える必要があります。このadaptationはtrueの時にパラメータを逐次実行する機能があるようです。トレースすると実行の様子が変わります。初期値はfalseになっています。enableBioMorph_adaptationのパラメータが上にでてきたpayloadBioMorph_adaptationです。3回呼ばれています。雰囲気的に以下のようなパラメータで呼び出されているっぽいコードになっています。
payloadBioMorph_adaptation 1 * 3  -4 * 4
payloadBioMorph_adaptation 3 * 3   1 * 7
payloadBioMorph_adaptation 7 * 3   2 * 2

このパラメータがpayloadBioMorphに渡されるのだとすると、biomorphPerturbの3番目に-16、9番目に7、21番目に4が書かれるはずです。試しに書いてみたところビンゴで、草が正しい位置に表示されました。
どうせdrawGrassPatchのseedに足されるのでseedを足された値に書き換えてやってもうまくいきます。書き換えた初期値です。

El gasto ziempre se vi mas verde del otro lado de la cerca.

もしかするとbioMul_adaptationの修復だけで十分なのかもしれません。問題の切り分けができていないというか、biomorph_adaptationの他の部分も壊れているのかどうか、よく分かりません。

残っているballoon(ふきだし)ですが、2つのことが分かりました。

1つ目です。グラデーションを描くdrawGradientCornerNWの位置とサイズが分かりました。balloonを取り囲む最小の長方形にすれば、うまくいきました。
左上の座標が(198, 324)でパラメータが(101, 169)です。実際は102x170なのですが、drawGradientCornerNWに渡すときは1ずつ小さい値にしないといけないようです。

2つ目です。分かったというか、無理やり作りました。ターゲット画像からballoonの枠のドットの座標を全部拾い出して、線画で描くときの移動量をプログラムで探索してpolygonのパラメータを作りました。探索プログラムはgreedyなので、最適とは限りませんが、全ての開始地点について探索を行った中で最も線分の数が少なくなるものです。
探索アルゴリズムは基準点から別の点まで線を引いたときに途中の点を全て通る線の中で一番遠くまで引けたものを採用して、基準点を更新していきます。とりあえず一番遠くまで引けなくても、先まで考えると遠くまで引けるかもしれないといった探索は一切行っていません(というのがgreedyな所以ですね)。どうせ塗りつぶすので、途中の内側に点を作ると、もしかすると短縮できるかもしれませんが、考慮していません。
balloonのpolygonデータ
72,
55, 59,
 -7, -1,  -6, 2,   -4,  5,  -2, 2,    0,12,   5, 8,   2, 6,   5, 6,  -3, 5,  -2,  1,
 -4,  7,  -2, 1,  -16, 17,  -4, 3,  -14,12,   0, 5,   1, 2,   2, 5,   5, 5,   5,  1,
  2,  1,   4, 0,    0,  1,  -2, 1,   -1, 3,  -3,-2,  -4,-1,  -4,-3,  -7,-7,  -1, -3,
  0, -9,   7,-6,   36,-36,   1,-3,   -5,-8,  -4,-5,  -1,-3,   0,-2,  -3,-3,  -1, -3,
  0,-10,   7,-8,    1,  0,   5,-5,    1, 0,   1,-1,  -2,-5,  -2,-6,  -1,-9,   2,-11,
  3, -6,   3,-4,    5, -5,   8,-3,    8,-2,   8, 3,   2, 0,   5, 3,   6, 4,   5,  4,
  0,  1,   4, 5,    2,  6,  -2,13,   -4, 5,  -1, 3,  -4, 4,  -6, 3,  -4, 3,  -11  2,
-14,  0,
0, 0,

というわけで最新の修復画像です。残りはμだけです。ターゲット画像とは548ピクセル異なっています。


μですが、たぶんfontTable_Tempus-Bold-HugeというフォントのMです。ただ、この文字を描こうとするとDNAが途中で止まってしまいます。壊れているみたいです。charInfo_Tempus-Bold-Huge_Mがμの描画情報みたいです。
最後の最後まで楽しませてくれます。

PIC18Kシリーズの新製品

2007-10-01 22:38:32 | その他のマイコン
EDNの記事に新製品が出るという記事がありました。低消費電力はMSP430を目指したのでしょうか。touchセンシングソリューションはPSoC? パッケージはDIPはないみたいです。
外資系半導体の日本シェア4.7%のうちの2.7%がmicrochipということは60%近くがPIC関連ということでしょうか。ホビーに限定するともっと率は高そうです。

Interface 11月号

2007-10-01 22:33:09 | V850
p.59 V850アプリケーション製作コンテスト結果発表。来月号にレポートが出るみたいです。体感ゲームってなんでしょう。いつかは、こういうのに参加できるようになればいいなあ。

p.113 V850付属基板用JTAGデバッガ登場。なひたふさんのJTAGデバッガの記事が出ています。ユーザー領域を圧迫しないというのと、やはりRAM上でプログラムを動かせるのが素敵です。(なひたふさんのblogダウンロードサイト)