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

Verilog语言中几种不同的触发器描述方式

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
Verilog语言中几种不同的触发器描述方式

( R$ E1 c/ O" e& i1 A
) K$ Q% L" d% O8 ~$ YVerilog中几种不同的触发器描述,Verilog中有几种不同的方式描触发器,有些是可综合的,有些是不可综合的用于testbench中。% J0 M. N* t& j+ a$ G; a
第一种描述方式是最为常见的,可支持综合
) J- {9 A( K4 f) S, i: X/ C- dmodule d_ff_rtl(clk,reset,di,q);0 p2 o& m: J% A7 ^& v; v$ Y
  input clk;
, d3 ~! c+ U0 N1 [. J% Q+ Q4 o+ D  input reset;
# }; D" p/ g% G5 B: m9 _" D  input di;+ U8 h( Q4 @* h5 }' |- E$ M& X) h
  output reg  q;
1 c/ w) C# b  ^3 x
: J2 w) a  B7 |" C  w  always@(posedge clk  or negedge reset)
- s& h. C5 A6 ^! J. G, B/ K     if(!reset)
  U, _9 S' i4 F* q; {; W3 I$ V       q  <= 1'b0;
! N/ O6 i7 \' X     else
! T. q* t8 C1 o$ i( l, k       q  <= di;
- Z6 T/ E  V6 D9 U! P7 c# P; oendmodule ; V+ R2 f3 ~/ r2 _0 {
第二种描述方式使用wait语句实现,这种描述方式不支持综合% m; X( j' m; y, C1 w9 k' R" S
module d_ff_behav1(clk,rstn,qi,qo);
/ ]0 c# j) H6 A/ a: e" u6 U7 k  input clk;/ {* u% D# O- e7 {5 E) o7 Q& t
  input rstn;
1 C& X% q, I$ v; G  input qi;! Z; j  H$ N; y0 L
  output reg qo;. t( ^. @( b  Q8 x; g$ t) \5 {$ T6 M
4 m8 g! s/ j; b- `2 T- N7 D4 h& j9 f
  always begin
3 `5 f# M+ E, z     wait(!rstn);
/ O6 E& m- {' _  R$ d      qo <= 1'b0;
: B* F/ _( s' {5 w- @" V    wait(rstn);
# k: q* Y" g3 v8 I  end+ ~8 z0 r1 L0 ^
7 a' K$ b; W- @
  always@(posedge clk or negedge rstn)2 }) A( r/ c! Y  T
    if(rstn)& D& g" j. \6 q- \- u/ k: |
      qo   <= qi;4 C: |" `/ o2 h, ^# B7 \) Y  C& `8 T# j
endmodule " K) J- }! ?& e+ N
第三种描述方式使用assign和deassign语句实现,- |3 R  U7 Y3 N( M7 O9 W3 v$ A
module d_ff_behav2(clk,rstn,di,qo);* ~. q3 H+ E$ z: c) g
  input clk;# K- R. P: h- M
  input rstn;
  a, M8 c8 X8 T0 ?7 n  input di;8 K; d) E( ?; C# K5 X3 m
  output qo;, g) B$ a3 L  U; c8 E

+ U8 L5 M& g2 n5 @+ r- M  reg qo;" W' z" E6 p$ w

4 d! M1 F6 C$ {' t  always@(rstn)begin 8 y8 }9 O& g. w% _# e* ?! ^
    if(~rstn)- L7 Y: a4 v; {2 I9 c7 J" m
      assign qo = 1'b0;
2 N, q" C' f% U( M    else 4 u! F( p; l& K/ p0 P+ J
      deassign  qo;
$ M3 f! V1 S0 L4 F2 Y# ]' t  end : y% y1 b2 J. `/ ]; G; R6 t6 U6 q

& Q0 r7 z, X7 l: a  always@(posedge clk)begin + r& M2 @4 H# t9 b% E
       qo  <= di;
$ _2 N* j0 Y5 n$ H/ ~4 ]  end ; s5 T1 Q5 P" u
endmodule
' `/ d4 t# F5 U' Atestbench内容如下:2 f) V2 v+ Y! V  E$ d4 u
module d_ff_behav_tb;
6 w4 I5 s9 y' s# ^+ L: R# I3 L% S  reg  clk;
2 [% o9 n- {9 D. c2 W' _  reg rstn;- W- n5 e8 ~* c! X' Y8 @6 w
  reg  qi;) P! y" e+ n/ |/ D+ n# m
  wire  qo;
4 A' Y: |$ Z  r5 _" M0 N- h  O) h. G
  d_ff_behav2 ut(clk,rstn,qi,qo);$ \# O9 P2 N. U

7 n: X% I6 z4 {) [* v3 B  initial clk  = 0;
, h, E+ f) V4 e; _" p4 V# I7 J2 g, }  always  #5 clk  =  ~clk;
. y- c5 c7 o2 h9 H4 I$ w7 [3 J/ c$ L2 c; c* d
  initial begin
5 K5 l; s9 M9 s  rstn = 1'b1;; ]7 M2 I% E& o
     qi   = 1'b0;2 L; Y8 A! N6 j# f) u& Y0 W
#5  rstn = 1'b0;! j: l; o6 p: p4 w( A+ q
#1  rstn = 1'b1;   
1 ?& }2 d0 e; C #4  qi   = 1'b1;" f7 W* B8 @- Q* O
#10 qi   = 1'b0;# R9 h; ]% w9 R, \# L/ z" }: N
: Q( T. r5 @: E8 G1 o
  end6 c7 ]- Q; F- L0 a, Q4 ~3 H
endmodule2 t/ n$ E2 g/ e2 y/ {) O# c
$ k3 _; V: m6 `
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-9 13:24 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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