So-net無料ブログ作成

PSoC 3 で、 "H" な出力 [PSoC]このエントリーを含むはてなブックマーク#

CY8CKIT-030

PSoC 3 を使って、 "H" な出力をします。 使用するハードウェアは、 CY8CKIT-030 PSoC® 3 Development Kit です。 さて、どんな "H" が出てくるんでしょうか。

"H" は、 Look Up Table で作る

今回作成する "H" は、 プロトコルに UART を使います。 「だうも、すびばせん。」 単に UART で "H" を出力させるだけです。

ただし、単純に "H" を出力するだけでは、面白くありません。 そこで、この企画では、

  • UART コンポーネントは、使いません。
  • ファームウェア・ソースコードは、まったく記述しません。
  • Look Up Table (LUT) と呼ばれるロジックを使います。
つまり、 LUT だけで、 "H" な出力をします。

"H" 生成装置のスケマティック

H生成装置の回路図

"H" 生成装置は、 LUT を中心に入出力ポートとクロックで構成されています。 プルアップ付き設定の入力ポート (P6[2]) は、 CY8CKIT-030 の SW2 に接続されています。 また、出力ポート (P12[6]) は、ジャンパ線で UART レベル変換チップの TX に接続されています。 このプロジェクトは、 SW2 を一回押すと、 "H" をひとつ出力するという動作をします。

UART のプロトコルには、 9600bps, 8bit, non-parity, 1stop-bit になっています。 ボーレートは、クロックの周波数で設定することができます。 9600Hz のクロックを要求しましたが、実際のクロックは、 3MHz の IIMO を 313 分周した 9585Hz に設定されました。

LUT は、レジスタ付きの設定になっていて、 out(3:0) の部分が 4-bit の状態コードを表すステートマシンになっています。 また、 out4 は、完全に out(3:0) の値に依存している、いわゆる、ムーア型ステートマシンとして構成されています。

ステートマシンの中身

状態遷移図

4-bit の状態コードで表現される16の状態のうち、使用されているのは12状態で、残りは未使用状態として無条件に初期状態に遷移するようになっています。 それぞれの状態は、 UART 出力の各ビットに相当し、その値は状態遷移図に記述されています。 "H" (16進数で $48) という固定された出力を得るため、ステートマシンは、 SW2 の状態を検出する以外は、単純に無条件遷移を繰り返しています。


状態遷移表は、以下のようになっています。

Input Hex Valuein4in3in2in1in0out4out3out2out1out0Output Hex Value
0x0000000100000x10
0x0100001000100x02
0x0200010000110x03
0x0300011001000x04
0x0400100001010x05
0x0500101101100x16
0x0600110001110x07
0x0700111010000x08
0x0801000110010x19
0x0901001010100x0A
0x0A01010110110x1B
0x0B01011100000x10
0x0C01100100000x10
0x0D01101100000x10
0x0E01110100000x10
0x0F01111100000x10
0x1010000100010x11
0x1110001100010x11
0x1210010000110x03
0x1310011001000x04
0x1410100001010x05
0x1510101101100x16
0x1610110001110x07
0x1710111010000x08
0x1811000110010x19
0x1911001010100x0A
0x1A11010110110x1B
0x1B11011100000x10
0x1C11100100000x10
0x1D11101100000x10
0x1E11110100000x10
0x1F11111100000x10

プロジェクトの実行

以上で、このプロジェクトは完了です。 予告したように、ソース・コードは記述していません。 あとは、コンパイルして書き込んだら、 PSoC 3 は、ステートマシンに従って動作します。

プロジェクト・アーカイブ

このプロジェクトのアーカイブは、このファイルの拡張子を "zip" に変更すると、得られます。 余裕があったら、 github にでも置きたいのですが、いつになるやら。

関連文献


nice!(0)  コメント(0)  トラックバック(0)  このエントリーを含むはてなブックマーク#

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。