2014年10月24日金曜日
退職ナウ
10月17日付けで、3年半務めさせていただいた某社セールスエンジニアのポジションを resign しました。
この三年半はとても刺激的でした。きっかけは2010年の夏、ポジションのオファーの連絡をいただいた際には、それまでの話とは違い、オファーが目に入った三秒後には「これは面白い、やりたい!」という気持ちが溢れていました。 HR 担当者との Skype 越しでのインタビューでは、「ウチの会社は昼メシ時に一本スキー滑ってる人もいるよ」「うわぁ!オレ絶対入社したいです!」「おいおい、これは面接だからそこは忘れるなよ?」 「で、あなたはこの会社で何をするの?」「私は御社の日本チームを代表するエンジニアになりたいです!」「、オーケー!オーケー!」みたいな、英語が話せないなりにアレな感じではじまりました。
自身の能力不足で色々なチャレンジがありましたが、恐らく同社のAPACのセールスエンジニアとしては、少なくとも社内のセールスエンジニア組織ではもっとも認知された一人になれたと思います。当初の requirement を満たさないなかで採用としてくださった当初の SE マネージャ、また、採用当初から退職時までワガママを聞いていただいた VP には感謝の言葉しかありません。
いまから一年ほど前、自分が扱っている商材はなんだろうかという、心の中での自問自答に一つの答えが得られました。
時は1990年前半、私が小学生のときまで遡ります。当時、私は父親の仕事用マシンである PC-9801VM2 を”乗っ取り”、そのマシンに乗っていた 2MB のバンクメモリに魅せられていました。
PC-9801VM は 16 ビットのコンピュータで、メモリのアドレスは合計 20 ビットの幅で、最大1MBのメモリ空間しかアドレッシングできない制約がありました。一般的に MS-DOS の 640KB の壁という制限です。当初は「640KB? いったいそんな大量のメモリ、一体何に使うんだよw」という会話が普通にありましたが、今となっては 640KB ごときでは本ブログ記事のレンダリングすら不可能なほどの、限られたキャパシティです。
当時のエンジニアもやはりメモリ不足を感じており、 Intel や Lotus などの企業が協力して EMS (Extended Memory System) という規格を作り出し、私が実家で弄っていたバンクメモリボードは EMS 標準化の過渡期にあった製品でした。
そのバンクメモリは衝撃的な経験でした。当時といえば不揮発層はフロッピーディスクがガシャガシャ音を立てて数秒後に漢字変換の候補があらわれ、ハードディスクといえども100ミリ秒単位のアクセス時間があったように思います。そのような中でほとんどI/Oの時間が感じられない「バンクメモリ上のRAMディスク」がやはり快適なしくみで、 2004 年の就職に際しての上京直前にバンクメモリカードを「あ、これは大事なものだから残しておこう」と箱にしまってきたのを今でも憶えています。
私が3年間(、ないしは1990年から)かけて得た答えは、コンピュータのシステムメモリに対して、追加のメモリ空間で容量をブーストをすれば、コンピュータが快適に利用できる、ということです。
MS-DOS 時代は 20ビットのアドレスバス制限のなかで 640KB を超えるメモリ空間の扱いに対して技術的なアプローチが採られました。対して Windows 95 から 32 ビットのオペレーティングシステムになり、現在のプロセッサは 48 ビットのアドレスバスで DRAM をアドレッシングできるため、バンクメモリのような発想は不要だと思われたのですが、しかし取扱データ量の増加に伴い、必ずしも DRAM で全てのデータをカバーできなくなりました。
私が 2011 年から扱っていたデバイスは、 640KB 制限時代のバンクメモリの生まれ変わりでした。フラッシュはストレージとして考えれば高いですが、しかしDRAMやSRAMと比べると恐ろしく安価です(散々”高い”と言われた取り扱い製品は、DIMMと比較すると、定価ベースで5〜6分の1のバイト単価で買えるのです)。この特性を活かして、コンピュータのアーキテクチャでメモリといえばDRAM、二次記憶といえばHDD、が常識になったときに、フラッシュによるメモリ階層の可能性を思い出させてくれたのが、自分が3年間関わったデバイスでした。ヘネパタを読んでも出てこない、今後は DRAM だけではなく容量重視のフラッシュを不揮発層を併用するコンピューティングの時代が訪れる足音を、私は聞いていたのです。
私のなかでは、この結論を得た段階でたぶん満足していたのだと思います。今後、わたしたちはどれだけ抵抗しようが、DRAM, Flash, 磁気メディアを組み合わせてシステムを構成せざるを得ない時代に突入しつつあります。現時点で私は MacBook Air, iPhone, iPad mini を持ち歩いていても全て不揮発層は Flash であり、私を含むユーザ層が Flash を搭載したデバイスでがんがんサーバに負荷をかければ円盤を回している余裕なんてあるわけがありません。 Flash が円盤を置き換えるのはもう完全に時間の問題で、プロセッサ、DRAM、その他I/Oデバイスと二次記憶、という50年来のコンピュータアーキテクチャが変わりはじめる瞬間に立ち会ってきたのだと思います。
なんとなく自分のなかで一つの満足に到ったわけですが、いまの自分は何をしたいんだろう、という問いに対して暫く悩んでいました。まだこの答えははっきりと出ていませんが、その一部は「これは面白い、やりたい!」という4年前の自分の”想い”です。嫁も彼女もナシで、ワンコのラピスも天に召され、守るものが何もない立場の特権かと思いますが :) 自分がやりたい事に時間を費やしてみたいという気持ちに正直になることにしました。
これまで10年間、SIおよびコンピュータ向けのハードウェアベンダ ——つまりはIT業界の仕事に関わらせていただきましたが、今は、自分自身が一番興味があるテクノロジーに自分の時間を費やしたいと思い、ITとはちょっと離れた某スタートアップのお手伝いをすることにしました。まだ自分がどのように貢献できるかわかりませんが、SI時代の経験、ハードウェアベンダ時代の経験を活かして、新しい技術の発展や普及に貢献できれば、と思っています。
この3年半は色々な方にお世話になりました。また、割と時期的に盛り上がっている会社でもあり、会社名や名刺のパワーで IT 業界のさまざまな方とご挨拶ができ、時には吞みながら意見を交わせさせていただき今に到っています。様々な刺激をありがとうございました。
中期的、長期的に自分がどのようなキャリアパスをとるのかはノーアイデア感半端ないのですが、暫くは、IT業界をひとつ離れたところから見つめながら自身がどのように貢献できるのかを模索し、コンピュータの世界を盛り上げられる一人になれる日を向かえられるようにしたいと思います。
p.s.
楽しいお誘いはいつでも大歓迎です。
2014年10月20日月曜日
オープンソースカンファレンス2014 東京・秋で利用したEject-io LTプレゼンテーション
週末に明星大学で開催された OSC2014 初日の懇親会で利用した Eject-io のプレゼンテーションをアップロードしました。
昨年末からのネタで大したアップデートはありませんが、今回はトーマスが走るデモを実装しまして、自作OS界を牽引するあのお方のお子様が魅入ってしまうなど、確実に業界に対してのインパクトは増しております。
Eject-io の詳細についてはこちら(過去のブログ記事)をご確認ください。
次世代I/Oインターフェイス「Eject-io」
なお当日は懇親会を途中で離脱することになったため、前倒しでLT枠をいただきました。ご配慮いただきました @akkiesoft さん、また LT に誘ってくださった @akkiesoft さん、そして Eject でインスパイアしてくれた @akkiesoft ありがとう!
昨年末からのネタで大したアップデートはありませんが、今回はトーマスが走るデモを実装しまして、自作OS界を牽引するあのお方のお子様が魅入ってしまうなど、確実に業界に対してのインパクトは増しております。
Eject-io の詳細についてはこちら(過去のブログ記事)をご確認ください。
次世代I/Oインターフェイス「Eject-io」
なお当日は懇親会を途中で離脱することになったため、前倒しでLT枠をいただきました。ご配慮いただきました @akkiesoft さん、また LT に誘ってくださった @akkiesoft さん、そして Eject でインスパイアしてくれた @akkiesoft ありがとう!
2014年10月17日金曜日
Software Design 2014年11月号に「サーバの目利きになる方法 後編」を寄稿させていただきました。
前回はバタバタしておりブログで紹介するタイミングを逃していましたので、今回はタイムリーに。。。。
先月号に続き「サーバの目利きになる方法」として20ページの記事を掲載していただきました。内容は、これまでのネットワーク技術の変遷(10BASE-5以降)と主要ストレージなストレージ技術(特に今後の普及が確定的なフラッシュストレージ、およびRAID関連の基礎知識)、そしてオマケ程度ではありますがサーバの管理機能について紹介しています。
ネットワーク技術は学生時代(10年以上前)の知識で書いているところも多いですし、前号同様、知っている方にとっては何も新しい情報はないかもしれませんが、限られたページ数と時間の中で「自分が一緒に働くITインフラエンジニアがいたとしたら、その人に知っておいてほしいこと」を優先的に詰め込みました。
今回も、アプリケーションよりのエンジニアにはあまり知られていない話だと思いますし、興味がないところかもしれません。そんな中でも「へぇ」「なるほどね」と思ってもらえたら、またITインフラエンジニアの方にも何か発見があったり、より専門的な知識の獲得のきっかけになったら有難いです。
今回の記事は、私一人でやらせていただくよりも、ひとつひとつの分野についてより専門的知識を持った方で担当を別けたほうが魅力的な記事になったのでは、という思いもあります。とはいえ、SD編集長さまより全編任せていただいたので、自分の視点から見た世界を、自分のこれまでの体験を振り返りながらまとめました。
各分野のエキスパートによる記事をまとめたければ、そもそも私の所に執筆の話はきていなかったでしょう。また、色々と調べなおして勉強になったので、この機会には感謝しています。今年の冬に向けての軍資金も手に入ります:)
今回の記事はページ数に対してカバーしなければならないエリアがとても広かったので、前編・後編に渡って多くの方にアイデア提供、査読、アドバイス、ご協力をいただきました。ありがとうございました。
執筆期間中にご協力、フィードバックをいただいた方々
石井 宏和さま
板谷 郷司さま
伊藤 宏道さま(日本仮想化技術株式会社)
海老澤 健太郎さま(Riava, Inc)
桑野 章弘さま(株式会社サイバーエージェント)
佐野 裕章さま
須藤 武文さま(さくらインターネット株式会社)
田中 邦裕さま(さくらインターネット株式会社)
東根作 成英さま(レノボ エンタープライズ ソリューションズ株式会社)
宮本 久仁男さま
また、2号とも脱稿が遅れ、技術評論社の Software Design 編集部の方々にはご負担をおかけしました。本当にありがとうございました。
2014年9月27日土曜日
Software Design 2014年10月号に寄稿させていただきました。
すでに発売日から10日近く経過しており機を逸してる感もありますが、技術評論社の Software Design 誌に寄稿させていただきました。
第二特集の「サーバの目利きになる方法」で約20ページほど解説させていただきました。その他にも読み応えのある記事がいっぱい並んでいますので、まだお求めになられていない方は書店で手にとってみていただけますと幸いです。もちろん今から Amazon.co.jp でも OK です。また、10月18日には続編が掲載されます。
もともとのきっかけは今年4月に開催された qpstudy 2014.04 〜俺の屍を超えて行け、でも踏まないで〜 ででした。 IT インフラエンジニアとして、今日のIAサーバと向き合うときのポイントを解説してほしいという依頼を同運営からいただき、説明させてもらいました。突貫工事で作ったスライドでしたが、かけた時間に対して、スライドのビュー数も思った以上に伸びました。
いまはすごいアプリをがんがん作る開発者がいっぱいいるのですが、知り合いと吞んでいて最近話題になるのが、最近のイケイケな動向(ミドルウェアやフレームワークなど)に強いエンジニアでもコンピュータのことはあまり知らないエンジニアが増えているという話をよく聞きます。それは、 qpstudy 2014.4 でプレゼンをしたときのその場のフィードバックや関連するタイムラインなどにも感じました。
2010年頃、自分がシステム構築ビジネスのプリセールスSEとして活動していたとき、システム構築ビジネスでサーバの構成や見積もり、導入といった話をうまくまとめたバイブル的な書籍がないか?と思い探してみたことがあります。今ではあれば LINE 株式会社の佐野さまが当初イメージしたものにいちばん近い書籍を出されており、今回の執筆にあたってはページ数制約のなかでもう一歩技術側に踏み込んだ内容にバランスできればいいなと思って取り組みました。
インフラエンジニアの教科書
佐野 裕
固定リンク: http://www.amazon.co.jp/dp/4863541333
残念ながら、私がバイブルを探した”その時”には、自分が欲しいと思った本は見当たりませんでした。今回は機会をいただいて、そのときに自分が読みたかった書籍の10%ぐらいの内容をまとめられたかな?と思います。
というわけで、私も別にそれほどハードウェアや機器選定で何かすごい経験があるわけでもないですし、諸事情により調査に時間をかけたり集中して原稿に取り組むことができなかったので、自分自身として内容に満足していないのですが、かけた時間相応でまとめられたかなと思っています。正直特集名が「サーバの目利きになる方法」になっているゲラを見た、目利きになんてなれていない私は、動揺を隠せませんでしたし、今でもドキドキします。
各エリアの専門家からしたらオママゴトのような内容になっていますし、私の Twitter タイムラインにいる方や Software Design 誌を長く読まれている方がったら当たり前のことも多いと思いますが、そうではない、若手のエンジニアの方やアプリケーションサイドのエンジニアの方に、サーバや構成パーツについて参考になったり興味がわいたり、ということがあれば嬉しいです。
今回の記事やスライドに着手するきっかけを下さった qpstudy の皆さん、また今回、2号に渡り約40ページものページを託してくださった Software Design 編集部の皆さんには大変感謝しています。
特に SD 編集部の皆さんには、、、、二ヶ月にわたり締め切りを守れずに申し訳ありませんでした。私が技術評論社ではじめての原稿をやらせていただいた機会は、他の方の原稿が落ちたときの代打でした。これまで数回にわたって代打を務めさせていただき得た信頼を、ここ1年でいくらか失ったのではないか、と反省しています。次号の入稿が終わったらモツ鍋を食べにいきましょう。きっと乾杯の前にお詫びすると思います。 (T_T)
第二特集の「サーバの目利きになる方法」で約20ページほど解説させていただきました。その他にも読み応えのある記事がいっぱい並んでいますので、まだお求めになられていない方は書店で手にとってみていただけますと幸いです。もちろん今から Amazon.co.jp でも OK です。また、10月18日には続編が掲載されます。
もともとのきっかけは今年4月に開催された qpstudy 2014.04 〜俺の屍を超えて行け、でも踏まないで〜 ででした。 IT インフラエンジニアとして、今日のIAサーバと向き合うときのポイントを解説してほしいという依頼を同運営からいただき、説明させてもらいました。突貫工事で作ったスライドでしたが、かけた時間に対して、スライドのビュー数も思った以上に伸びました。
いまはすごいアプリをがんがん作る開発者がいっぱいいるのですが、知り合いと吞んでいて最近話題になるのが、最近のイケイケな動向(ミドルウェアやフレームワークなど)に強いエンジニアでもコンピュータのことはあまり知らないエンジニアが増えているという話をよく聞きます。それは、 qpstudy 2014.4 でプレゼンをしたときのその場のフィードバックや関連するタイムラインなどにも感じました。
2010年頃、自分がシステム構築ビジネスのプリセールスSEとして活動していたとき、システム構築ビジネスでサーバの構成や見積もり、導入といった話をうまくまとめたバイブル的な書籍がないか?と思い探してみたことがあります。今ではあれば LINE 株式会社の佐野さまが当初イメージしたものにいちばん近い書籍を出されており、今回の執筆にあたってはページ数制約のなかでもう一歩技術側に踏み込んだ内容にバランスできればいいなと思って取り組みました。
インフラエンジニアの教科書
佐野 裕
固定リンク: http://www.amazon.co.jp/dp/4863541333
残念ながら、私がバイブルを探した”その時”には、自分が欲しいと思った本は見当たりませんでした。今回は機会をいただいて、そのときに自分が読みたかった書籍の10%ぐらいの内容をまとめられたかな?と思います。
というわけで、私も別にそれほどハードウェアや機器選定で何かすごい経験があるわけでもないですし、諸事情により調査に時間をかけたり集中して原稿に取り組むことができなかったので、自分自身として内容に満足していないのですが、かけた時間相応でまとめられたかなと思っています。正直特集名が「サーバの目利きになる方法」になっているゲラを見た、目利きになんてなれていない私は、動揺を隠せませんでしたし、今でもドキドキします。
各エリアの専門家からしたらオママゴトのような内容になっていますし、私の Twitter タイムラインにいる方や Software Design 誌を長く読まれている方がったら当たり前のことも多いと思いますが、そうではない、若手のエンジニアの方やアプリケーションサイドのエンジニアの方に、サーバや構成パーツについて参考になったり興味がわいたり、ということがあれば嬉しいです。
今回の記事やスライドに着手するきっかけを下さった qpstudy の皆さん、また今回、2号に渡り約40ページものページを託してくださった Software Design 編集部の皆さんには大変感謝しています。
特に SD 編集部の皆さんには、、、、二ヶ月にわたり締め切りを守れずに申し訳ありませんでした。私が技術評論社ではじめての原稿をやらせていただいた機会は、他の方の原稿が落ちたときの代打でした。これまで数回にわたって代打を務めさせていただき得た信頼を、ここ1年でいくらか失ったのではないか、と反省しています。次号の入稿が終わったらモツ鍋を食べにいきましょう。きっと乾杯の前にお詫びすると思います。 (T_T)
2014年9月4日木曜日
Nexys 4 と ISE Design Suite で何か作ってみる(後編)
前編では、新しいプロジェクトを作って、プログラム可能なファイルを生成するところまでを見てみました。続いて実際に FPGA にプログラムしてみます。
■ Micro USB コネクタによる JTAG 接続
Nexys 4 を Micro USB ケーブルで開発機に接続します。このためには、あらかじめ Nexys 4 上のジャンパを設定しておきます。設定方法は Nexys 4 のリファレンスマニュアルに書いてありますが、参考までに引用しておきます。
■ Micro USB コネクタによる JTAG 接続
Nexys 4 を Micro USB ケーブルで開発機に接続します。このためには、あらかじめ Nexys 4 上のジャンパを設定しておきます。設定方法は Nexys 4 のリファレンスマニュアルに書いてありますが、参考までに引用しておきます。
JTAG を利用するには JP1 の真ん中の2本のピンをショートさせておきます。ジャンパの設定を終えたら Micro USB ケーブルで開発機に接続し、 Nexys 4 の電源スイッチをオンにします。
今回は VMware を使っているため、仮想マシンに USB ターゲットを接続します。
また、初回接続時は USB Serial のドライバがロードされるまでにしばらく時間がかかりました。 うまく接続できていれば、デバイスマネージャで COM ポートが確認できるはずです。
■ いざプログラム
Project Navigator に戻ります。先ほど実行した Generate Programming File の下にある、 Configure Target Device のツリーをひらき、 Generate Target PROM/ACE File をダブルクリックします。
下記の警告が表示されますが無視します。
ISE iMPACT というプログラムが立ち上がってくるので、ここで iMPACT Flows から Boundary Scan を選択し、左側ペイン内を右クリックしてショートカットメニューから Add Xilinx Device をクリックします。
FPGAのプログラムに使用したい .bit ファイル、つまり先ほど生成したロジックを含むファイルを選びます。ここでは test.bit ファイルがありますのでこれを選択します。
iMPACT の右側ペインに表示された Xilinx のチップアイコンを右クリックして、ショートカットメニューから Program を選択します。
上記操作で、 FPGA へのプログラムが開始され、プログラムが完了すると Program Succeeded という表示がなされます。
■ 動作テスト
FPGA へのプログラムが完了すると、 DONE LED(FPGA右上)が点灯し、組んだロジックが動作しはじめます。 SW0 と SW1 を操作すると、対応する LED が点灯/消灯するのが確認できます。
なお、今回は FPGA に通電後、 JTAG ケーブルを通じて直接プログラムしました。ボードの電源を落とすとプログラム内容は消えてしまいますので、改めてアップロードする必要があります(もしくはコンフィグレーション ROM に bit ファイルの内容を書き込んで、電源オン時に自動ロードされるようにします)。
Nexys 4 と ISE Design Suite で何か作ってみる(前編)
FPGA いじりをはじめるにあたって色々調べたのですが、とりあえず簡単なロジックを FPGA にプログラムするまでの手順、とくに今回買った Nexys 4 向けの具体的なものが見当たらなかったので、ここにメモがてら残しておくことにします。
今回は作業環境とライセンスの都合上 ISE Design Suite を使い、真っ白なプロジェクトから実際に Nexys 4 向けの bin ファイルを生成し、プログラムしてみます。
これ見れば誰でも FPGA いじり始められますね!みんなあそぼうず。
■ 新しいプロジェクトを作成する
まず ISE Project Navigator を起動し、 New Project... をクリックします。
次にプロジェクト名を指定します。今回は myproj1 としました。またプロジェクトの配置先フォルダを指定しました。プロジェクトの配置先フォルダに myproj1 というサブフォルダが作成され、その中にプロジェクト一式が保存されるようです。
次の画面ではターゲットの FPGA のモデルを指定します。 Nexys 4 の場合はリファレンスマニュアル(PDF)およびサイトの表記から XC7A100T-1G324C というチップだとわかりますので、これにあわせて選択します。なおスピードは -1 が遅い、 -3 が速いモデルで、 324C というのは 324 ピンの BGA パッケージであることを示しています。
■ 制約ファイルを追加する
プロジェクトが作成できたら、次に、プロジェクトに制約ファイルを追加します。 myproj1 を右クリックして Add Copy of Source... を選択します。右側に + マークが付いたアイコンがありますので、これを押してもよさそう。
Nexys 4 のサイトから入手した UCF ファイルを指定します。
■ 新しい VHDL ファイルを作成する
次に、プロジェクトに新しい VHDL ソースファイルを追加します。 New Source... をクリックします。
ファイルの種類として VHDLを選択しました。また VHDL ファイル名はとりあえず test.vhdl としてみます。
Define Module というダイアログが表示されますが、とりあえずここはそのまま。
ウイザードを終了すると、下記のようなからっぽのテンプレができています。
■ ロジックを書いてみる
早速何かかいてみます。 SW0 がオンだったら LED0 を点灯させ、 SW1 は逆にオフのときに LED1 を点灯させます。
■ 制約ファイルを編集する
ここで SW とか LED というポート(各2ビット)を使っていますが、このポートが FPGA のどのピンに対応しているかを示すため制約ファイルを編集します。 Nexys4_Master.ucf ファイルで以下の行を有効化します。
NET "sw<0>" LOC = "U9" | IOSTANDARD = "LVCMOS33"; #Bank = 34, Pin name = IO_L21P_T3_DQS_34, Sch name = SW0
NET "sw<1>" LOC = "U8" | IOSTANDARD = "LVCMOS33"; #Bank = 34, Pin name = IO_25_34, Sch name = SW1
## LEDs
NET "led<0>" LOC = "T8" | IOSTANDARD = "LVCMOS33"; #Bank = 34, Pin name = IO_L24N_T3_34, Sch name = LED0
NET "led<1>" LOC = "V9" | IOSTANDARD = "LVCMOS33"; #Bank = 34, Pin name = IO_L21N_T3_DQS_34, Sch name = LED1
■ 論理合成、 bit ファイルの生成
ここまでできたら下記スクリーンショット中の ▶ ボタンをクリックしてプロジェクトを Implement してみます。画面下部にログが表示されます。
Implement が終わったら、次は Generate を行います。 test - Behavioral (test.vhdl) を選択した状態で、下の Process: から Generate Programming Fileを選択します。
最終的に Process "Generate Programming File" completed successfully と表示され、先の Generate Programming File の左側に緑色のチェック印が出れば OK なようです。これでとりあえず FPGA にアップロードできそうなファイルができました。
■ 後半編へ
後編では、今回生成した bit ファイルをアップロードしてみます。
今回は作業環境とライセンスの都合上 ISE Design Suite を使い、真っ白なプロジェクトから実際に Nexys 4 向けの bin ファイルを生成し、プログラムしてみます。
これ見れば誰でも FPGA いじり始められますね!みんなあそぼうず。
■ 新しいプロジェクトを作成する
まず ISE Project Navigator を起動し、 New Project... をクリックします。
次にプロジェクト名を指定します。今回は myproj1 としました。またプロジェクトの配置先フォルダを指定しました。プロジェクトの配置先フォルダに myproj1 というサブフォルダが作成され、その中にプロジェクト一式が保存されるようです。
次の画面ではターゲットの FPGA のモデルを指定します。 Nexys 4 の場合はリファレンスマニュアル(PDF)およびサイトの表記から XC7A100T-1G324C というチップだとわかりますので、これにあわせて選択します。なおスピードは -1 が遅い、 -3 が速いモデルで、 324C というのは 324 ピンの BGA パッケージであることを示しています。
■ 制約ファイルを追加する
プロジェクトが作成できたら、次に、プロジェクトに制約ファイルを追加します。 myproj1 を右クリックして Add Copy of Source... を選択します。右側に + マークが付いたアイコンがありますので、これを押してもよさそう。
Nexys 4 のサイトから入手した UCF ファイルを指定します。
■ 新しい VHDL ファイルを作成する
次に、プロジェクトに新しい VHDL ソースファイルを追加します。 New Source... をクリックします。
ファイルの種類として VHDLを選択しました。また VHDL ファイル名はとりあえず test.vhdl としてみます。
Define Module というダイアログが表示されますが、とりあえずここはそのまま。
ウイザードを終了すると、下記のようなからっぽのテンプレができています。
■ ロジックを書いてみる
早速何かかいてみます。 SW0 がオンだったら LED0 を点灯させ、 SW1 は逆にオフのときに LED1 を点灯させます。
■ 制約ファイルを編集する
ここで SW とか LED というポート(各2ビット)を使っていますが、このポートが FPGA のどのピンに対応しているかを示すため制約ファイルを編集します。 Nexys4_Master.ucf ファイルで以下の行を有効化します。
NET "sw<0>" LOC = "U9" | IOSTANDARD = "LVCMOS33"; #Bank = 34, Pin name = IO_L21P_T3_DQS_34, Sch name = SW0
NET "sw<1>" LOC = "U8" | IOSTANDARD = "LVCMOS33"; #Bank = 34, Pin name = IO_25_34, Sch name = SW1
## LEDs
NET "led<0>" LOC = "T8" | IOSTANDARD = "LVCMOS33"; #Bank = 34, Pin name = IO_L24N_T3_34, Sch name = LED0
NET "led<1>" LOC = "V9" | IOSTANDARD = "LVCMOS33"; #Bank = 34, Pin name = IO_L21N_T3_DQS_34, Sch name = LED1
■ 論理合成、 bit ファイルの生成
ここまでできたら下記スクリーンショット中の ▶ ボタンをクリックしてプロジェクトを Implement してみます。画面下部にログが表示されます。
Implement が終わったら、次は Generate を行います。 test - Behavioral (test.vhdl) を選択した状態で、下の Process: から Generate Programming Fileを選択します。
最終的に Process "Generate Programming File" completed successfully と表示され、先の Generate Programming File の左側に緑色のチェック印が出れば OK なようです。これでとりあえず FPGA にアップロードできそうなファイルができました。
■ 後半編へ
後編では、今回生成した bit ファイルをアップロードしてみます。
Nexys 4 サイトから入手できるファイル
今回買ってみた FPGA トレーニングキット Nexys 4 の使い方は、販売元の Digilent 社のサイトにいろんな情報や、デザインに使うためのファイルがあります。
■ サイトを覗いてみる

ページ上部は製品の仕様などが書かれていますが、このページのいちばん下を見ると、実際にいじくるために参考となる、必要となるファイルが置かれています。
■ サイトから入手できるファイル(特に大事なもの)
Nexys 4 reference manual
製品マニュアルです。先のブログ記事に購入したパッケージの写真をのせましたが、製品にはマニュアルが含まれていないので、このファイルをダウンロードして参照することになります。 FPGA への電源供給方法やプログラミング方法のほか、各種 I/O がどのような仕様になっているか等も解説されているので、このファイルを一通り見ると、このボードでどういう I/O ができるかは一通り判るようになっています。
Nexys 4 schematics
トレーニングボードの配線図。
Nexys4 Master UCF File for ISE designs
Nexys4 Master XDC File for Vivado designs
これらのファイルは制約ファイルと呼ばれるものだそうです。 Nexys 4 は ALTRIX-7 を載せたトレーニングボードですが、 FPGA から出ているピンからは各種 I/O に接続されています。制約ファイルには、この FPGA ピンと基板上の I/O の対応が記述されています。
■ 制約ファイルを見てみる
各ピンからどの I/O に接続されているかは先のリファレンスマニュアルや配線図をみるとわかるのですが、デザイン環境で作ったロジックを実際の I/O ピンに割り当てるための定義サンプルがこのファイルに含まれています。UCF ファイルは今回利用する ISE DS
用、XDC ファイルは新しいデザイン環境である Vivado DS 用のファイルです。 UCF ファイルの中を覗いてみると
## Clock signal
#NET "clk" LOC = "E3" | IOSTANDARD = "LVCMOS33"; #Bank = 35, Pin name = IO_L12P_T1_MRCC_35, Sch name = CLK100MHZ
#NET "clk" TNM_NET = sys_clk_pin;
#TIMESPEC TS_sys_clk_pin = PERIOD sys_clk_pin 100 MHz HIGH 50%;
## Switches
#NET "sw<0>" LOC = "U9" | IOSTANDARD = "LVCMOS33"; #Bank = 34, Pin name = IO_L21P_T3_DQS_34, Sch name = SW0
#NET "sw<1>" LOC = "U8" | IOSTANDARD = "LVCMOS33"; #Bank = 34, Pin name = IO_25_34, Sch name = SW1
#NET "sw<2>" LOC = "R7" | IOSTANDARD = "LVCMOS33"; #Bank = 34, Pin name = IO_L23P_T3_34, Sch name = SW2
#NET "sw<3>" LOC = "R6" | IOSTANDARD = "LVCMOS33"; #Bank = 34, Pin name = IO_L19P_T3_34, Sch name = SW3
#NET "sw<4>" LOC = "R5" | IOSTANDARD = "LVCMOS33"; #Bank = 34, Pin name = IO_L19N_T3_VREF_34, Sch name = SW4
こんな感じの定義が並んでいて、上記の部分では水晶が E3 というピンに、スイッチは U9, U8, R7, R6, R5... というピンに繋がっていることがわかります。ここで先の Reference Manual を見てみましょう。こちらでもやはり、 E3 が 100MHz の水晶発振子に接続されていることが確認できます。
この制約ファイルは全てコメントアウト状態になっていますが、たとえば CLK の部分をコメントアウトするとVHDL などから CLK というピンが見えるようになり、 sw<0> 〜 sw<3> のコメントアウトを解除してあげた制約ファイルをプロジェクトファイルに追加すると、 から sw(0)〜sw(3) という形で各ポートにアクセスできるようになります。
仮想マシン上で Vivado Design Suite が使えない
先日 FPGAトレーニングキットを買ったわけですが、さっそくひとつ目の罠にはまりました。仮想マシン上で Vivado Design Suite が使えないんです。。。これから Xilinx FPGA に手を出す方はお気をつけください。
Xilinx の開発環境はいま下記のふたつがあります。
このうち ISE Design Suite は過去のバージョンのもので、2013年に機能追加を終えてメンテナンスフェーズに入っています。現在は Vivado Design Suite がメインストリームということのようです。
それで、新しい Vivado Design Suite をインストールしてみたのですが、動かしてみたら、まさかのライセンスがアクティベートできない罠にはまりました。
Vivado 2013.3 can't find license
Vivado DS, ISE DS ともに無償でダウンロード可能で、論理合成などの機能を無償で利用するためには Xilinx のサイトで登録の上 WebPack ライセンスを取得します。 ISE DS の無償ライセンスはフローティングライセンスが取得できるのですが、 Vivado DS の無償ライセンスはノードロックになっていて、しかもどうやら VMware の MACアドレスを検出して弾いているっぽいですね。。。。
私は MacBook Air 上で VMware Fusion を動かして Windows や Linux を動かしているので、上記の制限にひっかっかります。この制限は次期バージョンの 2014.03 で取り除かれる予定、とあります。
ちょっと触ってみた感じ新しい Vivado のほうがインターフェイスが良いし、複数のツールがひとつの開発環境に統合されているようで具合よいのですが、今回買った Nexys 4 は ISE DS でも対応できます。
先のディスカッションを見ると Xilinx の窓口に問い合わせをすると Vivado DS のフローティングライセンスを出して対応してくれたりするようですが、今回はとりあえず ISE DS にダウングレードして、通常フローで取得できるフローティングライセンスを使うことにしました。
Xilinx の開発環境はいま下記のふたつがあります。
- Vivado Design Suite
- ISE Design Suite
このうち ISE Design Suite は過去のバージョンのもので、2013年に機能追加を終えてメンテナンスフェーズに入っています。現在は Vivado Design Suite がメインストリームということのようです。
それで、新しい Vivado Design Suite をインストールしてみたのですが、動かしてみたら、まさかのライセンスがアクティベートできない罠にはまりました。
Vivado 2013.3 can't find license
Vivado DS, ISE DS ともに無償でダウンロード可能で、論理合成などの機能を無償で利用するためには Xilinx のサイトで登録の上 WebPack ライセンスを取得します。 ISE DS の無償ライセンスはフローティングライセンスが取得できるのですが、 Vivado DS の無償ライセンスはノードロックになっていて、しかもどうやら VMware の MACアドレスを検出して弾いているっぽいですね。。。。
私は MacBook Air 上で VMware Fusion を動かして Windows や Linux を動かしているので、上記の制限にひっかっかります。この制限は次期バージョンの 2014.03 で取り除かれる予定、とあります。
ちょっと触ってみた感じ新しい Vivado のほうがインターフェイスが良いし、複数のツールがひとつの開発環境に統合されているようで具合よいのですが、今回買った Nexys 4 は ISE DS でも対応できます。
先のディスカッションを見ると Xilinx の窓口に問い合わせをすると Vivado DS のフローティングライセンスを出して対応してくれたりするようですが、今回はとりあえず ISE DS にダウングレードして、通常フローで取得できるフローティングライセンスを使うことにしました。
登録:
投稿 (Atom)






















