電源修理

実験用に使っている電源は Shuttle の Cube 型の PC から外したものを使っています。使い始めたのは今年になってからです。ちょっと大型の機器をつないだところ、動かない(resetがかからない)ので5V出力を計測したところ 4.1V でした。小型の機器では 4.5V …

DE1 に 68000 をつなぎたい

3年ぐらい無駄に時間を過ごしている感がありますが、ノウハウができてきまして、2013年になったら件名の通りにやろうと思います。16/32bit CPU を FPGA に持たせるというのはとても有意義な反面、ビルドに時間がかかるので開発時には不便だと最近思うように…

実機デバッグ停滞中

SD カードを読み出す部分で1週間ぐらい停滞しています。SPI mode で CPU からそのポートにアクセスしたら、8回または16回のシリアルなデータ送受信をするとてもシンプルなデバイス。これの動作が非常に安定しません。ソースも4回作り直したし、たまーーーに…

実機デバッグ

赤だけでる -> colorram のデコード関連で直前に bytemask もいれてテストしなかったのがまずかった 色がおかしい -> colorram のデコードがさらに間違ってた 色がおかしい -> RBG の順番に記載されてた 文字がアップスキャンモードでつぶれる -> dotclock …

ModelSim 向け Makefile

vlog, vcom のようなコンパイルコマンドは単体のプログラムということに気づいたり、 vmake みたいなものは modelsim の transript から起動できなかったりする。vmake はライブラリから makefile を自動生成してくれるらしいが、使ってみたらちゃんと動くよ…

CPU が動き出した

トップモジュールを書いて QuartusII でコンパイル。例によってすぐに動かないので原因究明。今回は SignalTap II を使ってみたんだが、対して難しくなくあっさりと動いた。それで解析したら QFP の1辺まるまるはんだ付けし忘れとか、ほかにもピンがつながっ…

makefile は次回

次はハードのソースに戻る予定なのでお楽しみに。(予定です。)

LSI-C86 講座その3 (副題:21世紀に役立たない知識)

1から今のPC向けの BIOS ROM を作りたいという酔狂な人がいない限り、ほとんど役に立たない。 .data と .bss の順番 ROM image の転送部分を考えた結果、ソフトによって 40000h から a3fffh が ROM だったり RAM だったりするのでそれも全て RAM にすること…

Video 実装

座標系統を修正 Y 座標関連は tilemap の上端のアドレスなり、スプライトの上端の場所を算出すると 0x80 を上端とすると無駄な加減算が発生しないことはなんとなく気づいていた。スキャンライン割り込みでも可視領域上端は 0x80 ベースなのでこれを機会にい…

実装メモ

あんまり進める気はなかったんだが、発注した基板でミスがあって到着が遅れまくっているので仕方なく進む m72 project. DRAM の配置 DRAM はアクセスするために複雑なインタフェースを組まねばならないが、大きい容量を得られる。ここで大きなサイズを使用す…

実装メモ

main CPU の信号を memory map, io map でデコード兼データバスの制御をまとめるモジュールを作成。データバスの制御というのに割り込みのベクタテーブル入力も含まれる。メモ。 NMI, INT, HLDRQ, RESET は正論理 INTAK は負論理 IO/M は 0 が IO, 1 が memo…

LSI-C86 講座その2

startup, vector STARTUP CSEG start:: CLI JMPF to_init dw 0ffffh,0ffffh ;vector table VECTOR ESEG rs 80h db "RAKUTEN EAGLES" TEXT CSEG to_init:: mov ax,4000h mov ss,ax mov sp,4000h mov ax,3800h mov ds,ax call init_## tt: hlt jmp tt CPU rese…

LSI-C86 講座

setup (LSI path)/bin に path を通す (LSI path)/bin/kmmake があるが使う利点がないはずなので普通の make を使う lcc86 コマンドラインオプション -O は -O (最適化有効) か -O0 (最適化無効) の2つだけ -B をつけると // がコメントになる (B 言語の B?)…

video priority

仕様がバラバラでエミュレータのソースコードから読み解くのが一番面倒な仕様、それがレイヤ(planeともいうが、ここらへんは方言がひどくて別の意味を言っていることもある)をどの順番に並べるかという点である。別の用途もあったので m72 を一緒にやってみ…

ROM /RAM イメージモデル

いままでは ROM や RAM のデータは case(address) と大量のラベルによって動かしていたのだが、C++ で書いたようなメモリとして組み込んだことがなかったので対照実験になってないと気づいた。なんでいままで気づかなかったのか。2年間ぐらい不思議にも思っ…

シミュレーションは早いがコンパイルが遅い

C++

コンパイルが通るようにしたところ segmentation fault で落ちた。問題は RAM クラスにある。 RAM といってもラインバッファ向けのアドレスが 15bit x 192 word だったりする。アドレスバスは 8bit あるものの、有効なアドレスは 0 から 0xbf まで。処理の都…

memory class

C++

シミュレーションをするためのクラスを再度作成。address, data の幅を可変にするためにテンプレートを使用する。その他外部との配線の prefix をかえたり、 protected メンバにする。 template <typename datarange, typename addressrange> class SimROM : public sc_module { protected: datarange *c</typename>…

SystemC のビルド

SystemC はハードウェアを C++ で実装したもので、ソフトウェアロジックとの高い親和性が期待できるものと解釈している。SystemC 自体はライブラリでスタティックライブラリとユーザーが書いた C++ のコードをビルドして、実行バイナリからシミュレーション…

Verilator のビルド

http://www.veripool.org/wiki/verilator/Installingダウンロード, 伸張, cd verilator-3.840; ./configure から。 /bin/flex -d -oV3Lexer_pregen.yy.cpp ../verilog.l /bin/perl ../flexfix V3Lexer V3Lexer.yy.cpp g++ -I/usr/local/include -MMD -I. -I.…

古いからの Mingw / Msys のアップデート

以前やりかけた Verilator のインストールをきっちりやりなおす準備。 Mingw 自体は2年に1回ぐらい取り替えているので問題ないのだが、 msys 自体はアップデートした記憶が無くファイルの日付をみたら 2004 年になっていた。一応 mingw の古いやつも部分的に…

68000 series hardware memo その2

BGACK 関連 BR->BG->BGACK を使う3線方式と、 BR->BG を使う2線方式が初代68000から使用可能。単純に3線方式利用不可能となっただけだった。 Bus Request と HALT 共にバスが止められるので DMA コントローラを動かすことが出来る。バスが止まったときに HiZ…

68000 series hardware memo

データシートから読み取れたものを書いておく。68008 系は使わないので省く。正式な仕様は Freescale 社から提供されるデータシートを見ること。負論理表記は面倒なので省略した。(昨夜書いた分はオートベクタとユーザーベクタを間違えていました。恥ずかし…

MAXII CPLD memo

100pin TQFP の EPM240,EPM570 を共用する場合、 37,90pin に GND を接続する。このため未使用ピンは内部プルアップ付き入力端子にすべきである。 # EPM240 EPM570 - 37 IO GNDINT 90 IO GNDINT digikey では EPM240T100 の単価が 522円, EPM570T100 の単価…

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++ で実現したもので、テンプレートやシミュレータとしてのライブラリをいれたもの ソース…