2011-01-01から1年間の記事一覧

RAM テストソース

C

static bool ram_fill(uint32_t *ram, int size, uint32_t d) { uint32_t *r = ram; int s = size; while(s != 0){ *r++ = d; *r++ = d; *r++ = d; *r++ = d; s -= 4; } while(size != 0){ int result; result = *ram++ == d; result &= *ram++ == d; result…

SRAMコントローラ

nsl

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

電子回路の CAD 部品

仕事で使ってる CAD がすごい年代物で操作性が悪すぎる。それでもそれを使えと言うんで、データファイルをみたら単純なテキストファイルでプロットしていることがわかった。だったらパラメータを元に自動生成した方が早いんじゃないのということでプログラム…

PSコントローラ関連

シミュレーションではちゃんと動くが、実機につないでロジックアナライザで解析したらなんか微妙だったので結局 Verilog で書き直した。今までの作り直しということもあるが、概ね1時間ぐらいできてしまったので、生産性は今のところは Verilog のほうが高い…

8086 コードが出せるコンパイラその2

Open Watcom ロングファイル名が使用可能 za99 オプションをつけたら途中変数宣言が使えた! リンカを調べると、リンカスクリプトがないみたいで、.exe とか .com を作るのみっぽい リンカが微妙なんだが、 .com を適当に動かせば何とかなる気はしてきた。な…

8086 コードが出せるコンパイラ

uPD70116 をつけるボードが完成しつつあるので、今後のことも考えて 8086 からSDカードを読めるようにしておかなければならない。ということで 2011 年なのにセグメントに悩ませる時代遅れの C コンパイラを探すことになった。 LSI-C86 試食版 DOS 時代から…

Deadfox

ファミコンのゲーム。小学生の頃、ファミコンを持ってないぼくはおもちゃ屋の店頭でタダで遊べるからとよくやりに行ったゲームだ(当時はパクリなんて知らなかった)。なんか急に3,4面のBGM,アクトレイザーで言うところのマラーナっぽいやつが聞きたくなったの…

同じCPUを2個載せても使うメモリの数は減らしたい

アーケード基板だと、Z80x3とか、68000x2 なんて基板が普通に存在するわけだが、それらは対応が面倒ということでやってない。問題は複数の CPU を FPGA に置くと、CPUの数だけメモリ領域が必然的に発生してしまう。そこで本来の CPU の動作スピードが12MHz …

6年前に書いたソースを見た

アセンブラがかなり使いにくいやつ (確かローカルラベルの概念がない) 基本的にツールは perl で作ってある (これの前後に Ruby をはじめた記憶がある) 挑戦しようとして C++ で作ってあるやつがあるが、 C で十分。 ビルドの流れは .bat。 Makefile の使い…

届いた

出稿して6日後に発送、その8日後に到着で正味2週間。対応のためのHDLソースを書くとか、部品を実装する余裕がまだないので、ちゃんと配置できるか確認したら、基板右下が DE1 のアクリル用の柱にひっかかってしまう。 柱をとるとか、干渉部分を2mmほど削れば…

動画を作った

この手のゲームに興味がない人にMr.五右衛門のときの動画を見せたら、技術的内容を増やして欲しいというリクエストがあったんで、そこらへんを意識した。したのはいいんだが、結局うんちく披露だけになった気がしないでもないが...というわけで、お待たせし…

休日の作業

家事をやって、動画を作ったら終わってしまった。動画は半分くらいか... プログラム改修は動画が終わったら平日にもやりますので許してください。

部品が届く

digikey で注文したら米国から3日で到着。はええ。 uPD70116HG も到着。 HG 必須になってしまったので仕方ない。

音関連

こんな感じに定期的に音を採れるようにしてみた。parameter 部分は最初は不定値にして、上位から値を設定してみたもののなぜかちゃんと動かないので値をいれることにした。それの関係で桁の設定がかなりバラバラ。 ちょっと考えないと。あまりよく見てないが…

ROM の設定その2

前からある case の中身を吐くだけのクラスはほぼよいので、ちょっと手直ししてラッピングするものを作った。printf がちょろちょろ混ざってるんで、ヒアドキュメントにできればもうちょっときれいになるものの、わからず。(perl みたく $ を付けるわけでは…

ROM の設定

parameter を先に定義してから、input/output の幅を決めることを最近知った。モジュール呼び出しの前に # をつけることをしらんかった。 module romx1 #( parameter ADDRESS_MSB = 'x, parameter DATA_MSB = 'x, parameter WAIT = 'x, //parameter FILENAME…

出稿した

ちまちまやってたけど、これで終わりのはず。 部品を揃えて、動画を作る日々がはじまる。息抜きのネタもたくさん揃えてあるから、楽しいオフシーズンが始まる。

外部基板

DRC エラーと未配線エラーが出るので見直す。見直す。それを休みの日に片付けようと思ったのに、ひどく疲れていて昼寝したら観戦に行く時間になってしまった。出す出す詐欺状態。今夜も勝っちゃうから集中できない。

方向性を考える

そのうち付け忘れるんだろうけどカテゴリをつけてみたり、 twitter のほうも開発と野球でアカウントを分離とか検討中。

もうちょっとだけ続くんじゃ

スワローズのポストシーズンが続いてしまったので開発のペースが落ちることになった。うれしいやらかなしいやら。

外部基板その7

2回ぐらい書いてたはずなのに残ってない。おそらく、下書きまで書いてそれをみておかしい場所があったので作り直して、眠くなって電源オフをやっていたと思われる。案をいくつか出した。 アドレスバス A20:14 をシリアルにする (74164, 余りピン2) 更新頻度…

その他東京

FM 音源コアを作った fpga park の方とお会いして、熱い話をいろいろしてきました。お時間いただきありがとうございました。

外部基板その4

いままでは KiCAD の評価も兼ねてたので、CPU のデータシートを見直していまの配線でいいか確認したらミスがぽろぽろでてくるんでやんの。まずアドレスバスと SRAM の接続が間違っていた。 A0 は ALE でラッチをした後に、SRAM の A0 ではなく databus 7:0 …

それはモトローラではない気がする

標準で入ってたライブラリ Motorola (無線機や携帯電話メーカーとして有名) をみたところ、マイナーCPU 68008 をいれてるんがシャレなのか。そして Freescale の最新 CPU までそこにいれているのはシャレなのか。ついでにいうと 6809 がないのもシャレなのか…

外部基板その3

部品を配置してみたので、印刷してから手元にある部品と寸法の確認をする。PS コントローラコネクタの寸法がぜんぜんあわない、 TSSOP で寸法を合わせたらそのデータシートの前のページに書いてあった SOIC に合わせていたなど残念度高し。修正も終わったの…

外部基板その2

KiCAD の操作に慣れてきた。データファイルがテキストなので一括の入れ替えとか属性変更はテキストエディタでやってしまえるのが素敵。ラベル機能を積極的につかうものの、バスの使い方がよく分からずバスラインがなくても動くんじゃないのという感じ。 パー…

terminal 標準色

背景が黒で文字が白のやつ。その文字の白は実際には灰色で嫌い。cmd とか rxvt の色は本当の白に設定を変えてしまう。なんでそうなのと調べたら灰色は ANSI white という名前で規格で決められてるぽい。白は太字扱いという、むっかーしのPCの仕様を引き継い…

動画

前回(五右衛門)の動画はもっと技術的内容を盛り込んでくれというリクエストがあった。チップの写真を並べて実際にはこれを作って、xxさんのモジュールを使わせていただきましたor自分が作ったってずらずらと並べて、あとはどうすればいいんだ。でもそれって…

外部基板

Eagle で部品をある程度作ったんだが、KiCAD に替えてみたくなったのでやりなおし。ピンは足りたんだっけと確認したらギリギリだった。 表計算ソフトを方眼紙に使うなんて自分も墜ちたもんだ。CPU clock は FPGA 内部クロックを always で分周して渡す... の…

動画

SD カードからキャラクタ ROM image を読み込んでる場面はカットしました。