在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 8128|回复: 21

[原创] 《无线通信FPGA设计》 CIC滤波器FPGA实现中的错误

[复制链接]
发表于 2010-3-10 12:13:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本人在学习《无线通信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;
   
    [email=always@(posedge]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
   
    [email=always@(posedge]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

[email=always@(negedge]always@(negedge[/email] clk)
begin
     x_in<=x_in+1;
end


always #500 clk=~clk;

always #1000 clk1=~clk1;

endmodule
仿真波形在附件中,请问y_out的最终输出为什么是固定的一个值呢?
 楼主| 发表于 2010-3-10 12:15:56 | 显示全部楼层
我忘记添加附件了,
仿真结果截图.bmp
发表于 2010-3-15 04:57:01 | 显示全部楼层
thanks for sharing
发表于 2010-3-16 15:52:47 | 显示全部楼层
书上例子输入信号应该是包含一定频率成分的。而你的输入序列1-2-3-4-5-6-。。。 相当于是一个直流信号,经过CIC滤波之后输出当然也是。
发表于 2010-3-22 23:05:23 | 显示全部楼层
顶一下
发表于 2010-3-24 05:20:50 | 显示全部楼层
ding ya
发表于 2010-3-24 14:11:30 | 显示全部楼层
滤波器都是有一定的设计参数的。你的测试程序要提供相符的数据才能看到滤波器的工作情况的。
 楼主| 发表于 2010-3-24 16:51:25 | 显示全部楼层
谢谢你们的宝贵建议,我在试一试啊,谢谢
发表于 2010-3-24 21:06:39 | 显示全部楼层
有一定的指导意见!
发表于 2010-4-18 00:15:22 | 显示全部楼层
是这样的:
     cic的传递函数是两个sinc函数之比,对应梳妆器的传递函数和积分器的传递函数之比,而sinc函数对应的时域门函数,任何信号经理想的门函数之后肯定是恒定的了 而实际做的的虽然不肯能想门函数那样理想 但经cic之后肯定是恒定的啦 当然是平的啦 所以你仿真是正确的
    你可以将信号源设置为激励信号,也就是一恒定值 cic滤  可以验证你程序 如果还是平的 那么恭喜你你做的是对的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

X

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-6-23 07:46 , Processed in 0.035940 second(s), 10 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表