ΔΣーADC実験編 その16 2nd order CIC
filter
sampling freq. =1.775MHz (fs=56.8MHz/32)
:output=100KHz
1.Lattice
Diamondのお陰です.
Lattice
DiamondでbuildできたHDL記述が、ispLEVERでは、errorで、buildできません....
一方、Lattice
Diamondでbuildすると、OKなのです、不思議。
Diamondでも、errorは出るのですが、buildできてしまいます。
そして、Setupを覗いてみると、errorです。
しかし、Holdを見て見ると、OKなのです。
ちゅうことは、
ispLEVERでは、setupでerrorが出たら、そこで中止。
Diamondでは、Setupでerrorでも、
HoldがOKなら、JEDEC
fileを生成してくれるようです、嬉しいぞ。
それから、Functional
simulationの件
///////////////////////////////////////////////////
PUR PUR_INST
(.PUR (RST_PULSE));
GSR GSR_INST (.GSR
(GSRNET));
///////////////////////////////////////////////////
とだけ、書いておけばOKです。
2.SINC filterのMと、CIC
filterのM (R)は、意味が違う
長い間、この事を、理解できませんでした。
SINC
filter
1/M*(1-z^-M)/(1-z^-1)
このMは、M分割の移動平均のM。
ですので、SINC
filterを通したからと言って、decimationできた訳では、ありません。
CIC
filter
このM (R)は、decimationの比率の事です。
つまり、CICフィルタを使って、decimationを意図すれば、
CICフィルタを通す -> 「decimatinが実行された」
と、言う事になります。
そんなら、CIC filterのM分割のMは、何処へ行ったんでしょう?
normalized
Full
Precision
(Xilinx社の CIC core generator使用)
Full
Precisionにすると、normalizedに比べて、dB値が、一挙に増えている事から
M分割のMを省略すると、Full
Precisionになる模様です。
つまり、CIC filterでは、
M分割は、scaling
factorとして、省略されているようです。
(出典 ALTERA社 アプリケーションノート AN455)
CICフィルタの総応答の式に、Mが無い!
もひとつ、やっかいな事が、あります。
3.Decimation
filterについて
例えば、
sampling freq.
(fs)を1/2にdecimateする時(f2s=fs/2)
decimation
filterの設計では、
新しいナイキスト周波数 f2s/2
(=fs/2/2=fs/4).を、遮断周波数に設定すると思います。
そうしますと、このLPFに、SINCフィルタを、使用するとすれば
設計は、こうなりませんか?
一方、M=2のSINC filterの振幅特性は、こうなります。
ですので、
サンプリング周波数を1/2にdecimateする時は
M=4と、SINC
filter
のM=2の倍に、しなければならないと、思うのです。
実際には、M=4で設計されないみたいです。
ALTER社のアプリケーションノート AN455を見てみますと、(出典:AN455)
このように、CICフィルタの遮断周波数は、緩く設定され
補償フィルタで、必要な、遮断周波数を決定するようです。
なんでやねん.....
どうやら、通過帯域の平坦性が、関係している模様です。(推測です)
CICフィルタは1981年にEugene
Hogenauerによって提案されました。CIC
フィルタに関する詳細は、「An economical class of digital
filters for
decimation and interpolation」、Eugene B. Hogenauer、IEEE
Transactions on
Acoustics, Speech and Signal Processing、pp.
155-162、1981 年4
月を参照
してください。
(ALTERA社 AN455より抜粋)
とても、一回では、書けない..........
H22.8.27