電子工作/メモ
SuzTiki:電子工作
2002/7/12
電子工作でもマイクロコントローラ系でない方、
論理回路の方でなにかを作りたいという場合について。
CPLD については、
このページ
なんかが分かりやすく解説されています。
この CPLD で なにかを作ってみたいという向きには、
strawberry-linux の
CPLDキット なんて良さそうです。
PLD-PGM キットが 2500円。XC95108 ボードキットが 3300円。
こういうので、7セグのLED を光らせるとかして経験をつんでいくのが良いと
思います。XC95108 だと結構いろんなことができると思います。
strawberry-linuxのページで、
CQ 出版の "VHDLによるハードウェア設計入門" が紹介されていますね。
私は、CQ 出版の トランジスタ技術 SPECIAL "初歩のHDL設計学習帳"
なんてものを買ってみましたが、ざっと読んで理解したら上の本みてみよう
かと思っています。
2002/7/11
ハードにはまったく疎いのでよくわからないんですが、こういうやつのデバッグっつうのは
どうやってやるんですか?もしかして目視のみ? --ksr
-
まず、キットの場合、ちゃんと作れば動くのが保証されているようなものです。
だから、ちゃんと作れているかどうかの確認をまずします。目視しかできなくても
それはちゃんとやる。テスターが使えるなら、できる範囲でそれをする。
それでだめな場合、
LSI が壊れたり、基板が不良だったりする可能性があるんで、
どこまで動いているのかの確認をします。で、動かない部分の部品を全交換する
ことまで考えます。
全く確認できない場合は、
あきらめるか、2個目に行くかどっちかを選ぶ 。
-
自分で設計する場合、デバッグしないといけない可能性が高いですが、
部分的にテストできることを念頭において設計します。
で、動く範囲を拡げていくつもり。... ソフトとおんなじですね。
全く知識ゼロの素人が、USB2.0ベースのコンピュータ間高速通信ボードとか作るのはどれぐらいたいへんでしょうか?1 無謀 2 1,2年はかかる。3 まあちょっとやればできる 4簡単にできる 5割に合わん。
- まず最初に、
ハードを趣味で作るってのは、すべからく割にあわないです。
コンピュータ間高速通信だけ考えると Gigabit イーサネット対向ですむし...
IEEE1394 も ネットワーク通るらしいし。メリットを見つけ出すのがたいへん。
で、自分で設計からして作る場合 2 - 5 set 分の 材料を買い込んだりするし、
コストを考えるのは人に分けるときぐらい。
ただ、趣味としては、手がかかるし、ソフトと同じく同じ題材で末永く遊べる
ので、トータルとしては 安い趣味になり得ると思います。
- さて、USB 2.0 ですが、今現在の話だと、EZ-USB FX2 という
チップが妥当です。これは、USB 2.0 の 物理的なインターフェイス
とマイクロコントローラが 1chip になったもの。
モルフィー企画か カメレオンUSB で有名なオプティマイズさんのところで、
キットは購入できます。
通信ということは、たぶん このボード同士をつなげる ということに
なるでしょう。
- まず ちゃんと組み立てられるか/単独で動作していることをチェック
できるか... これはクリアしないといけませんが、電子工作の経験がなければ、
より簡単なもので、経験をつむ必要があります。2.54 mm ピッチの普通の
IC が半田つけできるのは、最低条件だと思います。やはり
秋月 のキットをいくつか 作ってみてから
というのが、普通のコースかと思います。
- ちゃんと作ることができるようになっても次のハードルがあります。
2枚のボードをどうつなげるか ...。論理的なレベルはクリアできると
思いますが、電気的なレベルをどうクリアするかが問題です。
USB 2.0 ということは、480 M bps 。60M bytes /sec ですから、
インターフェイスも 60Mhz で動くようにしないといけません。
何をどうしたら、それができるのか。それがイメージできるレベルになる
必要があります。
一般的に言って、60Mhz で動くようなものはとても難しいです。
IDE のケーブルでも ATA66 から 形状が違ったりしますし、
まぁ、ATA66 と同じレベルの技術を使えれば良いとも言えますから、
ATA66 以上でなにがどう違うのかが分かるレベルになれば良い
のかも知れません。
なんとなくですが、計画的にステップアップしていって、2-3 年でなんとか
なるんじゃないかと思います。
また、計画的にやらないと、そこには到達しないんじゃないかとも思います。
とにかく、ハードに興味をもたれたのであるなら、
比較的簡単に作れて、たのしめるものから始めるのが良いと思います。
おすすめは、秋月の AKI-H8/3664F タイニーマイコンキット
を買って組み立て、プログラミングしてみること。
CPU のマニュアルは、http://www.hitachi-semicon.co.jp
から入手できます。
( ここから入って、電子デバイス->マイクロコンピュータ->マニュアルダウンロード
に行くと H8/3664 シリーズ ハードウェアマニュアルがあります)
- LED を点滅させるような サンプルプログラムぐらいは付いているんで、
まずはそれをクリアする。
- LED でデバッグしながら、ホストとの通信プログラムを書いてみる。
- なんか LED 以外の デバイスを付けてみる。
- 赤外線受光モジュールとか付けてリモコンを読むとか
- さらに赤外線 LED を付けてリモコンにしてみるとか
- 温度センサつけて、温度を計ってみるとか。
- LCD キャラクタモジュールを付けてみるとか
- 2 個買って I2C で通信させるとか...
- MMC を読み書きしてみるとか
- PS/2 マウスをつなげてみる。
こういったものを いくつか自分で設計して作る。
データシートを読んだり、電子回路の組み立てやっていけば、
次のレベルにいけると思います。
2002/5/19
秋月 で売っている H8/3664 を組み立てた。
組み立ては、簡単だったが、さて何につかったらいいんだろうか。
- ニッケル水素 急速充電器
定電流で充電して 電圧をモニタ すればよいものらしい。
4ch/8ch の 10 bit A/D コンバータをもっていて、PWM も組めるから、
ひょっとしたら 作れるのかも。
といってもかなりの大電流ながさないといけなさそうだし.... パス。
- 02/06/12 メモ ここに
ニッケル水素 急速充電器の工作例がある。参考になるかも。
1-6 本を直列に して電池を接続し、定電流 で 充電/放電できる。
これを参考にして作れるかも知れない。
うーんなんかイマイチだなぁ。やっぱり PC と接続してなにかする
... 用途をかんがえてみよう。
USB みたいな高速 大容量の転送をしないのであれば、シリアルでも
十分使えるはず。
- JTAG 端子をさわってみるものとか
- CPLD 書き込み器 とか
- PIC ライタとか Flush ライタとか
とりあえず、そういう使い方をめざしてみよう。
02/05/24
大昔 、大学の実験で 簡単なCPUを設計したことがあるのだが、
再現したいと 思っている。
おぼえているのは、
- TTL で作った 8bit CPU アドレスバス 16bit
- 256x24bit の マイクロプログラミング方式
- 使った IC は 28 個
ただ、ALU に 何を使ったかおぼえていない。
... 調べてみると どうも 74181 か 74281 らしい。
現在でも 181 は生き残っているようで、
データシート
が手にはいった。
うろおぼえなのだが、だいたいこんな感じ
ROM ROMindex data bus
+--------------------------+ +--+ ||
| next | <-----+ |<---------||
+-------|--------|---------+ | |<--+ ||
|||||||||||||| | +--+ | ||
|||||||||||||| | | | ||
control(16bit) +---------------|-----+ ||
| | ||
= |>-------------------+ ||
+------------|---------------------------------->||
| | 74181 x 2 ||
| | /---+ ||
| レジスタ +- / |<--------------------------||
| +---+ / | ||
|<--| |<--- ALU < ||
| | | \ | ||
| | | \ |<-+ +--+ +--+ ||
| +---+ ---+ | | |<---| |<---||
| | | | +--+ ||
+-----------------------+ +=== +--+ ||
| | |<-----------||
| | | ||
| +--+ ||
| PC: 16bit counter
|
|
================================================
address bus +------------------+
|Address Register |
+-------------------
- ROM の index (ADDRESS) がそのまま命令コードであり、シーケンサの状態
- これが 8bit カウンタになっていて、通常は +1 する。
- 状態によって、+1 するか データバスに出力されている命令をロードするか
ROM の値をロードするか、3 通りの動きをするようになっている。
- ROM の index によって、16bit の制御信号の組み合わせが決まる。
- たとえば、条件分岐は、演算 結果が 1bit の FF に記録され、
それによって、ROM index を ROM の値にするか、+1 するかのどちらかにする。
ROM の値が 命令フェッチのステータスになっていれば、次の命令を実行するし
そうでないならば +1 して PC に 値をロードする シーケンスを動かす。
- データをどうやってロードするかというと 16bit の アドレスレジスタ
があって、たぶん 即値 を アドレスレジスタにロードして
さらにそれを使ってデータを レジスタにロードする。
要を得ない説明だが、まあこんな感じ。
- FF は 8x7 個 + 1 = 57 個ぐらい。これぐらいなら CPLD でも実現できそう
だが... ROM がどうなるのかよくわからない。
RAM がある FPGA の 方が プログラムも格納できるから、たぶん便利なはず。
部品購入先のメモ
http://rswww.co.jp
- 表面実装用 RC 各種 とか 電源レギュレータ、チップタイプLEDとか。
ロジックとかいろいろ扱っているようだ。値段が高いかどうかは分からない。
- 電流を計るための 低抵抗 の 抵抗をさがしてみたら、
6W シリコンコート巻線抵抗 というのがあった。100円ぐらいで、
R03,R07,R10,R22 ... というのがある。
- 16M の 29LV160 も売っている。 1100円で 安いかもしれない。
4M の 29LV400 は、700円で モルフィーのが安い。
(最終更新 Thu Mar 30 19:02:34 2006)