IC・トランジスタで出来たコンピューターを設計・製作するためのブログ

Jeans & Development 電子ブロック工房 三日坊主 フロントページ

多分必要なもの [一般的なこと]

2009年2月21日

更新は、一年ぶり(正確には、1年3ヶ月)。

制作にあたって、たぶん次のようなツールが必要になる。USBインターフェースのI/Oポートをピックアッピしてみた。

NI USB 6501
USBee AX

NIの方は、24ポートあるのが魅力。少し値ははるが96ポートの製品もあるらしい。
USBeeの方は、8ポートだが、多分(よく調べていない)、スピードはこちらの方が速い。

どちらも、$100ちょっとの価格。とりあえず購入するのは、NIの方かな。実績もあるし。

レジスター3つ [デジタル回路]

2007年10月14日

cs, ip, sp の3つのレジスター
test

タイミング回路 [デジタル回路]

2007年10月14日

久々の更新。以前、この辺りの回路の一部出来ていたのだが、放っておいたままになっていた。思い出す意味もかねて、アップ。

参考になりそうなページ [一般的なこと]

2007年8月14日

ネットサーフィンをしていて見つけた、少し、いや、大いに参考になりそうなページ。

N.Kojima 総目次

実は、この表ページにたどり着く前に『はずかしい回路設計』というページに行き当たった。

ソフトウェアしか開発したことのないエンジニアがいきなり、簡単な回路だからあなたがハードも含めて設計しなさいと言われてしまった場合に陥りやすい誤りについて実例を見ていきましょう。(サイトから引用)

うーん、私はソフトウェアのエンジニアではないが、ギクッとする文面である。幸い、趣味で電子工作しているレベルでは、『とってもはずかしい』には該当しなかったので、ほっと一安心。それにしても、とっても参考になる。

あとは、『言語によるディジタル回路の設計 ~ VDHL』も、参考になりそう。どこかのページで見つけた『Verilog』という言語が気になっていたのであるが、そのあたりについて分かりやすく解説している。今は、ソフトウエアを使ってディジタル回路を設計する時代らしい。こういった手法が使えるようになると、FPGA も使いこなせるようになるのだろうか?

いいね、新しいものも。

半日でマイコン作成を体験 [一般的なこと]

2007年8月6日

ネットサーフィンをしていて、面白いページを発見。

半日でマイコン作成を体験:ITpro

回路図を色鉛筆でなぞることで、コンピューターの仕組みを理解しようという試み。あの、Z80マイコン(今は使われないマイコンという言葉を用いているのも一興)の全回路図が掲載されている。これは、いわゆるパチパチ式のコンピューターだ。パチパチ式という検索語でググっても何も出てこないが、パチパチ式マイコンとはこんな感じ。

部品がそろうのなら、作りたくなってきた。

6bit CPU [CPU]

2007年8月6日

ニーモニック表を更新。2 byte, 3 byte 命令を認識しやすくするため、少し順序を入れ替えた。

6 bit CPU [CPU]

2007年7月27日

ばかげた 1 bit CPU を考えていて気が付いたのは、6ビットCPUが結構シンプルに設計できそうなこと。先日のクロック周りの回路の設計から来る考察をくわえて、さらにシンプルなCPUが出来そうな気配。

今考えているのは、6ビットのレジスタとして、

a: アキュムレータ
b: メモリ指定用レジスタ
ds: データセグメント
ip: インデックスポインタ(プログラムカウンタ)
cs: コードセグメント
sp: スタックポインタ

の6つを用意。アドレス空間は、12ビットのアドレスラインで4096ワード(3072ビット)。簡単なプログラムなら、これくらいの要領があればおそらく十分。このあたり、4ビットではなくて6ビットにしたのが味噌で、2ワードのアドレスラインで必要最小限と思われるメモリ領域にアクセスできる。4ビットなら、3ワード必要だろう。74174という6ビットのフリップフロップがあるのも、良い。1つのセグメントが64ワードだから、そこそこの大きさのプログラムがここに収まる。4ビットの考え方だと16ワードで、小さなプログラムしかかけない。ジャンプ命令の仕様で難が出る。

スタックセグメントは、6502に習って省略した。従って、スタック領域は64ワードのみ。フラグは、例によってキャリーとゼロの2つだけである。

クロック周り4 [デジタル回路]

2007年7月24日

sp++/sp-- 信号関連のデバッグを行った回路がこれ(残りの部分は、前と同じ)。
sp++/sp--を修正
シミュレーションもOK。これで、この部分は完成かな?

クロック周り3 [デジタル回路]

2007年7月23日

ip++信号を、Prep4Read 信号近くに作成した。
ip++
ここで、問題が発覚。ipレジスタのやり取りをするジャンプ系命令の実行の際、上記のip++信号が下がるときと、命令実行信号の立ち上がり(ipレジスタへの代入をトリガー)が同じタイミングで起こる。ICの性質によっては、2回のトリガーが重なって、1回だけのトリガーになってしまう可能性がある。ip++ のあと、一呼吸してから ip 代入命令を実行すればよいのであるが、もともとジャンプ系の命令はすべてダブルクロックで実行されるので、この辺りの設計を変えなければならない。

そこで、ダブルクロック命令の実行の際は、1回休んでから命令の実行を開始することにした。したがって、ダブルクロック命令の実行には、3クロック消費されることになる。

クロック周り2 [デジタル回路]

2007年7月23日

目的に合うように、先日のクロック周りの回路をさらに拡張していくうちに、スパゲッティの様な回路になってしまった。もしかしたらうまく働くのかもしれないが、おそらく誤作動するだろう。

源内CADの使い方にも慣れてきたので、一から作り直すことにした。今回の回路は、systematic に仕上がっているので、拡張性が高くバグの混入の可能性も低いと思われる。新しいタイミング回路のメイン部分は次のとおり。
クロック回路・メイン部
上の回路は、水晶発信からのシグナルを4つのクロックに分解する部分。2つ目のFFのデータ入力部に、AND回路を入れた。これを入れなかった前の回路は、リセットスイッチを押したときの水晶発信からのクロックが1か0かによって、誤作動する可能性があった。

真ん中と下の回路は、それぞれ、2バイト・3バイト命令の制御と、1つの命令で2回のクロックが必要な場合の制御。シンプルな回路に収まった(ラインecは、命令実行トリガー;記事の続きを参照)。
<<前の記事   後の記事>>