2012-06-01から1ヶ月間の記事一覧

8086 コンパイラ

Digital Mars C (不採用) ファイル構成が簡素なのでちょっと気になりつつも、試しに作ったソースのコンパイルは通ったので中身を見ようとと逆アセンブラを呼ぼうとした。逆アセンブラは別途ツールセットを購入せよというビジネスになっていた。コンパイラは…

Altera の FPGA/CPLD にコマンドラインで論理回路イメージを転送する方法

毎回毎回クリックするのは面倒だし、履歴が残らなかったり見づらい。Quartus II は見る感じコマンドラインでいろいろやれるようで、とりあえず -help をみてやってみた。(QuartusIIのインストールパス)/quartus/bin/quartus_pgm.exe がそれで、パスが通って…

解像度

今回はフレームレートが遅い分、スキャンラインの本数が多いという条件なのでモニタにテストパターンを表示してみることにした。次に FPGA にいれて、液晶モニタに表示してみたほう。(左端の縦線がでないのはバグ, アップスキャンモードでシミュレーションし…

座標系統

tilemap 配置, spritemap の座標系統をみるに表示領域がわかってきた。シミュレーション用には座標作成の y の値を 0 ではなく、表示領域の直後の値からはじめたほうがよさそう(以前もそうやっていたことを思い出した)。ついで表示領域とその1つ手前にやる描…

open watcom 関連

リンカの文書をかるーく読んだが、リンカスクリプトがないのでコマンドラインにどんどん盛っていく様子。最低限としてスタートアップ、ベクタテーブル、ROM アドレス, RAM アドレスを定義したいんだが、セグメントの扱いがよくわからないし、嫌な予感がする。

proc 関連

NSL

DRAM コントローラを作っていてわかったことは proc から proc を呼ぶことができるが、ソフトで言う関数のように使えるものではないということだ。 proc から proc を呼ぶ場合は関数で言うところのリターンアドレスみたいな概念はない ローカル変数のような…

SystemC 関連

Verilator は verilog ソースを SystemC ソースに変換するものであってシミュレータではない NSLCore は直接 SystemC ソースを出すことが出来る SystemC は HDL を C++ で実現したもので、テンプレートやシミュレータとしてのライブラリをいれたもの ソース…

Icalus Verilog を試した

すぐに使えたが、1画面のシミュレーションが遅く使い物にならないことがわかった。ModelSim の 1/16 ぐらいの速度。残念ながら今回の目的には不採用。Verilator にするのが一番のようだが、 SystemC を習得しないと使いこなせないのでちょっと保留。今回は 8…

SDRAM 接続メモ

memory control signal dqm[1] = ube dqm[0] = a0 dq[15:0] = ad[15:0] (メモリコントローラのインタフェースは ad から d だけにして、入力出力も別ける) refresh 64ms/4096times, 18.176ms/1163times on 64MHz, 6 clock/ 1 refresh, 6978 clock. 1line 0x1…

uPD70116 byte order

UBE と A0 が bytemask になる。比較用に68000の UDS, LDS も書いておく。 /UBE A0 Databus|UDS LDS Databus word |0 0 D15:0 |0 0 D15:0 byte even|1 0 D7:0 |0 1 D15:8 byte odd |0 1 D15:8 |1 0 D7:0 little endian と big endian の違いはこれでよかった…

キャラクタROMの容量減らし

lineview から出している画は、エミュレータから VRAM をダンプしてそれを作成中の互換回路に読み込ませて同じ画が出るか確認する。座標とか色を管理する VRAM のサイズはたいしたことがないのだが、キャラクタ ROM のサイズはそれと比較すると大きくて 1MB …

tile 修正

キャラクタROMのアドレスのMSBがつながってなかった。その関係でおかしくなってた。そんだけ。スプライトの座標とか変なキャラがあるわな...

sprite renderer

NSL

tile の場合は 1chip 分, 8dot 一気にラインバッファへ書き込みが出来るのだが、sprite の場合は 1dot 単位で attribute の color とキャラを書く必要がある。1dot ずつちまちま描画を行っても良いのだが、時間がかかるので1度に 2dot 書き込みを行う実装に…

sprite 実装完了

昨日の状態からキャラクタ ROM とパレット RAM をつないだらわりとうまくいったので、手直しをした。そのあと sprite 単体から tilemap をつけて一通り完了。video を一通り実装したので、今回の目的は達成できたのでおしまい。 sprite 仕様関連 キャラクタ …

sprite 関連

attribute から位置とサイズだけ取って出力してみた。1発とはいかないがわりと少ないリトライ回数で実装できている。attribute ダンプとかキャラクタROM抜き出しツールとかテスト環境のコーディングに時間がかかってる感じ。それが普通だと最近理解し始めた.…

tilemap renderer

NSL

video_tilemap.nsl は結構長いのではしょってはっつける。 module tilemap_renderer{ reg offset_x[9] = 9'd0; reg llayer = 0; //0:tilemap#0 1:tilemap#2 wire scroll_y[3]; reg vram_aa[22]; reg vram_ce; reg lb_latchh; reg flip_x; reg priority[2]; r…

video_main

NSL

video_main モジュールは下記のサブモジュールを管理する、ビデオ処理の中枢である。 video_timing: 座標の生成, 同期信号の生成, ライン内カウンタ tilemap_renderer: VRAM からデータを取得し、ラインバッファへ処理を送る tilemap_linebuffer: tilemap_re…

某ハード互換 HDL を書き始める

主流のプロジェクトをやろうにも迷走してるので、切り換えと息抜きを兼ねてやってみる。なので、今回だけ書いて終わりかもしれない。 main CPU memory map と RAM の配置 memory address assignment - SRAM 00000h-3ffffh CPU ROM SRAM 40000h-43fffh CPU RA…