コメを噛め

コメを噛め

rerofumi の電子工作メモ

Archive for 3月, 2007


hatena bookmark

ほんとは実装の手順をちびちびと順をおって解説していこうかと思っていたのだけれども、面倒になってきたので一気に実装を済ませてしまう。
大体動くあたりまでできた感じ。

CPLD で定義されていないコントロール用の足を定義する。
GCK2(7pin) – アドレスカウントアップのクロック
FB1MC6(8pin) – RST、High にするとアドレスカウンタが 0 になる
FB1MC8(9pin) – E、High にすると SRAM の CE が 0 になって動き出す
FB1MC9(11pin) – CAPT、High でSRAMストア、LowでSRAMリード

CPLD は単純なカウンタとゲートといった役割。
VHDL と UCF(ピン設定) ファイルはこちら。

logiana01_cpld.zip

PSoC のユーザーモジュール配置はこんな感じ。
UART 以外はカウンタのかたまり。


上の段は CPLD に送るクロック(=サンプリング周期)を生成するための分周器。
今回は 1Hz 〜 1MHz 程度をサンプリング周期として狙っているので、その範囲を上手くカウントするのに 24bit カウンタが必要だった。でも PWM が 16Bit しかなくて、もう 8 bit カウンタを追加した次第。その二つはカウンタ値をPCから変更できるようにして任意のサンプリング周期に設定できる。
Counter8_2 はPSoCの内蔵オシレータ(24MHzの倍)を丁度良いように調整する緩衝役。
VC1〜3 といった分周器は UART の調整に用いて、サンプリングの方と分けたかった。

下の段にある16Bitカウンタはサンプル数を数える役。
SRAM は 32kb だけれども、毎回 32768 サンプルでは時間がかかるので任意数で打ち切るためのもの。指定数になったら割り込みを発生させて、サンプルを終了する。
この様に PSoC のカウンタモジュールを利用して、CPUを用いずにサンプルクロックとカウントを行うことができるというのが狙い。
PSoC 内蔵オシレータの精度があまり良くないあたりは難点だけれども、アマチュアのゆるい工作には使えるでしょ。

SRAM から読み出して PC に送るときは P0_0 ピンを内蔵モジュールラインから切り離して CPU の GPIO にしてしまい、プログラムで上げ下げしながらゆっくり読み出している。読み出し時はカウンターは動作させていない。

そんなこんなで作成した PSoC のプロジェクト。

logiana_01.zip

PSoC Designer 4.3 用のプロジェクト。CY8C29466 で作成してある。
一応 CY8C27443 でもできるようにモジュール数はしぼってはあるけれども、プロジェクトを変更することはできないと思う。
アセンブラで書いてあるのでコンパイラライセンスは無くても大丈夫。

細かい調整も残っているけれども、なにより PC 側のアプリケーションを作らなくてはならないのです。

—–


hatena bookmark

PCと簡易ロジアナ基板との間でシリアル通信する際のコマンドについて考えてみた。

・コマンドプロンプト
ロジアナが行頭に > を出力してきたら、それはコマンドプロンプトでコマンド受付可能を意味する。

・空改行
コマンド受付時に改行のみが入力されたら、再度コマンドプロンプトを送信してコマンド受付状態となる。
PC側がコマンドプロンプトを読み落として、同期が必要となったときに用いられる。

・T – サンプル周期の設定
書式: T xxxxxx
サンプルクロックとして使用する PWM のカウント数を指定する。
1MHz をベースに何分周したものがサンプル周期となるかの設定。
パラメータは HEX 3Byte、24Bit値。

・S – SRAMへのサンプリング実行
書式: S xxxx
指定個数分のサンプリングを行い SRAM にストアする。
即座にコマンドプロンプトが表示されるが、サンプリングは続いている。
サンプリング中は赤LEDが点灯している。
パラメータは HEX 2Byte、16Bit値。8000H が上限でそれ以上を指定しても 8000H 以上サンプルはされてない(最上位データが上書きされているだけ)。

・W – サンプリング中であることの確認
書式: W
現在サンプリング中であるならば、目的サンプル数と現在の進捗数を返す。
戻り値: xxxx/xxxx
サンプリング停止しているなら FFFF/FFFF が返る。

・B – サンプリングの中断
書式: B
現在サンプリング中であるならば、そのサンプリングを中断する。
サンプリング中でない場合は特に何も起こらない。

・C – 信号のダイレクトキャプチャ
書式: C
SRAM を介せず現在の入力信号を直接読み取り、1Byte の値として返す。
戻り値: xx
シリアルの時間やマイコンの動作などでサンプルタイミングは厳密にできない。
簡易入力。

・R – SRAMからのデータ転送
書式: R xxxx
SRAM の先頭アドレスから指定個数分のデータを読みこみ表示する。
パラメータは HEX 2Byte、16Bit値。8000H が上限でそれ以上を指定しても同じデータが続くだけとなる。
戻り値: xx
HEX値+改行、が指定個数分続く。中断はできない。
コマンドプロンプトが表示されたら終了。

・G – トリガーサンプリングの実行開始
書式: G x xx xxxx
信号のトリガー待ちをして、トリガーが来た後サンプリングを開始する。
引数は 1つめが Rising Triger か否か、1で L->H、0で H->L。
2つめがトリガー待ちする信号線のマスクを 8bit 値で指定する。
3つめがサンプリング時間。

T で指定するサンプリング周期はちとややこしいのだけれども、それはまた後で説明。
取り敢えず、このプロトコルに沿って実装していくのです。
—–


hatena bookmark

当Blogでは当初からスクラッチの電子工作にこだわってきた次第。
でも、たまには電子工作キットを作って楽しんでみようか。
キットは良いよ、部品を揃える手間も無いし、きちんとしたプリント基板が既に用意されているし、なんといってもストレス度の高いワイヤーを剥く作業がほとんど無いあたりが良い。

別件ではあるが、これから電子工作入門をしようという人にとっては「はんだ付け」すら難しいテクニックなんでは無いだろうかといった思いもある。
そこで、電子工作キットを作っている様子を撮影したムービーがあると、これからやってみたい人にとって良い指南となるのではないかと考えた。そうでなくても、他人が電子工作をやっている姿なんて普段あんまりみないものではないかと。

そんな事を考えながらキットを調達。


秋月電子通商「スクロールクロックキット Ver.2 (K-01047)」を購入。
秋月のキットは一般的に難易度が高い方なのだけれども、私としてはこれくらいじゃないとあまり楽しくはないので。


ビデオを回しながらこのキットを作成。
およそ40分ほどで完成して、その間ノンストップのビデオが撮れたのだけれども、それをだらだら見てもしょうがないので編集をした。ハンダ付け実演なども含めつつできるだけ楽しんで見れるようにしたつもり。

FLASHビデオ「スクロールクロックキット作成ビデオ」(7m20s)

おまけ。


フラットパッケージIC (SOP) のハンダ付け実演ビデオ。

FLASHビデオ「SOPパッケージハンダ付けビデオ」(1m07s)

—–


hatena bookmark

秋葉原圏の電子工作人間ならば多くの人がお世話になっていると思われるお店。
みんな大好き秋月律子秋月電子。秋葉原の店舗は何時行っても狭い店内に多くの客がみっちりと詰めかけているのです。
そんな秋月電子通商秋葉原店が店舗改装のため 3/13〜3/31 のスケジュールで休業となっています。それに合わせる様に埼玉県八潮市に新店舗をオープンさせた次第。
てっきり八潮店が店舗改装のためのリリーフかと思っていたら、秋葉原店の向かいの空き地にて仮店舗を構えてそれなりに継続している模様。
まあ、そのあたりはエレキジャックBlogで追いかけているので、そちらの記事見るとだいたいわかるかと。

その秋月電子通商八潮店は、狭くてぎゅうぎゅうの秋葉原店舗とは違って広くてゆったりだけれども全アイテムが置いてあり、支払いにクレジットカードも使えるという。
それってなんてユートピア?といった感じなので、ぜひ一度自身の足で行ってみたいと思い立った次第。
正直、神奈川県在住の身としては「秋葉原で乗り換えて」まで八潮に行く意味はほとんどないのだけれどもね。つくばエクスプレスは片道450円もするし。
まあ、物見遊山ということで。

乗り換えついでに秋葉原の仮店舗にも寄ってみる。
なんか、これはこれで秋葉原っぽくて良いんじゃね?仮店舗の敷地面積は前の店舗より広いので縦に積み重なって無くてもそれなりに陳列できているし。そして客もいつも通り詰めかけているし。
まあ、防犯的には弱そうだけれども。

さて、そこからつくばエクスプレスに乗って八潮市へ。
駅からとことこと歩くのです。地図を見ると駅からショッピングモールの脇(中でも良いけど)を通って信号のあるところまで行った後、脇のT字路を曲がることになっているけれども、そのT字路がなんの変哲もない場所なので注意。


こんな感じの道を奥に進むのです。
地図をみると蕎麦屋が書いてあったので、それを目印にすれば良いかと思ってたら近くというより蕎麦屋の隣といった距離だった。


秋月電子通商八潮店だよー。


ちなみに向かい側はすぐ高速道路。


つまり駅から行く場合は高速道路を越えない様にすれば良い。

ついにたどり着いたぜ八潮店。
店舗はプレハブの一部だけれども、それでもそれなりに広くてゆったりとしている。案の定客も少なく3〜5人くらいがうろうろしている程度なのでかごを片手に超のんびりと電子部品を物色できます。まったりまったり。
WEB通販で扱っているものはすべて陳列してあると豪語していたのはそれなりに本当で、よっぽど特殊なのでない限りは(売り切れでない限り)置いてあるかも。PICマイコンの本とかも、WEB通販で扱っていた物は置いてあった。
陳列はWEB通販での取り扱いコード順なので最初はちと面食らうけれども、なれると入荷時期から「あれはあのへんだったよな」と見当付くようにはなる。まあ、WEBサイトをちょくちょく覗いている人なら、といったところだけれども。
細かいパーツがうんぬんよりかは、計測器が無造作に陳列されているあたりがポイントか。ファンクションジェネレータとかハンディオシロとかちょっと買っちゃおうかと揺らいでしまったあたり、カード払いできるし。いや、今回は買いませんでしたけれども。
10万円くらいの計測器でもパッケージがちっちゃい物は適当に転がっていたりするし。

ちょうどデジタルマルチメータ(テスタ)がもう一台欲しかったのでそれを手始めに、気にはなっていたけれども通販するほどでもなかったアイテムをもそもそと買い込んできた。

ところで、秋月電子通商は秋葉原店舗だけで扱っていて通販部では扱っていないアイテムというのがいくつか存在している。ディスクリートロジックICとか、タクトスイッチの袋詰め売りとかなんだけれども。そういったのは八潮店にもないみたい。
あと、現在の秋葉原仮店舗では毎度の抵抗100本入りは取り扱い休止しているとのこと。これは逆に八潮店で専用の棚に置いてあった。

まあ、結局秋月なんでここ一店で電子工作に必要な物がすべてそろうといいったわけでないんだけれども、部品の買いだめといったニュアンスでピクニック気分で訪れるには良いのではないかと。
のんびりと部品を物色する感覚は悪くないのです。
—–


hatena bookmark


PSoC と PC を繋ぐシリアル通信部分の検証を行う。
今回 LCD 表示ユニットとか付いていないから、デバッグの要となるのは PC とのやりとりに使うシリアル通信になるのです。PC から動作チェック用のコマンドを送ったり、動作状況を返したり。
なので、シリアル通信部分を真っ先に動作確認してここを手がかりに進めていくといった作戦。

シリアルポートとしては前回書いたように、USBシリアルコンバータを使用。
私がこれを好んで使うのは、MAX232系の余計なレベルコンバータを必要とせずに、5V I/O でマイコンに直接繋げるから。
それと、バスパワーでマイコンを駆動できるのもお手軽でよいよい。

PSoC でシリアル通信を行うには DigitalCOMM の UART モジュールを使う。
PSoC からの送信だけで良いなら TX モジュール、受信だけで良いなら RX モジュール。UART は TX/RX の両方を備えているのでデジタルブロックを 2つ使う。
今回は P1(6),P1(7) をシリアル通信として使うので、配線をその様に設定しつつモジュールを配置。


与えるクロックでボーレートが決まるのだけれども、19200bps に設定したい場合は VC=1, VC2=6, VC3in=VC2, VC3=26 と分周していった VC3 を入れると良い。
それ以外は、こっから適当に増減すると簡単。
まあ、一度は計算機弾いて自分で数字出してみると良いかも。

簡単なループバックコードを書いてチェック。

mov a, UART_PARITY_NONE
lcall UART_1_Start
.read_serial:
lcall UART_1_cReadChar
cmp a, 0x00
jz .read_serial
lcall UART_1_PutChar
jmp .read_serial

PC 上のシリアルコンソールからキー入力をすると、そのキーと同じ文字が表示されれば動作しているということで確認終了。

PSoC の UART ライブラリには上位ルーチンとしてコマンドバッファが存在している。これは割り込みを使って PC からの入力をバッファリングしていきターミネータ(通常は改行)が来たらコマンド受付とするコンビニエンスルーチン。


必要ないときは disable にしておくと ROM 節約になるのです。

今回はこのコマンドバッファを使って PC からの要求を待ち受けるのが良さそう。
取り敢えず使い方だけ確認しておく。

PC から 0〜3 を入力するとそれに応じて LED が光ったり消えたりするサンプルコード。(アセンブラ)
main.asm

これで、PSoC とやりとりができるようになったので色々とチェックが進むというものです。
—–


hatena bookmark

簡易ロジアナを作ろうかと思い立ってから、基板作成までしたのがこれまでの経緯。その後、PS3 Linux にかまけていたり、サーバに不幸があったりとでずっとほったらかしの内に三ヶ月が過ぎていた次第。
そろそろ制作を再開したいなあと思った物の、先だってのサーバ損失によってこれまでの回路設計や基板設計に関する添付資料や写真が全て失われているので、ひとまずはこれまでやってきた作業内容のおさらいと画像再掲載から。

まずはコンセプト。
ロジックアナライザとして信号を記録する SRAM は一般的な 256KB SRAM の SRM2B256LMX55 を利用。8bit 32KByte の SRAM。秋月電子で 5個 1パックで 300円也。1個なら 60円相当。
これをコントロールするマイコンは PSoC。PC とはシリアル接続して、シリアルポート経由でコントロールを行う。
PSoC は入手しやすい 28Pin DIP パッケージを使用するが、SRAM のアドレスをコントロールするほど I/O が無いので、Xilinx の CPLD XC9536 あたりを使ってアドレスコントロールを行う。

以上の仕様を元に、回路図を起こしたのがこちら。

ここから片面プリント基板を作成したものがこれ。

これらの Eagle Lite プロジェクトがこちら。
fumi_logiana_eagle.zip

そんなこんなでできたプリント基板の図。
(この写真に写っている版では 74244 のピンピッチが異なっている)

とまあ、ここまでが 3ヶ月前に掲載していた内容。
実はこの時にハンダ付け実装までは完了していたりする。
完成したものがこちら。



脇に写っている緑色の基板はストロベリー・リナックスから購入した FT232RL 使用の USBシリアル変換モジュール。PC とはシリアル通信するけれども、これを用いて USB 接続にする目論見。

テスタ片手にハンダブリッジ(ショート)していない事を念入りにチェック。問題ないことが確認できたところでソケットに PSoC と CPLD を装着、プログラマにてソフトウェアが書き込めることをそれぞれで確認。
ひとまず問題ないことがわかったので、ここから先は全てソフトウェアでの作業となる。

この先やっていくこととしては、いきなり完成を目指すわけではない。少しずつテストコードを動作させていって、ハードウェアの設計がこれで正しいことを確認していく事になる。
実は PSoC の書き込みテストの際、LED が点滅するようなコードを書いて試しているので少なくとも PSoC と 2個の LED は期待通りに動いている事がわかっている。
このように少しずつ回路を動かしていって全ての要素が期待通りに動いている事が確認できたところで目的とするファームウェアの設計と作成を行っていくことになる。

—–