FPGAの部屋

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

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

カテゴリ: Altera DE0ボード

使用するQuartus IIは10.0SP1を使いたかったが、外部エディタの設定が無くなってしまったようだし、日本語も表示すると化けるので、9.1SP2を外部エディタにNotepad++を設定して、使うことにした。
現在は、SCCBインターフェース回路(CMOSカメラの設定レジスタを設定するI2C)をVHDLからVerilogへ変換中だ。
更に、”AN 307: Xilinx ユーザー向けのアルテラのデザイン・フロー”を読みながら、XilinxデザインからAlteraのデザインへ変換する必要がある。(勉強中です)
そうか、タイミング制約のファイル・フォーマットはSDCで、ツールはTimeQuest タイミング・アナライザ。これは前回使った。(”QuartusⅡでSignalTapⅡを試してみるまでの準備6(入力、出力ピンの制約とタイミング制約2)”)
Quartus II Assignment Editorでも、デザインのタイミングおよびデザイン配置の制約を割り当てることができるのか?レガシーなツールなのかな?これは前回使っていない。
しかし、自分のブログを見ると課題の解決方法が書いてあって、とてもためになる。SCCB用のROM記述をどうやって変換しようと思っていたが、前回はRubyでMIFファイルに変換したのだった。自分がやっていることの過程を書いておくと、後でとても便利だ。見返せる。忘れやすいので、とても助かる。

Quartus II 10.0SP1で、外部エディタを使う方法がわかったので、やはりQuartus IIは10.0SP1を使うことにした。設定は、Toolメニュー -> Option -> perferred Text Editorを選ぶとダイアログが開く。Alternate text editorを選んで、 Notepad++.exe とオプションを設定した。
6c430065.png


これで、エラー箇所をダブルクリックすると、エディタに表示されたエラー行がハイライトされた。

Quartus II におけるKEEP制約のかけ方。

( * keep = 1 *) wire my_wire;

AN 307: Xilinx ユーザー向けのアルテラのデザイン・フロー”に載っているデザイン例を後でやってみたい。

”Spartan-3A Starter KitでCMOSカメラ・ディスプレイ回路”が完成した。やはり、RGB 4ビットだと特に単色の壁を写すと、階調が出てきて残念なことになる。色が派手なところを写す分には見栄えが良い。RGB 8ビットの場合の画像をVIO+TCLで引っ張ってきて、BMPファーマットに変換してみてみる必要がある。それをやれば、Spartan-3A Starter KitでCMOSカメラ・ディスプレイ回路は終了としようとおもう。(いろいろアイディアはあるんだが、mico32を載せて、LANを使って監視カメラにしたいとか、エッジを検出して顔認証してみたいとか?)
本当は、DACかDVIのICを載せて、RGB 8ビットで出せるようにしたいな!と思っている。後で、出来ればプロジェクトごとダウンロード出来るようにしたいと思っていが、いろいろな関係上まだ未定だ。

今回は、IntelのAtom E600で話題のAlteraのDE0にCMOSカメラを搭載して、DE0のVGAコネクタから画像を出力したいと思う。DE0のVGAはSpartan-3A Starter Kit同様、抵抗ラダーのRGB 4ビットなので、表示品質としては、今と変わりがないと思う。
DE0はSDR SDRAMが搭載されているので、それを画像バッファとして使用する。SDR SDRAMコントローラの動作周波数は100MHzとして、CAS Latency=2とする。SOPC BuilderでのAvalon MMマスタ接続で回路を構築して、SOPC Builder付属のSDR SDRAMコントローラを使おうかとも思ったが、FPGA技術の次の号でO氏が記事を書かれるとの噂があるので、かぶるし、それをみてからSOPC BuilderでのAvalon MMマスタ接続に挑戦しても良いので、今回は自作のSDR SDRAMコントローラで行くことにする。実は、DDR2 SDRAMコントローラを改造して、SDR SDRAM用にしたものが殆どできている。インターフェースがあっているので、”Spartan-3A Starter KitでCMOSカメラ・ディスプレイ回路”を少し手直しすれば使えると思う。
SDR SDRAMは16ビットで100MHz動作なので、200Mbytes/sec。CMOSカメラの書き込むスピードは8ビットで25MHz動作なので、25Mbytes/sec。8倍の速度差があるので、いけると思う。FIFOの部分はXilinxのRAM1X16Dプリミティブを使用しているので、その部分はAlteraのMegaWizard Plug-In Managerを使用して、FIFOをShow-ahead synchronous FIFO modeで生成して使おうと思っている。
問題はSCCBインターフェース回路だが、これは現在VHDLで書いてある。それにXilinx独自のROM記述をしているので、こっちも修正が必要だ。VHDLだと、その他がVerilogで書いてあるため、Quartus IIでコンパイル出来ても、ModelSimでシミュレーションが出来ない。どうしようか?やはり、このさいVerilogで書きなおそうかな?

CMOSカメラは、”Spartan-3A Starter KitでCMOSカメラ・ディスプレイ回路”の様に変換基板に搭載する。それ様のヘッダとユニバーサル基板も購入済みだ。DE0のコネクタは外側の方の40ピンコネクタGPIO1 (J5) を使おうと思う。ここに変換基板を挿して、CMOSカメラを搭載する。

DE0を使ってみる機会ができたので、使ってみた。
おもむろに電源ONすると、7セグLEDが1.1.1.1~F,F.F.Fまで順番に表示して、LEDが順番に点灯し続けた。
5a09ebba.jpg


ディスプレイをつなぐと画面が出力された。
3dd7cb21.jpg


Sim's blogさんで話題のDVDに入っているDE0_ControlPanelを動作させてみた。USBケーブルを差して、DE0_ControlPanel.exeを起動すると、スイッチの設定を見たり、LEDを制御できたり、いろんなことができる。
最初のタブはチェックしたLEDを点灯させることができる。
11b97fe0.jpg


7セグLEDの状況も設定できる。
daee1ade.jpg


上の設定をしたDE0がこれ、LEDが2個、7セグLEDは1234を表示している。
82f533e1.jpg


次のタブはスイッチ、スライドスイッチを操作したり、押しボタンスイッチを押したりすると画面に反映される。
495312e1.jpg


SDRAMへの書き込み、読み出しテスト、多分FLASHへの読み書きもできる。
b043d8ef.jpg


PS2のキーボードのテスト。キーボードをつなぐと文字が表示される。
a7a0769e.jpg


最後にVGAテスト、表示させるパターンを選ぶとVGA信号をつないだディスプレイに表示される。
e1f40ec3.jpg


c1435e2b.jpg


これは、DE0_ControlPanelでDE0_ControlPanel.sofという回路をDE0にコンフィグしているようだ。DE0のユーザーズマニュアルを見ると下の図が載っている。(転載します)
a5c36269.png


Nios2が入っていて、JTAGでパソコンと通信している。この辺はSimさんのブログの”Altera DE0のJTAG通信?”に詳しく書かれているが、私もちょっと調べてみたい。とおるすがりさんご紹介のFPGA BBSのスレッドに詳しく書かれているようだ。
DLLやアプリを解析するソフトのDependency Walkerで解析してみた。(Dependency Walkerの本家はここ日本語パッチはここから入手した。使い方はこの辺。)
DE0_ControlPanelをDependency Walkerで開いてみる。
ff82963a.png


これだけでは、TERASIC_JTAG.dllとかが出てこないが、プロファイリングを行うと、ツリーに出てくる。余り書くとリバースエンジニアリングになってしまうので、書かないが、TERASIC_JTAG.dllからTERASIC_JTAG_DRIVE.dllが呼ばれている感じ。コンフィグすると実際には、もう2つくらいアプリが起動する。でも、コンフィグはタイムアウトで成功しなかった。
メーカーが仕様を公開してくれないとやはりまずいので、この辺でリバースエンジニアリングはやめることにした。
でも、パソコンから簡単にUSB-JTAG経由でやり取りできると実験のプロセッサ用ボードとして非常に都合がよい。アバロンバスにNios2をつながないで、JTGA UARTと独自プロセッサをつないで、パソコンの独自アプリとJTGA UART間で通信して、そのデータをアバロンバス経由で独自プロセッサに渡せれば良いんだけど。。。その可能性を探ってみようと思う。

↑このページのトップヘ