wuchang
驱动牛犊
驱动牛犊
  • 注册日期2003-11-08
  • 最后登录2003-11-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:8382回复:5

在实现cic滤波器时的疑问!!

楼主#
更多 发布于:2003-11-08 20:34
在《数字信号处理的fpga实现》这本书中的cic实现部分中的梳状进程中程序如下:
comb:process
    begin
         wait until clk2=\'1\';
         i2d1<=c0;
         i2d2<=i2d1;
         c1<=c0-i2d2;
         c1d1<=c1;
         c1d2<=c1d1;
         c2<=c1-c1d2;
         c2d1<=c2;
         c2d2<=c2d1;
         c3<=c2-c2d2;
    end process comb;
请问各位大虾:进程中的语句为顺序语句,而进程中c0把值传给i2d1,而i2d1有给i2d2,c1为i2d2与c0的差,那岂不是为0
下面的语句也一样!!!
疑惑中,请指教!!!!
wuchang
link_bridge
驱动巨牛
驱动巨牛
  • 注册日期2002-11-28
  • 最后登录2011-05-15
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望13点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-11-08 21:14
wait until clk2=\'1\';
i2d1<=c0;
i2d2<=i2d1;
c1<=c0-i2d2;


i2d1的值为上个时钟沿c0的值,i2d2的值为上上个时钟沿c0的值
c1<=c0-i2d2;
里面就是此时c0减去上上个时钟前的c0.
不知道我说明白了没有?
wuchang
驱动牛犊
驱动牛犊
  • 注册日期2003-11-08
  • 最后登录2003-11-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-11-09 10:57
但应该是顺序执行的
wuchang
link_bridge
驱动巨牛
驱动巨牛
  • 注册日期2002-11-28
  • 最后登录2011-05-15
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望13点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-11-09 11:40
确实是顺序语句,但是vhdl里面有延时的呀!
也就是说
i2d1<=c0;
i2d2<=i2d1;
这两个语句里面,实际上i2d1和i2d2的值不是当前c0的值。
要不你把这几个语句,作一下后仿真就可以明白了。
zhouliang5023
驱动牛犊
驱动牛犊
  • 注册日期2008-10-28
  • 最后登录2008-10-29
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2008-10-28 23:28
顺序语句所描述的电路是串行信号处理电路(可看成串联电路),用电路来理解,
c0  →  i2d1  →  i2d2→  c1<=c0-i2d2  →  c1d1<=c1;
你可以把以上看成一个串联电路,信号是从左向右顺序传递的,而以上程序是每个时钟上升延更新一次各个节点的信号,所以要将c0传到i2d2需要经过两个时钟周期,即i2d2的值为上上个时钟c0的值
清风徐来
wangshihu
论坛版主
论坛版主
  • 注册日期2003-12-31
  • 最后登录2012-03-26
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望96点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2008-11-16 06:57
这就是单纯的延时,延时一个时钟周期,标准的filp-flop的描述方式。
游客

返回顶部