FPGAの部屋

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

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。ご利用ください。 http://marsee101.web.fc2.com/index.html

2010年05月

Spartan-3A Starter Kit専用のDDR2-SDRAMコントローラをMIGで生成するとTCLエラーになってしまった。(ISE12.1とISE11.5のVerilogプロジェクト)
そのまま、プロジェクトのプロパティをVHDLにして、新しいMIGコアをCoregenで生成しようとしたら、coregen_lockファイルが見つかったというダイアログが出てきた。
565c08ff.png


これを回避するには、プロジェクトフォルダの下のipcore_dirフォルダにcoregen_lockというファイルがあるので、それを削除してから、MIGのIPを生成すれば良い。

でも、VHDLプロジェクトでもTCLエラーで生成出来なかった。

(2010/06/01:追記) CoregenでMIGを生成したらできました。

昨日、高校時代の友人と自宅でバーベキューをしていました。その最中に注文してあった小学校6年の娘のノートパソコンが届きました。機種はレノボのLenovo G560 06792UJです。液晶15.6インチ、CPUはCore i5 430M 2.26GHz(512KB)、メモリ4GB、HDD320GBの娘にはもったいないマシンです。価格は60,980円でした。
OSはWindows 7 64bit版でした。バーベキューが終わってからプリンタなどをインストールしたのですが、プリンタのインストールに手間がかかってしまいました。使用プリンタはキャノンのMP980で、無線LANでつながっています。
最初にキャノンのサイトに行って、Windows 7 64bit版のドライバを落としてきたのですが、プリンタスプーラのサービスが起動していなくて失敗。手動で起動になっていたので、自動で起動に修正しました。
それで、インストーラーは進み始めました。しかし、プリンタを検索して、見つけられるのですが、その後で、”新規ポートの作成に失敗しました”というダイアログが出て、何回やっても失敗します。
それでネットで検索したら、Prosta takさんの”2009.01.17 キャノンPM980 「新規ポートの作成に失敗しました」”がヒットしました。
それによると、ポートを削除するためのアンインストーラがCDに収録されているそうです。付属CD ROMのwin\LAN\Japanese\CNMNPU.exe を起動してから、インストーラーを再度起動してインストールしたら、プリンタがインストールできました。
その後は、絵を書きたいとのことでペンタブを買ってあったので、インストールしました。これはWindows 7 64bit版対応で素直にインストールできました。このペンタブ、2千円台で買ったのですが、なかなか良さそうです。自分でも買おうかな?と思いました。お絵かきソフトはPixiaをインストールしました。
2ad5365e.jpg

今日は、FPGA-CAFEの開店日なので行ってきました。
かなりの人が来ていましたね。Simさんにもあすぴよパパさんにもお会いしました。
チップマウンタが動いていました。1005かな?1608?のチップ抵抗も綺麗にマウントしていました。
0341e600.jpg


そのうちにリフロー炉も購入されるそうです。基板切削機もあるので、基板の作製から実装、ハンダ付けまでOKですね。
ウダーの演奏もありました。
色々な方とお話ができて楽しかったです。お話して頂いた方、ありがとうございました。また、お邪魔します。

そういえばFPGA-CAFEでONYX基板を見てきました。芸術的(実装密度が凄い)にチップが配置された基板でした。発売されたら欲しいですね。写真を取ってくるを忘れました。裏にもパスコン等がパラパラついています。

明日は、FPGA-CAFEが茨城県つくば市にオープンします。
明日は家具作りサークルもあるので、午後3時頃、FPGA-CAFEに行こうと思っています。よろしくお願いします。作りかけの引き出し家具を車に乗せていきます。家具と電子工作の融合…などと考えています。無垢板の家具に、電子工作を見栄え良く入れてみたいですね。。。例えば、木目の綺麗なタモのオイルフィニッシュ仕上げのケースを、ニキシー管時計のケースとか良さそうです。

Spartan-6のPCIe Endpoint Block IPのサンプル・デザイン、PIOデザインの勉強をする。これは、下の図で言うと、Spartan-6のPCIe Endpoint Block IPの下の部分で、サンプル・デザインの時のメモリやIOの実装だ。実際には4つのBRAMが載っていて、それぞれ違うアドレスを持っている。
1ac32eb3.png


Root PortからのTLPを受信したEnd Pointは、どのBase Address Register (BAR) にヒットしたかをtrn_rbar_hit_n[6:0]でユーザー回路に知らせるようだ。下に、trn_rbar_hit_n[6:0]の説明をユーザーズガイドから引用する。

Receive BAR Hit: Active low. Indicates BAR(s)
targeted by the current receive transaction.
Asserted throughout the packet, from trn_rsof_n to trn_reof_n.
• trn_rbar_hit_n[0] => BAR0
• trn_rbar_hit_n[1] => BAR1
• trn_rbar_hit_n[2] => BAR2
• trn_rbar_hit_n[3] => BAR3
• trn_rbar_hit_n[4] => BAR4
• trn_rbar_hit_n[5] => BAR5
• trn_rbar_hit_n[6] => Expansion ROM Address.
Note that if two BARs are configured into a single 64-bit address, both corresponding trn_rbar_hit_n bits are asserted.


#そういえば、End Pointとユーザー回路のインターフェースを真面目に勉強するのを忘れていた。これは後で勉強することにする。

4つのBRAMがどのBARに割り当てられているかを示すテーブルがユーザーズガイド129ページからに載っている。Table 9-1: TLP Traffic Typesを下に引用する。
6929cab1.png


上図のようになるようだが、疑問が2つ。End Point IPは、前回、1つのBARで、1MBytesに設定したはずなのだが、それは無視されるのだろうか?サンプル・デザインはこのコンフィギュレーションになるの?
ep_mem0はIOで、trn_rbar_hit_n[6:0]はDefaultと書いてあるが、PCIeはそうなるのかな?PCIでは、IOもBARにアドレスを登録するんじゃなかったか?

もう少し、PCIeの勉強が必要なようだ。

ソースを読んでみたところ、64ビット幅アドレスは無効になっていた。trn_rbar_hit_n[0] => BAR0の32ビット幅アドレスは有効でBRAMがアサインされていた。trn_rbar_hit_n[6] => Expansion ROM Addressも有効でBRAMがアサインされていた。それ以外のアクセスがあったときは、デフォルトのIO領域のBRAMがアクセスされていた。

↑このページのトップヘ