找回密码
 注册
关于网站域名变更的通知
查看: 281|回复: 1
打印 上一主题 下一主题

关于单位时间数脉冲Verilog程序 

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-7-16 11:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
6 H- e. ?& _2 O# x+ G+ I
   各位大神好,小弟最近刚刚入手Verilog,最近写了小程序。要实现的功能就是在单位时间500ms内数st信号的边沿数目,类似M法测电机转速。* [" O; Q  j7 N: _9 j
    添加到工程中起初会把,SYS_ret信号锁到CLKBUF,会报错。
; Z6 \3 V6 \: L- ]7 {' ]    网上 查找,加限制条件 /* synthesis syn_noclockbuf = 1 */,会通过,但是程序烧进去之后运行一段时间会出现异常,输出I/O会乱跳边。5 G; i' N( D3 H, M$ b( ?
    以下是我写的程序,请各位大神指导
' {, o" {) e& s; ?7 Pmodule MIP_WD(sys_rst,clk,st,en,status,rst);. d; {% I9 J. L

. A$ c4 ?$ `0 J4 r2 c. U     input        sys_rst;- A, P2 T3 I( R- P4 o: _" d; @( ^" E
     input        clk;  //10k
0 [. e; V  c8 j    input        st;  //喂狗
) |1 `# r+ ^% h2 ~  Z    input        en;  //1=Enable;0=Disable
, {9 F! m: [5 I9 y* a+ @, N$ a    input   status;% G1 W  I& W! U9 f/ C& J1 P* c( j" y
    output        rst; //0=Active
( ?# y, D4 F+ G  Z% j2 @        & ^% I! X+ m" l) d
    parameter TIME_ACTIVE        =13'd5000; //单位100us, e. Q" o2 P1 K2 f% \1 q
    parameter CNT_FEEDOG        =13'd10;   //单位100us
$ z, {" h3 I4 ]        
* [; t3 d2 N1 b) p    reg                [13:0]Cnt_Timer;      //500ms定时器计数器. Q2 s% T/ U, T/ B7 I; z& t
    reg                [13:0]Cnt_Feedog;     //喂狗次数计数器
, \0 g/ N& m& z4 h   reg                wdo;
& X$ @8 ^3 W3 v7 H    reg     sig_r0;% V+ m7 w: I! H' E+ O) b
    reg     sig_r1;6 ?; q$ f& e$ H, W
    wire    both_edge;2 q  ]! t& \8 _  O6 q

7 C) ^3 K& @6 C' [, j+ _    //检测DSP喂狗时,发送过来信号的边沿
. I6 I% ~6 q  N& k1 ^        always @ (negedge sys_rst or posedge clk)
! N* L! [  }# F    if (!sys_rst) begin   l( N0 d6 E8 Z, c7 [
        sig_r0 <= 1'b0;- C5 l3 c* s8 m% E  l% ^* ^
        sig_r1 <= 1'b0;" O  C' H4 q, \- M' E
    end else begin 5 d" w! E& ^  o0 m) R0 ]
        sig_r0 <= st;. P7 a) K, s7 i: x6 j
        sig_r1 <= sig_r0;! \; x- [, L6 u% |
    end
3 R- T- u6 P# w    assign both_edge = sig_r1 ^ sig_r0; //(~sig_r1) & (sig_r0);//sig_r1 ^ sig_r0; " S3 X- g7 e* m% N$ x
           1 L; h  p5 I% c7 C# B
        //500ms内对DSP喂狗次数进行检测,如果小于等于CNT_FEEDOG,则认为DSP死机+ e+ }3 f' `( P+ O  c
    //判定死机后发送周期为1的方波,复位DSP0 v4 @( L- w1 _
    always@(negedge sys_rst or posedge clk)  E. P# M2 @+ Y0 M
        begin" V* W/ A8 N0 @8 k; @
         if(!sys_rst)* C2 _; {1 Z& p4 o; l: h
           begin7 T0 d- M" J4 }6 H4 v
                   wdo<=1;( U( Q1 @  v) W
           Cnt_Timer<=0;    0 n' N. u/ `$ k, h: l- n# K
           Cnt_Feedog<=0;     
: l( v1 U: x6 e7 ?7 a" f3 G              end, |9 i, I; j8 b  ?
          else * N/ L' R" ~. z* W9 s
         begin
( `. a+ J# p1 ^1 D          if(Cnt_Timer>=TIME_ACTIVE)       //定时器溢出
. b; K/ l  r) {& z! d' @: u) ^5 c                     begin
* K9 Y$ K( Q" P* |& V& `                        Cnt_Timer<=0;8 p1 R5 @7 s5 `( `  o+ ?5 Y& ]
                        Cnt_Feedog<=0;         
$ q2 e; L* a3 A: V( C$ t3 _                        if(Cnt_Feedog<=CNT_FEEDOG && status) //定时器溢出时,判断喂狗次数,如果小于预 0 i; K/ z" D1 G
                        wdo<=~wdo;            //wdo的初值初始化为了1,通过取反即可产生周期为1的方波信号    J3 q, U& y" w2 b* ]3 w
             end  //end of 定时器溢出   : L8 {9 A! T1 [3 K+ V( e
          else ! Z% A+ F/ ~: J7 \- o& }
             begin1 I" E; N! h+ T! V+ e, u, M  a
                Cnt_Timer<=Cnt_Timer+1;       //定时器没有溢出的情况下,定时计数器自加
# F& j1 S7 s6 Y$ ~                if(both_edge)                 //检测到DSP发送过来喂狗的边沿信号时, Z1 C7 J' J( }
                   Cnt_Feedog<=Cnt_Feedog+1;  //喂狗计数器自加7 e) X9 f$ E9 P# }' r5 O7 d) M
             end
+ ?# B2 y9 c' h( ~* ~* q      end
, D: S( J& E! Q4 g' z2 |, c        end
" i* ?( k, O# u5 g+ Y' u/ k& ?7 @$ o5 g+ R, y: N/ o% a
        assign rst=        (!sys_rst)?0:
/ `/ F0 J& U2 U  P                                (!en)?1:
5 B' U( M0 k9 u" b0 l                                 wdo;
5 ~( j" q+ f, H0 }  r1 Y8 f( X1 U0 R3 N# U, V3 `  g& m
endmodule
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-12 08:17 , Processed in 0.109375 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表