滤波器 频率问题
请问一下,通常看到的信号频率 采样频率,这两个频率和自身的时钟什么关系?比如说:信号频率为1kHz,采样频率为20kHz,滤波器时钟应该是多少M?是和数据频率保持一样还是另有算法?
谢了 {:sleepy:}求知道~ 通常的,采样率大于2倍带宽,如果是基带采样的话,采样率大于2倍最大信号频率;(非复用模式下)数字滤波器的工作时钟为采样率。 philoman 发表于 2013-7-11 21:11 static/image/common/back.gif
通常的,采样率大于2倍带宽,如果是基带采样的话,采样率大于2倍最大信号频率;(非复用模式下)数字滤波器 ...
谢谢你的解答//-------------------------------------
// %参数定义
// f=1000; %信号频率为1kHz
// Fs=40*f; %采样频率为20kHz
// n=16; %半带滤波器阶数
// D=2; %抽取因子
// dev=0.0001; %通阻带容限
//
// %产生正弦波信号
// t=0:1/Fs:0.02;
// c=2*pi*f*t;
// si=sin(c);
//
// %设计半带滤波器
// b=firhalfband(n,dev,'dev')
// s=filter(b,1,si); %对信号进行滤波
// s=s/max(abs(s)); %归一化处理
// Ds=s(1:D:length(t)); %对滤波后的信号进行抽取
//
// %绘图
// figure(1);x=0:1:100;x=x/Fs;Dx=x(1:D:length(x));
// subplot(211);stem(x,si(1:length(x)));title('MATLAB仿真前波形');
// subplot(212);stem(Dx,Ds(1:length(Dx)));title('MATLAB仿真后波形');
// figure(2);freqz(b);
//滤波系数
//b =
//
//Columns 1 through 11
//
// 0 -0.0030 0 0.0187 0 -0.0700 0 0.3043 0.5000 0.3043 0
//
//Columns 12 through 17
//
// -0.0700 0 0.0187 0 -0.0030 0
//b =
//
// 0 -1 0 5 0 -18 0 78 128 78 0 -18 0 5 0 -1 0这是我的MATLAB程序
为什么得到的滤波后的波形和输入波形一个样呢? philoman 发表于 2013-7-11 21:11 static/image/common/back.gif
通常的,采样率大于2倍带宽,如果是基带采样的话,采样率大于2倍最大信号频率;(非复用模式下)数字滤波器 ...
我原以为是滤波器时钟设置问题,这下排除了,那会是什么问题呢? module HB
(
input clk,
input rst_n,
input HB_in,
output HB_out
);
//-------------------------------------
// %参数定义
// f=1000; %信号频率为1kHz
// Fs=40*f; %采样频率为20kHz
// n=16; %半带滤波器阶数
// D=2; %抽取因子
// dev=0.0001; %通阻带容限
//
// %产生正弦波信号
// t=0:1/Fs:0.02;
// c=2*pi*f*t;
// si=sin(c);
//
// %设计半带滤波器
// b=firhalfband(n,dev,'dev')
// s=filter(b,1,si); %对信号进行滤波
// s=s/max(abs(s)); %归一化处理
// Ds=s(1:D:length(t)); %对滤波后的信号进行抽取
//
// %绘图
// figure(1);x=0:1:100;x=x/Fs;Dx=x(1:D:length(x));
// subplot(211);stem(x,si(1:length(x)));title('MATLAB仿真前波形');
// subplot(212);stem(Dx,Ds(1:length(Dx)));title('MATLAB仿真后波形');
// figure(2);freqz(b);
//滤波系数
//b =
//
//Columns 1 through 11
//
// 0 -0.0030 0 0.0187 0 -0.0700 0 0.3043 0.5000 0.3043 0
//
//Columns 12 through 17
//
// -0.0700 0 0.0187 0 -0.0030 0
//b =
//
// 0 -1 0 5 0 -18 0 78 128 78 0 -18 0 5 0 -1 0
//-------------------------------------
wire delay_out1,delay_out2,delay_out3,delay_out4,delay_out5,delay_out6,delay_out7,delay_out8,delay_out9,delay_out10,delay_out11,delay_out12,delay_out13,delay_out14,delay_out15,delay_out16;
wire MULT_data1,MULT_data2,MULT_data3,MULT_data4,MULT_data5,MULT_data6,MULT_data7,MULT_data8,MULT_data9,MULT_data10;
//-------------------------------------
delay delay
(
.clk(clk),
.rst_n(rst_n),
.delay_in(HB_in), //0
.delay_out1(delay_out1), //-1
.delay_out2(delay_out2), //0
.delay_out3(delay_out3), //5
.delay_out4(delay_out4), //0
.delay_out5(delay_out5), //-18
.delay_out6(delay_out6), //0
.delay_out7(delay_out7), //78
.delay_out8(delay_out8), //128
.delay_out9(delay_out9), //78
.delay_out10(delay_out10), //0
.delay_out11(delay_out11), //-18
.delay_out12(delay_out12), //0
.delay_out13(delay_out13), //5
.delay_out14(delay_out14), //0
.delay_out15(delay_out15), //-1
.delay_out16(delay_out16) //0
);
//-------------------------------------
MULT MULT1//乘法器
(
.clk(clk),
.rst_n(rst_n),
.data_in1(delay_out1),
.data_in2(8'b1111_1111), //-1
.Out(MULT_data1)
);
//-------------------------------------
MULT MULT2//乘法器
(
.clk(clk),
.rst_n(rst_n),
.data_in1(delay_out3),
.data_in2(8'b0000_0101), //5
.Out(MULT_data2)
);
//-------------------------------------
MULT MULT3//乘法器
(
.clk(clk),
.rst_n(rst_n),
.data_in1(delay_out5),
.data_in2(8'b1110_1110), //-18
.Out(MULT_data3)
);
//-------------------------------------
MULT MULT4//乘法器
(
.clk(clk),
.rst_n(rst_n),
.data_in1(delay_out7),
.data_in2(8'b0100_1110), //78
.Out(MULT_data4)
);
//-------------------------------------
MULT MULT5//乘法器
(
.clk(clk),
.rst_n(rst_n),
.data_in1(delay_out8),
.data_in2(8'd0111_1111), //128
.Out(MULT_data5)
);
//-------------------------------------
MULT MULT6//乘法器
(
.clk(clk),
.rst_n(rst_n),
.data_in1(delay_out9),
.data_in2(8'b0100_1110), //78
.Out(MULT_data6)
);
//-------------------------------------
MULT MULT7//乘法器
(
.clk(clk),
.rst_n(rst_n),
.data_in1(delay_out11),
.data_in2(8'b1110_1110), //-18
.Out(MULT_data7)
);
//-------------------------------------
MULT MULT8//乘法器
(
.clk(clk),
.rst_n(rst_n),
.data_in1(delay_out13),
.data_in2(8'b0000_0101), //5
.Out(MULT_data8)
);
//-------------------------------------
MULT MULT9//乘法器
(
.clk(clk),
.rst_n(rst_n),
.data_in1(delay_out15),
.data_in2(8'b1111_1111), //-1
.Out(MULT_data9)
);
//-------------------------------------
ADD ADD//加法器
(
.clk(clk),
.rst_n(rst_n),
.MULT_data1(MULT_data1),
.MULT_data2(MULT_data2),
.MULT_data3(MULT_data3),
.MULT_data4(MULT_data4),
.MULT_data5(MULT_data5),
.MULT_data6(MULT_data6),
.MULT_data7(MULT_data7),
.MULT_data8(MULT_data8),
.MULT_data9(MULT_data9),
// .MULT_data10(MULT_data10),
.ADD_data(HB_out)
);
//-------------------------------------
//-------------------------------------
endmodule 这是我的verilog代码,应该不会有什么理解上的错误吧... {:sleepy:}接着顶
页:
[1]