PSoC5LP
PSoC Creator のリダクション演算の問題で、回路自体は変更せずに、ゲートを負論理で表現して OR の部分を単項リダクション演算で記述してみたところ、ひとつの式の中に複数のリダクション演算があっても問題なく変換されることが分かりました。 CLA 回路部…
PSoC Creator のユーザ・コンポーネントとして、(LS)TTL / HCMOS の 4 ビット ALU である 74181 の内部回路を Verilog-HDL で書いていて、「リダクション演算」に関する不具合があることに気が付きました。 回避する方法も判明しているので、実用上は問題あ…
最近、「PSoC5LP Prototyping Kit」を買い増ししたのですが、基板のリビジョンが上がっていて、2016 年 1 月 12 日付けの記事 (→こちら) で触れたリセット信号がピンにつながっていない問題は修正されていました。 パッケージの表示では「Rev *C」、基板のシ…
今回はソフトウェアについて触れます。 まず、DMA チャネルの初期化部分のソースを下に示します。 16 ビット・パラレル・データ転送を 8 ビット DMA ふたつ (DMA_H, DMA_L) で実現しており、両者の内容はほとんど同じなので、代表として DMA_L の方だけを示…
PSoC5LP Prototyping Kit と TX7 との接続図を下に示します。 (図をクリックすると拡大します)
TX7 DAC データ・キャプチャのための内蔵ペリフェラルおよび「外部ハードウェア相当部分」の回路図を下に示します。 (図をクリックすると拡大します)
gcc の「インライン・アセンブラ」で書いた ARMv7-M (Cortex-M3) 版の acc_calc_slot() 関数のリストを下に示します。 「中身」は armcc 版と同等です。
Cortex-M4 用の結果では、フラッシュのキャッシュ機構の構成が同じ STM32F446 と STM32F407 とがほぼ同じ結果で、別のキャッシュ機構を持つ STM32F303 がやや異なる結果となりました。 PSoC5LP にはフラッシュのキャッシュのヒット/ミスの回数を計測するレジ…
「富豪版」つまり出力ポートの数だけ UART を用意するハードウェア構成の上で、ソフトウェアも「富豪版」にする場合のブロック・ダイアグラムを下に示します。
1 本の MIDI ケーブル上を流れる MIDI 16 チャネルを 1 チャネルずつそれぞれ別のポートに分配する場合を考えると、出力ポートは 16 チャネル分が必要となり、これが実用上の必要十分なポート数の上限となります。 ムライボックスの実現方法には大きく分けて…
PCM5102A DAC のインパルス応答を観測してみました。 まず、PCM5102A のデータシートに掲載されている 8 倍オーバーサンプリング・フィルタ (直線位相特性) のインパルス応答の図 (Figure 16.) を下に示します。
PCM5102A DAC の出力スペクトラムを観測してみました。 とはいっても、手許にはスペクトルを観測できる機材は、PC のサウンド入力 + WaveSpectra しかないので、48 kHz とか 96 kHz とかの実使用のサンプリング周波数ではなく、最低の 8 kHz まで DAC のサン…
PCM5102A は TI/バーブラウン製のオーバーサンプリング・ステレオ・オーディオ DAC で、主要な特徴を挙げると次のようになります。 サポートするサンプリング周波数は 8 kHz 〜 384 kHz 16 / 24 / 32 ビット・データを受け付ける (SNR/ダイナミック・レンジ…
EG プリスケーラ部の CLK_EN 信号と SFT_SEL 信号の波形写真を示します。 まず、CLK_EN の波形です。
EG をディケイの DR = 13、Rof = 0〜3 の範囲に限りハイレートに対応させました。 アタックに関してはハイレートでは EG アキュムレータ部に (パラレルな実現では) バレルシフタが必要になりますが、ディケイについては EG アキュムレータの増分の定数が「1…
PSoC5LP UDB 上にローレート専用の EG アキュムレータ部分も実装して、連続してアタックとディケイを交互に繰り返す回路を作りました。 回路図を下に示します。 (図をクリックすると拡大します)
前回の psc4 コンポーネントによるプリスケーラ部に加え、バレルシフタ部も実装して EG クロック・イネーブル出力を得る回路全体を PSoC5LP の UDB 上に作成しました。 オシロで出力波形の確認および周波数カウンタでの出力周波数の確認をしてあります。 回…
標準ロジック・ファミリではバイナリ・レート・マルチプライア IC として、TTL の 74 シリーズでは 7497 (6 ビット)、メタルゲート CMOS の 4000B シリーズでは 4089B (4 ビット) などがあります。 それらの機能を一部簡略化し、ほぼ同等の PSoC コンポーネ…
今回の小ネタは「cy_psoc3_carry()」モジュールの「ラッパー」となる「cy_p3_carry」コンポーネントです。 cy_psoc3_carry() モジュールは、arithmetic / carry-chain モードのマクロセル 1 個分なので、実際の複数ビットの加減算回路を構成するには複数個並…
今回も PSoC3/4/5LP の UDB (Universal Digtal Block) 内の PLD/マクロセルによる回路の小ネタです。 LPM (Library of Parameterized Modules) ライブラリの「mmult()」コンポーネントによる乗算回路です。 mmult() は result = (dataa * datab) + sum の「…
OPL3 の AM LFO を構成する要素のうち、周期 210 のアップダウン・カウンタ部を PSoC の UDB (Universal Digital Block) の PLD/マクロセル部で実現してみた回路を下に示します。 この回路全体で、UDB ひとつ (PLD 2 組、マクロセル 8 個) におさまっていま…
実際に 32 ビット・アダーのコンポーネントを作って、キャリー・チェインの中を下から上まで 32 段分キャリーが抜ける時間を測定してみました。 全体の回路図を下に示します。
PSoC Creator がインストールされているフォルダの . . .\PSoC Creator\. . .\warp\lib\lcpsoc3\cpsoc3.vhdの中に arithmetuc / carry-chain モードのマクロセルひとつに「ほぼ」1 対 1 に対応する VHDL コンポーネントが以下のように宣言されています。 com…
PSoC Creator に組み込みの論理合成ソフトウェア「Warp」に関しては、PSoC Creator 付属のドキュメントとしては「小冊子」レベルの "warp_verilog_reference.pdf" しかありませんが、ググっていて Warp のユーザーガイドを見つけました。 Windows 95 や Wind…
論理合成ソフトウェアでは、ゲート・レベルのランダム・ロジックで描いた加算/減算器回路からマクロセルの arithmetic / carry-chain モードを利用する回路に自動的に変換されるようにはなっていないので、ユーザが verilog コードで明示的に示してやる必要…
OPL3 の AM LFO を構成する 7 ビット・アップダウン・カウンタ部分を、 PSoC 5LP の UDB (Universal Digital Block) 内の PLD/マクロセルのみを使う方法で実装したところ 1 UDB 内のリソースで実現することができました。 7 ビット・カウンタなので、本来 UD…
2016 年 3 月 30 日の記事 (→こちら) で検証したように、PSoC5LP の DFB (Digital Filter Block) のデータ RAM 容量 (128 ワード) の制限のため、一般的な IIR バイクアッド・フィルタを使用する場合には 1/12 オクターブバンド・フィルタ 8 バンド分 (IIR 2…
ブレッドボード上に実際の MF10 の回路を組んで特性の測定を行いました。 フィルタ設計の結果得られた半端な値の抵抗は、次のように複数の抵抗を組み合わせて近似しました。 23.129 kΩ → (22 kΩ_F + 1.1 kΩ_J) = 23.1 kΩ 380.82 kΩ → (470 kΩ_F // (1 MΩ_F +…
ディジタル・フィルタによる実現の後は、サンプル値信号処理システムであるスイッチト・キャパシタ・フィルタで 1/12 オクターブ・バンド・フィルタを作ってみることにしました。 具体的なデバイスとしては、以前に VCF としての応用も試した MF10 (MAXIM 製…
PSoC5LP の Filter コンポーネントを利用して生成される DFB プログラムでは、IIR バイクアッド・フィルタの計算に、前処理 6 サイクル、2 次セクション 1 段分の計算に 10 サイクル、後処理に 4 サイクル必要になります。 6 次 BPF の実現には 2 次セクショ…