« 2010年11月 | トップページ | 2011年1月 »

2010.12.30

Spartan-6でMicroBlazeを動かす

今年の懸案は今年のうちに解決したいと思い、いろいろやっています。

昨日からSpartan-6にMicroBlazeを入れることを行っていました。
せっかくMicroBlazeを入れてもLEDチカチカだけだと面白くないので、UARTとDDR2 SDRAMコントローラを入れました。

特電Spartan-6ボードの汎用I/OポートにTTL-RS232Cレベル変換基板(写真左の基板、トラ技の付録)をつないで、RS232Cの通信ができるようにしました。
Sprs232c

そして、MicroBlazeとUARTLiteと、GPIOと、DDR2コントローラが入った回路をFPGAに書き込みます。

アドレスマップは、
Address Map for Processor microblaze_0
(0000000000-0x00007fff) dlmb_cntlr dlmb
(0000000000-0x00007fff) ilmb_cntlr ilmb
(0x48000000-0x4bffffff) MCB_DDR2 mb_plb
(0x48000000-0x4bffffff) MCB_DDR2 microblaze_0_DXCL
(0x48000000-0x4bffffff) MCB_DDR2 microblaze_0_IXCL
(0x81400000-0x8140ffff) LEDS mb_plb
(0x84000000-0x8400ffff) RS232 mb_plb
(0x84400000-0x8440ffff) mdm_0 mb_plb
です。DDR2メモリは48000000~4BFFFFFFに配置されています。

MicroBlazeのソフトウェアとして「トラ技BIOS」を改良した32bit版のシンプルなモニタを作って入れました。
Mbmonitor

プログラムのサイズは、今のところこんなものです。
text data bss dec hex
4238 296 3210 7744 1e40
それから、HEXファイルのロードができるようになりました。

これで、DDR2 SDRAMにプログラムをロードできるようになったので、BlockRAMのサイズを気にせず64MBytesまでのプログラムが動かせます。

下の図は、EDKのサンプルプロジェクトであるTestApp_Peripheral_microblaze_0を、アドレス0x48000000に配置されたDDR2 SDRAMにロードして実行している姿です。

Mb_hexload

MicroBlaze用にコンパイルしたファイルはELF形式ですが、XILINX Bashシェルで、
mb-objcopy -O ihex -S executable.elf test.hex
とコマンド入力することで、HEXファイルにできます。
このシンプルなモニタからHEXをロードしてDDR2 SDRAM上に展開して実行するということができるというわけです。

MicroBlazeを組み込んだFPGAのデザインをBitファイルで配布しておけば、EDKがなくてもMicroBlazeを使ったシステム開発ができるようになります。
たしか、MicroBlaze用GCC環境だけなら無料で入手できるはずです。

特電Spartan-6ボード(TKDN-SP6-16)用に論理合成したBitファイルはこちらにおいておきます。
「download.bit」をダウンロード
このBitファイルをSPI ROMに書き込んでおけば、スイッチONですぐに動きます。

CN2の21番ピンからTXD、CN2の23番ピンからRXDが出ています。ここにTTL-RS232C変換基板をつなげれば、このシンプルなモニタが使用できます。

ISEとEDKのプロジェクトのソース一式はJTAGひろばの方に後ほどアップロードします。

目標は特電Spartan-6ボードでLinuxを動かすこと!
その前にLinuxのブートローダを動かしたい。
そこまでいけるかな・・

当社のSpartan-6ボードをお持ちの方で協力していただける方がいらっしゃいましたら嬉しいです。

| | コメント (4)

2010.12.28

MITOUJTAGでSH3-DSPのバウンダリスキャン

よく、お客様からMITOUJTAGのSH-3への対応状況を聞かれます。

SHマイコンがJTAGバウンダリスキャンに対応しているかどうかは、これまではデータシートに記載の情報をもとに判断してきて、実機で確認したことはありませんでした。

最近もSH-3をお使いのお客様から、バウンダリスキャンで基板上のフラッシュROMを書き換えたいとのご要望をいただきました。今後、SHシリーズに対してきめ細かいサポートをしていきたかったので、思い切ってSH-3の搭載された評価ボードを1台購入することにしました。

購入したのはアルファプロジェクトさんのAP-SH3D-2A。
SH7727というCPUがのっています。USBのホストとファンクションの機能があるようです。
このボードのH-UDIのコネクタにPocket JTAG Cableのピンをつなぎます。
Sh3apkj

そして、MITOUJTAGを起動してバウンダリスキャンをしてみると・・
Sh3abscan

ちゃんと見えました。

回路図をみながらフラッシュROMの接続設定を定義します。
16ビット幅のフラッシュROMを16ビット幅で接続しているようでした。
Sh3afrom1

メモリダンプしてみると、何らかのデータが書き込まれているのが見えました。
サンプルプログラムのものとは少し違うような感じがします。
Sh3afrom2

また、CPUのバスの状態を見てみましょう。

アドレスバスはずっと出力で、A1からA24まで、激しく動いています。
Sh3dbus1

データバスは基本的に入力で、たまにデータを書き込むようです。
Sh3dbus2

制御信号は何をやっているのかわかりませんが、何かを探しているような感じです。
Sh3dbus3

このようにSH-3は、バウンダリスキャンに対応していればMITOUJTAGで全く問題なく扱えることが確認できました。

これで、SH2、SH2A、SH3、SH4、SH4Aのすべての評価ボードが手元に揃ったことになります。
ルネサスSHマイコンとバウンダリスキャンのことなら、なんでもお問い合わせください。

| | コメント (0)

CMOSイメージセンサ変換基板を発送しました

これまでにお申し込みいただいた方に、CMOSイメージセンサ変換基板を発送しました。

また、使い方を「JTAGひろば」のほうに書きましたので、どうぞご覧下さい。
Jtaghiroba

「CMOSイメージセンサ変換基板の使い方」のトピック

また、この変換基板にはオンボードのスイッチングレギュレータを搭載しています。スイッチングレギュレータを使うと、消費電力が減ってエコになります。お申し込みいただいた方にはそのための部品一式も発送しましたので、ぜひお試しください。DDR2メモリを使用したときの発熱が減ります。
Swreg

自分で使ってみた感想ですが、万能基板で作るよりも圧倒的に楽だった、と思います。ピンソケットを半田付けするだけなので、5分くらいで作れました。

なお、現時点までにこの変換基板のお申し込みを14名の方からいただいております。あと10名分ほど基板と材料が残っていますので、ご興味のある方はお申し込みください。
これまでにSpartan-6ボードをお買い上げいただいた方も、これから購入される方も、どしどしご応募ください。

| | コメント (0)

2010.12.27

OV9655のCMOSカメラの動作テスト

aitendoさんのOV9655 CMOSイメージセンサモジュールを、特電Spartan-6ボードに載せるための変換基板を作りました。今日はOV9655の動作テストです。

変換基板にピンヘッダを半田付けしてSpartan-6ボードとOV9655モジュールを乗せます。5分もあれば作れるでしょう。
Ov9655board

MT9T031用に作ったソフトとFPGA回路を改造して、OV9655用のを作ります。

得られた画像はこんな感じでした。手近にあった基板を映しています。
Ov9655mono

OV7670とは比較にならないくらい綺麗なのですが、
・縦スジのノイズがちょっと目立つ(OV7670よりは綺麗)
・Exposure Controlを1050以上にすると、画面が真っ黒になる。(露出時間 > フレーム時間になると、画像を出力しなくなるのかもしれない。レジスタ設定で回避できるかもしれない)
・Gain Controlがリニアでない。64ごとに波がある。(なぜ?)
・データバスの下位2bitは、RawRGBモードでしか使われない。
・データシートではSXGA(1280×1024)時には15fpsと書かれているが、デフォルトでは7.5fps。
といった点が気になりました。

今はまだFPGAの設計にバグがあって、RGBのRawdata形式で読み出したときに、緑の成分が弱く、青が強すぎるので、綺麗な色が再現できていません。緑色のプリント基板がこんな色になります。
Ov9655image1

OV7670と比べると、絵はずっと綺麗で、評価ボードの値段も1000円しか違わないので、こちらのほうが断然お得だと思います。さすがに、MT9T031の画質には敵いませんが、MT9T031の評価ボードは3万円以上するので、あたりまえといえばあたりまえです。

手ごろな価格で綺麗なCMOSイメージセンサというと、やはりOV9655になるのかなと思います。

色の問題などは、じっくりと考えていくことにします。

■追記
色は正しく出るようになりました。
Ov9655image2

まだよくわかっていないのは、このカメラの出力フォーマットです。
例えば48MHzのクロックを与えると、カメラは内部で24MHzで動作し、24MHzの速度で信号を出力してきます。

カメラの横方向は1280ピクセルなのですが、このカメラのデータの出力される期間は2560クロック分あります。つまり1ピクセルにつき2バイトのデータを出しているのです。「YとU」、「YとV」なら納得がいくので、YUVモードならよいでしょう。
しかし、RGBモードのときはどうなるのか、そのあたりが謎なのです。出力フォーマットが解明できていません。

MITOUJTAGのFPGA内蔵式ロジアナを使ってみてみると、RGBモードのときには、同じデータが2回ずつ繰り返して出ているように見えます。

Ov9655blogana

このあたりのしくみが、フレームレートが公称値の半分しか出ない理由と関係あるかもしれません。

| | コメント (2)

2010.12.26

CMOSカメラ変換基板の動作テスト

先日、製造をかけた3種のCMOSカメラ変換基板が届きました。
Camcnv_1

まず、OV7670のものに部品を実装しました。
Camcnv_2

Sparatn-6ボードを装着すると、自立できます。
Camcnv_3

撮れた画像はこんな感じです。AECをOFFにして手動調整して、最も綺麗なポイントに合わせました。
Fruits3

次が本命のMT9T031基板。どっちの側にコネクタをつければよいのかわかりにくいので、間違えないように注意しながら実装します。
Camcnv_5

Spartan-6ボードを取り付けると、ごっつい感じになります。
Camcnv_6

コントロールソフト上ではこんな感じ。
Fruits1

QVGAサイズにするとこんな感じ。

Fruits2
(クリックすると2048×1536サイズになります)

OV9655はこれから試します。

| | コメント (0)

2010.12.25

ルネサスRXマイコンとバウンダリスキャン

ルネサスからRXマイコンという新しいシリーズが出たそうです。RXマイコンにはシンプルな機能のRX62Tシリーズと、イーサ等が載ったRX62Nシリーズがあるようです。
Rx62tjtag

JTAGに対応していそうなので、早速、某A社の評価ボードを購入して試してみました。

このボードに載っているデバイスは、RF562TAADFPというもので、RX62Tシリーズです。RXマイコンのJTAGの端子で、バウンダリスキャンができないかと思って、やってみました。

自動認識はできました。
Rx62tdetect

でも、結果は失敗。

どうやら高機能なRX62Nシリーズのほうはバウンダリスキャンに対応しているけれども、今回購入したRX62Tシリーズはバウンダリスキャンに非対応のようです。確かに、RX62Tのハードウェアマニュアルにはバウンダリスキャンの仕様が記載されていません。

実際にMITOUJTAGをつないで、スクリプトを組んでいろんな命令を与えてみたところ、RX62NとRX62TではJTAGの命令コードがぜんぜん違うということがわかりました。

例えば、RX62TではIDCODEを得るためのJTAGの命令コードは0x02で、RX62Nでの命令コードは0x55です。
(なお、RF562TAADFPで得られたJTAG IDCODEは0x0D003447です。)

IRの長さは8bitということは実験していてわかったので、00~FFまでのすべてのコードを与えてみたところ、SAMPLEやEXTESTに相当するような命令コードはみつかりませんでした。何かの命令が割り当てられていそうなものは全部で8種類くらいでした。

というわけで、RX62Tはバウンダリスキャンは対応しておらず、ピンの状態を見ることはできなさそう、というのが本日の結論です。RX62TのJTAGは、エミュレータ専用のようですね。

| | コメント (2)

2010.12.24

特電Spartan-6ボードをMITOUJTAG Light用のUSB-JTAGケーブルとして使う

特電Spartan-6ボードには、HighSpeedモードに対応したUSB 2.0インタフェースとFPGAが乗っているので、こんな使い方ができます。
Mjlxp2_1

上の写真は何をやっているかというと、特電Spartan-6ボードのFPGAに「USB-JTAG」のデザインを書き込んでUSB-JTAGケーブル化し、DDT付録のLattice XP2ボードのJTAG端子につないでデバッグしています。
その接続の部分を拡大すると、
Mjlxp2_2

デバッグする対象は、DDT付録のLattice XP2に限らず、XILINXのCPLD/FPGAや、AlteraのCPLD/FPGA、Lattice、TI、RenesasなんでもOKです。

JTAGは対応しているソフトウェアが要です。このUSB-JTAGケーブルは、MITOUJTAGとつないでバウンダリスキャンやプログラミングを行うことができます。バウンダリスキャンを使うと、オシロを使わずに、FPGAの端子を見たり操作したりすることができます。
Mjlxp2_3

つまり、VHDL/Verilogのソースを書いて論理合成してFPGAにプログラミングしなくても、端子の状態が観察できたり操作できたりするわけです。

もちろん、MITOUJTAG Lightでも、このSpartan-6ボードを使ったUSB-JTAGが使えますので、Spartan-6ボードをお持ちの方は、ぜひとも末長く有効にご活用ください。

MITOUJTAG Lightは34,800円で、期間限定で発売中です。
詳しくはこちらのページをご覧ください。

USB-JTAG化のためのやり方は、こちらのページに記載しました。

| | コメント (0)

テキスト印刷のプレビュー画面ができた

MITOUJTAGにテキスト印刷の機能をつけようとしています。うまくプレビュー画面が表示できるようになりました。

左の画面がプレビュー、右の画面が印刷したもの。
Mjprint_previewMjprint_pdf

改行の位置とか文字の幅とか全く同じようにできました。
要点はなんだったかというと、プレビュー画面ではフォントのサイズが0~2ptくらいの小数になってしまうため、TmpBmp->Canvas->TextOutA(x,y,文字列) で1行まとめて表示すると、ずれてしまいます。
1文字1文字描画するたびにX座標を計算していくことで正しい位置に表示されるようになりました。
プレビューの作成に時間がかかってしまうのが難点ですが、綺麗になります。

| | コメント (0)

2010.12.23

テキスト印刷とプレビュー

MITOUJTAGにテキスト印刷機能と、そのプレビューを作ろうとしています。
左の図がプレビュー、右の図が印刷されたもの。

Preview_2Acrobat

プレビューの作成って、難しいですね。
プレビュー画面を拡大・縮小すると、それにつられて画面の右端までに表示される文字数が変わったりして、なかなか思ったように同じようになってくれません。フォントサイズが小数になるのが問題だと思うのですが・・苦戦してます。

| | コメント (0)

2010.12.22

基板のシルクに絵を入れる

基板のシルクに絵を入れたいと常々思ってきました。

Adobe Illustratorや汎用CADソフトが作成したDXF形式でデータをProtelで取り込もうとしても、どうしてもうまくいかなかったので、自分でガーバ形式のデータを作ってProtelで取り込むことにしました。

ガーバデータとはこんな感じのデータです。

%FSAX23Y23*%
%MOIN*%
G70*
G01*
G75*
%ADD10C,0.00800*%
%ADD11C,0.01200*%
%ADD12C,0.01600*%
D10*
D12*
X01000Y01000D02*
D03*
・・・

ガーバのフォーマットを簡単に解説すると、最初の %FSAX23Y23*% は絶対座標、X座標の整数部2桁小数部3桁、、X座標の整数部2桁小数部3桁、を示します。
%MOIN*% はインチ単位で記述することを示します。
次の%ADD10C,0.00800*%%ADD11C,0.01200*%%ADD12C,0.01600*%は、それぞれ直径8mil、12mil、16milの丸い形状をD10、D11、D12というアパーチャで登録することを意味します。

D10*はアパーチャの選択をし、X01000Y01000D02* で任意の座標に移動します。D02は移動のみで描画しないことを意味します。
D03*はその座標でアパーチャを描きます。移動しながら線を描くのではなく、その場でパッドを描きます。

こんな感じで、8mil、12mil、16milと直径が3段階に異なる丸を登録し、WindowsのBitmapファイルを読み込んで濃淡に応じてその丸を描くようなツールを作ってみました。
Grbtool

その結果、この画像
Sp6brd
を4段階の濃淡画像にしてガーバデータに変換したところ、こうなりました。
ビットマップの1ピクセルを10milに換算して点描画を描く感じです。

Grb_converted

拡大してみると、3段階の丸で濃淡が表せています。
Grb_detail

これで、写真でも漢字でも風刺画でも萌え絵でも、なんでも基板に印刷できるようになりました。
難点はファイルサイズが大きくなること。上のファイルで約1MBytesになります。下手すると、ファイルサイズが大きすぎて基板が作れません、なんてことになりかねません。ベクタ描画にも対応させたほうがいいのでしょうね。

◆追記
頑張れば、基板のレジストの色(緑)、シルクの色(白)、パターンの色(銅色or銀色)の3色で描けることに気が付いて、調子に乗ってクリスマスっぽいものを設計してみました。基板のサイズは86mm×61mmくらいです。

赤い色は銅箔の部分、緑の色はシルクの部分です。
Xmas1

基板のイメージで表示すると、こんな感じ。
Xmas2

拡大してみると、パターンもシルクも点描画です。
Xmas_detail

本当にこんな感じの基板ができたらうれしい。
年賀状が作れるかも!?

| | コメント (4)

MITOUJTAGに新機能

MITOUJTAGに新機能を付けました。
それは、「書き込みログ」です。

次の画面をみてください。いろんなファイルをFPGAに書いたり、消したり、ベリファイをした際のログです。
テキストファイルなのでメモ帳で開けます。これがMITOUJTAGをインストールしたフォルダにdevprog.logという名前で保存されます。JTAGによるFPGAやCPLDの直接書き込みはもちろん、SPI経由の間接的書き込みもログが残ります。

Mjwrlog

いつ誰がどんな名前のいつの日付のファイルを書き込んで、その結果はどうだったかを自動的に記録に残せるというものです。

書き込んだ日付と、書き込んだデバイスの型番と、書き込んだファイルの名前と日付がどんどん記録されていくので、書き込み作業を行った証拠となるわけです。また、Windowsにログオンした際のユーザ名も記録されます。

実際には書き込みだけではなく、消去やベリファイ、ブランクチェックなどISP関係の操作がすべて記録されます。

Mjwrlog2

この機能が何の役に立つのかというと、「あのとき出荷したボードに書き込んだファイルは最新版だったかな・・・」とか「動作チェック用にいつも使っていたBitファイルはどれだっけ?」といったことを記録に残しておいてあとから参照できるようにするためです。
「○○君はちゃんと作業をやったかな?」と確認するような場面にも使えます。

私自身、そういうシチュエーションに何度も陥っています。だからこそこの機能を思いつきました。
おそらく、現時点でFPGAの書き込みツールでログを残せるものは、MITOUJTAG以外にはないでしょう。

アップデートパッチはJTAGひろばにおいておきます。
http://www.tokudenkairo.co.jp/hiroba/?m=pc&a=page_c_topic_detail&target_c_commu_topic_id=67

| | コメント (0)

2010.12.20

3種の変換基板(4)

本日、3種の変換基板をP板に出図しました。

1枚に4セット面付けして、6枚発注。全部で24セットできます。
現在、7名の方からお申し込みをいただいておりますので、まだ余裕があります。

Cam_conv9
Cam_conv10

私のところに到着するのは土曜日です。
それから動作チェックを行い、問題なければ27日に発送開始の予定です。

| | コメント (0)

3種の変換基板(3)

OV9655用とMT9T031用の変換基板を設計しました。

まずはOV9655用。
Cam_conv6_2Cam_conv5

次にMT9T031用。
Cam_conv7Cam_conv8

これから会社へ向かう電車の中で念入りにチェックし、問題なければP板に出図です。

OVやMTのカメラモジュールのネジ穴の位置の正確な場所がわからなかったので、ネジ穴の位置はいちかばちかです。

| | コメント (0)

3種の変換基板(2)

カメラモジュール用の変換基板ですが、実験用にスイッチング電源回路を載せました。
ST1S10というSW電源IC用の回路です。
このボードで3.3Vを生成し、Spartan-6ボードに与えられるようにします。

とりあえずOV7670用の基板が完成しました。
Cam_conv3

Cam_conv4

OV7670は本命じゃありません。画質が綺麗じゃないので、OV9655とMT9T031が本命です。
OV9655とMT9T031のも急いで作りましょう。

| | コメント (0)

2010.12.17

CMOSカメラモジュール用の変換基板を作ろうと思います

これまでSpartan-6ボードにいろんなCMOSイメージセンサのモジュールをつなげて、USB接続のCMOSカメラを作ってきました。

例えば、こんな感じのものです。
左の写真は、aitendoさんのOV7670モジュールを、右の写真はAptinaのMT9T031モジュールをSpartan-6につなげています。
Cameras

こういったカメラモジュールをSpartan-6ボードにつなぐため、今までは万能基板にラッピングワイヤで配線していました。ですが、USBカメラは作りたいけど、半田付けが得意でないという方もいらっしゃると思います。誰でも簡単に楽しめるようにしたいので、変換基板を作ることにしました。

Cam_conv

この変換基板なら、表と裏にピンヘッダを半田付けするだけでSpartan-6ボードと接続できますので、手軽にUSB CMOSカメラが作れるはずです。
FPGAのデータとWindows用ソフトウェアはすでに完成して、ソースで配布しています。だから、特電Spartan-6ボードと、各社のCMOSカメラモジュールとピンヘッダがあれば、誰でも簡単に作れてCMOSカメラの実験ができてしまうというわけです。

このボードは3種類のモジュールに対応しようと思います。具体的に言うと、取り付け可能なモジュールは、aitendoさんのOV7670(VGA 640x480)、aitendoさんのOV9655(SVGA 1280*1024)、AptinaのMT9T031(QXGA 2048x1536)です。
Cam_conv1Cam_conv2

ただ、あまり数が出るものではないと思うので、大量生産はせず、Max 10枚くらいの数量で作ろうと思います。だから激安にはできませんが、この際、採算を度外視して送料込みで2000円程度で出せるよう目指します。

といっても、ただの変換基板だと面白くないので、スイッチング電源回路(部品は実装せずパターンのみ)とかのせるかもしれません。

このようなボードが欲しい方いらっしゃいますでしょうか?
もしご希望の方がいらっしゃいましたら、価格や機能などのご希望などをコメントいただけると有難いです。

週末にさくっと設計して、月曜日にはP板に出図します。年末年始をCMOSカメラで思う存分遊んでいただけるように、24日の金曜日にはご希望される方のところへ出荷したいと思います。

■追記
どう考えても採算が取れない(需要は多くなさそう&単価は上げられない)ので、いっそうのこと、当社のSpartan-6製品をご愛顧いただいているお客様に無料でプレゼントということにしようかと思います。少し余分に作りますが、24枚くらい作って終了予定です。

お申し込みは「JTAGひろば」で受け付けます
何枚作るかは月曜日に決めますが、おおよその目安にしたいので、ご希望の方はコメントかメールをいただけると幸いです。

| | コメント (7)

冬限定!MITOUJTAG Light版が復活します

今年の年末年始は、新しいスタイルでFPGAの開発をはじめてみませんか?

まもなく、この冬限定の「MITOUJTAG Light(ライト)版」を発売します。
※ もちろん、使用期限なくずっと使えますのでご安心下さい。

MITOUJTAGを使うと、BGAの裏側が見え、FPGAが論理合成しなくても動くデバッグができるようになります。オシロや埋め込みロジアナだけでは決してできなかった「見える・楽しいデバッグ」ができるようになります。

Mjl_banner

MITOUJTAG Light版は、非営利・非商用目的に限ってご利用いただけるMITOUJTAGの個人向けバージョンで、MITOUJTAG2.0 Proのプラットフォームをベースに構築されています。
ユーザインタフェースは、従来のMITOUJTAG BASIC1.5から格段に進化しており、ロジアナとバウンダリスキャン可視化の同時動作が可能となっています。

また、JTAG経由のBPI/SPIフラッシュROM書き込みや、印刷サポートが追加され、さらに便利になりました。それから、Sparatn-6ボードで作るUSB-JTAGにも対応しています。

Mjl_image

このバージョンは、仕事だけではなく個人でもFPGAの技術を身につけたいというパワフルな方や、先進の回路を趣味で研究する方、展示会や学園際のためにFPGAのデバッグに本腰を入れたいという方を対象にしています。

よって、個人のお客様でもご購入いただけるよう3万円台の価格を目指しました。
具体的にいうと、36,540円(消費税込、送料込)です。

Light版は、廉価なBASIC版というわけでは決してありません。MITOUJTAG BASICの中から必要な機能に的をしぼって抽出し、その機能を強化したものです。たとえば、Pocket JTAG Cableの動作速度が2~3倍速くなっていたり、J-WriterをJTAGケーブルとして使うことができたり、目的のデバイスのBSDLファイルを探してくる必要がなかったり、といった感じです。最新のパッチやアルゴリズムもアップデートすることでどんどん新しいものを追加していただけます。

ただし、このバージョンは冬限定発売なのです。
Mjl_cdrom

年明け早々には販売終了します。少なくとも1月中旬までは発売していますが、その後は販売終了して、従来のBASIC版とPro版の2種類のラインナップに戻ります。

冬限定と言っても、入手可能時期が今年の年末年始ということです。もちろん、その後もずっとお使いいただけます。期限のある試用版ではございませんので、末永くお使いいただけます。

Light版の詳しい情報や新機能、そして既存ユーザ様向けのお得なについてはこれから書いていきたいと思います。今年の冬はMITOUJTAGの新しい機能をどんどん作るつもりなので、随時バージョンアップしていただけるよう、パッチもどんどん出します。
約3週間しかリリースしない限定バージョンですが、どうぞよろしくお願いします。

お得なキャンペーンの第一弾として、
① MITOUJTAG LightとPocket JTAG Cableをセットでお買い求めのお客様は、52,290円(消費税込、送料込)でご購入いただけます。約13000円ほどおトクです。
ただし、先着38名様限定とさせていただきます。

Campaign_2

② みえたジェイプラスを6ヶ月以内にお買い上げいただいてから半年以内の個人のお客様は、総額から5,250円(税込)引きでご購入いただけます。ご購入の際に備考欄にその旨をお書きください。
つまり、MITOUJTAG Light とPocket JTAG Cableのセットが、47,040円(税込)となります。MITOUJTAG Light単体の場合は31,290円(税込)でお求めいただけます。
(みえたジェイプラスを、MITOUJTAGの評価用にご利用いただいた方への特典です)

MITOUJTAG Lightについての詳細は下記のページをご覧ください。
http://www.tokudenkairo.co.jp/jtag/lightv.html

ご注文はオンラインショップから承ります。
http://www.tokudenkairo.co.jp/shop/shop.cgi

どうぞよろしくお願いします。

| | コメント (0)

2010.12.16

Spartan-6のMCBの使い方(3)

CoreGeneratorでMCBラッパを作るとサンプルデザインがついてきます。
今回は、特電Spartan-6ボードを使ってこのサンプルデザインを動かしてみます。

まず、ISEでプロジェクトを作成したらCoreGeneratorを起動し、New Source Wizardを起動し、MIGを選択します。コンポーネントの名前は mymcb にしておきます。Mymcb1

MIGの設定の最初の画面です。
Mymcb2

次のダイアログでは、Create Designを選びます。
Mymcb3

次のダイアログでは、Bank1をDDR2 SDRAMに設定します。特電Spartan-6ボードではBank1にSDRAMが接続されています。これ以降、MIGでは"C1"という名前で呼ばれます。
Mymcb4

次のダイアログではDDR2メモリの型番を選択しますが、HYB512800はないので、Create Custum Partを選択して作ります。
Mymcb5

Create Custom Partのダイアログでは、元となる部品として「MT47H128M8XX-25」を選びます。それから、Row Address、Column Address、Bank Addressを14,10,2に変更します。Mymcb6

Saveを押すと元の画面に戻るので、Nextを押して次のダイアログへ行きます。
次のダイアログでは特に変更するところはないので、そのままNextを押します。
Mymcb7

その次のダイアログでは、MCBの6つあるユーザ側ポートを入力にするか出力にするか、バンクアドレスの配置はどうするか、などを決定します。とりあえずはデフォルトでよいでしょう。
Mymcb8

その次のダイアログでは、ポートのアービトレーション(調停)のアルゴリズムを決めます。デフォルトでよいでしょう。
Mymcb9

その次のダイアログでは、物理層的な部分の設定を行います。System ClockをSingle-Endedに変更します。
Mymcb10

次のダイアログは、できあがったデザインのパラメータの確認です。
Mymcb11

次のダイアログでは、Acceptを押してNextを押します。
Mymcb12

これでCoreGenでの設定は終わりです。
元のプロジェクトマネージャに戻ってみると、mymcbがプロジェクトに追加されています。
いきなりですが、mymcbをプロジェクトから外します。
Mymcb13

そして、Add Sourceを行います。
Mymcb14

そして、(プロジェクトのフォルダ)\ipcore_dir\mymcb\example_design\rtlにあるファイル一式をプロジェクトに追加します。traffic_genフォルダの中のファイル一式も追加します。
Mymcb15

追加した中のpipeline_inserterを削除します。
Mymcb16

次にexample_topを編集しますが、example_topをそのまま編集するのではなくプロジェクトのディレクトリのトップにコピーを作成して、そのコピーを編集します。新しい名前はmcbselftest.vhdにしておきます。

まず、entityの名前をMCBSelfTestに変更します。そして、ポートの定義を変更し、errorやcarib_doneなどの信号を削除し、xtalclk_ip、pushsw_ip、led_op、HDR_A_BPを追加します。

  port
(
mcb1_dram_dq : inout std_logic_vector(C1_NUM_DQ_PINS-1 downto 0);
mcb1_dram_a : out std_logic_vector(C1_MEM_ADDR_WIDTH-1 downto 0);
mcb1_dram_ba : out std_logic_vector(C1_MEM_BANKADDR_WIDTH-1 downto 0);
mcb1_dram_ras_n : out std_logic;
mcb1_dram_cas_n : out std_logic;
mcb1_dram_we_n : out std_logic;
mcb1_dram_odt : out std_logic;
mcb1_dram_cke : out std_logic;
mcb1_dram_dm : out std_logic;
mcb1_rzq : inout std_logic;
mcb1_zio : inout std_logic;
mcb1_dram_dqs : inout std_logic;
mcb1_dram_dqs_n : inout std_logic;
mcb1_dram_ck : out std_logic;
mcb1_dram_ck_n : out std_logic;
xtalclk_ip : in std_logic;
pushsw_ip : in std_logic;
HDR_A_BP : out std_logic_vector(0 downto 0);
led_op : out std_logic_vector(7 downto 0)
);
end MCBSelfTest;

それから、PLLの逓倍率や分周比を設定します。以下の設定では50MHzのクロックを8倍して400MHzを作ってそれをデータ速度にします(DDR2のクロックは200MHzになる)。ユーザクロックにはそれを8分周した50MHzが使われます。
mcbselftest.vhdの中にある該当箇所を次のように変更します。

   constant C1_CLKOUT0_DIVIDE       : integer := 1; 
constant C1_CLKOUT1_DIVIDE : integer := 1;
constant C1_CLKOUT2_DIVIDE : integer := 8;
constant C1_CLKOUT3_DIVIDE : integer := 8;
constant C1_CLKFBOUT_MULT : integer := 8;
constant C1_DIVCLK_DIVIDE : integer := 1;

それから、ArchitectureのBegin以降を次のように変更します。

  c1_sys_clk_p <= '0';
c1_sys_clk_n <= '0';
led_op <= "00000" & c1_error & c1_calib_done & pushsw_ip;

inst_clkbuf : ODDR2 port map (
Q => HDR_A_BP(0),
C0 => c1_clk0,
C1 => not c1_clk0,
CE => '1',
D0 => '0',
D1 => '1',
R => '0',
S => '0'
);
memc1_infrastructure_inst : memc1_infrastructure
generic map
(
C_MEMCLK_PERIOD => 20000, -- 20ns
C_RST_ACT_LOW => C1_RST_ACT_LOW,
C_INPUT_CLK_TYPE => C1_INPUT_CLK_TYPE,
C_CLKOUT0_DIVIDE => C1_CLKOUT0_DIVIDE,
C_CLKOUT1_DIVIDE => C1_CLKOUT1_DIVIDE,
C_CLKOUT2_DIVIDE => C1_CLKOUT2_DIVIDE,
C_CLKOUT3_DIVIDE => C1_CLKOUT3_DIVIDE,
C_CLKFBOUT_MULT => C1_CLKFBOUT_MULT,
C_DIVCLK_DIVIDE => C1_DIVCLK_DIVIDE
)
port map
(
sys_clk_p => c1_sys_clk_p,
sys_clk_n => c1_sys_clk_n,
sys_clk => xtalclk_ip,
sys_rst_n => pushsw_ip,
clk0 => c1_clk0,
・・・

次に、UCFファイルを作成します。
オリジナルのUCFファイルは
(プロジェクトのフォルダ)\ipcore_dir\mymcb\example_design\par\example_top.ucf
にあるので、これをプロジェクトのトップにコピーして、mcbselftest.ucfに変更します。

まず、クロック速度を50MHzと宣言します。

##################################################
## Clock constraints
##################################################
NET "memc1_infrastructure_inst/sys_clk_ibufg" TNM_NET = "SYS_CLK1";
TIMESPEC "TS_SYS_CLK1" = PERIOD "SYS_CLK1" 20 ns HIGH 50 %;
##################################################

特電ボード用に追加したポートのピン配置を設定します。

NET "xtalclk_ip" LOC = "D11" | IOSTANDARD = LVCMOS33;
NET "pushsw_ip" LOC = "D6" | IOSTANDARD = LVCMOS33;
NET "led_op<0>" LOC = "F13" | IOSTANDARD = LVCMOS33;
NET "led_op<1>" LOC = "C11" | IOSTANDARD = LVCMOS33;
NET "led_op<2>" LOC = "C9" | IOSTANDARD = LVCMOS33;
NET "led_op<3>" LOC = "A9" | IOSTANDARD = LVCMOS33;
NET "led_op<4>" LOC = "B9" | IOSTANDARD = LVCMOS33;
NET "led_op<5>" LOC = "A8" | IOSTANDARD = LVCMOS33;
NET "led_op<6>" LOC = "B8" | IOSTANDARD = LVCMOS33;
NET "led_op<7>" LOC = "A7" | IOSTANDARD = LVCMOS33;
NET "HDR_A_BP<0>" LOC = "C6" | IOSTANDARD = LVCMOS33;

それから、キャリブレーション用のピン配置を変更します。

NET  "mcb1_rzq"                                  LOC = "U17" ;
NET "mcb1_zio" LOC = "U18" ;

UCFファイルができたら、プロジェクトに追加します。
こうしてできあがったプロジェクトは次のようになります。
Mymcb17

論理合成する際に、Configuration Optionsで、Unused IOB PinsをPull Upに変更するのを忘れずに行います。これを忘れると、特電Spartan-6ボードのUSB-JTAGが認識されなくなってしまいます。
Mymcb18

論理合成が通ったら、mcbselftest.bit を書き込みます。

書き込みと同時にセルフテストのデザインが走ります。静かに動いていますが、ずっとテストが行われています。
青いボタンを押すとMCBのコントローラにリセットがかかります。
LEDは
 ・D0 リセット中
 ・D1 キャリブレーション完了
 ・D2 エラーあり
で点灯します。正常時はD1のみ点灯です。
どういうテストが行われているのかはよくわかりませんが、終端抵抗をショートさせてみたりすると、エラーが発生し、D2が点灯するので、何かの読み書き比較を行っているのでしょう。

MITOUJTAGを使っている場合は、ピン配置定義ファイルとしてMCBSelfTest.padを読み込むと、
Mymcb19
FPGAの各ピンの入出力状態が固定され、バウンダリスキャンで見えるようになります。
Mymcb20

端子の状態をみてみると、MCBのセルフテストが動いている間は、忙しくDDR2 SDRAMへの端子が動いているのがわかります。
Mymcb21

ロジアナモードで見てみると、MCBのリセット中は停止していて、ZIO、RZQともにL出力。リセット開放と同時にZIO、RZQは入力に変わり、DRAMの各端子が動き出すのが見えます。
Mymcb22

I/O端子の波形を見る限り、A13~A10、A1、A0、BA1は動いていないようでした。
Mymcb23

今回はCoreGeneratorに付いてくるサンプルデザインをコンパイルし、セルフテストを走らせてみました。
次はユーザ・デザインを作ってみようと思います。

| | コメント (0)

2010.12.15

Spartan-6とMT9T031によるCMOSカメラの作り方

ET2010のデモで使用していた、「Spartan-6とMT9T031によるCMOSカメラ」の作り方を下記のページで公開しました。
http://www.tokudenkairo.co.jp/sp6/mt9t031.html

Sp6mt9t

作るのはとても簡単で、基本的にはSpartan-6ボードとMT9T031評価ボードを配線でつなぐだけです。RST端子には1kΩくらいのプルアップ抵抗を入れておいたほうがいいでしょう。
Howtomake

重要なのはMT9T031のI2Cレジスタの操作方法ですが、MT9T031のレジスタの操作方法は一般に公開されているマニュアルでは知ることができません。AptinaとNDAを結ばないともらえないのですが、評価ボードを購入したくらいではNDAを結ぶことは難しいそうです。
そこで、いろいろと苦労して自力で解析しました。その結果わかったI2Cの操作方法は、サンプルプログラムのソースコードの中に記述しました。

MT9T031は、普通に購入できるCMOSイメージセンサの中でも最高クラスの画質だと思います。ただし、AGCやAECがないので、ベストな明るさにあわせるのが難しいかもしれません。レンズが豪華な反面、焦点をあわせるのが大変かもしれません。モーターとかで自動であわせる仕組みがほしいですね。
今後、このカメラモジュールを使って画像処理をして遊んでみたいと思います。

Mt9tapp

FPGAの設計データと、制御ソフト(ソース付き)は、下のURLのページから無償でダウンロードできるようにしました。詳しくはこちらのページをご覧下さい。
http://www.tokudenkairo.co.jp/sp6/mt9t031.html

それから、Spartan-6ボードとMT9T031の変換基板(基板のみ)の販売もしていこうと思います。万能基板にラッピングワイヤで配線するのも大変ですので。MT9T031(aptinaの評価ボード)、OV7670(aidendoのモジュール)、OV9655(aidendoのモジュール)の3枚綴りにしようと思います。
2000円弱の価格を目指しています。そういう変換基板が欲しいかたいらっしゃいますでしょうか?

| | コメント (0)

2010.12.11

この冬のMITOUJTAGの予定

この年末年始、MITOUJTAGの開発を進めます。

目標は
■BLOGANAを徹底的に改良する。
■Spartan-6の異常なバウンダリスキャン仕様への対応
■印刷機能の充実化
■これまでの様々なバグに対する対応
です。
ようやく「Spartan-6のバウンダリスキャン問題」に対応できたので、今年末の改良計画をスタートすることにしました。
最大の目標は、BLOGANAの充実です。長いサンプリング、ビット幅の広いサンプリング、柔軟なトリガ、ALTERA対応、Verilog対応、信号名推定の高度化、ChipScopeやSignalTapとの共存、などやりたいことがいっぱいあります。
改良が進んだら、「みえたジェイ プラス」か、「MITOUJTAG Light」も、機能アップして販売再開しますので、ご期待ください。それはあと1週間から10日後くらいになる見込みです。

| | コメント (0)

Spartan-6の問題仕様にMITOUJTAGが対応

突然ですが、Spartan-6のJTAGバウンダリスキャン機能には問題があります。

詳しい話は、昨年9月ごろに発見してここここに続報を書きました。問題の状況を簡単に言うと、「Spartan-6で、入力ピンあるいは未使用ピンとして作成したピンは、バウンダリスキャンで見ると出力に見えてしまう。」というものです。

XILINXのWebCASEに投げて得られた回答は、高速動作時にノイズがどうのこうのということで、いわゆる仕様だそうですが、納得がいきません。私は単純なソフトウェア(おそらくBitgen)のバグか、もしくは、ハードのバグを隠すためにあえてそういう仕様にしたのではないかと考えています。

ここでバグだ仕様だと議論しても仕方がありませんし、これ以上待ってもムダだと思われたので、MITOUJTAGのほうでSpartan-6の誤ったバウンダリスキャン仕様に対応させることにしました。

バウンダリスキャンに対応したデバイスは、ひとつのI/Oピンに対して、入力、出力、方向の3つのセル(レジスタ)がついています。Spartan-6では本来、出力ピンの場合は方向セルは0、入力ピンの場合は方向セルは1になります。しかし、入力ピンの方向セルが間違って0になるため、MITOUJTAGは出力ピンだと判断してしまいます。

次の図は、Spartan-6に適当なサンプルデザインを書き込んで、バウンダリスキャンしてみた際のイメージです。多くのピンが出力モードになっているのがわかります。
本当はこんなに出力ピンは多くありません。中心に近いところは未使用のはずです。

Sp6fix1

例えばE6番ピン。このピンは未使用ピンで、Hレベルを入力しているはずです。しかし、方向セルが'0'のままのため、出力ピンとして判断されてしまい、"L出力"として認識されてしまっています。
Sp6fix3

この問題に対処するため、「特定のピンでは、方向セルを無視して、入力セルの値だけ見る」という機能をMITOUJTAGに付け加えました。
Sp6fix2

これを1個1個指定すると面倒なので、ファイルからまとめて読み込みできるようにしました。読み込むファイルは*.padファイルです。PADファイルは、XILINXのISEで論理合成した際にピン配置の結果として生成されるファイルです。
Sp6fix4

これを読み込むと、次の図のようにいくつかのピンが入力ピンに変わります。
Sp6fix5

これで、すべてのピンの状態が正しく見えるようになりました。

その違いは、ロジアナモードでもはっきりとわかります。

実験用に、FPGAには、プッシュスイッチを押すとLEDがカウントアップするというデザインを書き込んでみました。

まず、対策する前の波形。
コンフィギュレーション中の状態から始まって、コンフィギュレーションが終わると、いきなりクロックやプッシュスイッチの信号が見えなくなっています。
Sp6fix8_2

次に対策した後の波形。
Sp6fix7

コンフィギュレーションの前も後も、普通にクロックやスイッチの入力が見えています。

VO7670カメラをつないでみたら、そのカメラからの入力信号もはっきりと見えるようになりました。
Sp6fix9

このように、Spartan-6の入力ピンも正常に見えるようになりました。
ユーザ側の操作としては、UCFファイルのかわりにPADファイルを読み込めば、万事上手くいきます。

この修正パッチは11日土曜中にアップロードする予定です。
ご期待ください。

| | コメント (0)

2010.12.05

ET2010へのご来場ありがとうございました

皆様、先週はお忙しい中、ET2010の特殊電子回路ブースへご来場いただき、誠にありがとうございました。おかげさまで、3日間、かなり好調でした。

中には「ブログみてます」とか「なひたふ新聞のころから見てます」と言ってくださる方もいらっしゃって、とても嬉しかったです。

当社のブースはこんな感じでした。
Et2010_1

メイン展示物のひとつ、Spartan-6のPCI Expressボードです。PCI Expressをケーブルで引っ張っていたため、これでPCI Expressが動いているようには見えなかったかもしれないと、ちょっと反省してます。
Et2010_2

そして、メインの展示物のひとつ。Spartan-6ボードです。
Et2010_3

このボードは、CMOSカメラをつなげたり、
Et2010_4

LED光センサをつなげたりして、デモしていました。
Et2010_5

LED光センサは手をかざすと色が虹色に変わるので、FPGAとかに興味のない方にも楽しんでいただけたかと思います。

この展示会ではいろいろな方とお会いしてお話でき、とても良かったです。
次の予定はございませんが、来年もいろいろと展示会に出ていきたいと思います。

| | コメント (0)

« 2010年11月 | トップページ | 2011年1月 »