2009-02-01から1ヶ月間の記事一覧

YCC-RGB変換モジュール

とりあえず、ざっくり考えたものがこちら。続きこれからもうちょっと詳しく考える必要があります。 とりあえず、デバイスドライバ部分がまだ詳細が分かっていないので、READY信号を作ってリードできるようにします。アプリケーションからは、ここをリードし…

AMBAバス

GrlibのAMBAバスマスターエミュレータ2つとAHBメモリ2つとAHBコントローラをつなげて、write, read, burst write, burst read を実行させるRTLシミュレーションをmodelsim上で実行しました。 AMBAの基本的なプロトコルは以下のようなものです。 http://www…

PCが

たった今、設計につかっていたPCがお亡くなりになりました。。。 (Mac miniから書いています。) いきなり画面が乱れ始めたと思ったら、再起動しても何も表示しないし、ハードディスクも動いていません。 まあ、古くて安いCeleron 2.8GHzのPCでしたし、ファ…

IJG YccRGB conversion

jdcolor.cのソースコードのコメントにもあるように、Ycc->RGB color conversionは以下のような単純な演算で変換できる。 * R = Y + 1.40200 * Cr * G = Y - 0.34414 * Cb - 0.71414 * Cr * B = Y + 1.77200 * Cbソースコードの方を見てみると、 > /* Range-l…

VMware

VMware Server 2.0 がうまくインストールできない、、、、 プログラム実行すると localhostのポート8333にアクセスしようとするが、開けない、、、、 ネットで検索すると、ここら辺で引っ掛かっているひとがたくさんいる模様。もう少し調べよう。

HDLシミュレーション3

GHDLについて散々調べますが、なかなか分かりません。 そしてこうなったら最後の手段で modelsim を使ってみることにしました。 modelsimはASICの設計にも使われているソフトなので完成度も高いだろうし、grlibでも公式サポートツールになっているため、バッ…

HDLシミュレーション2

RTLシミュレータ環境を立ち上げるのに悪戦苦闘していました。 Gaisler Research から提供されているRTLはSPARCV8プロセッサだけではなく、メモリコントローラやEathernetコアをはじめとしてSoCに使えるIPが目白押しです。RTLの完成度も非常に高いのですが、…

HDL シミュレーション

RTLの設計のためには、まずHDLシミュレーションができる環境をつくらねばなりません。 LEONは多数の論理シミュレータをサポートしています。チップレベル(SoC)のサンプルRTLが様々なボードに向けて公開されていますが、そのディレクトリでmakeを行うだけで…

雑記

LEONはGNUライセンスでソースコードが公開されているので、RTLをすべてみることができます。RTLのコーディングも分かりや易く、汎用性が高い記述になっているので、マクロを流用して開発できると思います。いろいろディレクトリを調べていくと、 $GRLIB_HOM…

最初の目標

JPEG処理の本を読んでいくと大雑把に言って、 ハフマンデコード -> DCT -> upsample -> YCC-RGB変換 で処理が行われている。 本屋でいろいろ調べていたら、DesigneWaveの2008年1月号にJPEG処理のハードウェアについて非常に分かり易い記事を発見。上の処理の…

ターゲットボードでの motionJPEG

そして、ターゲットボードでの再生がこれ。 QQVGAサイズ(160x80)で、1.52fpsと予想したとおり厳しい状態。 40MHzのCPUでソフトウェアのみの処理なので当たり前ですね。QVGAで27fps出そうと思ったら、約70倍に処理能力をあげねばなりません。 メモリバスネッ…

ホストでの動画再生

とりあえず、ホストコンピュータで motionJPEG 再生したのがこれ。 2.8GHzのCeleron processor PCにCentOSをインストールしています。 QVGAサイズだと動画に見えますが、VGAサイズだとfpsが低すぎて紙芝居にしか見えません。。。。もう少し処理能力高いかと…

バス構成

現在のFPGA内部のバス構成は以下のようになっている。 (40MHz動作) フレームバッファはメインメモリ上にある。 SDRAM入口の部分の帯域が厳しいだろうと思うので簡単に計算してみた。 VGAサイズ(640x480)で1ピクセル24ビットカラー(実装で32ビット使う…

djpeg の motionJPEG対応

入力データとなる多数の画像が含まれるjpegファイル (motionJPEGファイル)が生成できたので、今度はプログラムの方を変更して次々と画像を表示していくようにする。libjpeg.doc を読んでいくと、 Abbreviated datastreams and multiple images という章があ…

motionJPEGファイル と ffmpeg

いろいろ調べてみるとJPEGの規格の中に動画の規格はありません。しかし、一枚のJPEGファイルの中に複数の画像を詰め込む規格があります。これをパラパラ漫画のように表示するのがmotionJPEGのようです。 もちろんこのままでは、再生速度がマシンによって変わ…

gprof

処理速度をあげなければ動画にならないのでプログラム中のどこで処理時間がかかっているか調査を行います。 gprofというプロファイラを用います。コンパイルする際に -pg オプションを付けます(オブジェクト生成の時とリンクの時両方必要)。 できあがった…

IJG jpeg library

IJG(Independent Jpeg Group) のライブラリには充実したドキュメントがあるのでそれを調べました。structure.docにdjpegの構造が載っています。Here is a sketch of the logical structure of the JPEG decompression library: |-- Entropy decoding |-- Coe…

Xwindow

motionJPEG のソフトウェア部分を開発するのに、ターゲットボードで開発するよりもCentOS上で開発した方が簡単なため、ホスト上で画面表示させるXwindowのコードを埋め込みます。 SPARCV8版でフレームバッファに出力した部分をXwindow上でWindowを開いて表示…

画面表示

ターゲットボード上でjpegのデコードができることが分かったので、次は画面表示する方法を探ります。 linuxのフレームバッファに書き込む方法を調べたところ、次のホームページに簡単な方法が書いてありました。http://hms.tukusi.ne.jp/~ooyu/catf/catf5.ht…

クロスコンパイル

次はターゲットボード上のSPARCV8プロセッサで動作するバイナリをクロスコンパイルします。 $SNAPGEAR_HOME/Documentation/Adding-User-Apps-HOWTO を参考にして、 $SNAPGEAR_HOME/user/jpeg-6b のディレクトリを作りソースコードを展開します。 (1) $SNAPGE…

JPEG

システム設計の勉強のため、動画処理を行います。 mpegは複雑すぎるので、motionJPEGを選びました。JPEGは、非常に汎用性の高いソフトウェアがフリーで公開されています。 Independent JPEG Group(IJG) http://ijg.org/まずは、このソフトを理解するため、ボ…

LInuxが動くまで

Xilinx XC3S-1500が載ったボード上にSPARCV8 processorをインプリして、Linuxをブートするまではこちら。http://www.geocities.jp/leon_processor/linuxがブートしたところ。フレームバッファをSDRAM上に確保してVGA出力している。ペンギンマークも出てる!

blog始めます

FPGA上でのシステム開発のブログ始めます。 私はトランジスタレベルの回路設計やレイアウト、EDA開発のプロのエンジニアです。 システム開発にはあまり詳しくありませんが、最近はFPGA上でシステム開発ができるようになってきました。フリーのIPやフリーのED…