2015-01-01から1年間の記事一覧

PSoC5LP Prototyping Kit (34) --- アナログ LPF

高知工科大学 Advent Calendar 2015 の 12/25 の記事 「PSoC のコンポーネントを作ろう」 に PSoC5LP のアナログ RC LPF をコンポーネント化して利用する例が説明されていました。 RC LPF はアナログ・プリミティブとして定義されており、パラメタ設定の方法…

PSoC5LP Prototyping Kit (33) --- UDB routed clock (2)

PSoC では、低スキューで各ブロックにクロックを分配できる配線網が専用に用意されており、そのクロック専用線を使うクロックを「グローバル・クロック」と呼んでいます。 ただし、その数には限りがあって、PSoC5LP ではクロック分周比を任意に選べるディジ…

PSoC5LP Prototyping Kit (32) --- UDB routed clock (1)

実は、spdif_dma プロジェクトで使っている I2S フォーマットの WS 信号を標準フォーマット LRCK 信号に変換する回路は「論理的」には正しくありません。 一方、論理的に正しい回路にすると、期待しているような動作になりません。 これは、変換回路のクロッ…

PSoC5LP Prototyping Kit (31) --- USB MIDI (3)

前回示したように、USBMIDI コンポーネントを「USB-MIDI コンバータ」として利用するために必要なコード量は 10 行程度なので、「USB 接続の音源」を作る場合には、「レガシー MIDI 入力の音源」+「USB-MIDI コンバータ」という構成にするのが最も容易です。…

PSoC5LP Prototyping Kit (30) --- USB MIDI (2)

標準ライブラリとして用意されている「USBMIDI」コンポーネントでは、下の図のように、USBFS コンポーネントと、UART、入出力ピン、インバータの回路がセットになったものがデフォルトとして定義されています。 「USB_MIDI」サンプル・プロジェクトは、これ…

PSoC5LP Prototyping Kit (29) --- USB MIDI (1)

PSoC5LP のサンプル・プロジェクト「USB_MIDI」を試してみました。 プロジェクトが想定している開発ボードは CY8CKIT-001 で、プロセッサとしては CY8C5868AXI-LP035 が選択されています。 これを CY8C5888LTI-LP079 に変更し、ポートの割り当ても適当に変更…

PSoC5LP Prototyping Kit (28) --- SPDIF_Tx と DMA (16)

PSoC5LP Prototyping Kit (CY8CKIT-059) 用の "spdif_dma" のパッケージを公開しました。(→こちら) 上記リンクをクリックすると Yahoo! ボックスが開きます。

PSoC5LP Prototyping Kit (27) --- SPDIF_Tx と DMA (15)

spdif_4x / spdif_dma プロジェクトは「4 倍オーバーサンプリングのテスト」とは言いながら、192 kHz サンプリングの S/PDIF 信号を受信できる機器を所有していないので、48 kHz サンプリングでの実験にとどまっていました。 今回 spdif_dma プロジェクトに …

PSoC5LP Prototyping Kit (26) --- SPDIF_Tx と DMA (14)

Filter コンポーネントで生成される DFB (Digital Filter Block) プログラムでは 2 チャネル分のフィルタがサポートされています。 これをステレオ 2 チャネルのストリームとして利用し、データ転送の全てを DMA で行なう場合には、DFB データ入出力の合計が…

PSoC5LP Prototyping Kit (25) --- SPDIF_Tx と DMA (13)

DFB (Digital Filter Block) コンポーネントへの入出力を全て DMA で行なうプログラム「spdif_dma」ができました。 近日中に公開したいと思います。 トップレベルの回路図を下に示します。

Arduino スケッチで AVR インライン・アセンブラを使う

Arduino IDE では、特に「ファイルをプロジェクトに追加」のような操作をしなくても、メインのスケッチ (.pde / .ino ファイル) があるフォルダに含まれている C/C++ ソース・ファイル (.c / .cpp) を拾ってくれて自動的にコンパイル/リンクしてくれます。 …

PSoC5LP Prototyping Kit (24) --- SPDIF_Tx と DMA (12)

PSoC5LP Prototyping Kit (CY8CKIT-059) 用の "spdif_x4" のパッケージを公開しました。(→こちら) 上記リンクをクリックすると Yahoo! ボックスが開きます。

PSoC5LP Prototyping Kit (23) --- SPDIF_Tx と DMA (11)

今回は PC 上のオーディオ録音/再生デバイスを利用したリアルタイム・スペクトラム・アナライザ・ソフトである「WaveSpectra」によるフィルタ特性の測定方法について説明します。 「WaveSpectra」の操作方法自体は、ソフト付属のヘルプにも記載されています…

PSoC5LP Prototyping Kit (22) --- SPDIF_Tx と DMA (10)

「spdif_4x」プロジェクトで使う外部回路を下に示します。 使う部品は、「TOSLINK」光送信モジュール、12.288 MHz 水晶振動子、コンデンサ 3 個です。 S/PDIF 信号を発生させるクロックには周波数精度が必要なため、内部クロックでは不十分で、水晶振動子あ…

PSoC5LP Prototyping Kit (21) --- SPDIF_Tx と DMA (9)

DFB (Digital Filter Block) のハードウェア DMA / 割り込み要求は「出力データ・レディ」の条件により発生するので、データの流れとは逆向きに後段から前段へとデータ転送要求を出す流れとは一致しません。 「入力データ・エンプティ」のようなハードウェア…

PSoC5LP Prototyping Kit (20) --- SPDIF_Tx と DMA (8)

久しぶりに SPDIF_Tx コンポーネントと DMA (と Filter コンポーネント) の話題に戻ります。 PSoC Creator の PSOC5LP 用の、Filter コンポーネントを使ったサンプル・プロジェクトのひとつとして、「Filter_ADC_VDAC01」があります。 そのトップの回路図の…

PSoC5LP Prototyping Kit (19) --- DFB と Filter (11)

Filter コンポーネントで作成される IIR バイクアッド・フィルタの計算プログラムでは、2 次セクションの伝達関数 の分子多項式の計算をまず行い、ついで分母多項式の計算を行なう「直接型 I」と呼ばれる方式で行なっています。 図示したものを下に示します。

PSoC5LP Prototyping Kit (18) --- DFB と Filter (10)

今回は Filter コンポーネントで生成される実際の FIR フィルタ・プログラムについて説明します。 1 行が長くて折り返して表示されるので見にくいですが、フィルタ・チャネル A の計算前準備 / たたみ込み演算 / 後処理部のリストを下に示します。 各ステー…

PSoC5LP Prototyping Kit (17) --- DFB と Filter (9)

DFB (Digital Filter Block) の「ミニ DSP」エンジンの命令語では ACU (Address Calculation Unit) に対しては、32 ビットのうち、 ACU A へのコマンド — 4 bit ACU B へのコマンド — 4 bit ACURAM のアドレス指定 — 4 bit の、計 12 ビットが割り当てられて…

PSoC5LP Prototyping Kit (16) --- DFB と Filter (8)

N タップ FIR (Finite Impulse Response) フィルタの構成を下の図に示します。 フィルタの「次数」で言うなら (N-1) 次のフィルタです。 ここで、角括弧 [] を伴った量は、時間方向に離散化 (discretization) されたサンプル値であるとします。 h[・] は「イ…

PSoC5LP Prototyping Kit (15) --- DFB と Filter (7)

DFB (Digital Filter Block) の「ミニ DSP」の命令語は 32 ビット幅で構成されています。 他のマイコンのような「演算命令」と「分岐命令」とには分かれておらず、プログラムの実行順序は「ステート・マシン」によって制御されています。 そのステート・マシ…

PSoC5LP Prototyping Kit (14) --- DFB と Filter (6)

DFB ハードウェアにはグローバル入力信号が 2 本、グローバル出力信号が 2 本、DMA リクエスト出力 2 本、インタラプト出力 1 本の、合計 7 本の入出力信号がありますが、Filter コンポーネントでは、DMA 出力 2 本、インタラプト出力 1 本の、計 3 本の設定…

PSoC5LP Prototyping Kit (13) --- DFB と Filter (5)

Filter コンポーネントのチャネル B を IIR バイクアッド構成とした場合のカスタマイザ (設定ダイアログ) の画面を下に示します。 (画像をクリックすると拡大します) これは、4 倍オーバーサンプリング用の補間フィルタとは直接の関係はありません。 単に IIR…

PSoC5LP Prototyping Kit (12) --- DFB と Filter (4)

Filter コンポーネントを回路図上に配置して、コンポーネントをダブル・クリックして開くカスタマイザ (設定ダイアログ) の画面を下に示します。 (画像をクリックすると拡大します)

PSoC5LP Prototyping Kit (11) --- DFB と Filter (3)

DFB (Digital Filter Block) で扱うデータは 24 ビット幅ですが、DFB は 8 ビット MCU の 8051 を搭載した PSoC3 にも内蔵されています。 当然、8 ビット MPU の 8051 では 24 ビット・データを一度に扱うことはできません。 8 ビットの読み書きを 3 回行な…

PSoC5LP Prototyping Kit (10) --- DFB と Filter (2)

DFB (Digital Filter Block) では、BUS_CLK がクロック入力となるように決められていて、他の選択はできません。 BUS_CLK は CPU_CLK としても使われるので、CPU の動作スピードと同じスピードで DFB も動作することになります。 PSoC5LP Prototyping Kit 本…

PSoC5LP Prototyping Kit (9) --- DFB と Filter (1)

今回からは PSoC5LP の DFB (Digital Filter Block) コンポーネントと Filter コンポーネントについての話題です。 DFB は UDB (Universal Digital Block) 上に実現されたファンクションではなく、「固定ファンクション」として実現されています。 PSoC5LP …

PSoC5LP Prototyping Kit (8) --- SPDIF_Tx と DMA (7)

ISR (Interrupt Service Routine) の作成方法について前回述べたのとは方針を変えることにしました。 インタラプト・コンポーネントの配置により自動生成される C ソース・コードには変更を加えず、ISR は main.c ファイル中で定義して、API の Start() 関数…

PSoC5LP Prototyping Kit (7) --- SPDIF_Tx と DMA (6)

DMA コンポーネントに接続したインタラプト・コンポーネントでも DMA 関係の定義を使うので、DMA Wizard で生成された C ソース・コードのうち、#define 文の定義などを集めてヘッダ・ファイル「main.h」として独立させ、ISR (Interrupt Service Routine) 側…

PSoC5LP Prototyping Kit (6) --- SPDIF_Tx と DMA (5)

PSoC5LP の DMA コンポーネントでは、カスタマイザで設定可能なのは、DMA リクエスト・ハードウェア入力 (drq) を設けるかどうか、およびその信号の種類の選択、DMA 停止ハードウェア入力 (trq) を設けるかどうかの 2 つのオプションのハードウェア入力に関…