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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3322|回复: 2

[求助] 关于VERILOG识别脉冲的代码

[复制链接]
发表于 2011-7-30 17:42:08 | 显示全部楼层 |阅读模式

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

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

x
1:输入脉冲reply,在window的高电平区间内,是关于两种回报脉冲的输入信号,其中DX信号为脉宽8us(误差2us),FOP信号为脉冲17us(误差上下2us),两种信号可能同时出现,可能都不出现,或者出现其中一种。
2:window信号,是输入的识别窗口信号,周期20ms,高电平6.67ms
3:要求检测到DX信号时,输出dout_dx,检测到FOP信号时,输出dout_fop。

仿真波形,输入的REPLY只有FOP,脉宽在18us左右,但是dout_dx也输出了信号。
11.jpg


询问下: 这个程序代码该如何改,知道错哪,但是就不知道怎么改。



自己的程序代码如下,但是只能识别FOP信号,对于DX信号无法识别。
module fop_drive(clk,rst,reply,window,dout_fop,dout_dx);

    input       clk;
    input       rst;
    input       reply;
    input       window;
    output      dout_fop;
     output      dout_dx;
      reg [4:0]   cnt_kuan ;
    //reg [4:0]   cnt ;
    reg         mid;
   // reg         temp;      //middle signal
   // reg         temp_rst;  //the reset of the middle signal
    reg          cnt_rst;
reg          fop_t;
reg          dx_t;

  always @(posedge clk or posedge rst)
     begin
        if (rst)
           mid<=0;
        else
           mid<= reply && window;
     end

  always @(posedge clk or posedge rst)
   begin
    if(rst)
        cnt_kuan<=0;
    else if(mid)
        cnt_kuan<=cnt_kuan+1'b1;
    else if(cnt_rst)
        cnt_kuan<=0;
    else
        cnt_kuan<=cnt_kuan;
  end

    always @(negedge mid)
      begin
        if(mid==0)
           cnt_rst<=1;
        else
           cnt_rst<=0;         
      end

   always @(posedge clk or posedge rst)
     begin
        if(rst)
          begin
            fop_t<=0;
          end
        else if((cnt_kuan>14)&&(cnt_kuan<19))
            fop_t<=1;
        else
            fop_t<=fop_t;
    end

always @(posedge clk or posedge rst)
     begin
        if(rst)
          begin
            dx_t<=0;
          end
        else if((cnt_kuan>5)&&(cnt_kuan<10))
            dx_t<=1;
        else
            dx_t<=dx_t;
    end
assign dout_fop = ~fop_t;
assign dout_dx = ~dx_t;

endmodule
 楼主| 发表于 2011-7-30 17:43:00 | 显示全部楼层
额 希望高手帮忙··我QQ 745851859  邮箱 zlgy2@126.com
发表于 2011-7-31 00:34:05 | 显示全部楼层
应该在检测到mid的下降沿之后寄存计数器的值,然后再根据寄存的计数器值来决定输出
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-23 17:11 , Processed in 0.021371 second(s), 9 queries , Gzip On, Redis On.

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