《无线通信FPGA设计》 CIC滤波器FPGA实现中的错误
时间:10-02
整理:3721RD
点击:
本人在学习《无线通信FPGA设计》(电子工业出版业出版),在7.3.3 CIC滤波器的FPGA实现中,本人认为例子中有错误。例1和例2两个设计中,我分别在modelsim中进行仿真,但是结果并没有显示图中所示的示意图。
下面是单击、抽取率为2的8位CIC。(例7-9)
module cic_dec_2_single(clk,clk1,reset,x_in,y_out);
input clk;
input clk1;
input reset;
input [7:0] x_in;
output [7:0] y_out;
reg [15:0] x_t,y_t;
reg [7:0] int_out;
always@(posedge[/email] clk)
begin
if(!reset)
begin
x_t<=0;
int_out<=0;
end
else begin
x_t<={x_t[7:0],x_in[7:0]};
end
int_out<=x_t[7:0]+x_t[15:8];
end
always@(posedge[/email] clk1)
begin
if(!reset)
begin
y_t<=0;
end
else begin
y_t<={y_t[7:0],int_out[7:0]};
end
end
assign y_out=y_t[7:0]-y_t[15:8];
endmodule
下面是我自己编写的testbench,
module test;
reg clk,reset,clk1;
reg [7:0] x_in;
wire [7:0] y_out;
cic_dec_2_single cic2(.clk(clk),.clk1(clk1),.x_in(x_in),.y_out(y_out),.reset(reset));
initial
begin
clk=0;
clk1=0;
reset=1;
x_in=8'b0000_0000;
#1000 reset=0;
#3000 reset=1;
#500000 $stop;
end
always@(negedge[/email] clk)
begin
x_in<=x_in+1;
end
always #500 clk=~clk;
always #1000 clk1=~clk1;
endmodule
仿真波形在附件中,请问y_out的最终输出为什么是固定的一个值呢?
下面是单击、抽取率为2的8位CIC。(例7-9)
module cic_dec_2_single(clk,clk1,reset,x_in,y_out);
input clk;
input clk1;
input reset;
input [7:0] x_in;
output [7:0] y_out;
reg [15:0] x_t,y_t;
reg [7:0] int_out;
always@(posedge[/email] clk)
begin
if(!reset)
begin
x_t<=0;
int_out<=0;
end
else begin
x_t<={x_t[7:0],x_in[7:0]};
end
int_out<=x_t[7:0]+x_t[15:8];
end
always@(posedge[/email] clk1)
begin
if(!reset)
begin
y_t<=0;
end
else begin
y_t<={y_t[7:0],int_out[7:0]};
end
end
assign y_out=y_t[7:0]-y_t[15:8];
endmodule
下面是我自己编写的testbench,
module test;
reg clk,reset,clk1;
reg [7:0] x_in;
wire [7:0] y_out;
cic_dec_2_single cic2(.clk(clk),.clk1(clk1),.x_in(x_in),.y_out(y_out),.reset(reset));
initial
begin
clk=0;
clk1=0;
reset=1;
x_in=8'b0000_0000;
#1000 reset=0;
#3000 reset=1;
#500000 $stop;
end
always@(negedge[/email] clk)
begin
x_in<=x_in+1;
end
always #500 clk=~clk;
always #1000 clk1=~clk1;
endmodule
仿真波形在附件中,请问y_out的最终输出为什么是固定的一个值呢?
我忘记添加附件了,
thanks for sharing
书上例子输入信号应该是包含一定频率成分的。而你的输入序列1-2-3-4-5-6-。 相当于是一个直流信号,经过CIC滤波之后输出当然也是。
顶一下
ding ya
滤波器都是有一定的设计参数的。你的测试程序要提供相符的数据才能看到滤波器的工作情况的。
谢谢你们的宝贵建议,我在试一试啊,谢谢
有一定的指导意见!
是这样的:
cic的传递函数是两个sinc函数之比,对应梳妆器的传递函数和积分器的传递函数之比,而sinc函数对应的时域门函数,任何信号经理想的门函数之后肯定是恒定的了 而实际做的的虽然不肯能想门函数那样理想 但经cic之后肯定是恒定的啦 当然是平的啦 所以你仿真是正确的
你可以将信号源设置为激励信号,也就是一恒定值 cic滤 可以验证你程序 如果还是平的 那么恭喜你你做的是对的
感謝這個討論串讓我學習到不少
受教!
10L大牛,拜
我也看过这本书,这里也不是很清楚的!
谢谢分享
顶一个
学习了,谢谢~
那本书上错误很多,像for语句都在用
cic可以用单音信号跑跑看看
哎,不知道怎么说好了,我觉得那就是一本破书
谢谢分享
那本书就是垃圾书,,里面太多错误例子了,误人子弟,不知道为什么电子工业出版社还让出版。
不错啊