517650971 发表于 2013-7-10 22:23:24

滤波器 频率问题

请问一下,通常看到的信号频率   采样频率,这两个频率和自身的时钟什么关系?
比如说:信号频率为1kHz,采样频率为20kHz,滤波器时钟应该是多少M?是和数据频率保持一样还是另有算法?
谢了

517650971 发表于 2013-7-11 17:03:01

{:sleepy:}求知道~

philoman 发表于 2013-7-11 21:11:23

通常的,采样率大于2倍带宽,如果是基带采样的话,采样率大于2倍最大信号频率;(非复用模式下)数字滤波器的工作时钟为采样率。

517650971 发表于 2013-7-11 22:52:19

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程序


为什么得到的滤波后的波形和输入波形一个样呢?

517650971 发表于 2013-7-11 22:58:40

philoman 发表于 2013-7-11 21:11 static/image/common/back.gif
通常的,采样率大于2倍带宽,如果是基带采样的话,采样率大于2倍最大信号频率;(非复用模式下)数字滤波器 ...


我原以为是滤波器时钟设置问题,这下排除了,那会是什么问题呢?

517650971 发表于 2013-7-11 22:59:50

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代码,应该不会有什么理解上的错误吧...

517650971 发表于 2013-7-12 13:38:25

{:sleepy:}接着顶
页: [1]
查看完整版本: 滤波器 频率问题