FC2カウンター FPGAの部屋 2011年12月
fc2ブログ

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

FPGAの部屋

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

RaXinoが来ました

昨日、スキーに行っていた間に特殊電子回路株式会社からRaXinoが届きました。これで、私も特殊電子回路株式会社のユーザーになれました。(安いのしか買えませんが。。。)なひたふさんのところから何か購入したいと思っていたので、とても嬉しいです。

RaXinoはArduino互換のRXマイコン評価ボードです。Arduinoを仕事で試してみていますが、興味があって個人的に買って見ました。

Arduinoはお手軽にWeb Serverが構築できて便利だと思いました。ArduinoにつながれたセンサからLANを経由してのデータ取得はサンプルがあったので、すぐに出来ました。しかし、ArduinoにつながれたLEDをブラウザから点けるというPUSHの方はWeb上にサンプルがなく試行錯誤しましたのですが、うまく行きました。

さて、到着したRaXinoは基板とコネクタ類が別に付いていました。ハンダ付けして付けて使うようです。コネクタ部品だけハンダ付けされていなくて、他の表面実装品はすべてハンダ付けされています。
RaXino_1_111231.jpg

表面です。RaXinoと楽という字がドットの集まりで描かれているのがわかりました。
RaXino_2_111231.jpg

裏面です。日本地図が書かれています。
RaXino_3_111231.jpg

ドットで絵を書けるのはとっても良いですね。私も下の娘が書いた絵を基板に入れてみたいです。
  1. 2011年12月31日 11:08 |
  2. マイコン関連
  3. | トラックバック:0
  4. | コメント:0

ハンターマウンテン塩原スキー場に行ってきました

今日はハンターマウンテン塩原スキー場に行ってきました。私と奥さんと娘たちです。
凄く寒くて風が強かったです。行ったときは余り雪が降ってなかったです。駐車場の状況です。
hunter_ski_1_111230.jpg

スキー場でスキーをしている頃に結構雪が降って来ました。風も強かったです。寒いし、緩斜面だと風圧で滑りません。2本滑って休憩モードです。カフェラテを飲んで、休みました。寒ーい。
気を取り直して出て行って、ゴンドラにも乗りましたが、上は更にものすごい風でした。
適当に滑って昼食。かなり雪降ってました。雪が降っている蔵なので、ハンターマウンテン塩原スキー場にしては、らしからぬほどに雪は良かったです。いつもはアイスバーンの事が多いのですが、良い雪でした。
hunter_ski_2_111230.jpg

午後もリフトに乗っている時が凄い寒くて、滑りだすと向かい風にスピードがでないという状況でしたので、2時半ころ止めて帰って来ました。車に戻ると雪が積もっていました。
hunter_ski_3_111230.jpg

行きは塩原方向からきたんですが、帰りは鬼怒川温泉の方に降りました。道に雪がいっぱいありましたが、5年目のスタッドレスで全く問題なかったです。効きますねブリジストン ブリザック REV1。
帰りに鬼怒川温泉の鬼怒川公園岩風呂温泉に行ったのですが、休みでした。がっくり。。。

煽り味噌 麺屋 横田商店で味噌ラーメンを食べてきました。美味しかったですよ。ですが、辛いの苦手なんで味噌ラーメンの辛さ(普通の味噌ラーメンはピリ辛です)が寒さでやられた喉に効きました。味はおいしいと思います。また食べてみたいです。
  1. 2011年12月30日 21:58 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:0

FPGAの部屋のまとめサイトの更新(2011/12/29)

FPGAの部屋のまとめサイトを更新しました。

2011年12月28日までの記事のリンクを追加し、RubyFPGAボードで学ぶ組込みシステム開発入門[Altera偏]Make出展FPGA-CAFEAltium DesignerAXI Master IPコアの作成Atlysボードのページを追加しました。
  1. 2011年12月29日 09:53 |
  2. その他のFPGAの話題
  3. | トラックバック:0
  4. | コメント:0

2011年を振り返る2

2011年を振り返る1”の続き。

7月
・SP605でAXIバスのEDKチュートリアルを試してみた。
・ISimでハードウェア協調シミュレーションをしてみた。
FWFTモードのBlock RAM使用した非同期FIFOのrd_data_countは、Use Extra Logic For More Accurate Data Countsにチェックを入れると良い。
AXIバスのEDKチュートリアルを試すで、チュートリアルに従って、カスタムIPを作ってみた
AXIバスのEDKチュートリアルを試す10(カスタムIPを作る4)で、実際にSP605で動作した。
AXIバスのEDKでキャラクタ・ディスプレイ・コントローラのカスタムIPを作る1から、今度は自分でカスタムIPを作ってみた。

8月
AXIバスのEDKでキャラクタ・ディスプレイ・コントローラのカスタムIPを作る8で、キャラクタ文字を画面に描画することができた。
axi_timerを使う2で、キャラクタ・ディスプレイ・コントローラのカスタムIPを割り込みで動作させた。
ガイガーカウンターを乾電池駆動に変更した。
・カスタムIPのBFMシミュレーションはライセンスの関係で出来なかったが、ISEでEDKのインスタンスをADDした場合のシミュレーションをやってみた。(EDKのシミュレーション
Spartan-3A Starter KitでEDKを使ってカメラ表示1(BSB Wizard)から、今まではスレーブのカスタムIPだったが、今度はマスタ・カスタムIPを作ってみることにした。(IPIFインターフェース使用)
PLBV46 Master Burstのシングル転送プロトコルPLBV46 Master Burstのバースト転送プロトコル

9月
Spartan-3A Starter KitでEDKを使ってカメラ表示9(カメラ回路のシミュレーション)
XPSのカスタムIPにCore Generatorで生成したIPのネットリストを追加する方法(これが分からなかった。ame_feb4さん、ありがとうございました)
中尊寺に行ってきました1中尊寺に行ってきました2
Spartan-3A Starter KitでEDKを使ってカメラ表示12(ディスプレイ回路のシミュレーション)
”ワクワクするArduinoワークショップ ~新入門編~”のセミナに参加してきました。今度、Arduinoについて発表会で発表する予定です。
Spartan-3A Starter KitでEDKを使ってカメラ表示22(一応完成)完成して、カメラの画像をディスプレイに表示することができた。

10月
ステレオカメラ基板作成1(OV7670基板)で、Spartan-3A Starter Kit用のステレオカメラ基板を作り始めた。
・xps_timerを使って、タイマールーチンを作ろうとしたが、xps_timerの割り込みがどうしてもSpartan-3A Starter Kitでうまく動かなかった。独自にタイマーを作った。
・Spartan-3A Starter Kit用のステレオカメラ基板をFusion PCBに発注した。
山寺(立石寺)に行ってきました1山寺(立石寺)に行ってきました2
・FPGAボードで学ぶ組込みシステム開発入門[Altera偏]を試してみた。
・XPSでChipScope Proコアを追加してデバックしてみた。
・母校のホームカミングデーに行ってきた。懐かしい同級生と楽しいひとときを過ごしてきた。
iPhone4Sを購入した。
Spartan-3A Starter KitでEDKを使ってカメラ表示29(ソフトでカメラを制御2)で、MicroBlazeでカメラのレジスタの制御もできるようにしたので完成した。
Spartan-3A Starter Kit用のステレオカメラ基板が到着した
システム開発入門[Altera偏]を試してみる4(2.4アップダウン・カウンタのシミュレーション1) ModelSim使うの久しぶり。。。

11月
CyberWorkBenchのセミナに行ってきた
・FPGA-CAFEのレーザー加工機でSpartan-3A Starter Kitのアクリル・ケースを作成した(FPGA-CAFEのレーザー加工機の使い方(CorelDRAW編)
・ステレオカメラでアナグリフをやってみた(このネタでMTM07に出展した)
・KC705プラットフォームでXilinx Platform Studio 13.3を試してみた。
Spartan-3A Starter Kit用OV9655のステレオカメラ基板が届いた
FPGA-CAFEでAltium Designerを個人的に共同購入した
ガス台が新しくなりました
・”FPGAボードで学ぶ組み込みシステム開発入門[Altera編]”の”9-1 uClinuxと開発環境の構築”を参考にして、今回はDE0でuClinuxをやってみた。uCliunxが動作した
Altium DesignerのExamples と Reference Designs のダウンロードページの内のVHDL Simulationの内のBCD Counterサンプルをやってみた。Altium Designerもいろいろ試してみています。

12月
Spartan-3A Starter Kitのアクリルケースの設計2。全ファイルを公開した。
MTM07へ出展した。すすさん、お世話になりました。
・AXI4 プロトコルの勉強をした。
・Altium Designerでライブラリのパーツを作成した。
・Atlysボード+VmodCAMをやり始めた。
・VmodCAMのカメラMT9D112について勉強した。まだ、よくわかっていない。

今年もいろいろやったな~。来年も頑張りたい。来年もよろしくお願いします。

なお、今年映画館で見た映画は、ソーシャル・ネットワーク、RED、あしたのジョー、太平洋の奇跡 フォックスと呼ばれた男、英国王のスピーチ、ナルニア国物語 第3章 アスラン王と魔法の島、ガリバー旅行記、岳、プリンセストヨトミ、手塚治虫のブッダ、SUPER8、ハリーポッターと死の秘宝PART2(後編)、コクリコ坂から、カーズ2、カンフー・パンダ2、はやぶさ/HAYABUSA、猿の惑星、創世記(ジェネシス)、三銃士/王妃の首飾りとダ・ヴィンチの飛行船、1911、リアル・スティール、聯合艦隊司令長官 山本五十六 でした。23回、映画を見に行きました。約1ヶ月に2回ですね。よく見に行ったと思います。うちの奥さんは、もっと見に行ってます。
  1. 2011年12月27日 18:24 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:0

2011年を振り返る1

2011年を振り返ってみよう。

今年は何と言っても3月11日の地震があった。あの後、停電して真っ暗な中で余震の恐怖に怯え、数日間テレビも見てなかったので、テレビを見るまで津波の被害も知らなかった。数日間はブログを書く気にもなれずに5日後に気を取り直してブログを書き始めた。
福島原発も本当に不安で3月14日に3号機が爆発したときは、避難も真剣に考えた。
ガソリンがなく、朝3時起きで並んで買ったな~。
いろいろ怖い思い出が残った。でも、被災地の方から比べれば、本当に幸福だったと思う。家も少し壊れたが問題ないし、家族も健在だ。

1月
CMOSカメラのOV9655を購入し、ディスプレイにカメラの画像が映った。(VGA)
・Interface2011年2月号のNSLサンプルを試した。インプリントして、Spartan3 Starter Kit にダウンロードしたら動作した
奥さんと筑波山ウォーキングに行って来た。そばも食べたが美味しくなかった。
OV9655でSXGAのカメラ画像を表示できた。

2月
・キャラクタ・ディスプレイ・コントローラをNSLで書いた。一応表示できた
・PlanAhead12.4でCreate New Projectしてみた。
TED プログラマブル ソリューション2011に行ってきた
・DesignSpark PCB 1.0.3 のチュートリアルを試してみた。
上の娘の大学受験で仙台に行ってきた

3月
・PlanAhead13.1を試してみた。
DesignSpark PCB 2.0を試してみた。3D表示が追加されていた。
・3月11日に地震が起きた。地震の時は職場で書庫を押さえていた。パソコンを守るためだったが、今度、地震が起きたら逃げる。
・Spartan-3A Starter Kit用DVI出力拡張ボードを作ろうとしたが途中で挫折。
・VMware Playerを使用してFedora14をインストールしてみたが、時刻が狂って大変だった。
VMware上のFedora14で、ひでみさんのMicroBlazeクロスコンパイラを試した。この時は成功したが、以降、コンパイルできなくなった。

4月
・Spartan-3A Starter Kit用DVI出力拡張ボードのPCBシンボルを作成した。これで部品の作り方をだいぶ覚えた。
DCMカスケード接続の罠(CLKDV編)2(解決編)を書いた。これは、一度はハマる。DCMをカスケードする場合に1番目のDCMのLOCKED信号を反転して3クロック遅延して、2番目のDCMのリセットに入れる必要があるということだ。
エレキジャック・フォーラムで展示してきた。画像テルミンとガイガーカウンタ。ガイガーカウンタは楢ノ木技研さん所のキット。
CH7301Cを制御して、DVI出力することができた

5月
Spartan-3A Starter KitでMIGを使用してみたが、生成できなかった。
上の娘が仙台に引っ越した。別れるときは寂しそうだったが、今では友達も出来て楽しく暮らしているようだ。
・Spartan-3A Starter KitでDDR2 SDRAMを使用するのに、サンプルのMIGを試した。Spartan-3A用のMIGのユーザー・インターフェース信号についてまとめた
・XUPV5-LX110T Development SystemでMIGを試した。ユーザー・インターフェース信号を調べた
・Verilatorを試してみた。とてもよかったのだが、シミュレーション記述が通らないので、諦めた。
FPGAの部屋が200万アクセス達成

6月
今まで書いた技術論文
・OpenCoures のopenMSP430をやってみた。理由はGCC-Toolchainがあったからだ。やはり、オープンソースのCPUは、MicroBlazeに比べて、XilinxのFPGAに最適化されていないので、規模、動作周波数共に不利ということがわかった。
息子の高校の学園祭2011。来年は予算不足で学園祭は無いそうだ。
カメラ表示用プラットフォームが完成。これについて、今年の技術報告に報告書を書いた。
MITR Workshopに参加して、インターバル・タイマー・リモコンを作った。
NetGenとData2MEMを使用して、The Simple MicroBlaze Microcontroller(SMM)のシミュレーションをすることができた。

2011年を振り返る2”に続く。
  1. 2011年12月27日 08:37 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:0

Laser Cutting Xmas Party 2011 @FPGA-CAFEに参加してきました

Laser Cutting Xmas Party 2011 @FPGA-CAFEに参加してきました。

そうそうたるメンバーが集まって、レーザー加工機の使い方を勉強してきました。
Emerge+の山田さんがいらして、いろいろなレーザー加工機の使い方をレクチャーして頂きました。面白かったです。レーザー加工機によって結構違うんだな?という印象が残りました。
石もレーザー加工できるそうです。自分の墓誌を掘っておきたいです。(FPGAの文字を入れておきたいです)
いろいろノウハウも教えてもらいました。企業秘密を教えてもらっている感じがしましたが、大丈夫なんでしょうか?

そしてやはり、排気が大変だそうです。FPGA-CAFEでは、排気はレーザー加工機からフィルターを通して外部排気していました。それでもアクリルを切る時に多少匂いましたが、今日はそういえば、アクリルを切っていても匂いませんでした。フィルタを回収したからかな?Emerge+では排気ろ過装置を導入して室内排気しているそうです。それでも臭くないとのことでした。

レーザー加工機のレクチャーの後で、Arduinoのスナップオン・エンクロージャを作って頂きました。自分のTwitter IDを彫刻してもらいました。時間がかかりそうだったので、最後までいないで帰って来ました。来年、受け取りに行きます。来年のFPGA-CAFEの営業は1月8日からだそうです。

いろいろお話できて楽しかったです。ありがとうございました。
  1. 2011年12月25日 21:36 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:0

Atlysボード+VmodCAMのシミュレーション

前回までで、MT9D112の動作の概略はわかったので、Atlysボード+VmodCAMのシミュレーションをやってみることにした。

Atlysボード+VmodCAMについては、”Atlysボード+VmodCAM”、”Atlysボード+VmodCAM2”を参照。

MT9D112については、”MT9D112(Aptina社CMOSイメージセンサー)の概要”、”MT9D112(Aptina社CMOSイメージセンサー)の概要2”、”MT9D112(Aptina社CMOSイメージセンサー)の概要3”参照。

最初にDDR2 SDRAMのモデルをゲットする。
Atlysボードのリファレンス・マニュアル(PDFです)によるとDDR2 SDRAMには、Micron MT47H64M16-25Eを使っているそうだ。早速、Micron社のサイトで、1Gb DDR2 SDRAM: MT47H64M16HR-25を見つけた。Micron社のSDRAMはVerilogのモデルがダウンロードできるからありがたい。Sim Modelsのタブをクリックして、1024Mb DDR2 Verilog Model: 5.83をダウンロードした。
ダウンロードした39571024Mb_ddr2.zipを開いた中のddr2.vとddr2_parameters.vhを使用する。ddr2_parameters.vhには、いろいろなスピードグレード、出力データ幅が定義されているので、

`define sg25E
`define x16


を指定して使用する。

次は、MT9D112のモデルづくりだが、とりあえずは、MCLKで入力されたクロックを無視して80MHzのPCLKを出力する。I2Cは無視する。640X480のRGB565フォーマットでテスト用ピクセルを出力する。これは作成中。

テストベンチ用ファイルVmodCAM_Ref_tb.v も作成中。これは、以前作ったSpartan-3A Starter Kitのカメラ表示回路のテストベンチを修正している。DDR2 SDRAMのモデルとの接続部分はそのまま使える。DDR2 SDRAMへの配線遅延も考慮された記述となっている。

今まで、やってきたHDLの資産は有効に活用することができるので、この効果は大きいと言える。

  1. 2011年12月25日 05:04 |
  2. Atlysボード
  3. | トラックバック:0
  4. | コメント:0

映画『聯合艦隊司令長官 山本五十六』を見てきた、クリスマス・イブパーティー

今日は映画『聯合艦隊司令長官 山本五十六』(注意:音が出ます)を見てきました。役所広司の役がピッタリで良かったです。

夕方には、親も呼んでクリスマス・イブパーティーをしました。
鳥とローストビーフはイオンで買ってきた出来合いのものです。鳥は少し味が濃かったですが、美味しかったです。ローストビーフも美味でした。
ケーキがありませんが、いつもの守谷の樅の木のいちごムースケーキでした。これも美味しかったです。一番上の娘がいないのが寂しいですが、仙台で楽しくやっていることでしょう?
Xmas_1_111224.jpg

  1. 2011年12月24日 22:47 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:0

MT9D112(Aptina社CMOSイメージセンサー)の概要3

MT9D112(Aptina社CMOSイメージセンサー)の概要2”の続き。

設定レジスタについて書いておこうと思う。すごい膨大な量のレジスタを持っている。今まで扱った中で機能的には一番凄い。
レジスタと変数(Variable)には4タイプあるそうだ。

1.ハードウェア・レジスタ
2.ドライバ変数
3.特殊機能レジスタ
4.MCUのSRAM(ユーザーエリアにアクセスできる)



1.ハードウェア・レジスタは、コア・レジスタとSOC1、SOC2に分けられる。
コア・レジスタは0x3000から0x3144まで、SOC1は0x3146から0x33FCまで、SOC2は0x3400から0x35BEまで、16ビット長のレジスタ。
SOC2にはPLLの設定などがある。

2.ドライバ変数
1.のハードウェア・レジスタの0x338Cと0x3390を使用してアクセスする。
0x338Cのビット14,13が01の時に、ドライバ変数にアクセすることが出来る。
ビット12~8が0x00 - Moniter, 0x01 - Sequencer, 0x02 - AE, 0x03 - AWB, 0x04 - Flicker, 0x05 - AF, 0x06 - AFM, 0x07 - Mode, 0x0B - HGとなっている。
オフセットをビット7~0にセットして、Writeの場合は0x3390に値を書く。Readの場合は0x3390から読む。

3.特殊機能レジスタ
やはり、0x338Cと0x3390を使用してアクセスする。GPIO。
0x338Cのビット14,13が00で、アドレスが0x1070よりも上のようだ。

4.MCUのユーザーRAM
1KバイトあるユーザーRAMにアクセスできるそうだ。
ユーザーRAM領域も同様に、0x338Cと0x3390を使用してアクセスする。
0x338Cの0x0400~0x7FFと思われる。
  1. 2011年12月23日 14:23 |
  2. Atlysボード
  3. | トラックバック:0
  4. | コメント:0

MT9D112(Aptina社CMOSイメージセンサー)の概要2

MT9D112(Aptina社CMOSイメージセンサー)の概要1”の続き。

設定用レジスタへのアクセスは例によってI2Cで行う。設定用レジスタのアドレスもデータも16ビットだった。
以前のOV7670のSCCBインターフェースのタイミングチャートを下に示す。
SCCB_timing_chart_091215.png

これはIDアドレスに設定レジスタのアドレス8ビット、Writeデータ8ビットだったが、今度は設定用レジスタのアドレスもWriteデータも16ビットになっている。

ランダムWriteの場合
(ACKは省略)
・スタート
・SLAVE ADDRESS(0x78)
・設定用レジスタのアドレスの上位8ビット
・設定用レジスタのアドレスの下位8ビット
・設定用レジスタ設定値の上位8ビット
・設定用レジスタ設定値の下位8ビット
・ストップ

Atlys_6_111222.png

ランダムReadの場合
(ACKは省略)
・スタート
・SLAVE ADDRESS(0x78)
・設定用レジスタのアドレスの上位8ビット
・設定用レジスタのアドレスの下位8ビット
・スタート
・SLAVE ADDRESS(0x79)
・設定用レジスタ設定値の上位8ビット
・設定用レジスタ設定値の下位8ビット
・ストップ

Atlys_7_111222.png

上記のフォーマットで設定用レジスタに書いたり、読んだりできる。
  1. 2011年12月22日 05:30 |
  2. Atlysボード
  3. | トラックバック:0
  4. | コメント:0

COEファイルのフォーマット

Core Generatorで生成したROMやRAMなどに初期値を入れるときは、COEファイルを生成する。
Block Memory Generaotrだったら、Page 4 of 6のMemory InitalizationのLoad Init Fileにチェックを入れて、Coe Fileを指定する。
COE_File_1_111221.png

COEファイルのフォーマットは”COE ファイルの構文”に書かれている。下に、私が使用している一部のフォーマットを引用する。

; Sample memory initialization file for Single Port Block Memory,
; v3.0 or later.
;
; This .COE file specifies initialization values for a block
; memory of depth=16, and width=8. In this case, values are
; specified in hexadecimal format.
memory_initialization_radix=16;
memory_initialization_vector=
ff,
ab,
f0,
11,
11,
00,
01,
aa,
bb,
cc,
dd,
ef,
ee,
ff,
00,
ff;


これは、memory_initialization_radix=16;で16進数に指定されている。
最後のデータは;で終了する。
間のデータのff, はff でも問題ないようだ。
  1. 2011年12月21日 14:22 |
  2. Core Generator
  3. | トラックバック:0
  4. | コメント:0

MT9D112(Aptina社CMOSイメージセンサー)の概要

Spartan-6 45LXが載ったAtlysボードVmodCAM - Stereo Camera Moduleを接続して使っている。

VmodCAMにはMT9D112というAptina社のCMOSカメラ(CMOSイメージセンサー)が2つ搭載されている。簡易なデータシートはこちら。
このMT9D112は、初代iPhoneとiPhone 3G搭載されていたこともあるようだ。実際に写してみると、暗いところでも色再現性が良いと思う。抵抗分割RGB4ビットDACとHDMIで見ている違いもあると思うが、OV7670,OV9655よりも画質が良いように感じられる。

MT9D112の特徴を下に示す。(VmodCAMリファレンス・マニュアル参照)
1.200万画素のCMOSイメージセンサー
2.最大1600X1200ピクセルで15fps(フレーム/秒)
3.10ピット長、RAWデータ(VmodCAMの回路図では上の8ビットのみ接続されている)
4.出力フォーマットはBayer, RGB, YCrCb(内部にImage Flow Processorを持っていてBayerから変換してくれる。MT9T031はBayerのみ)
5.自動露出、自動ゲイン、自動ホワイトバランス(OVシリーズよりはるかに優秀(あくまで主観です))
6.強力に画像補正してくれる
7.I2Cでレジスタを設定、読み出し出来る。(これはいつもおなじみ)

とにかく、綺麗に取れるCMOSカメラだと思う。
  1. 2011年12月21日 05:34 |
  2. Atlysボード
  3. | トラックバック:0
  4. | コメント:0

LOG2の値の求め方2

LOG2の値の求め方”の続き。

今日、Atlysボード+VmodCAMのVGA出力バーションのISEプロジェクト(VmodCAM_Ref_VGA%20Demo_13.zip)のVHDLソースを見ていたら、ビット幅を定義している部分を見つけた。
それは、CamCtl.vhdの下の文だった。

constant INIT_VECTORS : natural := 26;
constant ADDR_WIDTH : natural := natural(ceil(log(real(INIT_VECTORS), 2.0)));


この場合には、最初にmath_realパッケージをuseしておく必要がある。

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.math_real.all;



(注)naturalは自然数(0を含む)

type integer is -2,147,483,647 to +2,147,483,647;
subtype naturl is integer range 0 to +2,147,483,647;


VHDL 命令説明参照

function CEIL (X : real ) return real;
-- returns smallest integer value (as real) not less than X


math_real.vhdlから引用
  1. 2011年12月20日 17:52 |
  2. VHDLの書き方
  3. | トラックバック:0
  4. | コメント:0

Atlysボード+VmodCAM2

”Atlysボード+VmodCAM”の続き。

Atlysボード本体のPROGコネクタからUSBケーブルでパソコンにつないだ時はコンフィグがうまく行かなかった。今回は、Digilent社のXUP USB-JTAG Programming Cableで金フィグしたらうまく行った。
両方のカメラからの画像を下に示す。
Atlys_3_111220.jpg

右のカメラからの映像。
Atlys_5_111220.jpg

左のカメラからの映像。
Atlys_4_111220.jpg

綺麗に写った。

ここからどうするかだが、xapp495_S6TMDS_Video_Interface.pdfなども参照しながら考えようと思う。
とりあえずは今のをシミュレーションしてみようと思う。

今までは、動いている出来あいのものがなかったから自分で作るしか無かったが、結構豊富にサンプルデザインがあっても迷うな。。。

  1. 2011年12月20日 05:48 |
  2. Atlysボード
  3. | トラックバック:0
  4. | コメント:0

Atlysボード+VmodCAM

今度、HDMI入力X2、HDMI出力X2が付いたSpartan-6 LX45の搭載されたDigilent社のAtlysボードに、ステレオカメラボードのVmodCAMを付けて、いろいろとやって見ることにした。AtlysボードとVmodCAMの間はVHDCI Male-to-Male Cableでつながっている。
ステレオカメラとしては使わずに、とりあえずは1つだけカメラを使用して、お仕事用の画像処理システムのベースを作成する。なかなか仕事時間中にできないので、家で楽しみながら(苦しみながら?)やってみたい。
Atlysボードに慣れたら、Spartan-6で、XPSではAXI4バスが使えるので、AXI4 Masterモジュールを書いて動作させてみたい。AXI4 Masterモジュールは、カメラからDDR2 SDRAMへの書き込みモジュールとDDR3 SDRAMからHDMIへの出力モジュールとなる予定だ。

AtlysボードのHDMI OUTにHDMIケーブルを接続し、HDMI切替器を通してHDMI-DVI変換ケーブルで19インチのディスプレイに接続すると、カラーパターンが出た。(デフォルトでSPI ROMからコンフィグされるデモ)
Atlys_1_111219.jpg

次にVmodCAM用のDSD-0000309のVmodCAM_Ref_VGA_Demo_13をやってみたのだが、HDMI出力がでない。以前、Windows 7のパソコンでやってみたときはカメラ画像をHDMI出力できていた。
Atlys_2_111219.png

ダウンロードしたファイルのついていたビットファイル(vmodcam_atlys_ref_vga_split.bit)もダウンロードしてみたが動作しなかった。

現在、コンフィグはAtlysボードのPROGコネクタにUSBケーブルで接続してやっている。Windows XPでISE13.3でやっている。コンフィグがおかしいような気もする?ダウンロード・ケーブルでやってみることにする。

(2011/12/20:追記)
PROGコネクタを使ったコンフィグでもRESETスイッチを押せば動作しました。
  1. 2011年12月19日 05:51 |
  2. Atlysボード
  3. | トラックバック:0
  4. | コメント:0

リアル・スティールを見てきた(映画)

昨日は風邪の鼻水で苦しかったんですが、奥さんとリアル・スティールを見てきました。
ロボットでボクシングをする時代の親子の物語でした。すこし、くさかったですが、それなりに楽しめました。
  1. 2011年12月19日 04:57 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:0

Altium Designerでライブラリのパーツを作成する4

Altium Designerでライブラリのパーツを作成する3”の続き。

今回は、回路図コンポーネントの属性の設定を行う。

34.左のウインドウの下のSCH Libraryタブをクリックする。コンポーネントが表示されるので、NPNをダブルクリックする。
Altium_Designer_72_111218.png

35.Library Component Propertiesダイアログが開く。
Default Designatorを設定する。これはQ?と設定すれば?の部分は自動的にインクリメント(Q1, Q2...)されるそうだ。コンポーネントの配置前にデジグネータを定義しておくことが必要だそうだ。(配置中にTABキーを押すとオブジェクトの編集が出来る)

36.Default CommentにNPNと入力した。Default DesignatorとDefault CommentのVisibleはチェックされていた。

37.Description にNPN Transistorと入力した。

38.Modelとかを入れないのならば、Library Component PropertiesダイアログをOKボタンで閉じる。
Altium_Designer_73_111218.png

39.セーブしておいた。

後の細々とした話は、”ライブラリコンポーネントの作成”を参照のこと。
  1. 2011年12月18日 05:26 |
  2. Altium Designer
  3. | トラックバック:0
  4. | コメント:0

Vimをインストールした

LSI設計雑記帳さんの”VimでSystemVerilog(OVM)を高速入力”を見て、Vimをインストールしてみようと思った。

まずは、vim-jp から、Windows 32ビットのバイナリデータをダウンロードして、適当なところに解凍した。

名無しのVim使いさんのところにプラグインの解説やカラースキームの解説がたくさんある。

Vim OnlineのScriptのBrowse allからスクリプトを検索してインストールする。
文字補完プラグインcmdline-complete.vimvhdl.vimをダウンロード。
.vimファイルはvim73-kaoriya-win32\vim73\pluginにドラッグアンドドロップして、再起動すればインストールできる。
hdl_pluginもインストールした。これはテストベンチのスケルトンを作ってくれる。

verilog_systemverilog.vimもインストールした。これは.vimでなく、.tar.gzとなっていた。
解凍したverilog_systemverilogをvim73-kaoriya-win32\pluginsにコピーした。

vim73-kaoriya-win32\gvimrcを編集する。
カラー設定をzellnerに変更した。

"---------------------------------------------------------------------------
" カラー設定:
colorscheme zellner


Vimのメモを参考にTABを4に設定する。行番号も表示するようにした。

:set tabstop=4
:set softtabstop=4
:set shiftwidth=4
:set number


を追加した。

Vimを再起動。

SWDiv.vを読み込んで、iでインサートモードにして、補完機能を確かめるために、swとキータイプしてから、CTRL+Pを押すと候補が出てきた。矢印キーで選べばOKだ。
Vim_1_111217.png

ファイルからタブページで開くを選択して、VHDLファイルも開いた。こっちも色分けされている。
Vim_2_111217.png

Verilogのテストベンチのスケルトンを作成した。
Vim_3_111217.png

こんな感じでできた。
Vim_4_111217.png

VHDLのテストベンチのスケルトンも作成した。
Vim_5_111217.png

これは便利だと思う。しかも、EmacsでなくViで出来る所が良い。

Changed.vimもインストールした。
diffもインストールした。:Changedで書き換えた所が表示できる。

カラースキームパッケージrainbow.zipを解凍して、vim73-kaoriya-win32\vim73\colorsに入れた。
breezeを使用している。
その他、いろいろ組み込んだ。
Vim_6_111217.png

切りが無いですね。やはり決め打ちでもないけど、それに近いNotepad++の方が楽かもです。でも、テストベンチのスケルトン作成機能は使います。
  1. 2011年12月17日 09:09 |
  2. その他のFPGA用ツールについての話題
  3. | トラックバック:0
  4. | コメント:0

Altium Designerでライブラリのパーツを作成する3

Altium Designerでライブラリのパーツを作成する2”の続き。

次は、回路図コンポーネントにピンを追加する。

25.配置メニューからピンを選択する。
Altium_Designer_61_111216.png

26.ピンが出てくる。ここでTABキーを押す。
Altium_Designer_62_111216.png

27.ピン プロパティが出る。表示名を1、デジネータを1、長さを20に設定する。電気的タイプはPassiveで良いそうだ。電気的タイプを正しく設定すると、DRCで違反を検出できる。
Altium_Designer_63_111216.png

28.Spaceキーを押すとピンを90度ごとに回転できる。ピンを1つ追加するとピン番号は+1される。下の図が全部おいた所。
Altium_Designer_64_111216.png

29.ピン名称、または番号とコンポーネントのボディ間の距離を設定する。ツールメニューからプリファレンスを選び、プリファレンス ダイアログで Schematic -> Generalを選ぶ。ピンの余白の名称とピン番の値を変えると距離が変わる。デフォルトでは名称が5、ピン番が8だった。
Altium_Designer_65_111216.png

ピンの余裕の名称を2にしてみた。名称の間隔が変化した。
Altium_Designer_66_111216.png

ピン番も2にしてみた。ピン番号がシンボルに寄った。
Altium_Designer_67_111216.png

名称を5、ピン番は8に戻して、プリファレンス ダイアログを終了する。

30.表示名は邪魔なので消そうと思う。ピンをダブルクリックして、ピン プロパティを出す。表示名の表示チェックを外すと表示名が消える。
Altium_Designer_68_111216.png

31.あと2つのピンの表示名とデジグネータを消すことにする。最初のピンはクリックで選択し、あと2つのピンはShiftキー+クリックで選択する。その後、F11を押すと、Inspectorが表示される。Show Nameにはチェックはついていない(2つ表示で1つ非表示)が、Show Designatorにはチェックが付いている。
Altium_Designer_69_111216.png

32.Show Nameはチェックを入れてから外し、Show Designatorはチェックを外した。
Altium_Designer_70_111216.png

33.Inspectorを終了し、セーブした。
Altium_Designer_71_111216.png

これで回路図コンポーネントの作画は終了した。

Altium Designerでライブラリのパーツを作成する4”に続く。
  1. 2011年12月17日 06:00 |
  2. Altium Designer
  3. | トラックバック:0
  4. | コメント:0

Altium Designerでライブラリのパーツを作成する2

Altium Designerでライブラリのパーツを作成する1”の続き。

次は、回路図コンポーネントを書く。

14.配置メニューからラインを選択する。
Altium_Designer_50_111216.png

15.カーソルが十字カーソルになる。TABキーを押すと連続ライン・ダイアログが出てくる。色を決定する部分(ピンクの四角で囲った部分)をクリックする。
Altium_Designer_51_111216.png

16.色選択・ダイアログで229番をクリックして、OKボタンをクリックする。
Altium_Designer_52_111216.png

17.連続ライン・ダイアログの色が青になった。
Altium_Designer_53_111216.png

18.これで線を引けるようになったので、線を引く。クリックすると線が引けて、もう一度クリックするとそこまでの線が確定する。その後続けて線を引こうとするので、マウスの右クリック、またはESCキーでブレークする。
Altium_Designer_54_111216.png

19.トランジスタの斜めの線を引こうとしても引けない。クリックしてラインを引いている最中にShiftキー+Spaceキーを押すと斜め線が書けるモードに移行する。
Altium_Designer_55_111216.png

20.次にエミッタの矢印の書き方だ。これは19.の斜め線を書いているモードで、TABキーを押す。連続ライン・ダイアログが出てくるので、終点形状からSolidArrowを選択する。
Altium_Designer_56_111216.png

21.連続ライン・ダイアログの終点形状がSolidArrowに変更された。
Altium_Designer_57_111216.png

22.OKボタンをクリックして連続ライン・ダイアログを終了させて、ラインを書いた。
Altium_Designer_58_111216.png

これでトランジスタの形状が書けた。

23.”Altium Designerでライブラリのパーツを作成する1”の11.ライブラリエディタ ワークスペース・ダイアログのコメント/デジグネータ表示にチェックを入れないほうが良いようだ。このチェックを外すと2つの*が消えた。
Altium_Designer_59_111216.png


なお、ライン描画モードで、原点から遠くはなれてしまった場合は、CTRL+Homeキーを押すと原点に戻る。

24.ファイルメニューから保存で保存した。
Altium_Designer_60_111216.png
  1. 2011年12月16日 05:42 |
  2. Altium Designer
  3. | トラックバック:0
  4. | コメント:0

Altium Designerでライブラリのパーツを作成する1

Altium Designerでライブラリのパーツを作成してみようと思う。
最初なので、”ライブラリコンポーネントの作成”に沿った形でチュートリアルをやってみようと思う。

1.まずは統合ライブラリを作成する必要があるらしいので、ファイルメニューから新規 -> プロジェクト -> 統合ライブラリを選択する。
Altium_Designer_39_111215.png

2.統合ライブラリが新規作成された。名前はIntegrated Libray1.LibPkgだった。ここで右クリックメニューからプロジェクトに名前を付けて保存...を選択する。

3.Saveのダイアログが開く。Examplesのフォルダが出てきたので、そのまま保存した。
Altium_Designer_40_111215.png

4.ファイルメニューから新規 -> ライブラリ -> 回路図ライブラリを選択し、新規の回路図ライブラリを作成した。
Altium_Designer_41_111215.png

5.新規の回路図ライブラリが開いた。
Altium_Designer_42_111215.png

6.ファイルから名前を付けて保存を選び、Schlib1.SchLibという名前で保存した。

7.ツールメニューから新規コンポーネントを選択する。
Altium_Designer_43_111215.png

8.New Component Nameダイアログが出る。名前をNPNに変更してOKボタンをクリックする。
Altium_Designer_44_111215.png

9.編集メニューからジャンプ -> 原点を選択して、デザイン・ウィンドウの中央(シートの原点)にカーソルを移動した。
Altium_Designer_45_111215.png

回路図コンポーネントを作成する場合は、原点の近くでコンポーネントを作成する必要があるそうだ。回路図上にコンポーネントを配置する時、この原点に一番近い電気的なホットスポット(ピンの端)でコンポーネントをつかむそうだ。(”ライブラリコンポーネントの作成”参照)


10.ツールメニューからドキュメント オプションを選択する。
Altium_Designer_46_111215.png

11.ライブラリエディタ ワークスペース・ダイアログが開く。ここでグリッドなどを設定できるが、グリッドを変更する必要がある時は、キーボードのGを押すとスナップグリッドを1, 5, 10と切り換えることができるそうだ。
なお、日本語版ではライブラリエディタ ワークスペース・ダイアログの設定が見えないが、英語版の”Creating Library Components”を見ると、コメント/デジグネータ表示にチェックを入れている。(2011/12/16:追記)コメント/デジグネータ表示にチェックを入れ無い方が良さそうだ。ここにチェックを入れると画面に*が2つ出てしまう。
Altium_Designer_47_111215.png

12.次に単位タブをクリックして、インチ単位系を使用にチェックを入れる(入っている)。DXP Defaultsがっ指定されていた。(今回はmilでやります)OKボタンをクリックする。
Altium_Designer_48_111215.png

13.画面に*が2つ出た。
Altium_Designer_49_111215.png

Altium Designerでライブラリのパーツを作成する2”に続く。
  1. 2011年12月15日 05:19 |
  2. Altium Designer
  3. | トラックバック:0
  4. | コメント:0

風邪を引いて体調が悪い

日曜日に仙台に車で往復してきたのですが、日曜日から鼻の奥が痛くて風邪を引いてしまったようです。
風邪が治るまでは更新が滞るかもしれません。

昨日、FPGAの部屋の230万アクセス目を自分で踏みました。皆さん、見て頂いてありがとうございます。これからも、よろしくお願いします。
  1. 2011年12月13日 06:01 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:2

AXI4 プロトコルの勉強3(書きこみバースト例)

今度は、AXI4の書きこみバースト例だ。

最初にオーバーラップしていない書き込みバーストのタイミングチャートを下に示す。
AXI_Protcol_3_111209.png

最初の書き込みは、4バイト境界にアラインされたアドレス(AD0)の転送となる。AWIDは0、AWSIZEは4バイト、バーストモードはインクリメント、となる。(Write address channel)
次に、Write data channelの番となる。WDATAにデータを出力し、WSTRBを0b1111にする。これですべてのバイトレーンが書き込まれる。WVAILDとWREADYの両方が1にアサートされたときがデータ転送が成立したときである。最後のデータ転送の時にWLASTをアサートして終了となる。
最後にWrite response channelだ。Write data channel終了後に、BVALIDとBREADYが共に1にアサートされた時に、AWIDと同じIDがBIDに出力され、BRESPに0(OKEY)が出力されれば、書き込みが成功した。

次の書き込みは、2バイト境界にアラインされた16ビット幅のリトルエンディアンの書き込み。(9.3ナロー転送を見ると、AXI4の基本的なエンディアンはリトルエンディアンの様です。)このデータ転送があるのか?という点が分からないがこういうのもあり得るのでは?ということで見て欲しい。
2012/10/22:追加 書き込みトランザクションにやるハンドシェークの依存関係を誤解していたので、タイミングチャートを書きなおした。書き込みトランザクションにおいて、WVALIDをアサートする前に、AWREADYがアサートされるのを待っていてはダメだそうだ。デッドロック状態を引こ起こす可能性があるそうだ。)

リトルエンディアンなので、4n+2のアドレスから16ビット幅でデータ転送すると、32ビットの内の上の16ビットを書きこむ。その後、下の16ビットを書きこむ。WSTRBで制御すれば、4n+1, 4n+3のアドレスからでもバーストが出来る。


次にオーバーラップ書き込み。行けるかどうか分からないが?オーバーラップ出来るとすれば、こんな感じか?
AXI_Protcol_4_111212.png

2番目の書き込みは4n+3から4バイトアクセスした時だ。WIDは違うほうが良いのかも?と思い変えている。

LogiCORE IP PLBV46 to AXI Bridge (v2.00a) DS711 September 21, 2010を見るといろんなAXIのトランザクションが載っている。
30ページのFigure 13: Burst Write Transfer of Length 10 That Crosses 4KB Boundary on AXIを見ると、書き込みをオーバーラップしている例が載っている。可能みたいだ。
  1. 2011年12月11日 23:05 |
  2. AXI4バス
  3. | トラックバック:0
  4. | コメント:0

AXI4 プロトコルの勉強2(読み出しバースト例)

今回は、読み出しバースト例ついて勉強する。

最初は、オーバーラップしない読み出しバースト例だ。タイミングチャートを下に示す。これを書くのに1日かかった。
AXI_Protcol_1_111208.png

最初の読み出しバーストは4バイト幅で4バーストだ。これは最速のパターン。
Read address channelで、ARADDRにアドレスを出力して、ARVALIDが1にアサートされた時に、ARREADYが1にアサートされていたので、1クロックで終わった例だ。多分これで良いと思う。
その後の、Read data channelも最速のパターンを作ってみた。RDATAに常にデータが出力され、RVALIDが1にアサートされている。RREADYもデータ転送中は1にアサートされ、データ待ちが無く最速となっている。最後のデータの時にRLASTがアサートされてデータの終了を知らせる。RRESPは0(OKEY)を出力している。

2番目の読み出しバーストは、4バイト幅で2バーストだ。
Read address channelで、ARADDRにアドレスを出力して、ARVALIDが1にアサートされた時には、ARREADYが0にディアサートされていた。次のクロックでARREADYが1にアサートされたので、Read address channelの転送が終了した。
Read data channelの最初のデータ転送は、RVALIDが1にアサートされた時にRREADYは0でディアサートされていた。よって、このデータReadは1クロックで終わらず、次のクロックでRREADYが1になるまでWaitしている。次のデータRadは、RREADYが1でアサートされていたが、RVALIDがディアサートされていた例だ。この場合は、RVALIDがアサートされる次のクロックまでWaitしている。


次に読み出しバーストがオーバーラップする例を示す。こちらの方がRead address channelの2つ目の転送を隠蔽できるので、データのスループットが向上する。下にタイミングチャートを示す。(2011/12/09:修正:タイミングチャートが間違っていたので、書き直しました。お知らせいただいて、ありがとうございました。)
AXI_Protcol_2_111209.png

ARIDはどちらの読み出しも0にしている。こうするとOut-Of-Order実行されないので、Read address channelで発行した順番に読み出しデータが来るのが保証される。ARIDを異なる値にすると、Out-Of-Order実行されて発行順ではなく、速く読み出しデータの準備ができた順に読み出しデータが来る。

(2011/12/10:修正)
AXI リファレンスガイド UG761 (v13.2)2011年7月6日の101ページを見ると、ARPORTは値000を推奨するそうです。(ノーマル、セキュア、データ属性)
同様に、ARCACHEは値0011を推奨するそうです。(ノーマル、キャッシュ不可、変更可能、バッファリング可能)
これに合わせて、タイミングチャートを書き換えました。
  1. 2011年12月08日 21:07 |
  2. AXI4バス
  3. | トラックバック:0
  4. | コメント:1

AXI4 プロトコルの勉強1

XilinxのEDKはAXI4バスを使用することが出来る。今回はカスタム AXI Master IP コアの作成を目指そうと思う。AXI4 Masterコアを作成できるようにAXIプロトコルについて学んで行くつもりだ。

参考資料を以下に示す。
AXI リファレンスガイド UG761 (v13.2)2011年7月6日
12.3 EDK、12.3 ISE - カスタム AXI IP コアの作成方法
AMBA_AXI_プロトコルV1.0_SpecJ.pdf(ARM社からダウンロード)
IHI0022D_amba_axi_protocol_spec.pdf(ARM社からダウンロード)

AXI4インターフェースの種類
1.AXI4    : メモリマップ式のバースト可能インターフェース。最大256バースト。
2.AXI4-Lite : メモリマップ式の単一トランザクションのインターフェース。バーストできない。
3.AXI4-Steam: アドレスフェーズがないデータ・バースト・サイズに制限がないプロトコル。ストリーム用

AXI4とAXI4-Liteは5つのチャネルから構成される。
1.読み出しアドレスチャネル (Read address channel) 
2.書き込みアドレスチャネル (Write address channel)
3.読み出しデータチャネル (Read data channel)
4.書き込みデータチャネル (Write data channel)
5.書きこみ応答チャネル (Write response channel)
  1. 2011年12月07日 05:56 |
  2. AXI4バス
  3. | トラックバック:0
  4. | コメント:3

Altium Designerでのライブラリ検索、ライブラリ追加方法

Altium Designerではデフォルトの状態では、ライブラリがあまり入っていないようだ。
ちなみにAltium Designerの日本語環境についてはここを参照

Altium Designerプロジェクトを作成してライブラリを登録してみたいと思う。

1.Altium Designerのライブラリですが、Altium Designer Summer 09のようだが、Altium Designer Summer 09 Integrated Library Component Searchページから検索できるようです。
Spartan-3A Starter KitのFPGAのxc3s700a-4fg484を検索してみた。
Altium_Designer_26_111206.png

(まずい、Chromeの画面をはると、けいおんのテンプレを使っているのがバレてしまう。。。見なかったことにしてください。。。)

2.2つのエントリが出てくる。commercialとindustryだ。どちらもXilinx Spartan-3A.IntLib に入っているようなので、Downloadをクリックしてダウンロードした。

3.ダウンロードされてきたのは、Xilinx_280709.zipというZIPファイルだった。この中身を見ると、Xilinx Spartan-3A.IntLib を含めたくさんのXilinx用のライブラリが入っていた。この中には、Spartan-6、Virtex-6は無かった。
Altium_Designer_27_111206.png

4.Altium Desiger Release 10のライブラリフォルダは、\Documents and Settings\All Users\Documents\Altium\AD 10\Library にある。そこを開くと、すでにXilinxフォルダがあった。
Altium_Designer_28_111206.png

5.Xilinxフォルダの中には、Xilinx Spartan-3AN.IntLibがすでに入っていた。ここに、3.のXilinx Spartan-3A.IntLibをコピーした。
Altium_Designer_29_111206.png

次に、Altium Designerを起動して、ライブラリを追加する。

6.Altium Designerを起動し、ファイルメニュー -> 新規 -> プロジェクト -> PCBプロジェクトを選択して、PCBの新規プロジェクトを作成する。
Altium_Designer_30_111206.png

7.右のライブラリタブ(ピンクの四角)をクリックして、ライブラリ・ウインドウを表示する。次にライブラリ・ウインドウのライブラリ...ボタン(赤い四角)をクリックする。
Altium_Designer_31_111206.png

8.利用可能ライブラリが開く。導入済みタブをクリックすると、導入済みのライブラリが開く(当たり前か?)。こんな感じで入っている。
Altium_Designer_32_111206.png

9.今回はプロジェクト限定で使うために、プロジェクト内タブをクリックする。下のライブラリ追加...ボタンをクリックする。

10.ファイルを開くダイアログで、5.でコピーしたXilinx Spartan-3A.IntLibを選択した。
Altium_Designer_33_111206.png

11.閉じるをクリックして、ダイアログを閉じる。これで、Xilinx Spartan-3A.IntLibが使えるようになった。
Altium_Designer_34_111206.png

12.ファイルメニュー -> 新規 -> 回路図を選択して、回路図ファイルを新規作成する。

これから、

13.配置メニュー -> パーツ(P)...を選択する。

14.パーツの配置ダイアログが表示される。選択ボタンをクリックする。
Altium_Designer_35_111206.png

14.ブラウズ ライブラリが表示された。XC3S50A-4FT256Cを選択し、下を展開すると、Part AからPart Iまでのパートにわかれていた。このうち、Part Aを選択して、OKボタンをクリックした。
Altium_Designer_36_111206.png

15.パーツの配置ダイアログに、XC3S50A-4FT256CのPart Aが表示された。
Altium_Designer_37_111206.png

16.OKボタンをクリックすると、XC3S50A-4FT256CのBANK0が回路図に配置できた。
Altium_Designer_38_111206.png

今回はこれで終了とする。

# これで、74HC4518などの74シリーズも、同様にライブラリを追加することで回路図が書けることだろう。ただし、LB-602AK2はライブラリに見つからなかったので、自分でライブラリを作る必要があるかもしれない。汎用7セグメントLEDライブラリがあれば、どうせ回路図だけなので、ピン配置を変えてそれを使うとか?
  1. 2011年12月06日 05:58 |
  2. Altium Designer
  3. | トラックバック:0
  4. | コメント:0

OV7670ステレオカメラ基板を購入された方へ

OV7670ステレオカメラ基板を購入された方へ。

まずは、カメラモジュールをお買い求めください。指定のカメラモジュールはaitendoさんのOV7670です。ステレオカメラにしなければ、1個だけ付けてもOKです。

OV7670ステレオカメラ基板の回路図はここにあります。

Spartan-3A Starter Kit + OV7670 Stereo Camera Boardで動作するプロジェクトをダウンロードできるようにします。差分という形で面倒ですが、よろしくお願いします。もし動作しなかったら、Profileのページにあるメールアドレスにメールをお願いします。

最初にカメラのテストをします。ステレオカメラの内、1つずつカラーでディスプレイに表示できるかをテストします。

まずは、ここからSpartan-3A Starter KitでCMOSカメラ・ディスプレイ回路のプロジェクトをダウンロードして下さい。このプロジェクトについては”Spartan-3A Starter KitでCMOSカメラ・ディスプレイ回路28(プロジェクトの公開)”を参照ください。
ZIPファイルを解凍すると、CamDispCntrler_DDR2_Capt_SCCBとDDR2_SDRAM_cont_266の2つフォルダが入っていると思います。これを日本語でないパスの適当なフォルダの下に入れてください。

プロジェクトはCamDispCntrler_DDR2_Capt_SCCB\Synth121に入っています。Project NavigatorからOpen ProjectでISEプロジェクトを開けば見えるはずです。
このプロジェクトはISE12.1のプロジェクトですが、ISE12だったら問題なくプロジェクトが開けるはずです。ISE13でもプロジェクトを変換すれば大丈夫だと思います。
ここで、回路的には同じでOKですが、ピン配置を変更する必要があります。

ここから、CamDisp_Cntrler_DDR2.ucfをダウンドードして、CamDispCntrler_DDR2_Capt_SCCB\Sourcesフォルダの同名のファイルと入れ替えてください。

これでプロジェクトをインプリメントすれば、CAM1のカメラからの情報でVGAサイズでディスプレイに表示されるはずです。

なお、CAM3(このボードでは、諸般の事情で2つのカメラはCAM1とCAM3になっています)に切り替えるには、CamDisp_Cntrler_DDR2.ucfの中を編集します。下の図で、CAM_3の下のコメントアウトした記述のコメントを外して、CAM_1の下の同じファイル名をコメントアウトすると、CAM_3が写るかどうかのテストが出来ます。
MTM07_13_111204.jpg

これで、問題なければ、ステレオカメラでアナグリフの差分のあて方を説明しますが、1つのカメラでよろしければ、ここで終わりです。

ステレオカメラのプロジェクトですが、青赤メガネでアナグリフを表示するプロジェクトです。右のカメラCAM1で赤、左のカメラCAM3で青を出しています。まず、2つのカメラに同時に同位相のクロックを供給します。
2つのカメラからはそれぞれの出力クロック(PCLK)が帰ってきますが、オシロスコープより調べたところによると同位相でした。HREFやVSYNCもピッタリ一致していたため、CAM1のPCLKでCAM3のデータもサンプルしています。

ここから、Stereo_Cam_Files.zipをダウンドードして解凍してください。

この中には、VGA_Display_Controller.v、CamDisp_Cntrler_DDR2.ucf、CamDisp_Cntrler_DDR2.v、Camera_Controller.v、SCCB_reg_values.dataが入っています。これをCamDispCntrler_DDR2_Capt_SCCB\Sourcesフォルダの同名のファイルと入れ替えてください。

これでインプリメントすれば、ステレオカメラでアナグリフのプロジェクトの完成です。青赤メガネで立体的に見えるためには、カメラを内向きに向ける(つまり寄り目にする)のと赤青画像の高さを合わせる必要があります。

何か分からない、上手くいかないことがありましたら、このブログのコメント欄でお知らせ頂くか?、Profileのページにあるメールアドレスにメールをお願いします。
  1. 2011年12月05日 05:34 |
  2. Make出展
  3. | トラックバック:0
  4. | コメント:0

MTM07へ出展

今日は東工大の大岡山で、MTM07に出展します。皆さん、よろしくお願いします。

帰ってきたらMTM07について書きたいと思います。

1日目
百年記念館に出展しています。門を入ってすぐのところです。
皆さんが準備している様子を撮りました。
MTM07_8_111203.jpg

MTM07_9_111203.jpg

うちらのブースは車の本体が渋滞で遅れたため、開始時間になっても機材が揃いませんでした。こんな感じ。
MTM07_10_111203.jpg

1時間近く遅れてブースが展開できました。良かった。。。

Twitterでお馴染みの方にも来て頂きました。
@i_halさん、@rundog34sさん、@apulo_さん、@felis_silvさん、@ykazu1998さん、@ienaga045さん、皆さん来て頂いてありがとうございました。(お会いした順です。)
@shyasunaさんの空気砲凄かったです。これを夏休み自由研究お助け隊でやると絶対受けますね。
完成したブースの様子を写真に取るのを忘れていました。明日、撮影してきます。
明日もよろしくお願いします。

2日目
今日は、ブースの写真を取ってきました。
MTM07_11_111204.jpg

これが完成品のステレオカメラ基板付きのSpartan-3A Starter Kitの写真です。
MTM07_12_111204.jpg

今日も忙しかったです。いろいろな方と名刺を交換させて頂きました。ありがとうございました。
体育館にもチラチラっと見に行きましたが、PSPに組み込んだCycloneIIIを空中配線してマンデルブロー集合を表示するようにしたものは凄かったです。BGAを空中配線して200MHzで動作させていました。もの凄いです。

ステレオカメラ基板を2セットずつ持って行きました。Spartan-3A Starter Kitを持っている方という厳しい条件があったので、ステレオカメラ基板をお分けすることは、できないかな?と思っていました。ですが、縁あってOV7670ステレオカメラ基板を一枚お分けすることができました。

ステレオカメラ基板をお分けした方だけのために、1つブログを書こうと思います。プロジェクトも上げるか?以前との差分をダウンロードできるようにしようと思います。そのプロジェクトは基板を持っている方にしか使えません。

なお、指定のカメラモジュールはaitendoさんのOV7670です。ステレオカメラにしなければ、1個だけ付けてもOKです。
回路図はここにあります
  1. 2011年12月04日 21:21 |
  2. Make出展
  3. | トラックバック:0
  4. | コメント:0

Spartan-3A Starter Kitのアクリルケースの設計2

”Spartan-3A Starter Kitのアクリルケースの設計”の続き。

FPGA-CAFE/FabLab Tsukubaの作品をオープンソースとして公開するという規定に基づいて、全ファイルを公開します。

Spartan-3A Starter Kitのアクリルケースのファイルをここに置いておきます。ライセンス条件はクリエイティブ・コモンズ・ライセンスの表示―非営利とします。.skcがSakraCad(フリーウェアです)のファイルで、.dxfが言わずと知れたDXFファイルです。FPGA-CAFEのレーザー加工機ではDXFファイルを使用します。レーザー加工機の使い方はここです

Spartan-3A Starter Kitの裏面カバーのファイル名は、Spa3A_StKit_Bottom_Coverです。
Spa3ASKit_case_1_111112.png

Spartan-3A Starter Kitの表面カバーのファイル名は、Spa3A_StKit_Top_Coverです。
Spa3ASKit_case_5_111201.png

裏面カバーと表面カバーの間に立てて、基板を挟みこむのがスペーサーです。今度は切り欠きを付けて挟みやすくしました。ファイル名はSpa3A_StKit_Spacerです。6個必要です。
Spa3ASKit_case_6_111201.png

次にスタンドの足です。ファイル名は、Spa3A_StKit_Leg1です。これは2個必要です。
Spa3ASKit_case_3_111112.png

スタンド足用の桟です。ファイル名は、Spa3A_StKit_Leg2です。縦置きのファイル名は、Spa3A_StKit_Leg2_upです。これも2個必要です。
Spa3ASKit_case_7_111201.png

組立図はありません。書いていません。実物は、MTM07で見てください。

完成品はこんな感じですが、表面カバーは変更してあります。
  1. 2011年12月01日 20:45 |
  2. Make出展
  3. | トラックバック:0
  4. | コメント:0