送信経路の生産テスト用のCDMA上りリンク波形発生器のFPGA
要約
マキシムは、セルラ電話器の送信経路内に使われる当社のさまざまな製品の回路評価用に、構築が容易なCDMAベースバンド変調発生器を設計しました。この設計は、高密度のプログラマブルロジックデバイス、水晶発振器、および1組のマッチング済みローパスフィルタを組み合わせて、所望の直交出力波形を提供するものです。コンプレックスプログラマブルロジックデバイス(CPLD)に組み込まれたディジタル回路は、IS95規格に基づいています。4.9152MHzの水晶発振器がCY37256 CPLDを駆動して1.2288MHzのディジタル出力を生成し、これが、正確なI/Q (同相および直交)ビットストリームを出力ローパスフィルタに供給します。性能の確認は、MAX2361トランスミッタIC上で測定したACPRの結果と、基準信号源としてAgilent E4433Bの任意波形発生器を使用して観測したACPRとを比較することによって行いました。実験室で測定したACPRは、0.5dB以内で一致することがわかりました。
このアプリケーションノートでは、CDMA上りリンク波形発生器のディジタル部分について述べ、設計上の問題点のいくつかと、その対処方法について説明します。
追加情報
はじめに
マキシムは、セルラ電話器の送信経路内に使われる当社のさまざまな製品の回路評価用に、構築が容易なCDMAベースバンド変調発生器を設計しました。この設計は、高密度のプログラマブルロジックデバイス、水晶発振器、および1組のマッチング済みローパスフィルタを組み合わせて、所望の直交出力波形を提供するものです。コンプレックスプログラマブルロジックデバイス(CPLD)に組み込まれたディジタル回路は、IS95規格に基づいています。4.9152MHzの水晶発振器がCY37256 CPLDを駆動して1.2288MHzのディジタル出力を生成し、これが、正確なI/Q (同相および直交)ビットストリームを出力ローパスフィルタに供給します。性能の確認は、MAX2361トランスミッタIC上で測定したACPRの結果と、基準信号源としてAgilent E4433Bの任意波形発生器を使用して観測したACPRとを比較することによって行いました。実験室で測定したACPRは、0.5dB以内で一致することがわかりました。
このアプリケーションノートでは、CDMA上りリンク波形発生器のディジタル部分について述べ、設計上の問題点のいくつかと、その対処方法について説明します。
ディジタルシステムの概要
典型的なCDMA発生器
図1は、CDMA上りチャネル発生器のブロック図を示しています。CDMA発生器は、以下の項目で構成されています。
- ディジタルデータ源(セルラ電話では、符号化された音声データになります。)
- 符号化およびインターリービング機能
- Walsh符号発生器
- 42ビット長の最長PN (疑似雑音)発生器(以下「長符号」)
- 3つの2を法とするミキサまたは排他的論理和ゲート
- 2つの「短符号」、つまり15ビットのPN最長シフトレジスタ
- 1/2チップ遅延(813.8ns/2つまり406.9ns)
- 1組のマッチング済みFIR (Finite Impulse Response:有限インパルス応答)ローパスフィルタ
図1. 典型的なCDMA上りリンク発生器
この作業で行われた近道
実用的な測定を目的とした場合、符号化をある程度簡素化することが可能でした。スペクトルへの貢献が最小限であることが判明したため、順方向誤り訂正(FEC)およびインターリービングに関連する要素は排除しました。CELPコーデックデータ源をシミュレートするため、7ビットの最長PN発生器を使用しました。
42ビットの長符号を、31ビット長PNの最長シフトレジスタとして実装しました。このステップは、CPLD内にレジスタを確保するため、また設計の確認を早めるために採用しました。1.2288MHzでシフトする42ビットのPN発生器は、最大360万秒を費やしてこのサイクルを繰り返します。(単純な計算からわかるように、お客様のテストベンチを41日間、平静な状態に保つ必要があるということです。) 42ビットのPN発生器の確認を早めるための1つの方法は、クロックの動作を高速化することですが、クロックが20MHzで動作するとしても、サイクルを繰り返すのに、依然として2.5日を要することになります。20MHzで動作する31ビットのPN符号は、2分未満でサイクルを繰り返し、より妥当なテスト時間を実現します。
出力でのディジタル(FIR)ローパスフィルタの代わりに、インダクタとコンデンサを用いた単純な受動フィルタを使用します。このアプリケーションノートでは、これらのフィルタの複雑性と重要性を解説していますが、ここで対象とするフィルタの設計については、位相等化器セクションを備えた、600kHzの7次楕円ローパスとして実装しました。性能上の重要な点は、740kHzでは-45dBc、881kHz以上では-65dBcに設定するということです。送信スペクトルの帯域幅、ロールオフの割合、および観測したACPRの結果は、これらのフィルタの品質に直接関わってきます。
図2は、この作業で実装した回路の簡略ブロック図です。
図2. CDMA上りリンク発生器の実装
設計の詳細
このアプリケーションノートでは、設計と実装のすべてを細部にわたって記載しているわけではありません。その代わり、いくつかの重要なモジュールを使用して、設計の手法とソリューションを説明しています。読者にVerilogの専門家となっていただくことが目的ではありません。
Walsh符号発生器
Walsh符号発生器は通常、文献内では行列表記を用いて説明されています。
式1Walshベクトルの構造では、開始シードW1 = 0と仮定します。Walsh行列の右下部、つまり式1で上に横線がついたWnは、行列内の各項目のビット単位の論理反転を示すものです。Walsh行列内の各行は、いくつかの排他的論理和のゲートと6ビットカウンタを用いて生成することができます。この考え方を採用するまでは、Walsh行列は、Verilogコードを用いて生成し、これをCPLDに収めるために気の遠くなるほどの作業を要するモジュールと思われていました。ここでは単なる例として、Verilogコードのリストを示しています。
module walsh( clk, resetn, select, wout); | ||
//Walsh code generator. Selects one out of N = 64. | ||
input clk, resetn; | ||
input [5:0]select; // vector to select which walsh code is generated | ||
output wout; | ||
reg [5:0] cntval; | ||
// intermediate terms to keep output exor size small. | ||
reg [5:0] p ; | ||
reg t01, t23, t45; // these registers are used to pipeline the EXOR section | ||
reg s0, s1; // more pipeline registers for EXOR | ||
always ? (negedge resetn or posedge clk) | ||
begin | ||
if(!resetn) // Is it time to reset?? | ||
begin | ||
cntval <= 0; // initialize the counter register | ||
end | ||
else | ||
begin | ||
cntval <= cntval + 1; //Warp does an efficient job implementing this. | ||
end | ||
end | ||
always ? (negedge resetn or posedge clk) | ||
begin | ||
if(!resetn) // Is it time to reset?? | ||
begin | ||
p[5:0] <= 0; // initialize all registers associated with this section. | ||
t01 <= 0; | ||
t23 <= 0; | ||
t45 <= 0; | ||
s0 <= 0; | ||
s1 <= 0; | ||
end | ||
else | ||
begin | ||
p <= cntval & select ; | ||
t01 <= p[0] ^ p[1] ; // the ^ symbol is the exclusive OR operation. | ||
t23 <= p[2] ^ p[3] ; | ||
t45 <= p[4] ^ p[5] ; | ||
s0 <= t01 ^ t23; | ||
s1 <= t45; | ||
end | ||
end | ||
assign wout = s0 ^ s1 ; // a last bit of async. Logic to generate the final output | ||
endmodule |
上記のVerilogコードでは、慎重に演算を構築して同期ロジックを最大限に活用していることに着目してください。同期方式を使用すると、以下の2つの点で設計に役立ちます。
- 準安定性の条件が最小化される
- ロジックをCPLDのアーキテクチャに効率的に割り当てることができる
また、Walsh発生器のVerilogコードは、信頼性のある設計のためのいくつかの重要な点を示しています。各「always ?」セクションの初めに、リセット条件に対するテストを行い、次に、必要に応じて関連レジスタをすべてプリセットまたはクリアします。常に既知の状態で開始することが、信頼性のある動作をもたらす確実な設計方法です。また、6ビットカウンタを実装するための別のセクションも設けられています。さらに別のセクションでは、出力に対して正しいWalshベクトルを選択するための排他的論理和のロジックを作成しています。最後に、Verilog内の//記号はコメントの記載に使用されていることに留意してください。
PN発生器
CDMA発生器は4つのPN発生器を使用します。最長符号シフトレジスタを実装するためには、単純フィードバック方式、およびモジュール方式という2つの基本的な方法が存在します。(図3を参照)
図3. 単純方式とモジュール方式のPN発生器の例
単純PN発生器の使用は、採用するロジックに比べて符号レート(チップ)が遅く、フィードバックタップの数が小さい場合に受け入れることができます。タップの数が増えると、この単純な方法では限界を見せ始めます。これは、複数レベルの非同期ロジックによる遅延が連続して加算され、使用可能な最大クロック速度を制限するためです。この設計では、ランダムデータをシミュレートするために単純PN発生器を使用し、4.8kHzのクロックで同期しています。
モジュール方式のPN発生器は、EXOR演算がリニアレジスタの各段で並行に実行されるので、より多くのロジックゲートを使用します。Verilogコードは、必要時にEXOR構造を使用し、それ以外では単純なD型フリップフロップを使用するよう記述されているので、CPLD実装における不利益はそれほど深刻なものではありません。
この設計に使用されるCDMA特有の多項式を以下に示します。
短符号I:
I(X):= X15 + X13 + X9 + X8 + X7 + X5+1短符号Q:
Q(X):= X15 + X12 + X11 + X10 + X6 + X5 + X4 + X3 + 1長符号:
LC(X):= X42 + X35 + X33 + X31 + X27 + X26 + X25 + X22 + X21 + X19 + X18 + X17 + X16 + X10 + X7 + X6 + X5 + X3 + X2 + X1 + 1短符号Iを実装するためのVerilogコードは以下のとおりです。
module i_code_s( clock, resetn, i_code_out); | ||
// Generate the 15-bit PN code using the polynomial | ||
// x15 + x13 + x9 + x8 + x7 + x5 + 1 | ||
input clock, resetn; | ||
output i_code_out; | ||
reg [15:1]pi; | ||
always ?(posedge clock or negedge resetn) | ||
if(!resetn) | ||
begin | ||
pi <= 15';b111111111111111; // init the shift register with ones | ||
end | ||
else | ||
begin // here starts the modular shift register | ||
pi[1] <= pi[15]; | ||
pi[5:2] <= pi[4:1] ; | ||
pi[6] <= pi[5] ^ pi[15]; | ||
pi[7] <= pi[6]; | ||
pi[8] <= pi[7] ^ pi[15]; | ||
pi[9] <= pi[8] ^ pi[15]; | ||
pi[10] <= pi[9] ^ pi[15]; | ||
pi[13:11] <= pi[12:10]; | ||
pi[14] <= pi[13] ^ pi[15]; | ||
pi[15] <= pi[14]; | ||
end | ||
assign i_code_out = pi[15]; | ||
endmodule |
この実装では、5つのEXOR構造体のみを使用していますが、完全なモジュール構造を実装する場合には、14のEXOR構造体が必要となります。これは、必要なロジックだけを統合する場合にVerilogが利用可能であることを示すものです。
ここで、その他の2つの項目を指摘しておきます。1つ目として、最長PN発生器はシフトレジスタ内がすべて「0」である状態を許容しません。連続したロー状態以外は出力されないからです。頑丈な設計にするためには、すべてが「0」の状況を検知し、必要に応じて「1」を挿入するロジックを設計に含める必要があります。
留意すべき2つめの項目は、最長PN発生器は、全シーケンス内において「1」と「0」の数がほぼ完全に均衡を保つということです。「1」の数は「0」の数よりも1つだけ多くなります。これによって少量のDCオフセットが生成され、無線内のミキサまたは変調器の動作が中断されるおそれがあります。標準のCDMAは、シーケンスに特別な「0」状態を挿入してDCに均衡を持たせ、変調器が正常な動作を維持できるようにしています。
図4. CDMA発生器の回路図
図4には、インサーキットのプログラミングサポートについての詳細は含まれていません。この小規模な回路を追加すると、パーソナルコンピュータのパラレルプリンタポートに専用のケーブルを接続できるようにするための10ピンヘッダが必要となります。また、Windows®ベースのPCで、Cypress Semiconductor社製の特別なソフトウェアを実行します。このソフトウェアはビット構成ファイルをCY37256にダウンロードするものです。これは、ディジタルシステムを実装する場合の強力な手法です。これにより、コード内の誤りを即座に発見することができ、回路内でCPLDを再プログラムして直ちにテストを再開するという作業が簡単にできるようになりました。
結果
出力ローパスフィルタを含む完全なCDMA上りリンク発生器を使用して、CDMAアプリケーションでのMAX2361に対してACPRをテストしました。次に、ベースバンドI/Q CDMA信号源としてAgilent E4433Bを使用して、同様のテストを行いました。ACPRの結果は、2つの異なるソース間でみごとに一致しました(±0.5dB以内)。ACPR結果に対する出力フィルタの重要性はいくら強調しても足りないほどであり、別のアプリケーションノートで取り上げるべきテーマです。
参考資料
- R.C. Dixon, Spread Spectrum Systems. New York: John Wiley & Sons, 1976
- David P. Whipple, "North American Cellular CDMA", Hewlett-Packard Journal, December 1993, pp. 90-97
- Ken Coffman, Real World FPGA Design with Verilog. Upper Saddle River:Prentice Hall PTR, 1999, ISBN 0-13-099851-6
- Samir Palnitkar, Verilog HDL, A Guide to Digital Design and Synthesis Sunsoft Press/Prentice Hall, 1996, ISBN 0-13-451675-3
- Special thanks to Lane Hauck at Cypress Semiconductor for his advice and guidance in learning Verilog and the nuances of CPLD design.
- Special thanks for Dave Devries of Maxim Integrated Products for his collaboration and certain key insights during this project.
著者について
この記事に関して
製品
製品カテゴリ
{{modalTitle}}
{{modalDescription}}
{{dropdownTitle}}
- {{defaultSelectedText}} {{#each projectNames}}
- {{name}} {{/each}} {{#if newProjectText}}
- {{newProjectText}} {{/if}}
{{newProjectTitle}}
{{projectNameErrorText}}