事務所の引越し
ナヒテックの事務所は、只今、引越し作業中です。
ドアをあけると、コンサルティング用の応接ルームになっています。
ようやくお茶セットも整いました。これで、一息つくことができます。
電話も開通しました。もうじきブロードバンドも開通します。
部屋を本棚で仕切って、半分を応接ルームとして使い、もう半分を研究開発用のスペースとして使います。
引越しはほぼ完成しました。
5月8日(月)大安から、正式にこちらで業務を開始します。
多くの皆様のお越しをお待ちしております。
ナヒテックの事務所は、只今、引越し作業中です。
ドアをあけると、コンサルティング用の応接ルームになっています。
ようやくお茶セットも整いました。これで、一息つくことができます。
電話も開通しました。もうじきブロードバンドも開通します。
部屋を本棚で仕切って、半分を応接ルームとして使い、もう半分を研究開発用のスペースとして使います。
引越しはほぼ完成しました。
5月8日(月)大安から、正式にこちらで業務を開始します。
多くの皆様のお越しをお待ちしております。
すごく久しぶりに、FPGAを触っています。
ターゲットボードは、Spartan3Eのスタータキット。
3Eスタータキットに付属のWebPACK8.1iを使ってみて気が付いたのですが、
これって、基本的に日本語に対応していないような。
VHDLのソースに日本語のコメントを入れられないし、
なんだか、ファイル名に日本語のパスをいれると動作が怪しいし。
日本語の問題はおいておいて、ISE8(のWebPACK)がメモリを大量に消費していることに気が付きました。
XC3S500Eに入る小さな小さな回路をコンパイルしているのですが、
_pn.exeが常時128MByteくらい、
par.exeも最大で128MByteくらい、
ほか、trce.exeやngdbuild.exeが起動したりで、最大300Mバイトくらい食います。
・・と思いきや、_pn.exeのメモリ使用量は、起動してからコンパイルするたびに、どんどん増えていきます。
4回ほどコンパイルすると、160Mバイトを突破。
コンパイル5回目で約200Mバイトのメモリ消費。
うーん、私の使い方が悪いのか!?
なんだか、_pn.exeがメモリリークしてるんじゃないかな、と思います。
コンパイル2回に1回は再起動しないと、パソコンの仮想メモリが足りなくなって、HDDがアクセスしっぱなしです。
でも、たしかに、ISE8のマニュアルを読むと、それくらいはメモリを消費するようです。
カタログ値では、ISE7.1の方がメモリ消費は少ないようですね。
さて、何を作っているかというと、Spartan3Eの中にあるBSCANコンポーネントというプリミティブを使った回路です。
BSCANコンポーネントは、ユーザに開放されているJTAGの命令「USER1」と「USER2」を使うマクロで、パソコンとFPGAのロジックの間の通信を可能にします。で、これを使って通信をして、Spartan3Eのコンフィグ用のSPIやBPIのROMに、高速に書き込むロジックを作ろうとしています。
普通に作ればそんなに難しくはないのですが、今回の目標は、
クロックがなくても動くこと
JTAGのTCKをクロックとして使ってSPIやらBPIの制御信号を駆動するのです。
だから、ユーザのクロックは不要。
完全な同期式回路にはなりませんが、それは仕方がありません。
JTAGをつなぐだけでSPIやらBPIにコンフィグをしてくれる、という回路です。
とりあえずは、STとATMELのSPIのROMを使えるようにすることを目指しています。
ナヒテックは、事業拡大のため、アルバイトを募集しています。
職種は、「組み込みに関すること何でも」です。
具体的にいうと、CADで図面を書いて、FPGAの中身を設計して、ソフトを作って、基板設計して、デバッグして、組み立てて、検査して・・・といった作業です。他にも、部品や資材を発注したり、技術資料を調べたりといった、様々な業務があります。
これらの業務をお手伝いしていただければと思っています。
(もちろん丸投げじゃありません。作業の一部を手伝っていただく感じです。心配ご無用)
「自分は電気はわかるけどソフトはわからない」、とか、「ソフトはわかるけど電気はわからない」、という方でも大歓迎です。組み込み開発は、電気だけでもソフトだけでもなく、幅広い分野の集大成なので、何か一部分でもお手伝いしていただける方と一緒に仕事ができれば嬉しい限りです。
勤務場所は秋葉原です。
勤務時間は原則としては、10:00~17:00ですが、
ご応募される方の御学業のスタイルに合わせて柔軟に対応いたします。
上記の時間の中から、数時間でも可、土日も可、週2回くらいでも可です。
大学生または大学院生を歓迎します。応用物理系、原子力系、
電気電子情報系の学生さんであればありがたいですが、学科は問いません。
※技術士1次試験合格者や、JABEE課程修了者ならば、さらに大歓迎です。
「やる気」と、電子回路に対する情熱があれば、大歓迎です。
経験は不問です。
オームの法則やはんだ付けの基礎からJTAGまで、すべて懇切丁寧に教えます。
ナヒテックで一緒にお仕事をしてくれる学生さんが、
実際の業務を通じてFPGAやCPLDの設計や組み込み開発を学ぶことができ、
将来において実務経験となることができるように、と考えています。
ご興味をお持ちの方がいらっしゃいましたら、ぜひとも、ご応募ください。
お気軽にお問い合わせください!
大変長らくお待たせいたしました。
本日より、MITOUJTAG BASIC Version1.2.4の出荷を開始いたしました。
http://www.nahitech.com/jtag/basicv.html
細かいバージョンアップ箇所は、上のリンク先に書かれたとおりです。
いままで悩んでいたことで、今回のバージョンで解決されたことといえば・・
ThinkPADでパラレルポートのアドレスが正しく認識されない問題というのがありました。
パラレルポートのアドレスを調べるには、0x378や0x278、0x3bcといった番地に適当なデータを書き込んで読んでみる、という常套手段があるのですが、どうやらThinkPADではこの手が使えないことがあるようなのです。(BIOSの設定を変更して0x378とかにしても)
そこで、今回のバージョンからは、Internal Device IO Controlという、Windowsデバイスドライバのテクニックを使って、パラレルポートのアドレスをWindowsのカーネルに教えてもらうことにしました。これなら完璧です。
他には、動作速度の向上という課題がありました。
いままでのバージョンのMITOUJTAGでは、320ピンとか、656ピンとか、1500ピンとか、とにかく巨大なBGAのデバイスを扱おうとすると、どうしても描画の速度が落ちてしまっていました。今回のバージョンからは、「変化がなかったピンや外形は描画しない」という判断を加えるようにしたので、巨大FPGAデバイスでも高速に描けるようになりました。
Version1.2.4の体感速度は、10倍くらい違います。
でも、動作速度はまだまだ上げられそうなので、次々回のバージョンアップくらいには、さらに飛躍的に限界までスピードアップしたいところです。
JTAGロジックアナライザには、Spartan3などのブロックRAMに波形を溜め込むモードを実装しました。これは、簡単にいうと、Chipsc●peやSigna●Tapと似ています。
JTAGのロジックアナライザが、数百MHzで動作します。
バウンダリスキャンを利用した通常モードのロジアナと、うまく使い分ければ、強力なアイテムになりそうです。
ほかには、ALTERAのCycloneの書き込みもできるようにしました。今回のバージョンアップで対応したのはCycloneのみですが、次の次のバージョン(Version1.2.6)くらいには、ALTERAの全FPGAに対応させたいと考えています。
というわけで、今日から出荷した分は、新しいバージョンのものとなっています。
Version1.2以降の製品版を、サポート付きでご購入された方は、バージョンアップができます。
詳細は、メールでお問い合わせください。
バージョンアップ版は、今週の中ごろから発送を開始します。
この機会に、ぜひとも最新のMITOUJTAGをご堪能ください。
長岡技術科学大学に於いて行われた、未踏ソフトウェア公募説明会の講演をさせていただきました。
講演は夕方の16時ごろからだったので、午前は新潟まで行ってみることにしました。
朝9時頃の新幹線に乗って、東京から新潟へ。
行きの新幹線では「MAXとき」の1階に座ったので、景色が見れず、残念。
2階建て新幹線の1階って、ぜんぜん景色が見えないんですね・・
新潟についてみると、意外と暖かいんです。ちょっと驚きました。
あまりゆっくり観光している時間もないので、白山神社と白山公園へ行くことにしました。
まず、新潟総鎮守である白山神社へ。
神社には大きな立派な蔵がありました。説明を読むと、式年遷宮の際に伊勢神宮から頂いたものだそうです。伊勢のいろいろな宝物などが式年遷宮で各地の神社に配られているのですね。ちょっと感動。
それから、祈祷をお願いしてきました。この神社では、。祈祷の際に巫女神楽といって、巫女さんが神楽を舞ってくださいます。
その後、白山公園へ。桜が満開で、お花見をする人でにぎわっていました。
なるほど、東京に住んでいる人で、忙しくて花見をし忘れた人は、北の方へ旅行すればいいのですね。桜前線と共にどんどん北上すれば、5月頃まで花見ができそうです。
その後、食事をとって、お土産の笹団子を買い、長岡へ。
長岡から新潟まで新幹線で30分くらい。車窓はずっと田んぼでした。
田んぼの中に家々があって、のどかな田園地帯というわけではないようです。
長岡駅前のバス停で、IPAの人とばったりと会います。
バスに乗ること30分、目的地の長岡技術科学大学へ。
キャンパスは、駅から結構離れた場所にあります。学校の入り口には、タクシーなどは止まっておらず、バスだけが唯一の交通手段のようでした。
ここも桜は満開です。キャンパス内には居住地区もあるようです。駐車場にはたくさん自家用車が止まっています。学生さんは、おそらく車で通学するか、キャンパス内に居住しているのでしょう。そういえば、JAIST(北陸先端科学技術大学院大学)に通っていた友人は、車がなければ生活できない、と言っていたのを思い出します。
darumaさんに教わった「あぶらそば」を食べに学食へ。しかし、すでに14時をまわっていたため、食堂は準備中に。
食堂の外にテーブルと椅子があったので、ちょっとゆっくり落ち着いてすわり、発表資料を眺めて講演のイメージトレーニングをします。
そして16時20分ごろから、未踏の公募説明会がはじまります。
17時10分ごろから17時50分ごろまでしゃべらせていただきました。
内容は、Webには書けません。
その後、撤収してバス停へ向かうと、17時58分。すでに17時55分のバスは出た後でした。
タクシーもいない。大学の入り口は閑散としています。次のバスは18時15分なので、あぶらそばを食べに学食へ戻る決意をしました。
「15分間で学食まで往復し、あぶらそばを食べる。」
バスは時間に律儀なようで、間に合わなければ容赦なく次は40分後です。ちょっとした緊張があります。
学食で待つこと5分、あぶらそばが出てきました。
汁なしラーメンですね。315円ですごいボリューム。
麺のタイプは、大学生協によくある種類の麺でした。
具は、豚肉、もやし、わかめ、メンマ・・たくさんあります。味はGood。
食べ終わると、18時12分。
急いで食べてバス停へ走ります。何とか間に合いました。帰りのバスの中では、隣に座った大学の先生が、文科省がどうだといってしきりに何かの制度の問題点を力説しています。もう一人の先生はずっと黙って聞いています。
長岡駅に到着し、新幹線に乗り、帰りました。
さて、帰りの総武線の電車内で、お土産の笹団子を網棚にのせていました。
笹団子の紙袋の中には、神社のお札と、鮭トバの燻製もいれておきました。
しかし、うっかり電車を降りる際に、そのお土産の紙袋をわすれてしまい、改札口まできたところで気が付いて引き返すと、袋はすっかりありません。
その後、駅員さんや忘れ物センターに問い合わせたけれども見つからず。
翌日になって再び問い合わせると、神社のお札が車庫に入る最終電車の中から見つかったとのことです。
つまり、お菓子の紙袋をもっていった人は、団子と鮭を持っていった後、さすがにお札を捨てることができなかったのでしょう。そっと、網棚に戻してくれたのだと思います。その後、電車は津田沼から三鷹へ、そして津田沼へと戻ってきて、そのときに網棚から見つかったようです。
笹団子は、「お取り寄せグルメ」でも買えるようなので、よしとしましょう。
駅員さんによると、忘れ物のお菓子が食べられてしまうのは、よくあることだそうです。
JTAGを使った万能のフラッシュROMライタである「JTAG FlashROM Writer」を改良中です。
今度の大きな改良点(Ver1.1→Ver1.2)は、
・CFIに対応していないフラッシュROMでもセクタ消去ができるようにした
・書き込みの動作をグラフィカルにした
・ビット反転機能をつけた
などです。
従来のJTAG FlashROM Writerでは画面の右半分にフラッシュROMのセクタ構成が表示されていましたが、今回のバージョンアップでは書き込むファイルの大きさを黄色で、書き込みを行うべき領域を赤色で、書き込み済みの領域を緑色でそれぞれ表示することにしました。
また、ファイル読み込み時に「ビット反転」を行うかどうかを指定することもできるようにしました。これはSpartan3EではIntelのフラッシュメモリをコンフィグメモリにするときに使用します。
Spartan3EはIntelのフラッシュメモリをコンフィグ用につかえますが、ISE(WebPACKを含む)で作成したビットストリームファイルをフラッシュメモリに書き込む際に、ビットの並びを逆にしなければいけません。このビット反転操作を簡単に行えるようにするための機能です。
つまり、MITOUJTAGのFlashROM Writer機能をつかえば、画面上でフラッシュメモリの書き込みたいセクタをクリックして、書き込みボタンを押すだけで、Sparrtan3E用のコンフィグデータを簡単に書き込むことができるようになります。
ただしバウンダリスキャンを使っているので遅いです。Spartan3E Starter Kit用のコンフィグデータをBPIフラッシュに書き込むのに5分くらいかかってしまいます。バウンダリスキャンなので仕方ありません。いずれ、XILINXのFPGAに書き込み専用ロジックを流し込んで高速に行う方法も考えます。そうすればSPIフラッシュにも簡単操作で高速に書き込みができるようになるでしょう。
フラッシュROMライタをいろいろと試行錯誤しているうちに、いろいろと便利な機能を思いつきました。今回のバージョンアップでは間に合いませんが、今後はMOTファイルやHEXファイルやELFファイルに対応させたり、より使いやすいユーザインタフェースにしたりということをも手がけていこうと思います。
この新しいバージョンは、MITOUJTAG BASIC1.2.4に搭載されます。リリースはまもなくです。
来週の水曜日、4月19日に、長岡技術科学大学においてIPA主催で行われる「未踏ソフトウェアの公募説明会」にて講演をさせていただきます。
場所は、長岡技術科学大学 13番講義棟 205講義室で、
日時は、平成18年4月19日(水) 16:20~17:50です。
お話させていただく内容は、未踏事業での成果やエピソードをはじめとして、Webでは書くことができなかったような「他言無用!ここだけのウラ話」も満載の予定です。
東京からだと新幹線で90分+バス30分と遠いのですが、長岡技術科学大学の方などで未踏ソフトウェアにご興味をお持ちの方がいらっしゃいましたら、ぜひともお越しいただければ幸いです。
私は新潟県には行った事がないので、どんなところかちょっと楽しみにしています。
なひたふが書かせていただいた記事が、トラ技2006年5月に掲載されました。
記事の内容は、マイコンとCPLDのメリット・デメリットや、R8CマイコンとCPLDをつないでマイコンのI/Oを拡張する方法、R8Cマイコンを使ったRS232C-JTAGインタフェースケーブルの作成などです。
ご意見ご感想などございましたら、お寄せいただければ幸いです。
Spartan3E Starter Kitが届いたので、さっそく使ってみました。
まず、送られてきたCD-ROMの内容が、Spartan3Eではなく、Spartan3 Starter Kitのものになっていました。
序の口。こんなことでひるんではいけません。
「ここから開始」と書かれたパンフレットには、電源スイッチを入れると自動診断が実行されて「PASS」とか「FAIL」と表示されるとありますが、実行されません。
キットのLCDには
Spartan-3E offerと表示されたまま、止まっています。Helloとも言ってくれません。
SPI & BPI config
デフォルトでは、BPIのモードでコンフィグ、つまりIntelのフラッシュメモリからコンフィグをしていると思われます。これをPlatform Flash Rom(XCF04S)の中身からコンフィグを開始するように設定するには、M1のピンをジャンパしなければなりませんが、製品の中に予備のジャンパピンが入っていないので自分で用意しなければなりません。
さて、このキットで最も気になっていたUSB-JTAGを評価しました。
Spartan3E Starter Kitは、USBからJTAGを使ってコンフィギュレーションできます。どういうしくみかというと、XILINXのPlatform USB Cableが基板上に構成されているようです。このUSBコネクタはJTAGコンフィグ専用についているもので、FPGAとの間でユーザ用の通信には使えないようです。
Spartan-3E Starter KitとPCを接続すると「不明なデバイス」が認識されました。そのPCでは、以前Platform USBは使ったことがあったのですが、VIDとかPIDが違うのでしょうか。製品に付録のDVDに入っているWebPACK8.1をインストールすることで、このUSB-JTAGを認識するようになりました。
やはり、iMPACTからは、この基板自体がPlatform USB Cableとして認識されるようです。
Spartan 3E Starter Kitの回路図には、やはり、このUSB-JTAG部分の回路図が描かれていません。以前、このブログでUSB-JTAGの回路図のページが空白になっていると書きましたが、最新の回路図ではその空白のページごとごっそり削除されています。
さて、肝心の、8.1のiMPACTは、すごく使いにくくバージョンアップされています。6.2のころのはまだ何とか使えたのですが、7ごろからいちいちプロジェクトファイルを作らなければならなくなったし、8では書き込むbitファイルのファイル名に"デスクトップ"とか、日本語が入っていると落ちてしまうという、致命的な面倒くささです。バージョンアップするたびに使いにくくなります。
これでは、入手したBitファイルを気軽に書き込みして、試してみることができません。
MITOUJTAGを使おうと、外部のJTAGケーブルを接続しようと思ったのですが、以前からWebで公開されていた写真のJTAGコネクタがありません。つまり、Parallel Cable IVのHigh Performance JTAG Cableが使えないようです。
どうやら外部のJTAGケーブルを使う場合は、基板の右上にあるJ28につなぐようです。基板上にはあらかじめEmbedded Platform USB Cableが組み込まれているので、衝突してしまいそうですが、USBコネクタを挿さずに電源を入れると、基板上のEmbedded Platform USB Cableは不活性化するようで、このJ28に自分のJTAGケーブルをつなぐことができるようになるようです。とくにジャンパなどの設定は見当たりませんでした。
J28に、開発中の新しいJTAGケーブルをつないでみました。TCKを16MHzにしてみると動きません。変だなと思ってTCKを8MHzや10MHzに下げるとOKです。12MHzでNGでした。ちゃんと作られた基板なら、JTAGでTCK=16MHzくらいは通るのに・・
ちなみに、基板上に作りこまれたPlatform USB JTAG Cableは6MHzで動作しているようです。
Spartan3E Starter Kit上のTCKの配線パターンを追ってみると、その配線は長く、パターンの引き回しもJTAGのデリケートさを全く考慮していません。これじゃ10MHz以上は厳しいでしょうが、CoolRunnerIIAのJTAGが10MHzまでしか対応していないのがTCK速度を上げられない最大の理由でしょう。
8MHzくらいに設定してMITOUJTAGでバウンダリスキャンをしてみると、ちゃんとピンの状態が見えました。
ちょっと驚いたのは、CoolRunnerIIじゃなくてCoolRunnerIIAなんですね。
ここにあるサンプル回路の各種Bitファイルも書き込んでみました。LEDチカチカやLCDチカチカなど、派手に動くものはないようです。
MITOUJTAGのJTAGロジックアナライザを使うと、波形が見えます。Chip●copeは使うためにコンパイルをしなければなりませんが、MITOUJTAGはコンパイル不要。CPLDにだって使えます。
上の波形は、ロータリーエンコーダのサンプルを動作させたときの波形です。
Starter KitのIntel Flash ROMは、XC3S500EをJTAGバウンダリスキャンで操作することで、JTAGを通じて読み書きすることができます。
MITOUJTAGから行うには、フラッシュROMライタを起動して、ピン定義ファイル「s3ekit.jfc」を読み込んでください。
「s3ekit.jfc」をダウンロード
下の図のように、フラッシュROMに書き込まれたFPGA起動用のデータを読み出すことができます。
また、フラッシュROMのCFIコードを読み込んで、セクタ構成もみえます。
フラッシュROMの書き換えは、明日、試してみることにします。
今日は大安吉日だったので、秋葉原の事務所を借りる契約をしました。
なんで私が秋葉原に事務所を構えようと思ったかというと、理由は2つあります。
ひとつは、弊社にお越しいただくお客様に、千葉まで来ていただくのは大変なので、いま一番エネルギッシュな街「秋葉原」に事務所を構えようと考えたこと。
そしてもう一つの理由は、秋葉原は電気の街であるのに電気のことを相談できるコンサルタントの事務所がないことです。最近の電子技術は、とても複雑で難しくなりました。電子回路についてどんなことでも気軽に相談できる事務所があれば、日本の電子技術の向上に役立つことができるのではないかと私は考え、秋葉原に事務所を構えることにしました。
ナヒテックの秋葉原オフィスは、弊社の設計開発の拠点として、そして秋葉原に唯一の開かれた電気技術士事務所として運用していく所存です。
ナヒテック秋葉原オフィスは、地図でいうと、このあたりになります。
分かりやすく描くと、こんな感じです。
今日も、秋葉原の路上で光ファイバの人がなにやら配っています。新しいオフィスを構えたので、ブロードバンド環境がなければ話にならないので、とりあえず声をかけてみました。
「あの~、加入したいのですが、何日くらいかかりますか?」
「今だと1ヶ月くらいです。場所はどこですか?」
「すぐそこのビルです」
「ごめんなさい、実は、この辺では光ファイバは引けないんです。電線を地下に埋めてしまって、電柱がないものですから。」
へぇ~、そうですか。秋葉原は光ファイバが引けないんですか。意外な発見。
あきらめて、メインストリートをずんずん進んでいくと、右手に巨大なビルが立ち並んでいます。そのビル群のおしまいの部分が見えたら路地を左に曲がります。その道をまっすぐいくとメイド喫茶、ラーメン屋、教会、駐車場、パソコン屋、芳林(ほうりん)公園、そしてまたメイドがあります。
その先に末広町ハイムというマンションがあります。その9階にナヒテックの新事務所があります。
秋葉原駅から徒歩6分、末広町から徒歩3分というところです。
電柱、あるじゃないですか!
末広町ハイムはもともとマンションだったのですが立地条件がよいので、かなりの数の企業さんが入居しているようです。私が入居する902号室も事務所用に改造されています。
しかし、建物の掲示板には「光ファイバはひけません」の張り紙が・・・
あきらめて、エレベータで9階に上がります。
不動産屋さんでもらった鍵でドアをあけます。ぎぃ~
都心の一等地にあるマンションを改造したオフィスなのでそんなに広くはありません。築30年ですがリフォームがされていて、中は綺麗です。
窓からは神田明神が見えます。桜が綺麗にさいています。
まだなんにもない事務所ですが、寸法を測ったりしてのんびりすごしました。帰る時には夕方で暗くなっていました。目の前にはダイビルやUDXなどの高層ビルが広がります。
来週末ごろまでにはお客様に起こしいただける体制を整える予定です。
多くのお客様のご来訪を、心よりお待ちしております。
大変ながらくお待たせいたしました。
約半年ぶりに、MITOUJTAGの新バージョンをリリースします。
只今追い込みのデバッグをおこなっていて、
リリース予定日は、4月15日土曜日(大安吉日)です。
次期バージョン「MITOUJTAG BASIC Version1.2.4」の主な更新点は、
【全般】
・描画速度の高速化
・EXTEST時に、右クリックでピンの状態を操作できるようにする
・フラッシュROMプログラマで、HEXファイルやMOTファイルを扱えるようにする
・その他、操作性の向上と、不具合修正
【デバイス】
・ALTERA Cycloneデバイスの書き込み対応
・CFI情報を持たないフラッシュROMでも扱えるようにする
【ケーブル】
・パラレルポートの動作改善(WarmPoll、排他的アクセス権、ThinkPAD対応など)
・SmartJTAGの動作高速化
・Mobile JTAG Cableの設定を保存できるようにする
・RS232C-JTAG対応
です。
こうして列挙してみると意外に少ないように思われますが、この半年の間に展示会の「体験版1.2.4」や「トラ技版」などをリリースして、様々な改良を行ってきました。
今回のBASIC版1.2.4では、細かいバグ修正や操作性の向上などを含めると、実際の更新箇所は数十箇所に及びます。もうVersion1.2.3には戻れないほど、いろんなところが改善されています。
是非とも新しいバージョンをご期待ください。
MITOUJTAGで、ALTERAデバイスも使えるようにしてほしいとのご要望を良くいただいております。
そこで、まずはALTERAのCycloneから対応をはじめることにしました。
私はALTERAのFPGAを使った経験がほとんどないので、まずは基本的なことから勉強しています。
まず、ALTERAのFPGAのコンフィギュレーションは、JTAGを使ったモードや、シリアルのモード、パラレルのモード、コンフィグROMを使ったモードなどがあり、XILINXと同じです。CycloneやCyclone2、Stratix、Stratix2などのメジャーなFPGAはどれもJTAGを使って書き込むことができます。
シリアルのモードには、PSモードとASモードがあります。
・ASモード
FPGAが自らクロックを生成して、コンフィグROMなどからデータを取ってくるモードです。XILINXでいうところのMasterSerialモードでしょう。
・PSモード
XILINXでいうところのSlaveSerialモードのようなもののようです。つまり、クロックをFPGA外のデバイスが供給するようです。ダウンロードケーブルや、基板上の組み込みマイコンからビットストリームを流し込むことでFPGAをコンフィギュレーションできます。
FPGAに書き込むためのデータファイルは、SOFファイル、POFファイル、JICファイル、RBFファイル、TTFファイル・・・などといろんな種類があります。
・RBF(Raw Binary File)
すべての基本になるデータで、FPGAに書き込まれる正味のデータです。
・TTF(Tabular Text File)
RBFをテキスト形式にしたものです。デフォルトで生成されます。
・POF(Programmer Object File)
ROMに書き込むためのファイルです。これはRBFファイルにいくつかの情報を加えたものです。ROM用のファイルなので、FPGA用としては生成されません。中身はヘッダ + ROM用の追加データ + RBFファイルという感じです。
・SOF(SRAM Object File)
FPGAに書き込まれるデータですが、RBFファイルのデータとはかなり異なったデータになっています。おそらく縦横変換しているのでしょう。また、RBFファイルやPOFファイルは1つのレコードでできているのに対し、SOFは複数の意味あるレコードでできており、その構造は容易には推測できません。
というわけで、JTAGで書き込むには、RBFファイルかTTFファイルをつかうのが良いでしょう。POFファイルから正味のデータを取り出すということもできるようです。
ALTERAのFPGAの書き込み方法は文章では公開されていませんが、JRunnerというツールが公開されているので、このソースを読むことでアルゴリズムを窺い知ることができます。JRunnerは、本来組み込みマイコンからJTAGをアクセスして基板上のFPGAをコンフィギュレーションするためのサンプルコードのようです。
圧縮モードと非圧縮モード
ALTERAのFPGAのビットストリームには、圧縮モードと非圧縮モードというのがあります。EPC12でLEDチカチカをやるデータを作ったら、非圧縮では290kBytesでしたが、圧縮モードにしたら92kBytesになりました。JRunnerに圧縮モードのデータ入力しても、コンフィグは成功しないようです。
必ず非圧縮モードで生成するよう、↓のダイアログを開いてオプション指定を変更しなければならないようです。
圧縮モードを指定すると、POFファイルとRBFファイルとTTFファイルは圧縮モードで作られます。しかし、SOFファイルは非圧縮で作られます。QualtusIIのデバイスプログラマは、SOFファイルを使ってJTAG書き込みしているようです。
コンフィグROMに書き込むデータは圧縮モードでもよいのでしょうが、JTAGで送るデータは非圧縮でなければならないようです。なんだかややこしいですね。
コンフィギュレーション成功!
試行錯誤の末、Cycloneの書き込みアルゴリズムを現在開発中のMITOUJTAG新バージョンに実装しました。(JRunnerのソースには書かれていないことがいろいろとあるようで、研究すればするほど面白いことがわかってきます。)
FPGAに書き込んでみるというのも検証の一つですが、別の方法でもアルゴリズムを検証してみたところ間違ってはいないようです。
パラレルポート経由で書き込むと、QualtusII+ByteBlasterの場合とほぼ同じ速度。Mobile JTAG Cable経由で書き込むとその10倍くらい高速に書き込めます。予想どおりの性能です。
これで、ALTERA FPGAの開発がラクになること間違いなし!?
最近のコメント