主要内容

このページの翻訳は最新ではありませ。

デジタルダウンコンバーターのフィルターチェインのHDLへの実装

この例では、DSP系统工具箱™および定点设计师™を使用して,全球移动通信系统(GSM)仕様を満たす,デジタルダウンコンバーター(DDC)のフィルターチェインを実装する3ステージのマルチレート固定小数点フィルターを設計する方法を示します。

滤波器设计高密度脂蛋白编码器™を使用して,同じ3ステージのマルチレート固定小数点フィルターの合成可能なHDLコードを生成します。最後に,金宝app仿真软件®とHDL校验™女士を使用して固定小数点フィルターを同時にシミュレーションし,生成されたHDLコードで同等の仿真软件動作モデルと同じ結果が得られることを確認します。

デジタルダウンコンバーター

デジタルダウンコンバーター(DDC)はデジタルラジオの主要な要素です。DDCは,デジタルラジオの高い入力サンプルレートを処理が容易な低いサンプルレートに変換するために必要な周波数変換を実行します。この例では,DDCは約70 MHzで動作し,レートを270 KHzに減少させなければなりません。

問題をさらに制約するために,GraychipのGC4016多重标准四,DDC芯片のDDCの1つをモデル化します。GC4016は,他の機能と共に,次のフィルターを提供します。プログラム可能な間引き係数(8 - 4096)を含む5ステージ中投フィルター,2で間引きし,プログラム可能な16ビット係数をもつ21タップ冷杉フィルター,および2で間引きし,プログラム可能な16ビット係数をもつ63タップ冷杉フィルター。

DDCは,数値制御発振器(NCO)と入力信号をベースバンドに直交ダウンコンバートする混合器で構成されます。次に,カスケード接続積分器櫛形(CIC)フィルターによってベースバンド信号がローパスフィルター処理された後,2つの冷杉間引きフィルターが適用されて追加処理用に約270 KHzの低いサンプルレートが達成されます。最終段階では,用途に応じて,目的のサンプルレートを達成するために信号を内挿または間引きするリサンプラーを使用する場合もあります。リサンプラーを使用することで,フィルター処理をさらに実行することもできます。標準のDDCのブロック線図を以下に示します。

この例では3ステージのマルチレート間引きフィルターを紹介します。このフィルターは中投フィルターと2つの間引き冷杉フィルターで構成されます。

GSM仕様

目的のgsm帯域幅はは160 khzです。したがっしたがっ,ddcの3ステージのフィルターは,0.1 dbのピークツーピーク以の过帯域帯域内において,このに示すバンド拒否マスクのgsmでは,フィルターは100 khzで18dbの减衰を达成しことことわかります。

さらに,gsmでは,270.833 kspsのシンボルレートががられます.graychipののサンプルサンプルは69.333 mhzのクロックレート同じので,入力を270.833 khzにダウンサンプリングなければません。そのためには。间引きされた3ステージのマルチレートフィルターが必要です。

カスケード接続積分櫛形(CIC)フィルター

中投フィルターは,高い間引き(または内挿)レートを達成することができ,乗数なしで実装されるので,非常に便利なマルチレートフィルターです。中投はアップサンプラーまたはダウンサンプラーで再帰的にカスケードされた実装ボックスカーフィルターです。これらの特性により,中投は高いレートで稼働するデジタルシステム(特にシステムをASICやFPGAに実装する場合)で非常に便利です。

中投には望ましい特性があります,がいくつかの欠点もあります。最も顕著な点は,sincに似た応答が原因で通過帯域領域で減衰が発生することです。その理由から,中投の後に補正フィルターが使用されることがあります。中投によって発生した低下を補正するために,補正フィルターは通過帯域領域に逆sinc応答をもたなければなりません。

これらのフィルターの設計とカスケードは,グラフィカルユーザーインターフェイスのフィルターデザイナーで実行できます。

しかし,ここではコマンドライン機能を使用します。

次のようにCICを定义します。

R = 64;%大量毁灭的因素D = 1;%微分延迟Nsecs = 5;%分段数猫头鹰= 20;输出字长cic = dsp.cicdecimator(“DecimationFactor”,r,“NumSections”,nsecs,...'fixedpointdatatype''最小部分字长度'...“OutputWordLength”,猫头鹰);

信息メソッドを呼び出して中投の詳細を表示できます。

信息(CIC)
ans = 9x56 char array'离散时间fir multioriles filter(Real)''------------------------------------------''过滤器结构:级联集成商 - 梳取Decimator'抽取因子:64'''''差异延迟:1'部分数:5''稳定:是''线性阶段:是(类型2)'''

69.333 MHzの入力レートで動作する中投フィルターの論理的な振幅応答をプロットして分析します。

Fs_in = 69.333 e6;fvt = fvtool(中投,'FS',fs_in);fvt.Color =.'白色的'

最初に目に付くのは,cicフィルターに大厦通话帯域はゲインがあることですこれはです.cicの振幅応答応答,fvtoolでで设定をはししでする设定をし正式化することができます.cicフィルター応答をdcにおけるゲインが0 dbになるよう正式化する,次次のフィルター重ね重ねれたフィルター応答解析がに容易なりなりなりなりなり

fvt。NormalizeMagnitudeto1 =“上”

注意すべきもう1つの点は,通過帯域領域をズームすると,中投に80 KHzにおける約-0.4 dBの減衰(低下)が見られます。これは,目的の帯域幅内です。本質的に,中投フィルターはボックスカーフィルターのカスケードなので,低下を招くsincに似た応答をもちます。この低下は,次のステージで冷杉フィルターによって補正する必要があります。

轴([0 .1 -0.8 0]);

补正派

如DDCフィルターチェインの第2段階では,中投によって生じた通過帯域の低下を補正して,2で間引く必要があります。中投はsincに似た応答をもつので,通過帯域で逆sinc応答をもつローパスフィルターで低下を補正できます。このフィルターは1/64の入力サンプルレート(69.333兆赫)で動作するので,そのレートは1.0833 MHzです。逆sinc通過帯域応答でローパスフィルターを最初から設計する代わりに,中投補正(逆)sinc応答で直接間引きを設計できる関数を使用します。

%过滤器规格Fs = 1.0833 e6;%采样频率69.333MHz/64apas = 0.01;% dBastop = 70;% dB成就= 80年e3;%Hz通带 - 边缘频率Fstop = 293年e3;% Hz阻带边频率%设计抽取滤波器。D和nsec已在上面定义为分别差异延迟和部分数。补偿器= dsp。CICCompensationDecimator (“SampleRate”,fs,...“CICRateChangeFactor”,r,“CICNumSections”,nsecs,...“CICDifferentialDelay”D“PassbandFrequency”成就,...“StopbandFrequency”Fstop,“PassbandRipple”,通过,...“StopbandAttenuation”,astop);现在我们必须定义多速率过滤器的定点属性。%默认情况下,累加器和乘数的定点属性%设置以确保使用全精度算术,即no百分比量化发生。默认情况下,16位用于表示%滤波器系数。既然这是我们想要的,就不要改变%是必需的。

信息コマンドを使用して,アキュムレータと製品の語長(自動的に決定されます)を含む冷杉補正フィルターの包括的なレポートを取得できます。

信息(补偿器)
ans = 10x56 char array'离散时间fir multioriles filter(Real)''----------------------------------------''过滤器结构:直接形成FIR多相排列器'抽取因子:2'“多相长度:11”滤波器长度:21'稳定:是''线阶段:是的(类型1)''''算术:双'

逆sincフィルターでcicをカスケードすると,cicによってによって生物しし帯域帯域のどうがれたどうかをできできできますますできできでき

Ciccompcascade =级联(CIC,补偿器);fvt = fvtool(cic,补偿器,ciccompcascade,'FS'(Fs_in Fs_in / 64, Fs_in]);fvt.Color =.'白色的';fvt。NormalizeMagnitudeto1 =“上”;轴([0 .1 -0.8 .8]);传奇(fvt“中投”“补偿”“级联”);

2つのフィルターのカスケードのフィルター(CIC応答および対応する冷杉応答の间)

3ステージ冷杉間引き

前に示したよう,gsmスペクトルマスクでは,100 khzでの18 dbの减衰が要求されます减衰,最后の第3ステージは,シンプルな等ローパスフィルターを试し试し。(既定)に量子化するがありますます。

N = 62;% 63水龙头Fs = 541666;% 541.666千赫成就= 80年e3;fstop = 100e3;spec = fdesign.decimator(2,低通滤波器的'n,fp,fst'、N、成就、Fstop, Fs);给通频带更多的权重Decimator = Design(规格,“equiripple”“Wpass”2,“SystemObject”,真正的);

既定でマルチレートフィルターを定義するとき,完全精度を維持するためにアキュムレータのワードサイズが自動的に決定されます。しかし,ここでは20ビットの出力しかないので,出力形式を20ビットの語長と-12の小数部の長さに設定します。最初に,FullPrecisionOverrideプロパティの既定値を真正から假に変更しなければなりません。

杀害多人者。FullPrecisionOverride = false;杀害多人者。OutputDataType =“自定义”;Decimator.RoundingMethod =.'最近';decimator.oplflowation =.“饱和”;decimator.customoutputdatatype = numerictype([],20,-12);

信息メソッドメソッドを使て,フィルターの详细を表示でき。

信息(Decimator)
ans = 10x56 char array'离散时间fir multioriles filter(Real)''---------------------------------------- ' 'Filter Structure : Direct-Form FIR Polyphase Decimator' 'Decimation Factor : 2 ' 'Polyphase Length : 32 ' 'Filter Length : 63 ' 'Stable : Yes ' 'Linear Phase : Yes (Type 1) ' ' ' 'Arithmetic : double '

多段のマルチレートDDCフィルターチェイン

3つのフィルターを設計して量子化したので,正規化された中投と2つの冷杉フィルターをカスケードして,全体的なフィルター応答を取得できます。ここでも,正規化された振幅を使用して,カスケードされたフィルター応答が必ず0分贝となるよう正規化します。

DDC = Cascade(CIC,补偿器,抽取器);fvt = fvtool(DDC,'FS',fs_in);fvt.Color =.'白色的';fvt。NormalizeMagnitudeto1 =“上”;fvt.numberofpoints = 8192 * 3;轴([0 1 -200 10]);% 放大

全体的なフィルター応答がGSM仕様を満たすことを確認するために,GSMスペクトルマスクをフィルター応答に重ねて表示できます。

drawgsmmask;

また,通讯帯域が未満いう要件も満たすがますいうこと,轴,轴コマンドコマンドがて要件も満たすが未満てaxisももが。ズームインすることによって确认ますます。

轴([0.009 -0.08 0.08]);

通過帯域リップルが0.1 dBピークツーピークのGSM要件を満たしていることがわかります。

硬件描述语言(VHDL)コードの生成

フィルターデザイナーは,以下のダイアログからのHDLコードの生成もサポートします。

フィルターデザイナーとコマンドラインから硬件描述语言(VHDL)またはVerilogコードを生成して,硬件描述语言(VHDL)またはVerilogファイルのベンチマークをテストすることができます。また,多くのオプションを指定して独自のコード記述の標準とガイドラインを満たし,生成されたHDLコードをカスタマイズすることもできます。

しかし,ここでは,コマンドライン机构を使てhdlコードを生成します。

仕様を満たす3ステージのマルチレート固定固定固定小数点フィルターが作物成さたので,hdlコードを生成できでき。

中投と2つの冷杉フィルターをカスケードして硬件描述语言(VHDL)を生成します。

整合器からからされる20ビットの语长と18ビットの小数部の长をもつ小数点データ长さを同じ値のs20,18に设定し。

%杂环胺=级联(hcic、hcfir hpfir);workingdir = tempname;inT = numerictype(1、20、18);generatehdl(监护系统“InputDataType”inT,...“名字”“过滤”“开发”硬件描述语言(VHDL)的...“TargetDirectory”fullfile (workingdir“hdlsrc”));
### # start VHDL code generation process for filter: filter ### ##< a href = " matlab:编辑(“/ tmp / Bdoc21a_1689909_99196 / tp00df6f5e_2668_4b48_bb90_5176e30bf87e hdlsrc / filter_stage1.vhd ') " > / tmp / Bdoc21a_1689909_99196 / tp00df6f5e_2668_4b48_bb90_5176e30bf87e hdlsrc / filter_stage1。vhd < / > # # # # # #开始代filter_stage1 VHDL的实体开始代filter_stage1硬件描述语言(VHDL)架构# # # # 1:部分积分器# # # # 2:部分积分器# # # # 3:部分积分器# # # # 4:部分积分器# # # # 5:部分积分器# # # # 6节:梳子# # # # 7节:梳子# # # # 8节filter: filter_stage1 VHDL code generation process for filter: filter_stage2 VHDL code generation process for filter: filter_stage2 VHDL code generation process for filter: filter_stage2< a href = " matlab:编辑(“/ tmp / Bdoc21a_1689909_99196 / tp00df6f5e_2668_4b48_bb90_5176e30bf87e hdlsrc / filter_stage2.vhd ') " > / tmp / Bdoc21a_1689909_99196 / tp00df6f5e_2668_4b48_bb90_5176e30bf87e hdlsrc / filter_stage2。vhd ### #开始生成filter_stage2 VHDL实体### #开始生成filter_stage2 VHDL架构### ##成功完成filter的VHDL代码生成过程:filter_stage2 ### ### ### ###< a href = " matlab:编辑(“/ tmp / Bdoc21a_1689909_99196 / tp00df6f5e_2668_4b48_bb90_5176e30bf87e hdlsrc / filter_stage3.vhd ') " > / tmp / Bdoc21a_1689909_99196 / tp00df6f5e_2668_4b48_bb90_5176e30bf87e hdlsrc / filter_stage3。vhd ###开始生成filter_stage3 VHDL实体### #开始生成filter_stage3 VHDL架构### #成功完成filter的VHDL代码生成过程:filter_stage3 ### #< a href = " matlab:编辑(“/ tmp / Bdoc21a_1689909_99196 / tp00df6f5e_2668_4b48_bb90_5176e30bf87e hdlsrc / filter.vhd ') " > / tmp / Bdoc21a_1689909_99196 / tp00df6f5e_2668_4b48_bb90_5176e30bf87e / hdlsrc /过滤器。VHDL  ###开始生成filter VHDL entity ###开始生成filter VHDL架构### #成功完成filter VHDL代码生成过程:filter ### # HDL时延是2个样本

金宝appSimulinkにおけるModelsimをを使用したhdl同时シミュレーション

生成されたHDLコードで仿真软金宝app件モデルと同じ結果が得られることを確認するために,高密度脂蛋白校验女士を使用して仿真软件でHDLコードの同時シミュレーションを行います。2つの信号パスを含むビルド済みの仿真金宝app软件モデルがあります。1つの信号パスは3ステージのマルチレートフィルターの仿真软件の金宝app動作モデル結果を生成します。もう1つのパスは,ModelSim®を使用して,生成した硬件描述语言(VHDL)コードのシミュレーション結果を生成します。

open_system (“ddcfilterchaindemo_cosim”);

金宝app仿真软件モデルのボタンをダブルクリックして,ModelSimを開始します。ModelSimをシステムパス上にインストールしなければならないことに注意してください。ModelSimによってHDLコードが自動的にコンパイルされてシミュレーションが初期化され,波形ビューアーが開きます。

Modelsimの设备ができたら,S金宝appimulinkモデルを実行。これにより,modelsimを使用した同时シミュレーションシミュレーション実実れ,时间范围が自动的に开いて结果が表示さます。

ロジックアナライザーを使用して,結果を表示します。

結果の検証

一番上のトレースは励起チャープ信号です。“ref”というラベルが付けられた次の信号は,3ステージのマルチレートフィルターの仿真软件金宝app動作モデルによって生成された基準信号です。スコープで“cosimというラベルが付けられた一番下のトレースは,3ステージのマルチレートフィルターの生成されたHDLコードのModelSimシミュレーション結果です。最後のトレースは,金宝app仿真软件の動作モデル結果とModelSimのHDLコードのシミュレーションの間の誤差を示します。

まとめ

いくつかのmathworks™制品をを使し,gsmアプリケーション用のddcの3金宝appとHDL验证器MS経由で型号でシミュレートシミュレートたたたた,生成コードをして。