FC2カウンター FPGAの部屋 2009年02月

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

FPGAの部屋のオフ会をやりました

今日、10時から秋葉原駅前の喫茶店でFPGAの部屋のオフ会をやりました。
KEIさん、Simさん、hypermacさん、山猿さん、皆さんとお話できて、本当に楽しかったです。ありがとうございました。3時間30分も付き合っていただきまして、ありがとうございました。また、オフ会をやる際には、もっと遅い時間にしたいと思います。
分かれてからKEIさんとヨドバシとヤマダ電機にネットブックを見に行きました。KEIさんと別れた後は、千石電商や秋月に行って来ました。
買ってきたものは1,980円のデジタルノギスと千石で780円の耳かけ式ヘッドフォン、H8ボードのDRAM増設用の16MビットDRAM MSM5117800Fです。
耳かけ式ヘッドフォンは娘が欲しいとのことで、娘に譲りましたが、結構、音が良かったです。

そうそう、つくばに帰ってからエアコンを見てきたのですが、今のエアコン、15年前のエアコンの1/3の消費電力なんですね。今まで最大20A程度食っていたのですが、6.6A位になっているようです。凄い。台数限定で10畳用が57,800円だったので、今までのをリプレースすることにしました。
今日は楽しい1日でした。
  1. 2009年02月28日 17:35 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:11

Interface 2009年4月号

Interface 2009年4月号に来月号に付く、おまけ基板のLEDの状態までシミュレーションできるシミュレータが付いていた。(正確には本体はInterfaceのサイトからダウンロードなので、やり方が載っている)
通常、CPUシミュレータはCPUの動作をソフトウェアで疑似的に模倣するのだが、それをI/Oや基板のLEDの状態(これは基板の写真が出て、そのLEDのが点灯するのがわかるようになっているようだ。まだ試していない)
これは本当に良いと思う。近頃はAndroid(スペルあってますか?)やiPhoneのシミュレータで実際にどのような動作になるのかがわかるシミュレータがあるようだが、そんな感じなんだろう。簡単に拡張できて自分の付加したハードも一緒にシミュレーションできると、とても良いと思う。
私が基板を設計しているときには、この基板が電源ONで正常に動作することをシミュレーションできれば、夜安心して眠れるのにと何度思ったことか。。。
いろいろなICのSPICEモデルをつなぎ、シミュレーションで電源ONしたら、やった1発で動いたと喜べれば良いなと思っていた。
その後、基板ごとシミュレーション出来たらいいんだけど、デジタルはModelSimなどのシミュレータでシミュレーションできるので、アナログのシミュレータとつないで、システムで動くのが実証できれば、本当に良いのだけれど。。。シミュレーション時間がずいぶんかかるかな?その場合はクラスタやGPGPU、グリッドなどで並列分散できないものか?
  1. 2009年02月27日 14:05 |
  2. その他のFPGAの話題
  3. | トラックバック:0
  4. | コメント:0

2月のサーチキーワードベスト20

Sim's blog さんでキーワードベスト20という記事があったので、私のブログでも2月のサーチキーワードベスト20を書くことにした。結果を下に示す。
number2_090227.png

FPGAの部屋で検索する場合が多いようだ。tortoisesvn やnotepad++なども多い。カーナビのガーミンでの検索も結構多い。20位にダイナミック点灯が入っているのも興味深い
  1. 2009年02月27日 06:26 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:2

H8ボードでuClinuxの続き(CentOSでビルドしたlinux.elfをロード)

CentOSでなかなかSamba共有がうまく行かないので、とりあえずH8のRedBootからロードできるかやってみた。
CentOSでUSBメモリをマウントしてlinux.elfをコピーして、Windowsに持って行き、そこのtftpd でH8ボードに転送した。
結果はやはりShort data reading ELF file といわれてしまう。elf が悪いのではなさそう。Windowsのtftpd がH8のRedBoot と合わないのかな?
load_CentOS_090227.png

とりあえず、H8はペンディングにして、今度からはSpartan3A Starter Kit が借りられそうなので、DDR2 SDRAMコントローラのリベンジをしようと思う。なひたふさんのところで内部クロックでDDR2-400で動作できているというので、私もやってみようと思う。とても楽しみ。。。
  1. 2009年02月27日 06:06 |
  2. マイコン関連
  3. | トラックバック:0
  4. | コメント:0

H8ボードでuClinuxの続き(VMware Server2.0 のCentOSでSamba)

前回、H8ボードは、Windows上のtftdでプログラムをダウンロードできるようになった。

現在、H8ボードでuClinuxをブートしようとして画策している。VMware上のUbuntuで、uClinuxをビルドして、WindowsのtftpdでH8ボードにロードしようとしたら、ファイルが短いといわれてしまう。
そこで、CentOSでも試してみることにした。まずはuClinux-distを落としてビルド。うまくビルドできた。次にtftpdをインストール。次はSambaをこのサイトを参考にインストールした。
そうしたらアクセス許可がないとのこと。パーミッションは設定しているはずなんだけど。
CentOS_Samba_1_090225.png

どうもよくわからないので、Webminをインストールしたのだが、Sambaの設定画面が現れない。
しょうがないので、やはりここを参照にSWATをインストールしてみた。これで設定してみることにする。
CentOS_Samba_2_090225.png

2009/02/26 追記:
その後、WebminでSambaを設定する方法もわかったのでやってみたのですが、どうしてもSamba共有できません。不可解です。とりあえずあきらめました。
  1. 2009年02月25日 05:55 |
  2. Linux
  3. | トラックバック:0
  4. | コメント:0

PDF-XChange Viewer

皆さんはPDF Viewerに何をお使いだろうか?順当なところでAdobe のAcrobat Reader だろうか?
私はPDF-XChange Viewer を使用している。これはfree と書いてあるのでフリーだと思う。
Adobe のAcrobat Reader に比べて何が良いかといったら、タブを使ってPDFファイルを見られるのが良い。そうでないとウインドウがたくさん開くことになってしまう。それにフリー版でも画面を回転してセーブできる。注釈もつけられるし、円や四角も書ける。便利に使っている。
一番良いのは”戻る”と”進む”アイコンで前に見ていたところに戻ったり、進めたりすることができるところだ。
PDFをAcrobat Readerで見たいときは、右下のAcrobat Readerのアイコンをクリックすると、今見ているPDFファイルをAcrobat Readerで見ることが出来る。
PDF-XChange_Viewer_090224.png
  1. 2009年02月24日 05:14 |
  2. パソコン関連
  3. | トラックバック:0
  4. | コメント:0

来週のFPGAの部屋、オフ会

FPGAの部屋オフ会参加予定の方へお知らせ

来週のオフ会は2月28日(土) AM10:00~ JR秋葉原駅のヨドバシカメラ側(中央改札口)付近で待ち合わせということでよろしくお願いします。私の目印は、目立つように下の写真の黄色いコート?を来て行きます。花粉症なのでマスクをしていると思います。髪は白髪交じりです。
ブログのProfile のメールアドレスに、ご自分の携帯電話の番号をメールでお知らせいただければ、集合時刻ころにお電話いたします。
10時15分ころまでは、待っていますが、遅れる場合や、連絡をとりたい場合はkamemarsee101@t.vodafone.ne.jp からkame を除いたメールアドレスにメールをください。
今回はオフ会の開始時刻が早くて申し訳ありませんでした。今回はアナウスしてしまった関係上この時刻でオフ会をやりたいと思います。次回から(次回がありましたら)は、もっと遅い時間にしようと思います。
よろしくお願いいたします。

coat_090222.jpg
  1. 2009年02月22日 15:37 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:5

タイミングチャートお絵かきツール、TimingAnalyzer

@eleの”Oh!石さんの日記”でタイミングチャートお絵かきツールのTimingAnalyzerを知った。
ベータバージョンのようだが、JAVAで作られているツールで早速ダウンロードして使ってみた。
TimingAnalyzer_1_090220.png

試しに、DDR SDRAM のシングルWriteを書いてみた。結構、書きやすい。タイミングチャートお絵かきツールとしては使いやすいと思う。書いたタイミングチャートもPNGやJPEGにすることが出来る。
TimingAnalyzer_2_090220.png

使い方はStep by Step Examples を見ると大体、使い方がわかる。
スクリプトを走らせることも出来て、VHDLのテストベクタを作成できるスクリプトやSPICEのPWLベクタを生成できるスクリプトもある。

2009/02/22 追記:
ライセンスを読んだところpersonal or academic use for freeだけど、commercial useは購入しろということみたいです。
License Informaiton

2010/01/16 追記:
ライセンスを読むと、制限の無いフリーソフトになったようだ。
  1. 2009年02月21日 15:59 |
  2. その他のFPGAの話題
  3. | トラックバック:0
  4. | コメント:5

ISE10.1iのFloorplan Editorでエリア制約2

”Floorplan Editorでエリア制約”の続き。

さて、どこのクリティカルパスがタイミング制約違反になっているのかを見てみよう。
Process ウインドウのImplement Design -> Place & Route -> Generate Post-Place & Route Static Timing -> Analyze Post-Place & Route Static Timing をダブルクリックする。
floorplan_editor_10_090215.png

そうするとTiming Analyzer が起動して、一番、クリティカルパスを最大のものから3つ表示する。最初で、最大のクリティカルパスはcontroller (DDR2 コントローラのステートマシン制御部)内部のパスだった。何でだろう?あまりクリティカルになるようなところではないはずなんだけど。。。
floorplan_editor_11_090215.png

2つ目のクリティカルパスも1つ目と同様だった。3つ目のクリティカルパスはread_data_module (DDR2のリードデータを受けるモジュール)からrddata_fifo(リードデータ用のFIFO)までだった。これは180度位相のクロックで動作している回路から0度のクロックで動作している回路への入力になるので、タイミング制約は2.5ns となる。(動作クロックは200MHz)
floorplan_editor_12_090215.png

以上のことから、controller の自由度を大きくするために、もう少し領域を大きくし、rdata_fifo とwrdata_fifo(ライトデータ用のFIFO)はそれぞれread_data_module とwrite_data_module と重ね合わせることにした。といっても現在のフロアプランではread_data_module とwrite_data_module 同士が重なり合っている。これを、read_data_module とwrite_data_moduleの位置はそのままにcontroller を大きくして、rddata_fifoとwrdata_fifoをread_data_module、write_data_module とController の領域に重ね合わせるようにした。addr_fifo もController に一部重ね合わせるようにして配置してみた。
floorplan_editor_13_090215.png

これでインプリメントして結果を見てみるとやはりタイミング制約が満足していない。今度はwrdata_fifoとフロアプランに含まれていないのFFへのパスだった。
floorplan_editor_14_090215.png

ここで、本当にフロアプランがうまく実行されているかを見てみよう。本当はスライスを表示するのがいいのだが、Floorplan Editorでは小さくて目立たないのでネットを表示させることにする。ちなみにこのインプリメント後のFloorplan Editor の図はピンクの四角で囲ったView Area Contraints のアイコンとオレンジの四角で囲んだToggle Simplified and Actial Views アイコンをクリックしてある。下に示すのが、addr_fifo のインプリメント位置、赤で示されている部分となる。緑はクリティカルパスとそのクリティカルパスがあるモジュールの配線を示している。
floorplan_editor_15_090215.png

大体、フロアプラン通りに配置されている。今度は、controller だ。これは他のところに行く配線が多いが大体フロアプラン通りに配置されているようだ。
floorplan_editor_16_090215.png

次はrddata_fifo。
floorplan_editor_17_090215.png

read_data_module
floorplan_editor_18_090215.png

wrdata_fifo
floorplan_editor_19_090215.png

write_data_module
floorplan_editor_20_090215.png

全部のモジュールがフロアプランされているのが確認できた。
さて、フロアプランされたところとフロアプランされていないFF間の間がクリティカルパスになっていたので、rddata_fifo(リードデータのFIFO)とwddata_fifo(ライトデータのFIFO)の間を開けることにした。それでトップのモジュール、DDR_burst_test もフロアプランしていなかったので、全体を包むようにフロアプランした。
floorplan_editor_21_090215.png

やはりクリティカルパスが5.904ns で5ns を満足しなかった。残念ながらこの辺であきらめようと思う。

試しにフロアプランしない普通のプロジェクトで、XSTのKeep Hierarchy をYesにしてやってみたら、タイミング制約が満足しなかった。やはり、このプロジェクトでは階層を保持するとタイミングが満足しなくないるようだ。これは、モジュール間はFFで出してFFで受けるということを守れば、タイミングが満足するようになりやすいと思う。その辺はPartition にも関連してくるだろう。
更に、フロアプランをしやすいモジュールの分け方というのがあると思う。例えばライトのモジュールとリードのモジュールで分けるのではなく、FPGAの内部構造を考えたモジュールの分け方をしたほうがフロアプランしやすいと思う。(IOパッドの近くにそのまま置けるので、他に行くネットがないため)
例えば、1組のISERDESとOSERDESを1つのモジュールとすると、そのモジュールはIOパッドの近くに独立にフロアプランすることが出来る。それぞれに1ビットずつのリード用、ライト用FIFOをつけても良いかも?FIFOの制御回路は8ビットごとにつけるとか。とにかくFPGAの内部構造を考えてフロアプランしやすいように考えてモジュールを作ったほうが良いと思われる。今回は失敗してしまったが、次回はそういう風に考えてモジュール分けをやってみたい。

Floorplan Editorでのエリア制約は、ISEでPlanAhead Lite が標準でついていることもあって、WebPACKでしか使われないと思う。これからはPlanAheadに移行していくことだろう。
  1. 2009年02月19日 21:31 |
  2. Floorplan Editorの使い方
  3. | トラックバック:0
  4. | コメント:0

花粉症?で目が真っ赤

花粉症?で目が真っ赤になってしまいました。
治るまで、ブログはお休みにしようと思います。目薬つけたので明日あたりには直るでしょう。。。土曜日から、かなり花粉が来ています。鼻がつんつん、目が痒い。目が結膜炎のようになってしまいました。これが一番つらいです。ステロイドと抗生剤の目薬をさすことにします。
  1. 2009年02月18日 21:10 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:0

ISE10.1iのFloorplan Editorでエリア制約

今回はProcessesウインドウのUse Constraints を展開して選ぶ、Floorplan Area / IO / Logic - Post-Synthesis をやってみることにした。これを選ぶとSparntan-3EやVirtex-2などはPACEが起動するが、Virtex-4, Virtex-5, Spartan-3AなどはFloorplan Editorが起動する。多分、正規のISEを使用している方はPlanAhead Liteを使えるので、エリア制約をかけるとしたら、そっちを使用するのだと思うが、WebPACKではそれはないので、エリア制約をするとしたら、この方法になるか、それともFloorplannerになると思う。
Floorplan Editorを使ってみた記事は、” ISERDESのお勉強の続き2 ”がある。(よく書けていると自分でもと思う。後で見ると、ああこんなこともやっていたと思うことが良くある)

さて、プロジェクトはSuzaku-V用のDDR2_burst_testでやってみよう。ProcessesウインドウのUse Constraints を展開して、Floorplan Area / IO / Logic - Post-Synthesis をダブルクリックする。(すでにTiminig ConstrainsがAll Constrains Met になっている。これは、いろいろ苦労してVerilogファイルを最適化しながら制約を満足するようにしたのだった)
floorplan_editor_1_090215.png

Floorplan Editorが立ち上がる。
floorplan_editor_2_090215.png

左のSourceウインドウを見ると、モジュールに分かれていないで、リソースがばらばらになっているのがわかると思う。これではエリア制約をかけることが出来ない。
そうこれは、XSTのKeep Hierarchy オプションをONにする必要がある。(これをONすると、モジュールが残るので、モジュールを渡った最適化が弱くなって、タイミング制約を満たさない可能性も大きくなる)
ProcessesウインドウのSynthesize を右クリックして、Properties... を選択しよう。
floorplan_editor_3_090215.png

Synthesis Options ダイアログが開くので、Keep Hierarchy をNoからYesに変更する。これでモジュールの階層が保持される。
floorplan_editor_4_090215.png

これで再度、ProcessesウインドウのUse Constraints を展開して、Floorplan Area / IO / Logic - Post-Synthesis をダブルクリックする。
そうすると、下の図に示すように、左側のSourceウインドウに各モジュールが表示されるのがわかると思う。右のウインドウのFloorplanタブをクリックして、Floorplanのウインドウに変更する。各モジュールを右側のFloorplanウインドウに適当にドラックアンドドロップしてみる。
floorplan_editor_5_090215.png

下の図がドラックアンドドロップをした後。
floorplan_editor_6_090215.png

適当ではあるが、フロアプランが出来たので、例によってインプリメントした。そうしたら、エリアが小さすぎたようでエラーが出てしまった。
floorplan_editor_7_090215.png

ここでエリアを広げるのだが、やはり、位置を考えてフロアプランすることにした。
ピンクの四角で囲ったところが、IOパッドだ。DQ入出力の近くにread_data_module とwrite_data_module があったほうが良いので、そのモジュールを重ねて大きくして、その2つを重ねた。contorlller は上に大きく配置して、その下にFIFO群を配置した。
floorplan_editor_8_090215.png

これで再度インプリメント。しかし、タイミング制約がエラーになってしまった。
floorplan_editor_9_090215.png

結構、フロアプランするのも面倒だ。。。シビアでなければ、しないほうが面倒がないかも?
後半に続く。果たして無事にインプリメントが成功するのか???
  1. 2009年02月16日 21:14 |
  2. Floorplan Editorの使い方
  3. | トラックバック:0
  4. | コメント:1

テーブル、だいたい完成

去年のこだわり家具作り教室が終わって、こだわり家具作りサークルが出来た。それでというわけではないが、去年、材料を購入してきたので、休みの日に暇を見つけてはテーブルを作ってきた。大体完成したので、今日はオイルフィニッシュを塗った。
思えば、このテーブルは自分1人で作ったので、いろいろ失敗をしてしまった。
まずは、長いすの材料も購入してあるのだが、その幕板と間違ってしまった。天板をつける際になって、天板が短すぎる。。。なぜ~となって、幕板を間違えているのがわかった。あわてて、木ねじを外そうと思ったがダボを打ってあるので、それをマイナスドライバを打ち込んで壊した。それから木ねじを外して、ばらし、幕板を交換して、再組み立て。。。
次に天板をつける段になった。天板は8枚くらいの幅の狭い板を張っていく。ここでも、木の端が反っているように組み付けるのを忘れてしまった。端が反っていれば、クランプで締め付けて反りを修正できる。真ん中が反っているようにつけてしまったのがあった。これはクランプで修正できない。。。
しょうがないので、天板の取り付け板の穴を広げて、そこだけ木ねじを効かなくして、木ねじの締めで天板のそりを戻した。ある程度戻ったので一安心。
さらに、天板を丸鋸で切る時に、直線定規を当てるのだが、定規を持ち返る時に垂直方向に曲がって切ってしまった部分が出来てしまった。
また、天板は修正しても、でこぼこが出る。それをベルトサンダーが買えないので、120番のサンドペーバーで頑張って修正。大体直ったが、完全には平らにならず。。。大体のところで妥協。
それで、オイルフィニッシュで塗装をした。これで、塗ると自然な良い色に仕上がるだが、オイルなので、木に塗ると、多分、木の導管の毛管現象で、数日経っても木の表面に油が浮いてくる。それを数時間毎に拭き取る。それが大変。今から拭いてくる予定。
1週間位したら、400番のサンドペーパーをかけて、再塗装。それで1週間寝かせると完成の予定。
table_090215.jpg

いろいろ反省点があったので、次の長いすの時に生かそうと思う。その次は、食品だなを作ってくれという依頼が奥さんから来ている。かなりの大物なので、今までのタモ材でつくると、1人で作れなくなりそうなほど重くなってしまいそうなので、1X12材で作ろうと思う。
  1. 2009年02月15日 20:45 |
  2. 木工
  3. | トラックバック:0
  4. | コメント:0

FPGAの部屋のオフ会

今日見たら、FPGAの部屋のYahooグループが121人になっていた。100人以上の方がグループに入っていただいたことに、本当に驚いている。本当に、ありがたいことだ。
この辺でオフ会というか、FPGA(じゃなくても良いけど)を話題におしゃべりをしたいと思っている。
期日は2月28日(土)くらいでどうだろうか?朝、10時ころ、(朝が早すぎますか?)秋葉原のJR駅のヨドバシカメラの出口に集まって頂いて、その辺の喫茶店でおしゃべりするというのはどうだろうか?参加費は自分で飲食したものは自分で払うという形式にしたいと思う。
1人もいらっしゃらない場合は、秋葉原をぶらついて帰ってこようと思う。5~6人位の方が集まってくれたらよいなと思っている。
大体の人数を知りたいので、もし参加しても良いという方はコメントでお知らせください。
  1. 2009年02月15日 19:41 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:10

Webmin でSambaを設定

最近はH8に戻ってuClinuxを動かそうとしているが、どうもビルドしたuClinuxのelf ファイルがRedBootで短いと言われて困っている。

VMware Server を利用して、Ubuntu にSambaをインストールしてある。しかし、設定が悪く、UbuntuからWindowsにはファイルが見えて、コピーも出来るのだが、WindowsからUbuntuへのファイルのコピーがうまく行かなかった。どうもLinuxの設定は難しい。おまけにバージョンがいっぱいあるので、ネット上に古いバージョンでのやり方も載っているので混乱してしまう。
今回、ぐぐっていたら良さそうなツールを見つけたのでブログに書いておこうと思う。それは6、Ubuntuでサーバさんで紹介されているWebminという管理ツールだ。
これを6、Ubuntuでサーバさんで紹介の記事を見ながらDebianのパッケージをダウンロード、インストールした。
そしてSambaの設定をした。下がSambaの設定画面。
Webmin_1_090214.png

これがファイル共有の設定画面。
Webmin_2_090214.png

セキュリティとアクセス制御は下のように設定した。ゲストのアクセスを可能にする設定を”はい”にした。
Webmin_3_090214.png

これで相互にコピーしあえるように設定できた。とても便利なツールだと思った。
左のペインを見ると、いろいろなものが設定できるようだし、NFSもこれでうまく設定できたらと思って、マニュアルを読むことにした。
  1. 2009年02月14日 06:10 |
  2. Linux
  3. | トラックバック:0
  4. | コメント:0

トラ技とDWMを購入

今日はトラ技DWMの発売日なので買って来ました。
DWMは3月号と4月号の合併号です。DWMは、これで廃刊になって、季刊のデジタル・デザイン・テクノロジになるそうです。2009年4月10日発売で、FPGA基板が付くそうです。今度は何でしょう?楽しみですね。
まだ、チラッと見ただけですが、CEL vs. DSP記事や、PCI Expressのスループットについての記事(こういう記事はなかなかないですね。楽しみです。実態がわかりそうです)、XMOSのXS1-G4の記事など、興味のある記事が目白押しです。

トラ技は、FPGA特集で初歩からよくFPGAについて書かれていると思いました。トラ技にFPGAのこんな特集が載るなんて、やはりDWMがなくなったためなんでしょうかね?
とにかく、今月号のトラ技を読めばXilinxのFPGAの開発を始めることが出来そうです。ただHDLの説明はないので、そこは自分で勉強する必要があるでしょう。
トラ技もFPGAの記事が増えそうですね。
  1. 2009年02月10日 19:51 |
  2. その他のFPGAの話題
  3. | トラックバック:0
  4. | コメント:2

ISE10.1iのXPower Analyzerを使ってみる5

今回は、Virtex4-FX12で、かなり限界までリソースを使ってみた時に消費電力、ジャンクションパワーがどうなるか見てみることにした。
内部のFFとIOをほとんど使用するシフトレジスタのお化けを作った。途中の信号をFPGA外部へ出力する。ソースを下に示す。

module XPower_test(
     input wire clk,
     input wire reset,
    input wire code_in,
    output wire code_out,
    output reg [199:0] test_out
    );

    parameter num_of_d_ff = 10000;
    parameter k_val = num_of_d_ff/200;
    reg [num_of_d_ff-1 :0] d_ff;
    integer i,j;
    
    always @(posedge clk) begin
        if (reset)
            d_ff <= 0;
        else begin
            for (i=0; i<num_of_d_ff; i=i+1) begin
                if (i==0)
                    d_ff[0] <= code_in;
                else
                    d_ff[i] <= d_ff[i-1];
            end
        end
    end
    
    assign code_out = d_ff[num_of_d_ff-1];
    
    always @(posedge clk)  begin
        for (j=0; j<200; j=j+1) begin
            test_out[j] <= d_ff[j*k_val];
        end
    end
endmodule


使用するFPGAはVirtex4のxc4vfx12-10sf363だ。これをインプリメントするのだが、最初はスライスのシフトレジスタ機能を使われて実際のFFの使用率が少なくなってしまった。これをやめるためにXSTのプロパティからHDL Options のShift Register Extraction のチェックを外した。これできちんとFFにアサインされるようになった。
XPower_26_090209.png

ちなみに動作周波数は300MHzに設定した。
下がMAPのリポート。LUT使用率は1%。FF使用率は93%。IO使用率は85%。

Design Information
------------------
Command Line   : map -ise H:/HDL/FndtnISEWork/test/XPower_test/XPower_test.ise
-intstyle ise -p xc4vfx12-sf363-10 -cm area -pr off -k 4 -c 100 -o
XPower_test_map.ncd XPower_test.ngd XPower_test.pcf 
Target Device  : xc4vfx12
Target Package : sf363
Target Speed   : -10
Mapper Version : virtex4 -- $Revision: 1.46.12.2 $
Mapped Date    : SAT 7 FEB 21:38:30 2009

Design Summary
--------------
Number of errors:      0
Number of warnings:    0
Logic Utilization:
  Number of Slice Flip Flops:        10,200 out of  10,944   93%
  Number of 4 input LUTs:                20 out of  10,944    1%
Logic Distribution:
  Number of occupied Slices:          5,151 out of   5,472   94%
    Number of Slices containing only related logic:   5,151 out of   5,151 100%
    Number of Slices containing unrelated logic:          0 out of   5,151   0%
      *See NOTES below for an explanation of the effects of unrelated logic.
  Total Number of 4 input LUTs:          20 out of  10,944    1%
  Number of bonded IOBs:                204 out of     240   85%
  Number of BUFG/BUFGCTRLs:               1 out of      32    3%
    Number used as BUFGs:                 1

Peak Memory Usage:  237 MB
Total REAL time to MAP completion:  13 secs 
Total CPU time to MAP completion:   12 secs 


FPGA Editorの図を下に示す。全体を満遍なく使用している。
XPower_29_090209.png

これで例のようにXPowerを起動する。
XPower_27_090209.png

そうすると、デフォルトのトグル率で全体の消費電力は3.7W程度で、ジャンクション温度も100度を越えてしまう。これでは使えない。
Airflow(LFM) を500にすると、ジャンクション温度は72.4度Cに下がるが、MAX Ambient が37.6度Cなので怪しいかも?ファンつきのヒートシンクをつける必要がありそうだ。
XPower_28_090209.png

さらにAirflow(LFM) を0に戻して、トグル率100% 、出力付加条件を20pFと、条件をきつくするとどうなるかを見てみる。
そうすると、全体の消費電力が5.5W程度になって、ジャンクション温度も125度Cまで上昇してしまう。本当にこれが限界だろう。たくさんのFFやIOを使用しているので、電力の上昇率も高い。
XPower_30_090209.png

今回はVirtex4を限界近くまで、いじめてみた。これでとりあえずXPowerは終わりかな?と思う。ソースは全部さらしてあるので、試してみたい方のためにUCFを下に示す。

NET "clk" TNM_NET = clk;
TIMESPEC TS_clk = PERIOD "clk" 3.333 ns HIGH 50%;


IOの位置はISEにお任せしている。
  1. 2009年02月09日 05:10 |
  2. その他のXilinxのツールについて
  3. | トラックバック:0
  4. | コメント:0

ナビを買いました(ガーミン nuvi250 Plus)

ナビを買いました。小さい3.5インチのナビ、ガーミン nuvi250 Plus です。
下が箱です。
GARMIN_1_090208.jpg

中を開けると、ナビ画面のシールがはってありました。なんか、張りぼてのような気がして、大うけ。。。
GARMIN_2_090208.jpg

画面はDSi より少し大きいくらい。小さいです。
GARMIN_3_090208.jpg

感度はとてもよいです。家の中で窓に向けると、位置が測定できます。びっくり。。。電池も4時間駆動できるし、その辺ならば電池で良さそう。徒歩、自転車モードもあります。電話番号検索も奥さんの勤めている職場の電話も載っていてびっくり。。。
問題は車のどこにどうやってつけようか。。。
  1. 2009年02月08日 20:08 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:4

ハンターマウンテン塩原スキー場に行ってきました(今シーズン2回目)

hunter_090208.jpg

今回2回目のスキーにまたまた懲りずにハンターマウンテン塩原スキー場に行ってきました。前回、娘2人がスノーボーダーにぶつかってこられましたが、今回は高校生の娘がぶつかられたところはネットがはってありました。最初からこうして欲しかった。
今日は、私と奥さん、下の娘の3人で行きました。前日の夜あたりに降ったのでしょう、日塩道路は雪が載っていました。途中急坂でトラクションをかけすぎてタイヤが滑って、おっといけないになりました。久しぶりです。微妙にアクセルをコントロールしながら上りました。
スキー場に着いたら、強風注意報でした。物凄い風、地吹雪でした。下から吹き上げるので、緩斜面だと下に滑らずに止まっちゃいます。雪がぶつかって顔が痛い。何より風が強すぎて息が出来ません。ゴンドラも頂上のリフトも止まっていました。
2,3本滑って休憩。寒いし、とても滑れない。あきらめて11時過ぎころ帰りました。家に3時前に帰り着きました。とても大変なスキーでしたが、スキーをやっていれば、たまにこんなこともあります。雪を見ただけでも良かったです。ドライブと思えば楽しめました。帰りも疲れていないので楽です。(負け惜しみ?)
上の写真をクリックして、山の上を良く見ると地吹雪が見えると思います。(よく見えないかな?)
  1. 2009年02月08日 19:44 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:0

ISE10.1iのXPower Analyzerを使ってみる4

最初に、この前のプロジェクトをVirtex-5でやってみたのだが、DDRレジスタのアトリビュートを書けといわれてしまったので、とりあえずはやめることにした。

今回はModelSimで出力したVCDファイルをXPowerに読み込ませて、実際のトグルレートを取得する方法をやってみたいと思う。
今回はDDR SDRAMコントローラのバーストテストのプロジェクトで試してみることにした。これは、かなりの高いトグルレートが期待できると思う。
その場合、DDR SDRAMコントローラは電源があがってクロックがでてから200us wait する必要があるので、その間はどの信号もステーブルになっている。それなので、シミュレーションパターンが通常の状態と変わってしまうこと考えられる。その辺も考慮した方法も考えることにする。
まずはModelSimでタイミング・シミュレーションを行う。タイミング・シミュレーションについてはこの前の記事1記事2を参照のこと。
テストベンチにVCDファイルを出力する記述を追加する。やり方はISE10.1iのXPowerの使い方を参照。(ここにはVHDLでのVCDファイルの出力方法についても記述がある)
さて、ModelSimでタイミングシミュレーションする際に、SDFファイルを付加するとセットアップ時間違反で信号がXになってしまうことがあるので、ISEで出力したPost-Route Simukation Model (ddrtest_timesim.v) の中の$sdf_annotate をコメントアウトしておいたほうが良い。

// initial $sdf_annotate("ddrtest_timesim.sdf");


これは、mixiのVeritak友の会でVeritakの作者のたっくさんに教えていただいた。(たっくさん、ありがとうございました。)
また、テストベンチDDRtest_tb.v にVCDファイルを出力する記述を追加する。

    initial begin
        $dumpfile("DDRtest.vcd");
        $dumpvars(1, DDRtest_tb.DDRtest_inst);
        #250000000    $finish;
    end


これで、最初から終了までの波形がVCDファイルに保存される。$dumpvarsの括弧の中の右側のDDRtest_tb.DDRtest_inst のDDRtest_tb はテストベンチのモジュール名、DDRtest_inst はDDR SDRAMコントローラのバーストテストのインスタンス名だ。これで出来たVCDファイルを全波形VCDファイルと呼び、ファイル名をDDRtest.vcdとする。(Verilogファイルに書いてあるけど。。。ファイル容量は145MB)

次に、DDR SDRAMにバーストで読み書きし始める時刻から、VCDファイルを設定してダンプすることにする。これを部分波形VCDファイルと呼び、ファイル名をDDRtest_part.vcd とする。

    initial begin
        #203153000;
        $dumpfile("DDRtest_part.vcd");
        $dumpvars(1, DDRtest_tb.DDRtest_inst);
        #46847000    $finish;
    end


ちょうど、203.153us 程度からダンプするとバーストアクセスが続く。(このファイル容量は33.7MB)

どちらも250us間、 ModelSim XE3 Starter でタイミング・シミュレーションすると、うちのパソコンで1時間と18分かかる。あまりやりたくないのがお分かりいただけることと思う。2つなので、合計2時間36分だ。Veritakでやろうとしたが、Veritakの吐いたVCDはXPowerで読み込めないようだった。これをやる時にはModelSim XE3の正規版か、PE、SEでないとやっていられない。昨日はミスったので、1日つぶれてしまった。

ModelSimでシミュレーションしている様子を下に示す。
XPower_14_090204.png

ISEから例によってXPowerを起動する。これがデフォルトの画面。
XPower_15_090204.png

さてこれに、VCDファイルを読み込もう。FileメニューからOpen Design... を選択する。
XPower_16_090204.png

そうするとOpen Designダイアログが開くので、Design file、Physical Constrains file、Simulation file を選択し、OKボタンをクリックする。
XPower_17_090204.png

これでVCDファイルが読み込まれた。今回読み込んだのはDDRtest.vcd(全波形VCDファイル)だ。読み込んだ後のXPowerのSummuyは下のようになる。
XPower_18_090204.png

次はDDRtest_part.vcd(部分波形VCDファイル)を下に示す。
XPower_19_090204.png

ジャンクション温度の比較はデフォルトが42.7度C、DDRtest.vcd(全波形VCDファイル)が42.5度C、DDRtest_part.vcd(部分波形VCDファイル)が42.6度Cだ。
次に、Signal -> Data の値の違いを見ていこう。いずれの図もSignal Rateの大きい順から並べ替えてある。
最初にデフォルト。
XPower_20_090204.png

DDRtest.vcd(全波形VCDファイル)。25%以上がない。
XPower_21_090204.png

DDRtest_part.vcd(部分波形VCDファイル)。
XPower_22_090204.png

いろいろな値がある。

次にIOsを見てみよう。
最初にデフォルトから。当然ながらToggle Rate 12.5% にそろっている。
XPower_23_090204.png

今度はDDRtest.vcd(全波形VCDファイル)。
XPower_24_090204.png

DDRtest_part.vcd(部分波形VCDファイル)。
XPower_25_090204.png

やはり、部分波形VCDファイルの方が全波形VCDファイルよりもトグル・レートが高い。やはりこっちのほうがより実態に近いと思われる。
今回はFF使用率が6%と小さく違いがわからなかった。シミュレーション時間が2時間以上もかかっているので、元が取れていない気がする。
FFやIOをかなり使用して動的な消費電力が増えると、やる意味が出てくると思うが、その場合にはModelSim正規版を使ってもシミュレーション時間がかかることになると思う。やはり、消費電力に敏感な用途ではやる意味があると思われるが、いい加減で十分な用途では適当にトグル・レート入れて試してみたほうが良いような気がする。
  1. 2009年02月06日 21:47 |
  2. その他のXilinxのツールについて
  3. | トラックバック:0
  4. | コメント:0

ISE10.1iのXPower Analyzerを使ってみる3

今まではSpartan3E-500-4 だったが、今度はVirtex4-FX12-10 だ。
Suzaku-VのVirtex4はいつも熱いので、電力食っているんじゃないかと思う。

Target Device  : xc4vfx12
Target Package : sf363
Target Speed   : -10
Mapper Version : virtex4 -- $Revision: 1.46.12.2 $
Mapped Date    : SUN 30 NOV 14:10:29 2008

Design Summary
--------------
Number of errors:      0
Number of warnings:   19
Logic Utilization:
  Number of Slice Flip Flops:           688 out of  10,944    6%
    Number of Slice FFs used for
    DCM autocalibration logic:         14 out of     688    2%
  Number of 4 input LUTs:               689 out of  10,944    6%
    Number of LUTs used for
    DCM autocalibration logic:          8 out of     689    1%
      *See INFO below for an explanation of the DCM autocalibration logic
       added by Map
Logic Distribution:
  Number of occupied Slices:            701 out of   5,472   12%
    Number of Slices containing only related logic:     701 out of     701 100%
    Number of Slices containing unrelated logic:          0 out of     701   0%
      *See NOTES below for an explanation of the effects of unrelated logic.
  Total Number of 4 input LUTs:         776 out of  10,944    7%
    Number used as logic:               519
    Number used as a route-thru:         87
    Number used for Dual Port RAMs:     156
      (Two LUTs used per Dual Port RAM)
    Number used as Shift registers:      14
  Number of bonded IOBs:                 51 out of     240   21%
    IOB Flip Flops:                      20
    IOB Dual-Data Rate Flops:             2
  Number of BUFG/BUFGCTRLs:               5 out of      32   15%
    Number used as BUFGs:                 5
  Number of DCM_ADVs:                     2 out of       4   50%
  Number of ISERDESs:                    18 out of     320    5%
  Number of OSERDESs:                    22 out of     320    6%
  Number of IDELAYCTRLs:                 12 out of      12  100%
  Number of BUFIOs:                       2 out of      24    8%


うまく動いていないが、DDR2 SDRAMコントローラのバーストテストだ。上のMAPレポートに示すように、FFの使用率は6%といくらも使用していない。
FPGAの入力クロックは100MHzだが、DDR2 SDRAMコントローラは、DCMで2倍して200MHzで動作している。早速、XPowerを起動してみてみよう。
XPower_10_090204.png

Virtex4-FX12のFF数は10.944で、Spartan3E-500のFF数は9,312なのでほぼ同じだ。ただVirtex4-FXなのでPowerPCコアが入っている。デフォルトの状態での消費電力を比べてみる。Virtex4のFF使用率は6%、Spartan3EのFF使用率は22%、Spartan3E-500の方が4倍弱多い。

Virtex4-FX12  : 静的消費電力0.34429W 動的消費電力0.91525W 全体消費電力1.25954W ジャンクション温度 51.2度C
Spartan3E-500 : 静的消費電力0.09636W 動的消費電力0.61022W 全体消費電力0.70658W ジャンクション温度 43.4度C


やはり、Virtex4-FXの方が静的消費電力も3.5倍程度になっている。動作周波数はVirtex4が200MHzで2倍だが、FF使用率は1/4くらいとなっていている。しかし、動的消費電力はVirtex4-FXの方が多い。Virtex4-FXは、全体の消費電力は1Wを超えて、ジャンクション温度は周囲温度が25度Cの状態で51.2度Cとなっている。だいぶ暖かいはずだ。。。
Spartan3E-500と同様に、すべてのトグルレートを100% にして消費電力を計算してみる。出力負荷も20pFにしてみる。
XPower_11_090204.png

そうすると、全体の消費電力は1.60432Wとなった。これは、以前のトグル率と比べて1.27倍になっている。ジャンクション温度は58.4度Cだ。結構高くなった。これが、最高の温度だと思う。しかし、もっとロジックを使うと放熱板が必要になりそうだ。
XPower_12_090204.png

Thermal Information を見ると、Effective ThetaJA(熱抵抗)は20.8度C/Wとなっている。Spartan3E-500 はEffective ThetaJA(熱抵抗)26.1度C/Wだった。やはり、銀ぴかの金属プレートがはまっているVirtex4の方が熱抵抗が低いようだ。Ambient Temp(周囲温度)を25度Cから40度Cにして、Updataすると、ジャンクション温度が73.9度Cとなった。
XPower_13_090204.png

やはりVirtex4は熱いんだなということがわかった。Virtex5はどうなのか興味がわく。次にVirtex5でやってみよう。Virtex6とSpartan6 でやってみたいが、まだツールが対応していない。
  1. 2009年02月04日 21:34 |
  2. その他のXilinxのツールについて
  3. | トラックバック:0
  4. | コメント:2

ISE10.1iのXPower Analyzerを使ってみる2

今回は熱についての設計をしてみた。
ISE10.1iのXPower Analyzerを使ってみる1でやったそのままの状態、トグル率100%の状態を使用する。
Report Navigator ウインドウからThermal Information を選択すると、熱計算が出来る。
XPower_6_090204.png

Ambient Temp(周囲温度)25度Cのときに、Effective ThetaJA(熱抵抗)26.1C/W、そうすると、ジャンクション温度は

Junction Temp = Ambient Temp(25度C) + Effective ThetaJA(26.1C/W) X Total Power(0.91357W)


ジャンクション温度の計算値は48.44177度Cとなり、XPowerの表示とだいたい合っている。
Ambient Tempは、夏の時期にパソコンの中に入れるボードだったら40度は耐えないとまずいので、40度にして、Updata Power Analysis をすると、当然ながらJunction Temp もだいたい+15度Cになり、64.1度Cになる。(少し違いますね。計算式が少し違うのかな? まあ、だいたい合っているということで。。。)
XPower_7_090204.png

ここで、空気の流れAirflow を入れてみよう。
Lattice社のPower Calculatorユーザーマニュアルの18ページによると、”FPGAデバイスへのエアフローをLFM (Linear Feet per Minute)で定義します。0 LFM (0 m/s), 200 LFM (1 m/s), 500 LFM (2.5 m/s)”だそうなので、XPower のAirflow (LFM) の値を250 LFM (1.5m/s) にしてみよう。これでUpdata Power Analysis をすると、もう一度Junction Temp が再計算される。
XPower_8_090204.png

そうすると、Effictive TheJA が26.1度C/Wから、20.6度C/Wまで下がって、Juction Tempも64.1度Cから59.0度Cにまで下がっている。
更に、自分でCustom TheJA を入れて計算させることも出来る。放熱板をつけて冷却している場合はここに熱抵抗を入れるとJuction Tempを計算してくれる。

更に、Report Navigator ウインドウからBy TypeのClocks を選び、展開すると各クロックネットの周波数が表示される。
XPower_9_090204.png

上の図でこのDDR SDRAMコントローラのテスト回路の入力周波数は50MHz、どれをDCMで2倍してDDR SDRAMコントローラに入れているので、その周波数は100MHz。更に100MHz を1/16 しているクロックがあるので、そこは6.3MHzだ。

XPowerは、このようにいろいろ試してみて楽しいツールだ。
  1. 2009年02月04日 05:22 |
  2. その他のXilinxのツールについて
  3. | トラックバック:0
  4. | コメント:0

Virtex-6、Spartan-6発表

Virtex-6、Spartan-6が発表された。

Virtex-6は40nm のCMOSだそうだ。日本語のうたい文句には11.2Gbps対応と書いてあるが、英語のOverviewでは、GTXトランシーバは6.5Gbpsまでと書いてある。PCI Express Gen2対応。
mixed-mode clock manager(MMCM)というのが入っているそうだ。これはDCMとPLLの後継だろうか?

Spartan-6は、DDR3まで対応だそうだ。TのついているバージョンにはPCI Expressのエンドポイントが入っている。非常に楽しみだ。
Spartan-6は分散RAMやシフトレジスタにもなるSLICEMが25%、SLICEMから分散RAMやシフトレジスタの機能を除いたSLICELが25%、SLICELから算術演算用キャリーやワイド・マルチプレクサの機能を省いたSLICEXが50%だそうだ。ロジックを減らしているのだろうか?私は、ほとんど算術演算を使っていない場合が多いので、これで良いか?

Virtex-6, Spartan-6の記事は日経BPにもあった。それによると、Spartan-6は、”最大データ転送速度が800Mビット/秒のDDR2/DDR3 SDRAMを外付けできるメモリ・インタフェース回路を搭載した。”そうだ。マニュアルで見るとMemory Controller Block (MCBs) というらしい。専用ブロックが入っているんだ。。。楽しみが減ったという気もするが、確かめてみたい。スタータキットはでないのだろうか?
  1. 2009年02月03日 14:24 |
  2. その他のFPGAの話題
  3. | トラックバック:0
  4. | コメント:0

ISE10.1iのXPower Analyzerを使ってみる1

今回はISE10.1iのXPower Analyzerを使ってみた。とりあえずは、今までやってきた既存のプロジェクトがどのくらい電力を食う可能性があるのかを探ってみる。
まずはsoc-lm32、Lattice社のMico32プロセッサをSpartan3E Starter Kitに実装したプロジェクトだ。これは私のオリジナルのDDR SDRAMコントローラに換装してあるバージョンになる。Mico32プロセッサの動作周波数は50MHz、DDR SDRAMコントローラだけは100MHz動作になっている。使用デバイスはSpartan3E、XC3S500E-4FG320だ。
ISEでインプリメントしたMAPのリポートを下に示す。

Design Summary
--------------
Number of errors:      0
Number of warnings:   11
Logic Utilization:
  Number of Slice Flip Flops:         2,137 out of   9,312   22%
  Number of 4 input LUTs:             3,444 out of   9,312   36%
Logic Distribution:
  Number of occupied Slices:          2,455 out of   4,656   52%
    Number of Slices containing only related logic:   2,455 out of   2,455 100%
    Number of Slices containing unrelated logic:          0 out of   2,455   0%
      *See NOTES below for an explanation of the effects of unrelated logic.
  Total Number of 4 input LUTs:       3,549 out of   9,312   38%
    Number used as logic:             2,811
    Number used as a route-thru:        105
    Number used for Dual Port RAMs:     632
      (Two LUTs used per Dual Port RAM)
    Number used as Shift registers:       1
  Number of bonded IOBs:                 64 out of     232   27%
    IOB Flip Flops:                      18
  Number of IDDR2s used:                 16
    Number of DDR_ALIGNMENT = NONE       16
    Number of DDR_ALIGNMENT = C0          0
    Number of DDR_ALIGNMENT = C1          0
  Number of ODDR2s used:                 38
    Number of DDR_ALIGNMENT = NONE       38
    Number of DDR_ALIGNMENT = C0          0
    Number of DDR_ALIGNMENT = C1          0
  Number of RAMB16s:                      7 out of      20   35%
  Number of BUFGMUXs:                     5 out of      24   20%
  Number of DCMs:                         2 out of       4   50%
  Number of MULT18X18SIOs:                3 out of      20   15%


フリップフロップの使用率は22%、LUTの使用率は36%、スライスの占有率が52%、18X18の掛け算も15%使用している。

それではXPower Analyzerを立ち上げてみる。ProcessesウインドウのImplement Design を展開して、その中のPlace & Route を展開する。するとXPower Analyzer があるのでそこをダブルクリックする。
XPower_1_090203.png

するとXPower Analyzerが立ち上がる。
XPower_2_090203.png

これによると、静的な消費電力が0.09636W、動的な消費電力が0.61022W、トータルな消費電力が0.70658W、ジャンクション温度が43.4度Cとなっている。
左のReport Navigator ウインドウからSettings を選択すると、どのような設定で消費電力を計算するかを指定できる。
XPower_3_090203.png

現在のFFやIOのトグルレートを指定できる。これはクロックに対するデータの変化する割合を示す。今のところは12.5%になっている。これは、普通は0~200%まであって、クロックが100MHzでデータが50MHzのときにトグルレート100% となるそうだ。詳しくはHelpを参照。
最大の消費電力を求めるために、すべてのトグルレートを100% にして消費電力を計算してみる。出力負荷も20pFにしてみる。
XPower_4_090203.png

上の図でピンクの四角で囲ったアイコン(Updata Power Analysis) をクリックすると消費電力を再計算してくれる。
再度、左のReport Navigator ウインドウからSummary をクリックしてみてみると、静的な消費電力が0.09636Wで変化がないが、動的消費電力は0.81279W、トータルな消費電力は48.8度に変化している。これならば放熱板は必要ないはず。。。
XPower_5_090203.png

  1. 2009年02月03日 06:00 |
  2. その他のXilinxのツールについて
  3. | トラックバック:0
  4. | コメント:0

20世紀少年 第2章 最後の希望を見てきた

”20世紀少年 第2章 最後の希望”(IEでないとWebサイトが表示できないようです。FirefoxでもGoogle Chromeでもだめでした)を見てきた。

漫画とは筋書きが違っている。まあまあ面白いと思ったが、漫画と筋が違っているからか、映画にのめりこめない。オッチョの豊悦があまり合わないような気がする。オッチョはもっと体の大きなプロレスラーのような人にやって欲しかった。
第3章が8/29 だそうなので楽しみに待つことにしよう。。。

追記:もう一度考えてみたが映画はエピソードも短く切り詰めすぎだと思う。20巻以上の漫画を3つに映画に分けているんだから考えたら当然か。ハリーポッター状態になっているような気がする。
  1. 2009年02月01日 17:32 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:0