2011-01-01から1年間の記事一覧
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…
コネクタのピンが足りないので、データバス16bitとアドレスバス16bitを1つの線で共有する方式にした。これは元から CPU がその方式だったことが大きい。 declare ohram_controller{ input cpu_a[21]; input cpu_select, cpu_rw; input cpu_d[16]; output cpu…
仕事で使ってる CAD がすごい年代物で操作性が悪すぎる。それでもそれを使えと言うんで、データファイルをみたら単純なテキストファイルでプロットしていることがわかった。だったらパラメータを元に自動生成した方が早いんじゃないのということでプログラム…
シミュレーションではちゃんと動くが、実機につないでロジックアナライザで解析したらなんか微妙だったので結局 Verilog で書き直した。今までの作り直しということもあるが、概ね1時間ぐらいできてしまったので、生産性は今のところは Verilog のほうが高い…
Open Watcom ロングファイル名が使用可能 za99 オプションをつけたら途中変数宣言が使えた! リンカを調べると、リンカスクリプトがないみたいで、.exe とか .com を作るのみっぽい リンカが微妙なんだが、 .com を適当に動かせば何とかなる気はしてきた。な…
uPD70116 をつけるボードが完成しつつあるので、今後のことも考えて 8086 からSDカードを読めるようにしておかなければならない。ということで 2011 年なのにセグメントに悩ませる時代遅れの C コンパイラを探すことになった。 LSI-C86 試食版 DOS 時代から…
ファミコンのゲーム。小学生の頃、ファミコンを持ってないぼくはおもちゃ屋の店頭でタダで遊べるからとよくやりに行ったゲームだ(当時はパクリなんて知らなかった)。なんか急に3,4面のBGM,アクトレイザーで言うところのマラーナっぽいやつが聞きたくなったの…
アーケード基板だと、Z80x3とか、68000x2 なんて基板が普通に存在するわけだが、それらは対応が面倒ということでやってない。問題は複数の CPU を FPGA に置くと、CPUの数だけメモリ領域が必然的に発生してしまう。そこで本来の CPU の動作スピードが12MHz …
アセンブラがかなり使いにくいやつ (確かローカルラベルの概念がない) 基本的にツールは perl で作ってある (これの前後に Ruby をはじめた記憶がある) 挑戦しようとして C++ で作ってあるやつがあるが、 C で十分。 ビルドの流れは .bat。 Makefile の使い…
出稿して6日後に発送、その8日後に到着で正味2週間。対応のためのHDLソースを書くとか、部品を実装する余裕がまだないので、ちゃんと配置できるか確認したら、基板右下が DE1 のアクリル用の柱にひっかかってしまう。 柱をとるとか、干渉部分を2mmほど削れば…
この手のゲームに興味がない人にMr.五右衛門のときの動画を見せたら、技術的内容を増やして欲しいというリクエストがあったんで、そこらへんを意識した。したのはいいんだが、結局うんちく披露だけになった気がしないでもないが...というわけで、お待たせし…
家事をやって、動画を作ったら終わってしまった。動画は半分くらいか... プログラム改修は動画が終わったら平日にもやりますので許してください。
digikey で注文したら米国から3日で到着。はええ。 uPD70116HG も到着。 HG 必須になってしまったので仕方ない。
こんな感じに定期的に音を採れるようにしてみた。parameter 部分は最初は不定値にして、上位から値を設定してみたもののなぜかちゃんと動かないので値をいれることにした。それの関係で桁の設定がかなりバラバラ。 ちょっと考えないと。あまりよく見てないが…
前からある case の中身を吐くだけのクラスはほぼよいので、ちょっと手直ししてラッピングするものを作った。printf がちょろちょろ混ざってるんで、ヒアドキュメントにできればもうちょっときれいになるものの、わからず。(perl みたく $ を付けるわけでは…
parameter を先に定義してから、input/output の幅を決めることを最近知った。モジュール呼び出しの前に # をつけることをしらんかった。 module romx1 #( parameter ADDRESS_MSB = 'x, parameter DATA_MSB = 'x, parameter WAIT = 'x, //parameter FILENAME…
ちまちまやってたけど、これで終わりのはず。 部品を揃えて、動画を作る日々がはじまる。息抜きのネタもたくさん揃えてあるから、楽しいオフシーズンが始まる。
DRC エラーと未配線エラーが出るので見直す。見直す。それを休みの日に片付けようと思ったのに、ひどく疲れていて昼寝したら観戦に行く時間になってしまった。出す出す詐欺状態。今夜も勝っちゃうから集中できない。
そのうち付け忘れるんだろうけどカテゴリをつけてみたり、 twitter のほうも開発と野球でアカウントを分離とか検討中。
スワローズのポストシーズンが続いてしまったので開発のペースが落ちることになった。うれしいやらかなしいやら。
2回ぐらい書いてたはずなのに残ってない。おそらく、下書きまで書いてそれをみておかしい場所があったので作り直して、眠くなって電源オフをやっていたと思われる。案をいくつか出した。 アドレスバス A20:14 をシリアルにする (74164, 余りピン2) 更新頻度…
FM 音源コアを作った fpga park の方とお会いして、熱い話をいろいろしてきました。お時間いただきありがとうございました。
いままでは KiCAD の評価も兼ねてたので、CPU のデータシートを見直していまの配線でいいか確認したらミスがぽろぽろでてくるんでやんの。まずアドレスバスと SRAM の接続が間違っていた。 A0 は ALE でラッチをした後に、SRAM の A0 ではなく databus 7:0 …
標準で入ってたライブラリ Motorola (無線機や携帯電話メーカーとして有名) をみたところ、マイナーCPU 68008 をいれてるんがシャレなのか。そして Freescale の最新 CPU までそこにいれているのはシャレなのか。ついでにいうと 6809 がないのもシャレなのか…
部品を配置してみたので、印刷してから手元にある部品と寸法の確認をする。PS コントローラコネクタの寸法がぜんぜんあわない、 TSSOP で寸法を合わせたらそのデータシートの前のページに書いてあった SOIC に合わせていたなど残念度高し。修正も終わったの…
KiCAD の操作に慣れてきた。データファイルがテキストなので一括の入れ替えとか属性変更はテキストエディタでやってしまえるのが素敵。ラベル機能を積極的につかうものの、バスの使い方がよく分からずバスラインがなくても動くんじゃないのという感じ。 パー…
背景が黒で文字が白のやつ。その文字の白は実際には灰色で嫌い。cmd とか rxvt の色は本当の白に設定を変えてしまう。なんでそうなのと調べたら灰色は ANSI white という名前で規格で決められてるぽい。白は太字扱いという、むっかーしのPCの仕様を引き継い…
前回(五右衛門)の動画はもっと技術的内容を盛り込んでくれというリクエストがあった。チップの写真を並べて実際にはこれを作って、xxさんのモジュールを使わせていただきましたor自分が作ったってずらずらと並べて、あとはどうすればいいんだ。でもそれって…
Eagle で部品をある程度作ったんだが、KiCAD に替えてみたくなったのでやりなおし。ピンは足りたんだっけと確認したらギリギリだった。 表計算ソフトを方眼紙に使うなんて自分も墜ちたもんだ。CPU clock は FPGA 内部クロックを always で分周して渡す... の…
SD カードからキャラクタ ROM image を読み込んでる場面はカットしました。