⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00577.html

📁 这是一本关于verilog编程语言的教程,对学习verilog语言有帮助
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<html>
<head>
<title>8.10 事件控制</title>
    <meta http-equiv="Content-Type" content="text/html; charset=GB2312" />
    <meta name="generator" content="Doc-O-Matic" />
    <meta http-equiv="Content-Style-Type" content="text/css" />
    <link rel="STYLESHEET" href="default.css" type="text/css" />

<script type="text/javascript" src="scripts.js"></script>
</head>
<body class="Element700" onload="onBodyLoadEx('systemverilog31a.html', 'topic', '00577.html');" onmousedown="onBodyMouseDown();">

<!-- Begin Popups -->
<div class="Element801" id="popup00158">
<div class="Element800">
<div class="Element14">
链接</div>
<div class="Element11">
<div class="Element10">
<a href="00846.html" target="topic">第八章 过程语句和控制流</a>, <a href="00917.html" target="topic">主题</a></div>
</div>
</div>
</div>

<!-- End Popups -->

<!-- Begin Page Header -->
<div class="Element710" id="areafixed">
<div class="Element92">
<table width="100%" cellspacing="0" cellpadding="0">
<tr><td width="33%">
<div class="Element1">
<a href="#" onmousedown="showPopup(this, 'popup00158');"><img src="seealsolink.png" border="0" alt="" title=""></a> SystemVerilog 3.1a语言参考手册</div>
</td><td width="34%">
<div class="Element2">
</div>
</td><td width="33%">
<div class="Element90">
<a href="00595.html" target="topic"><img src="btn_prev_lightblue.gif" border="0" alt="Previous" title="Previous" onmouseover="switchImage(this, 'btn_prev_lightblue_hover.gif');" onmouseout="switchImage(this, 'btn_prev_lightblue.gif');"></a><a href="00846.html" target="topic"><img src="btn_up_lightblue.gif" border="0" alt="Up" title="Up" onmouseover="switchImage(this, 'btn_up_lightblue_hover.gif');" onmouseout="switchImage(this, 'btn_up_lightblue.gif');"></a><a href="00578.html" target="topic"><img src="btn_next_lightblue.gif" border="0" alt="Next" title="Next" onmouseover="switchImage(this, 'btn_next_lightblue_hover.gif');" onmouseout="switchImage(this, 'btn_next_lightblue.gif');"></a></div>
</td></tr></table><div class="Element5">
8.10 事件控制</div>
</div>
</div>

<!-- End Page Header -->

<!-- Begin Client Area -->
<div class="Element720" id="areascroll">
<div class="Element721">

<!-- Begin Page Content -->
<div class="Element58">
<a name="描述"></a><div class="Element11">
<div class="Element10">
<div class="Element170">
<a href="#" onclick="CopyElementToClipboard('code00293');">Copy Code</a></div>
<div class="Element13"><div class="Element12" id="code00293"><pre class="Element12">delay_or_event_control ::=             <span style="color: #008000">// 引用自附录A.6.5</span>
    delay_control
  | event_control
  | <strong><span style="color: #FF0000">repeat</span></strong> <strong><span style="color: #FF0000">(</span></strong>expression<strong><span style="color: #FF0000">)</span></strong> event_control

delay_control ::=
    <strong><span style="color: #FF0000">#</span></strong>delay_value
  | <strong><span style="color: #FF0000">#(</span></strong>mintypmax_expression<strong><span style="color: #FF0000">)</span></strong>

event_control ::=
    <strong><span style="color: #FF0000">@</span></strong>hierarchical_event_identifier
  | <strong><span style="color: #FF0000">@(</span></strong>event_expression<strong><span style="color: #FF0000">)</span></strong>
  | <strong><span style="color: #FF0000">@*</span></strong>
  | <strong><span style="color: #FF0000">@(*)</span></strong>
  | <strong><span style="color: #FF0000">@</span></strong>sequence_instance

event_expression ::=
    [edge_identifier] expression [<strong><span style="color: #FF0000">iff</span></strong> expression]
  | sequence_instance [<strong><span style="color: #FF0000">iff</span></strong> expression]
  | event_expression <strong><span style="color: #FF0000">or</span></strong> event_expression
  | event_expression <strong><span style="color: #FF0000">,</span></strong> event_expression

edge_identifier ::= <strong><span style="color: #FF0000">posedge</span></strong> | <strong><span style="color: #FF0000">negedge  </span><span style="color: #008000"></strong>// 引用自附录A.7.4</span></pre></div></div>
<p class="Element10" style="text-align: center">
<strong>语法 8-9—时延与事件控制语法(摘录自附录A)</strong></p><p class="Element10">
&nbsp;</p>
<p class="Element10">
像Verilog一样,一个变量或线网的任何变化都可以使用<span style="color: #800080">@</span>事件控制检测到。如果表达式的计算结果多于一位,那么结果中的任何一位发生变化(包括<span style="color: #FF0000">X</span>到<span style="color: #FF0000">Z</span>的变化)均会触发事件控制。&nbsp;</p>
<p class="Element10">
&nbsp;</p>
<p class="Element10">
SystemVerilog为<span style="color: #800080">@</span>事件控制加入了一个<span style="color: #0000FF">iff</span>限定符。 </p><div class="Element170">
<a href="#" onclick="CopyElementToClipboard('code00294');">Copy Code</a></div>
<div class="Element13"><div class="Element12" id="code00294"><pre class="Element12"><span style="color: #0000FF">module</span> latch <span style="color: #800080">(</span><span style="color: #0000FF">output logic</span> <span style="color: #800080">[</span><span style="color: #FF0000">31</span><span style="color: #800080">:</span><span style="color: #FF0000">0</span><span style="color: #800080">]</span> y<span style="color: #800080">,</span> <span style="color: #0000FF">input</span> <span style="color: #800080">[</span><span style="color: #FF0000">31</span><span style="color: #800080">:</span><span style="color: #FF0000">0</span><span style="color: #800080">]</span> a<span style="color: #800080">,</span> <span style="color: #0000FF">input</span> enable<span style="color: #800080">);</span>
    always <span style="color: #800080">@(</span>a <span style="color: #0000FF">iff</span> enable <span style="color: #800080">==</span> 1<span style="color: #800080">)</span>
        y <span style="color: #800080">&lt;=</span> a<span style="color: #800080">;</span> <span style="color: #008000">// latch处于透明模式</span>
<span style="color: #0000FF">endmodule</span></pre></div></div>
<p class="Element10">
事件表达式仅仅在i<span style="color: #0000FF">ff</span>之后的表达式为“真”时才会触发,在上面的例子中就是<i>enable</i>等于1的情况。注意:这个表达式只有在<i>a</i>发生变化时计算,而不是<i>enable</i>发生变化的时候。还需要注意:<span style="color: #0000FF">iff</span>比<span style="color: #0000FF">or</span>具有更高的优先级。我们可以使用圆括号使这层含义更加清晰。&nbsp;</p>
<p class="Element10">
&nbsp;</p>
<p class="Element10">
如果变量不是一个四态类型,那么<span style="color: #0000FF">posedge</span>和<span style="color: #0000FF">negedge</span>分别指的是从<span style="color: #FF0000">0</span>和到<span style="color: #FF0000">0</span>的跃变。&nbsp;</p>
<p class="Element10">
&nbsp;</p>
<p class="Element10">
如果这个表达式表示一个时钟控制块的输入或双向端口(参见<a href="00871.html" target="topic">第十五章</a>),那么事件控制操作符使用同步的值,也就是时钟控制事件采样的值。表达式也可以表示一个由时钟控制事件触发的时钟控制块的名字(没有沿限定符)。&nbsp;</p>
<p class="Element10">
&nbsp;</p>
<p class="Element10">
与事件控制一起使用的变量可以是任意integral数据类型(参见<a href="00390.html" target="topic">3.3.1节</a>)或者是字符串。这个变量可以是一个简单的变量也可以是<span style="color: #0000FF">ref</span>自变量(通过引用传递的变量);它可以是上述类型的数组、联合数组、或对象(类实例)的成员。&nbsp;</p>
<p class="Element10">
&nbsp;</p>
<p class="Element10">
事件表达式必须返回单一值。如果表达式能够缩减到一个单一值,集合类型也可以使用在表达式中。对象成员或集合元素可以是任意类型,只要表达式的结果是一个单一值。&nbsp;</p>
<p class="Element10">
&nbsp;</p>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -