阅读:8435回复:5
在实现cic滤波器时的疑问!!
在《数字信号处理的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 下面的语句也一样!!! 疑惑中,请指教!!!! |
|
|
沙发#
发布于: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. 不知道我说明白了没有? |
|
板凳#
发布于:2003-11-09 10:57
但应该是顺序执行的
|
|
|
地板#
发布于:2003-11-09 11:40
确实是顺序语句,但是vhdl里面有延时的呀!
也就是说 i2d1<=c0; i2d2<=i2d1; 这两个语句里面,实际上i2d1和i2d2的值不是当前c0的值。 要不你把这几个语句,作一下后仿真就可以明白了。 |
|
地下室#
发布于:2008-10-28 23:28
顺序语句所描述的电路是串行信号处理电路(可看成串联电路),用电路来理解,
c0 → i2d1 → i2d2→ c1<=c0-i2d2 → c1d1<=c1; 你可以把以上看成一个串联电路,信号是从左向右顺序传递的,而以上程序是每个时钟上升延更新一次各个节点的信号,所以要将c0传到i2d2需要经过两个时钟周期,即i2d2的值为上上个时钟c0的值 |
|
|
5楼#
发布于:2008-11-16 06:57
这就是单纯的延时,延时一个时钟周期,标准的filp-flop的描述方式。
|
|