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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
Verilog语言中几种不同的触发器描述方式
, R5 l& B( }# F5 G! V, [- T8 D
! g1 w, }, k' {0 v1 k
Verilog中几种不同的触发器描述,Verilog中有几种不同的方式描触发器,有些是可综合的,有些是不可综合的用于testbench中。& E9 r- x2 `5 v2 _' [
第一种描述方式是最为常见的,可支持综合7 B$ @& F! h$ r' v
module d_ff_rtl(clk,reset,di,q);" L9 y2 u; _' h
  input clk;9 e1 O/ j0 I" W, m' N3 D
  input reset;# X3 g! o2 O0 k, _0 O
  input di;/ i( Y) L7 A' u6 @
  output reg  q;/ E" Y: S8 [) l& O$ K4 V

$ j8 i! I- ?* {; `. [  always@(posedge clk  or negedge reset)- X& B2 [: o- D0 G- L0 @+ R/ q
     if(!reset)
1 U& ~7 @+ ]2 m/ y       q  <= 1'b0;
2 A8 C3 Z! C, d: m     else
; I" u1 |3 i3 X# s       q  <= di;4 w) [4 t0 `" L3 W! r2 q5 j& X
endmodule
7 T6 Y  O- m. W8 J' a% p3 _) _第二种描述方式使用wait语句实现,这种描述方式不支持综合
5 a6 K+ s, ~5 j5 }4 y' ]! e$ x0 K  }1 amodule d_ff_behav1(clk,rstn,qi,qo);
' T' G% ^7 ]* ?, w8 J9 O/ A) u6 O  input clk;
7 m$ U# k: y5 t( L# X; c: z  input rstn;
7 ]4 u: k2 m# `4 g. S  input qi;
8 O2 m, i) V4 f1 C/ E9 Y  output reg qo;
" I5 H1 y* {) ~% H5 U. d  Z
. g& `. P7 q+ a" Z: l  always begin ; f3 W4 ^0 }9 b! f( h6 D# P
     wait(!rstn);
8 `* v1 R$ G- N& C6 b0 d: H      qo <= 1'b0;& p3 s9 K$ x$ J  t+ F4 _
    wait(rstn);- h4 Q: [% K: T8 d
  end
  E5 T) U* ~( x% k& c8 [( s0 O3 y% t: L
  always@(posedge clk or negedge rstn)* F! g; X1 W1 w5 R1 T" T
    if(rstn)
* s$ q+ s2 q0 Y. Q      qo   <= qi;
3 l: I0 s5 b8 Z9 b: o( gendmodule
7 f; O6 W: m4 L4 ]第三种描述方式使用assign和deassign语句实现,1 `* L* x) V7 U0 P
module d_ff_behav2(clk,rstn,di,qo);: m* D- M8 H% f( X0 A7 v
  input clk;
" ?( [1 k  G1 |7 g' ^8 Z  input rstn;
6 B& t. @* f0 R* H  c/ m; Z  input di;
3 w6 f; C' V  B8 ~/ \# A; _! ^3 y  output qo;
0 A2 h5 z" b8 [5 x* O: P' |1 R, e. p5 u! |
  reg qo;7 T  n( _  F/ K- D

( f" l& D0 u, x! k( u6 x  always@(rstn)begin
7 Z: e& V7 G/ J' o$ {    if(~rstn)
( j# U0 R9 ^, E8 k- f# z; ]% j      assign qo = 1'b0;1 P2 {  K% D0 p+ c: N
    else
( s; |9 I; m# y! ~1 Q      deassign  qo;, @# ~0 U6 j6 i. L( [# ~# D8 {
  end
( k5 V7 a0 K; I% Q+ Z7 [
& }* C! o6 _' A6 K* u  always@(posedge clk)begin 0 J- m5 x/ q3 G  Z$ v- W. a' b
       qo  <= di;8 s; H6 _2 U+ F( Q- I$ o( f
  end
% H7 ]+ J' g3 q# }8 @- eendmodule: L3 }3 T: h! M5 F# \
testbench内容如下:
1 A. {) M% M9 a0 f* p$ kmodule d_ff_behav_tb;
0 H* R6 u5 k8 U  reg  clk;$ d$ r9 D4 R! {! j4 B
  reg rstn;
; X4 ]) a) w" y0 Z! s  reg  qi;7 V0 X6 [* e0 ^
  wire  qo;
, k4 q0 z" s% O, V6 P  z# l7 k% m- d( a) U5 d
  d_ff_behav2 ut(clk,rstn,qi,qo);
" l, F) y  [+ D7 p
# b: Y3 e  t# p5 _  initial clk  = 0;
% T" f6 k4 f+ q) ^' c5 i. E0 ~  always  #5 clk  =  ~clk;
1 N7 B7 Q/ b. ~2 I8 `! y$ z. O' h+ `! W: Q8 J- ?2 P
  initial begin
& P# L( ^, n# t; r; l5 k( |  rstn = 1'b1;
% k* a+ C$ K0 o4 M% S     qi   = 1'b0;. l1 ^2 M, _# u3 D1 D4 H2 l: `
#5  rstn = 1'b0;
' a' V; j0 j) V$ @ #1  rstn = 1'b1;   0 i; `# x) m; _# L; [9 \# }
#4  qi   = 1'b1;
  L% d0 h$ P3 x. w7 I$ ` #10 qi   = 1'b0;
2 q! C6 {' G, y) b+ s1 s6 e/ g; r' G- F- }9 R
  end! ?4 `" c" H, y% |
endmodule5 h" A; o8 }& d3 F$ `+ }: ~
! e7 H: p6 W# f7 X
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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