2015-01-01から1年間の記事一覧
PSoC 4200 Prototyping Kit (CY8CKIT-049-42xx) 用のプロジェクト "pcnt_dac" パッケージを公開しました。(→こちら) 上記リンクをクリックすると Yahoo! ボックスが開きます。
これまでの周期カウンタや DAC などを、ひとつにまとめたプロジェクトを作成中です。 近日中に公開します。 以下のようなコンポーネントをまとめたと言うか、「寄せ集めて」います。
電荷平衡型 VFC のディジタル・モノマルチのトリガ部分のディジタル回路を変更して、外付けアナログ部品を増やさずに、さらにハザードが出る可能性を減らしました。 ディジタル・モノマルチ部分の回路図を下に示します。
SdmDac16 のテスト・プロジェクトでは、1 ビット DAC 出力に下図のような内蔵 OP アンプを利用した Sallen-Key トポロジの 2 次バタワース LPF (fc = 4.8 kHz) を接続してアナログ電圧を得ています。 (このシリーズの記事の 1 回目に PWM DAC 用に使った LPF…
「入力モード」の FIFO、つまり CPU 側からデータを書き込み、UDB ハードウェア側からデータを読み出す設定の FIFO では、CPU「バス側」には FIFO の「空き容量」を示すステータス信号が、UDB ハードウェアの「ブロック側」には FIFO エンプティを示すステー…
カスタム・コンポーネントの作成法や、Datapath Configuration Tool の操作方法などについては詳しい説明を省略します。 以下の文書を参照してください。 AN82156: "PSoC® 3, PSoC 4, and PSoC 5LP – Designing PSoC Creator™ Components with UDB Datapaths…
UDB (Universal Digital Block) 内の「データパス」(datapath) モジュール 2 個と、サンプリング・タイミング発生用の TCPWM コンポーネント 1 個を使って (オーディオ帯域の) 16 ビット・データ入力シグマデルタ変調型 DAC を作りました。 シグマデルタ変調…
PSoC4 の内蔵アナログ・ブロックの OP アンプとコンパレータ、内蔵 UDB (Universal Digital Block) 上の PWM コンポーネントを利用して電荷平衡型 VFC (Charge Balancing Voltage to Frequency Converter) を構成し、内蔵 8 ビット電流出力 DAC (IDAC8) の特…
レシプロカル周波数カウンタ (周期カウンタ) のプログラム (の断片) を示します。 pcnt 変数、pcnt_Start() 関数、pcnt_Stop() 関数、calc_crt() 関数の定義はヘッダ・ファイル (pcnt.h)、C ソース・ファイル (pcnt.c) として独立させ、main.c と同じフォル…
タイミング・チャートの形で表現したレシプロカル周波数カウンタ (周期カウンタ) の処理の概要を下に示します。
レシプロカル周波数カウンタ (周期カウンタ) としてのソフトウェア構成は、以前に作成した Arduino でレシプロカル周波数カウンタ・ライブラリと同様にしました。 入力信号をカウンタのキャプチャ入力に直結しているので、入力周波数のレートで割り込みが掛…
PSoc Creator 上のタイマ・コンポーネントの配置を下に示します。 Timer モードの TCPWM コンポーネントを 2 つ配置して、クロック入力、キャプチャ入力を並列に接続しただけです。 クロック入力は HFCLK (High Frequency CLocK) から得た 48 MHz クロックを…
前回の記事の最後の式を再掲します。 n = (a2 - a1) · m1 + a1 この式を見ると (a2 < a1) の場合に右辺第 1 項が負となり、 n の値も負になることが分かります。 + a1 の項も効いてきそうな気がしますが、前回も述べたように、(a2 - a1) を 16 ビット左シフ…
中国剰余定理自体の証明や、一般的な解法については省略し、今回の応用に関する解法のみを説明します。 その前に「合同式」について触れておきます。 以降、特にことわりのない限り変数や定数は整数であるとします。 a ≡ b (mod m) と書いて「m を法 (modulu…
「中国剰余定理」(Chinese Remainder Theorem) は古代中国の算術書「孫子算経」に由来するもので「孫子の定理」と呼ばれることもあります。 「Chinese」は「中国の」とか「中国式」とか言うよりも、むしろ「(名前の分からない) 中国人の」といった意味合いで…
PSoC4 の TCPWM コンポーネントの仕様を見ていて、「中国剰余定理」を使って 16 ビット・タイマ・カウンタを 32 ビット化し、キャプチャ機能により入力信号の周期を求めるレシプロカル周波数カウンタを作ろうと思い立ちました。 中国剰余定理の説明は次回以…
今回はハードウェアでスイッチ・イベントを発生させる場合の説明です。 TCPWM コンポーネントの設定ダイアログで下のように「switch」-「Present」チェック・ボックスと「Compare」-「Swap」チェック・ボックスをオンにします。
多くのマイコンの PWM 回路ではコンペア・レジスタは「ダブル・バッファ」構成になっています。 もちろん、その理由はダブル・バッファ構成でないと問題が生じるからです。 簡単のため、カウンタがアップ・カウント・モードでの PWM 回路の原理的な図を下に…
以前から Cypress の PSoC (Programmable System-on-Chip) シリーズには興味があったのですが、PSoC1 の出始めの頃の、プログラマ約 1 万円、別売 C コンパイラ約 3 万円という「割高」なイメージがあって、手を出せずにいました。 最近では「廉価版」の PSo…
今回は USB-MIDI コンバータの MIDI IN 側の処理の話です。 MIDI OUT 側に比べて処理は複雑になります。 それは、 ランニング・ステータスに必ず対応する必要がある 入力される MIDI メッセージに対応して MIDI パケットを組み立てる必要がある USB ホスト側…
今回は USB-MIDI コンバータの MIDI OUT 側の処理の話です。 USB-MIDI イベント・パケットから直接に内蔵音源をドライブするのではなく、MIDI のシリアル・データに変換して MIDI 端子から出力するという機能に限れば、(MIDI IN 側に比べて) その処理は非常…
システム・エクスクルーシブ・メッセージ (System Exclusive Message) はステータス・バイト 0xF0 に始まり 0xF7 (EOX: End Of eXclusive) に終わる、MIDI メッセージでは唯一の可変長のメッセージです。 USB-MIDI イベント・パケット内のペイロードは 3 バ…
MIDI ケーブルの中を流れる MIDI データは、「バイト・オリエンテッド」なビット・レート 31.25 kbps、データビット数 8、パリティなし、1 ストップビットの調歩同期形式です。 一方、USB を介してやりとりされる MIDI データの形式は「バイト・オリエンテッ…
前回の規格書付録 B のディスクリプタと同等のディスクリプタを。C 言語の初期値付き配列の形で表現したものを下に示します。 LPC11U35 を使った FM 音源プログラムの USB-MIDI 機能部分で、このディスクリプタを使ってコンパイルして MIDI OUT 機能が正常に…
MIDIStreaming サブクラスの規格書[*1]の付録 B に示されているディスクリプタを元に解説を加えます。 規格書は、「usb.org midi」 を検索キーワードとしてググればすぐに見つかります。 ここで示すディスクリプタは、 2 箇所を除いて規格書の付録 B と同じ…
MIDIStraming 要素の MIDI ジャックや「エレメント」のトポロジーは、実際にはクラス固有ディスクリプタで表現されます。 MIDIStreaming の場合 (AudioStreaming なし) のコンフィギュレーション・ディスクリプタ(群) の構成図を左に示します。 先頭に「Std.…
MIDIStreaming インターフェース・サブクラスの例として、規格書の付録 B "Example: Simple MIDI Adapter (Informative)" のディスクリプタで示されている (外部) MIDI 入力 1 系統、(外部) MIDI 出力 1 系統の最も基本的な USB-MIDI 機能を実現するトポロジ…