[verilog] 代码分析

[复制链接]
 楼主| 布川酷子 发表于 2013-10-10 10:25 | 显示全部楼层 |阅读模式
有这样一段代码,不知道要实现什么功能,烦请详解
        module test(
        input     gls_clk,encoder,
        output reg   clr_counter
        );
        reg q3,q4;
        always@(posedge gls_clk ) begin
                clr_counter <=q3 & !q4;
                q4<=q3;
                q3<=encoder;
        end
        endmodule
        谢谢!
yixiupu0 发表于 2013-10-10 12:57 | 显示全部楼层
输出一个 encoder 的上升沿
 楼主| 布川酷子 发表于 2013-10-14 14:46 | 显示全部楼层
yixiupu0 发表于 2013-10-10 12:57
输出一个 encoder 的上升沿

非常谢谢你的回答,那请问这个呢?
                        R_addr_reg1 <= R_addr_reg0;
                        R_addr <= R_addr_reg1;
为什么不直接把R_addr_reg0赋值给R_addr,谢谢
guugel 发表于 2013-10-15 11:18 | 显示全部楼层
上面这段代码应该是实现 把R_addr_reg0  延时2个时钟后赋给R_addr,直接赋值的话,只延时1个时钟
and 发表于 2013-10-15 11:52 | 显示全部楼层
也可能是为了避免亚稳态。
huabutterfly 发表于 2013-10-21 22:32 | 显示全部楼层
R_addr_reg0,R_addr_reg1, R_addr  这是一个信号的三个时钟的值,T0 T1 T2,不知道你的整体程序是什么,但是做数据分析,傅里叶等计算时,这都是很正常的。
  
xxnwinner 发表于 2013-10-22 18:32 | 显示全部楼层
直接赋值和这样的赋值对应的电路图是不一样的,reg类型属于寄存器类型,如果直接赋值就表示没有中间过程的寄存器存储R_addr_reg1
nan2074 发表于 2013-10-22 19:50 | 显示全部楼层
边沿检测吧?
GoldSunMonkey 发表于 2013-10-22 21:27 | 显示全部楼层
感谢大家的讨论
GoldSunMonkey 发表于 2013-10-22 21:27 | 显示全部楼层
谢谢啦
suzixiang0 发表于 2013-10-23 14:32 | 显示全部楼层
本帖最后由 suzixiang0 于 2013-10-23 14:33 编辑

上升沿监测
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

40

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部