ムライボックス (21) --- ハードウェア (1)

PSoC4 の内蔵 UDB (Universal Digital Block) を使った "OR" ゲート回路に EXOR を追加して、ハード的に MIDI ポート出力信号の極性を反転できるようにしました。
回路図を下に示します。

出力極性を反転する信号 (OUT_INV) の入力ピンには「プルダウン」を指定してあり、「オープン」状態、あるいは「0」を入力した状態では出力信号は「正論理」となり、「1」を入力した状態では出力信号は「負論理」(反転出力) となります。
外部回路は次のようになります。

16 ポート分の出力を単純に、「J2」コネクタ側の信号 P2.0 から P3.7 まで、順番に割り付けてあります。
途中の P3.2 と P3.3 には SWD 接続のフラッシュ書き込み/デバッグ用の機能が割り当てられているので、UART ブートローダではなく MiniProg あるいは KitProg で SWD 接続してデバッグ機能も使いたい場合には、その 2 ピンについては MIDI 出力機能を他のピンに割り当て直す必要があります。
上の図で青色の線で囲われたブロックは MIDI 出力をドライブする「バッファ回路」の部分です。
その実際の回路を (1 ポート単位で) 下に示します。

(a) は最も簡単に「バッファなし」つまり PSoC4 の出力ピンと DIN 5P コネクタのピンとを (220 Ω の抵抗を介して) 直結するものです。
当然、MIDI ケーブルを介して外部から過電圧がかかった場合には、PSoC4 本体に影響が及びます。
(b) は反転出力に対し、いわゆる「デジタル・トランジスタ」(抵抗入りトランジスタ) を使うものです。
特に保護回路を設けなくても、トランジスタ自身が持つ耐圧 (対 GND で正の電圧の場合 VCEO の +50 V 程度、マイナス側は VEBO の -5 V 程度) の範囲内であれば PSoC4 本体に影響は及びません。
(c) は反転出力に対し LSTTL あるいは HCMOS のロジック・インバータの 7404 およびそのオーブン・コレクタ/ドレイン版の 7405 / 7406 / 7416 を使うものです。
LSTTL のオープン・コレクタ・タイプの 74LS16 では (プラス側で) 15 V 耐圧、74LS06 では 30 V 耐圧が得られます。
マイナス側は ダイオード 1 個の順方向電圧降下分の -0.6 V 程度の耐圧になります。
(d) は反転出力に対し NPN ダーリントントランジスタ・アレイの ULN2003A / TD62003 / TD62083 を使うものです。
ULN2003A / TD62003 は 16 ピン・パッケージに 7 素子、TD62083 は 18 ピン・パッケージに 8 素子が内蔵されています。
ダーリントン出力のため、出力の飽和電圧が 0.9 V 程度と高く、出力電流がやや減ってしまう可能性があります。
図には示してありませんが、NMOS FET を使ったタイプの TBD62083 では出力の飽和電圧は低くてすみます。
耐圧に関しては、プラス側はトランジスタ自体の耐圧、50 V 程度が期待できますが、マイナス側はサブストレートとの寄生ダイオードにより -0.6 V 程度になります。