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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

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

! x  S5 [% d1 K" i8 k* c
# F/ @) x/ M, W! t/ _Verilog中几种不同的触发器描述,Verilog中有几种不同的方式描触发器,有些是可综合的,有些是不可综合的用于testbench中。2 F: k0 d% d' u. x" y
第一种描述方式是最为常见的,可支持综合+ d- K: ?9 s% M" X' g1 L
module d_ff_rtl(clk,reset,di,q);6 a# V7 h" a) X6 I8 j9 N4 `) W% ~
  input clk;
1 A, c! r  F0 V& [3 e& A- {2 c  input reset;9 r! s% p5 G5 H  O. A* H; g: t5 o
  input di;
6 u- B0 A" q5 u  output reg  q;
- `' ~) o: n% {6 j% k) r7 i7 |+ [2 t
  always@(posedge clk  or negedge reset)
* k" X/ y/ }) `$ C+ h     if(!reset)# [0 l) U- S0 `- Y
       q  <= 1'b0;
6 f$ W! s; Y6 a8 x- U     else
6 T( o; [' ?3 i% h. v3 Q       q  <= di;
. o3 U4 L" h" Nendmodule , ]7 l8 K% }: T4 J: M$ |! w
第二种描述方式使用wait语句实现,这种描述方式不支持综合
; C$ T. `8 E( Xmodule d_ff_behav1(clk,rstn,qi,qo);
$ I8 _/ M  x1 v! t3 y4 I# C) q  J# X  input clk;
. `- l" a; c, `  input rstn;6 B4 R" G, L: O
  input qi;, b/ I8 z! `4 c5 z; S
  output reg qo;( u8 `4 q  ~" J; F1 G: r
# U) ?* `2 r, @( N8 f6 j0 o
  always begin , R  `: Z4 u. }  m
     wait(!rstn);* `" R5 n, |  _& L- H1 N7 Q
      qo <= 1'b0;
4 a- h, L+ l7 v3 \- c    wait(rstn);2 v7 Q* @% l0 z8 u8 C: y! L: E: l
  end
  O" {: {! p- w! Z( c1 t/ p, y2 c( A4 S2 Z/ e  C' E5 P
  always@(posedge clk or negedge rstn)
& p3 I. l! [& U; f    if(rstn)$ U! k" v. \* d! k( B
      qo   <= qi;
( U0 G5 |( E$ x8 Z. }" F4 Gendmodule # N. S4 y7 Z! ~; J" [
第三种描述方式使用assign和deassign语句实现,6 }0 t9 L% i/ f2 H5 L+ k' Q
module d_ff_behav2(clk,rstn,di,qo);  c. K0 `" S( P
  input clk;8 {. B: Z+ [0 y. ]$ X
  input rstn;
6 s$ h4 n9 I5 r, v- K. i4 l  input di;" b6 b/ ~! @. @9 X
  output qo;
  H- W& s* M; c# T6 _; ^: m1 Y. f$ @- X8 o
  reg qo;
' k" l6 ?! C) f8 K2 T/ _% O: F! a3 E& v- x+ l
  always@(rstn)begin $ o! p, ?3 n  X3 O2 X
    if(~rstn)
4 e; I9 q4 _4 W! r( Z' c3 O" z. ~      assign qo = 1'b0;
2 J1 r: V8 T+ I: H    else
  \5 K' K& @+ b5 N0 t$ O      deassign  qo;
5 m4 d7 C) `! w7 U$ Y  end   d2 [+ g/ l8 \! T/ B$ i# x

% S- Y" B& Q  y) _) ^  always@(posedge clk)begin
& ^6 |- D* d9 r+ ]3 E" i4 O       qo  <= di;
1 ?9 q+ x! x" v  end
( |7 n/ N- d) @2 N1 w& pendmodule, w) Y0 x8 m; W* c0 W
testbench内容如下:
( h' |* F! P8 y0 [' Vmodule d_ff_behav_tb;
/ O( M4 J1 W$ l2 q2 M, A( u( K  reg  clk;
" n( o" t( y% W0 v  }" C( B* J  reg rstn;
( @; r! X9 Z# k+ S* z. a  r  reg  qi;/ G: o  m/ j8 z' y
  wire  qo;
6 h3 A7 J7 o1 J& P6 s
- A) }# l4 U2 A! W  d_ff_behav2 ut(clk,rstn,qi,qo);
" t1 i" i, H( G3 v" K
3 _' [3 T3 B0 B# ^  initial clk  = 0;
) {& K. d: @% P  always  #5 clk  =  ~clk;/ Y; ^% }. Y" g1 r

' G. D3 u* v' k! h/ ~% |, ]  initial begin . n* v& ~- c0 Q; V" u& r  c  B& }
  rstn = 1'b1;; f" Q  M* X0 h
     qi   = 1'b0;: p. M6 t/ J; _' M# e; f8 F
#5  rstn = 1'b0;
0 I$ b; E: E5 [4 ]( b$ b5 Q8 G #1  rstn = 1'b1;   
. \1 `, s6 i3 ]' u6 `5 J+ q# g #4  qi   = 1'b1;
/ |* y5 K' a, a" u #10 qi   = 1'b0;
0 Q- s2 u! @: o7 ?' c( T' X/ D) n6 c' F0 W
  end: y) ?" h0 Y7 ^  M* I: I: \0 H
endmodule1 m& Q+ H/ M! A# v) c1 U

$ D" R) N  O5 b  v8 F4 V7 K
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-3 04:26 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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