FPGAの部屋

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

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

2011年12月

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

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

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

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


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


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


ドットで絵を書けるのはとっても良いですね。私も下の娘が書いた絵を基板に入れてみたいです。

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

2011年12月28日までの記事のリンクを追加し、RubyFPGAボードで学ぶ組込みシステム開発入門[Altera偏]Make出展FPGA-CAFEAltium DesignerAXI Master IPコアの作成Atlysボードのページを追加しました。

前回までで、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の資産は有効に活用することができるので、この効果は大きいと言える。

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と思われる。

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

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


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

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

7262f90e.png


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

3f2965fd.png


上記のフォーマットで設定用レジスタに書いたり、読んだりできる。

↑このページのトップヘ