AR# 32146

10.1i EDK Sp3 - xps_deltasigma_dac_v1_00_a の既知の問題 (GPIO を介したソフトウェア アクセス)

説明

EDK 10.1, 9.2, Sigma, Delta, XPS Delta-Sigma DAC (v1.00a), dsdac_v1_00_a, dsdac_v1_01_a, dsdac_v1_11_a, xps_deltasigma_dac_v1_00_a,

Sigma Delta DAC で提供されているソフトウェア例が機能しません。
Sigma Delta DAC データ出力が破損するのはなぜですか。
Sigma Delta DAC で Read_en 信号を 1 クロック サイクル生成する方法を教えてください。
この問題の回避策はありますか。

提供されている Sigma Delta DAC ソフトウェア例 (特に xdsdac_intr_gpio_example.c) では、ソフトウェア サンプルから生成されるリード イネーブル (Read_En) 信号が原因で出力データが破損してしまいます。DAC データを Read_En 信号として機能させるには、1 クロック サイクル間 HIGH にする必要があります。ソフトウェアで Read_En 信号を正確に 1 クロック サイクル間アサートすることは不可能です。この問題を回避するには、次の解決策を参照してください。

ソリューション

EDK ソフトウェアの $:\Xilinx\10.1\EDK\sw\XilinxProcessorIPLib\drivers\dsdac_v1_11_a\examples というディレクトリに 3 つのソフトウェア例 (割り込みベースの例 2 つと割り込みベースでない例 1 つ) が含まれています。

1. xdsdac_l0_example.c および xdsdac_l1_intr_example.c : GPIO は使用されませんが、リード イネーブル (Read_En) 信号を挿入する箇所に次のコメントがあります。
/*
* At this stage the Read_En signal should be driven high for a
* duration of OPB clk so that the data in Data FIFO will get converted.
*/
2. xdsdac_intr_gpio_example.c : Read_En 信号を生成するのに GPIO が使用されます。READ_En 信号は 1 クロック間 High に保持する必要があリますが、ソフトウェアでの生成ではこれは不可能です。GPIO の幅が不規則であるため、DAC データの Read_En が破損してしまいます。

回避策
ソリューション 1 :

提供されている例を機能させるには、2 つのフリップフロップを使用して Read_En 信号をちょうど 1 クロック サイクル間 High にします。最初のフリップフロップ GPIO はクロック入力として使用し、入力データは High に接続します。2 つ目のフリップフロップには最初のフリップフロップの出力データ (Q) を入力し、クロックにはシステム クロックを使用します。2 つ目のフリップフロップの出力を READ_En として Sigma Delta DAC に入力します。

添付
1. READ_En 信号用のフリップフロップ追加のダイアグラム
2. Spartan-3A DSP 用の EDK デモ プロジェクト
AR# 32146
日付 12/15/2012
ステータス アクティブ
種類 一般