首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

[求助]请帮我看看verilog的程序,万分感谢!

[求助]请帮我看看verilog的程序,万分感谢!

 


 


module cpld_code(encode_a,encode_b,pulse);
 
    input [0:0] encode_a;
    input [0:0] encode_b;   
    output [15:0] pulse;   
    reg [15:0] pulse_counta;


    reg outabc;
    always
    begin
      
         outabc=((!encode_a)&encode_b)|((!encode_b)&encode_a);//两个信号的异或
   end
    always @ ( outabc)//问题就出在这儿,我想在outabc的上升和下降沿计数,结果不对


            如果我把这儿改为posedge或negedge就对了,为什么啊?                                                       begin


      pulse_counta=pulse_counta+1;
      end 
    assign pulse=pulse_counta;


  endmodule


请问为什么always @ ( outabc)得不到我想要的结果啊

这个问题怎么没人帮我啊,急啊
我想都计数
谢谢楼上的指教,我现在想设计双边缘触发的计数器,所以我想把下降沿也变成上升沿,这样我就只需对上升沿计数了.
我转换的方法是这么想的,将这个波形稍延迟一下,和原来的波形有个错位,这样再将两个异或,就可以得到两个上升沿了,也就是将原来的波形二分频了,我觉得这个方法想起来没错,但是实现延迟,我不知道该怎么办,我记得以前模拟电路用电阻和电容就可以了,具体的请看我发的另一个求助贴子:verilog 延迟问题,多谢了
非常感谢!我用的是cpld,我理解您的意思,如果对延时的精度要求不那么高,就可以用这个方法做啊
一般的实现方法是利用FPGA/CPLD的门级延迟(几个ns)也就是把输入时钟加几个buf,您能不能再说的具体点,就这句话我也不知道怎么实现
我想过对上升沿和下降沿分别计数,然后再把两个相加,就得到我要的计数了,这个方法最简单,但是我选的芯片资源太少了,实现不了,我又不想重新制版,所以想用这个二倍频的方法
谢谢
返回列表