NSL

proc 関連

NSL

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

sprite renderer

NSL

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

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…

SRAMコントローラ

nsl

コネクタのピンが足りないので、データバス16bitとアドレスバス16bitを1つの線で共有する方式にした。これは元から CPU がその方式だったことが大きい。 declare ohram_controller{ input cpu_a[21]; input cpu_select, cpu_rw; input cpu_d[16]; output cpu…