IC・トランジスタで出来たコンピューターを設計・製作するためのブログ
| Jeans & Development | 電子ブロック工房 | 三日坊主 | フロントページ |
多分必要なもの [一般的なこと]
2009年2月21日
更新は、一年ぶり(正確には、1年3ヶ月)。
制作にあたって、たぶん次のようなツールが必要になる。USBインターフェースのI/Oポートをピックアッピしてみた。
NI USB 6501
USBee AX
NIの方は、24ポートあるのが魅力。少し値ははるが96ポートの製品もあるらしい。
USBeeの方は、8ポートだが、多分(よく調べていない)、スピードはこちらの方が速い。
どちらも、$100ちょっとの価格。とりあえず購入するのは、NIの方かな。実績もあるし。
制作にあたって、たぶん次のようなツールが必要になる。USBインターフェースのI/Oポートをピックアッピしてみた。
NI USB 6501
USBee AX
NIの方は、24ポートあるのが魅力。少し値ははるが96ポートの製品もあるらしい。
USBeeの方は、8ポートだが、多分(よく調べていない)、スピードはこちらの方が速い。
どちらも、$100ちょっとの価格。とりあえず購入するのは、NIの方かな。実績もあるし。
参考になりそうなページ [一般的なこと]
2007年8月14日
ネットサーフィンをしていて見つけた、少し、いや、大いに参考になりそうなページ。
N.Kojima 総目次
実は、この表ページにたどり着く前に『はずかしい回路設計』というページに行き当たった。
ソフトウェアしか開発したことのないエンジニアがいきなり、簡単な回路だからあなたがハードも含めて設計しなさいと言われてしまった場合に陥りやすい誤りについて実例を見ていきましょう。(サイトから引用)
うーん、私はソフトウェアのエンジニアではないが、ギクッとする文面である。幸い、趣味で電子工作しているレベルでは、『とってもはずかしい』には該当しなかったので、ほっと一安心。それにしても、とっても参考になる。
あとは、『言語によるディジタル回路の設計 ~ VDHL』も、参考になりそう。どこかのページで見つけた『Verilog』という言語が気になっていたのであるが、そのあたりについて分かりやすく解説している。今は、ソフトウエアを使ってディジタル回路を設計する時代らしい。こういった手法が使えるようになると、FPGA も使いこなせるようになるのだろうか?
いいね、新しいものも。
N.Kojima 総目次
実は、この表ページにたどり着く前に『はずかしい回路設計』というページに行き当たった。
ソフトウェアしか開発したことのないエンジニアがいきなり、簡単な回路だからあなたがハードも含めて設計しなさいと言われてしまった場合に陥りやすい誤りについて実例を見ていきましょう。(サイトから引用)
うーん、私はソフトウェアのエンジニアではないが、ギクッとする文面である。幸い、趣味で電子工作しているレベルでは、『とってもはずかしい』には該当しなかったので、ほっと一安心。それにしても、とっても参考になる。
あとは、『言語によるディジタル回路の設計 ~ VDHL』も、参考になりそう。どこかのページで見つけた『Verilog』という言語が気になっていたのであるが、そのあたりについて分かりやすく解説している。今は、ソフトウエアを使ってディジタル回路を設計する時代らしい。こういった手法が使えるようになると、FPGA も使いこなせるようになるのだろうか?
いいね、新しいものも。
半日でマイコン作成を体験 [一般的なこと]
2007年8月6日
ネットサーフィンをしていて、面白いページを発見。
半日でマイコン作成を体験:ITpro
回路図を色鉛筆でなぞることで、コンピューターの仕組みを理解しようという試み。あの、Z80マイコン(今は使われないマイコンという言葉を用いているのも一興)の全回路図が掲載されている。これは、いわゆるパチパチ式のコンピューターだ。パチパチ式という検索語でググっても何も出てこないが、パチパチ式マイコンとはこんな感じ。
部品がそろうのなら、作りたくなってきた。
半日でマイコン作成を体験:ITpro
回路図を色鉛筆でなぞることで、コンピューターの仕組みを理解しようという試み。あの、Z80マイコン(今は使われないマイコンという言葉を用いているのも一興)の全回路図が掲載されている。これは、いわゆるパチパチ式のコンピューターだ。パチパチ式という検索語でググっても何も出てこないが、パチパチ式マイコンとはこんな感じ。
部品がそろうのなら、作りたくなってきた。
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つだけである。
今考えているのは、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つだけである。
クロック周り3 [デジタル回路]
2007年7月23日
ip++信号を、Prep4Read 信号近くに作成した。

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

ここで、問題が発覚。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は、命令実行トリガー;記事の続きを参照)。
源内CADの使い方にも慣れてきたので、一から作り直すことにした。今回の回路は、systematic に仕上がっているので、拡張性が高くバグの混入の可能性も低いと思われる。新しいタイミング回路のメイン部分は次のとおり。

上の回路は、水晶発信からのシグナルを4つのクロックに分解する部分。2つ目のFFのデータ入力部に、AND回路を入れた。これを入れなかった前の回路は、リセットスイッチを押したときの水晶発信からのクロックが1か0かによって、誤作動する可能性があった。
真ん中と下の回路は、それぞれ、2バイト・3バイト命令の制御と、1つの命令で2回のクロックが必要な場合の制御。シンプルな回路に収まった(ラインecは、命令実行トリガー;記事の続きを参照)。

