PSoC 3 で、 "H" な出力 [PSoC]
PSoC 3 を使って、 "H" な出力をします。 使用するハードウェアは、 CY8CKIT-030 PSoC® 3 Development Kit です。 さて、どんな "H" が出てくるんでしょうか。
"H" は、 Look Up Table で作る
今回作成する "H" は、 プロトコルに UART を使います。 「だうも、すびばせん。」 単に UART で "H" を出力させるだけです。
ただし、単純に "H" を出力するだけでは、面白くありません。 そこで、この企画では、
- UART コンポーネントは、使いません。
- ファームウェア・ソースコードは、まったく記述しません。
- Look Up Table (LUT) と呼ばれるロジックを使います。
"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 Value | in4 | in3 | in2 | in1 | in0 | out4 | out3 | out2 | out1 | out0 | Output Hex Value |
---|---|---|---|---|---|---|---|---|---|---|---|
0x00 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0x10 |
0x01 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0x02 |
0x02 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0x03 |
0x03 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0x04 |
0x04 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0x05 |
0x05 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 0x16 |
0x06 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 0x07 |
0x07 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0x08 |
0x08 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0x19 |
0x09 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0x0A |
0x0A | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0x1B |
0x0B | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0x10 |
0x0C | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0x10 |
0x0D | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0x10 |
0x0E | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0x10 |
0x0F | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0x10 |
0x10 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0x11 |
0x11 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 0x11 |
0x12 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0x03 |
0x13 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0x04 |
0x14 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0x05 |
0x15 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 0x16 |
0x16 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 0x07 |
0x17 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0x08 |
0x18 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0x19 |
0x19 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0x0A |
0x1A | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0x1B |
0x1B | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0x10 |
0x1C | 1 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0x10 |
0x1D | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0x10 |
0x1E | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0x10 |
0x1F | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0x10 |
プロジェクトの実行
以上で、このプロジェクトは完了です。 予告したように、ソース・コードは記述していません。 あとは、コンパイルして書き込んだら、 PSoC 3 は、ステートマシンに従って動作します。
プロジェクト・アーカイブ
このプロジェクトのアーカイブは、このファイルの拡張子を "zip" に変更すると、得られます。 余裕があったら、 github にでも置きたいのですが、いつになるやら。
関連文献
トランジスタ技術増刊 シリーズ最強!PSoC (ピーソック) 3ボード+デバッグボード 2012年 05月号 [雑誌]
- 作者:
- 出版社/メーカー: CQ出版
- 発売日: 2012/04/19
- メディア: 雑誌
コメント 0