CoreGenの設定
CoreGen画面の中で特性を確認できます。通過域はコンポジット信号、阻止域はサンプルレート4,864kHzへのコンポジット信号の折り返しです。
サンプルレートの変換比16、CIC4段にしてあります。(3段にしたらうまく動かず・・・)
通過域(0~55kHz): 0 ~ 0.001414 [πrad/sample]
阻止域(4,809~4,919kHz): 0.1236 ~ 0.1264 [πrad/sample]
この周波数特性を見ると、阻止域のリップルが0.0066dBになっています。
CICフィルタの周波数特性
CIC Compilerの設定1
CIC Compilerの設定2
CIC Compilerの設定3
CIC Compiler IP Symbol
特性の測定
FIRフィルタと同様に152ksps 10kHzを信号源としてスペクトルを確認します。図で緑色がフィルタなし、黄色がフィルタありです。5MHz付近に向かってフィルタの効果が出ていることがわかります。
CICフィルタ出力(DC-5MHz)
CICフィルタ出力(DC-20MHz)
続いて、32倍オーバサンプリングFIRフィルタとCICフィルタをカスケード接続してみます。図で緑色がFIRフィルタのみ、黄色がFIRフィルタとCICフィルタの組み合わせです。ベースバンドをのぞきサンプルレート77.824MHzの半分の周波数までの信号が除去されていることがわかります。
FIR + CICフィルタ出力(DC-5MHz)
FIR + CICフィルタ出力(DC-20MHz)
FIR + CICフィルタ出力(15-50MHz)
cic16x.v
module cic16x(
cic16x_i, cic16x_o, clk, reset, cic16x_thru
);
input [23:0] cic16x_i;
output [23:0] cic16x_o;
input clk;
input reset;
input cic16x_thru;
wire [19:0] din;
wire [31:0] dout;
assign din = cic16x_i[23:4];
assign cic16x_o = cic16x_thru ? cic16x_i : dout[31:8];
// CIC Filter
cicip cicip (
.din(din), // input [19:0] din
.clk(clk),
.dout(dout) // output [31:0] dout
// .rdy(rdy), // output rdy
// .rfd(rfd)); // output rfd
);
endmodule
0 件のコメント:
コメントを投稿