📄 00153.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<html>
<head>
<title>17.12.2 多时钟控制特性</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', '00153.html');" onmousedown="onBodyMouseDown();">
<!-- Begin Popups -->
<div class="Element801" id="popup00357">
<div class="Element800">
<div class="Element14">
链接</div>
<div class="Element11">
<div class="Element10">
<a href="00151.html" target="topic">17.12 多时钟的支持</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, 'popup00357');"><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="00152.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="00151.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="00154.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">
17.12.2 多时钟控制特性</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">
<p class="Element10">
As in the case of singly-clocked properties, the result of evaluating a multiply-clocked property is either true or false. Multiply-clocked properties can be formed in a number of ways. </p>
<p class="Element10">
</p>
<p class="Element10">
Multiply-clocked sequences are themselves multiply-clocked properties. For example, </p><div class="Element170">
<a href="#" onclick="CopyElementToClipboard('code00708');">Copy Code</a></div>
<div class="Element13"><div class="Element12" id="code00708"><pre class="Element12">@(posedge clk0) sig0 ##1 @(posedge clk1) sig1</pre></div></div>
<p class="Element10">
is a multiply-clocked property. If a multiply-clocked sequence is evaluated as a property starting at some point, the evaluation returns true if and only if there is a match of the multiply-clocked sequence beginning at that point. </p>
<p class="Element10">
</p>
<p class="Element10">
The boolean property operators (not, and, or) can be used freely to combine singly- and multiply-clocked properties. The meanings of the boolean property operators are the usual ones, just as in the case of singlyclocked properties. For example, </p><div class="Element170">
<a href="#" onclick="CopyElementToClipboard('code00709');">Copy Code</a></div>
<div class="Element13"><div class="Element12" id="code00709"><pre class="Element12">(@(posedge clk0) sig0) and (@(posedge clk1) sig1)</pre></div></div>
<p class="Element10">
is a multiply-clocked property, but it is not a multiply-clocked sequence. This property evaluates to true at a point if and only if the two sequences </p><div class="Element170">
<a href="#" onclick="CopyElementToClipboard('code00710');">Copy Code</a></div>
<div class="Element13"><div class="Element12" id="code00710"><pre class="Element12">@(posedge clk0) sig0</pre></div></div>
<p class="Element10">
and </p><div class="Element170">
<a href="#" onclick="CopyElementToClipboard('code00711');">Copy Code</a></div>
<div class="Element13"><div class="Element12" id="code00711"><pre class="Element12">@(posedge clk1) sig1</pre></div></div>
<p class="Element10">
both have matches beginning at the point. </p>
<p class="Element10">
</p>
<p class="Element10">
The non-overlapping implication operator |=> can be used freely to create a multiply-clocked property from an antecedent sequence and a consequent property that are differently- or multiply-clocked. The meaning of multiply-clocked non-overlapping implication is similar to that of singly-clocked non-overlapping implication. For example, if s0, s1 are sequences with no clocking event, then in </p><div class="Element170">
<a href="#" onclick="CopyElementToClipboard('code00712');">Copy Code</a></div>
<div class="Element13"><div class="Element12" id="code00712"><pre class="Element12">@(posedge clk0) s0 |=> @(posedge clk1) s1</pre></div></div>
<p class="Element10">
|=> synchronizes between posedge clk0 and posedge clk1. Starting at the point at which the implication is being evaluated, for each match of s0 clocked by clk0, time is advanced from the end point of the match to the nearest strictly future occurrence of posedge clk1, and from that point there must exist a match of s1 clocked by clk1. </p>
<p class="Element10">
</p>
<p class="Element10">
The non-overlapping implication operator |=> can synchronize between the ending clock event of its antecedent and several leading clock events for subproperties of its consequent. For example, in </p><div class="Element170">
<a href="#" onclick="CopyElementToClipboard('code00713');">Copy Code</a></div>
<div class="Element13"><div class="Element12" id="code00713"><pre class="Element12">@(posedge clk0) s0 |=> (@(posedge clk1) s1) and (@(posedge clk2) s2)</pre></div></div>
<p class="Element10">
|=> synchronizes between posedge clk0 and both posedge clk1 and posedge clk2. </p>
<p class="Element10">
</p>
<p class="Element10">
Since synchronization between distinct clocks always requires strict advance of time, the two property building operators that require special care with multiple clocks are the overlapping implication |-> and if/if...else. </p>
<p class="Element10">
</p>
<p class="Element10">
Since |-> overlaps the end of its antecedent with the beginning of its consequent, the clock for the end of the antecedent must be the same as the clock for the beginning of the consequent. For example, if clk0 and clk1 are not identical and s0, s1, s2 are sequences with no clocking events, then </p><div class="Element170">
<a href="#" onclick="CopyElementToClipboard('code00714');">Copy Code</a></div>
<div class="Element13"><div class="Element12" id="code00714"><pre class="Element12">@(posedge clk0) s0 |-> @(posedge clk1) s1 ##1 @(posedge clk2) s2</pre></div></div>
<p class="Element10">
is illegal, but </p><div class="Element170">
<a href="#" onclick="CopyElementToClipboard('code00715');">Copy Code</a></div>
<div class="Element13"><div class="Element12" id="code00715"><pre class="Element12">@(posedge clk0) s0 |-> @(posedge clk0) s1 ##1 @(posedge clk2) s2</pre></div></div>
<p class="Element10">
is legal. </p>
<p class="Element10">
</p>
<p class="Element10">
The if/if...else operators overlap the test of the boolean condition with the beginning of the if clause property and, if present, the else clause property. Therefore, whenever using if or if...else, the if and else clause properties must begin on the same clock as the test of the boolean condition. For example, if clk0 and clk1 are not identical and s0, s1, s2 are sequences with no clocking events, then </p><div class="Element170">
<a href="#" onclick="CopyElementToClipboard('code00716');">Copy Code</a></div>
<div class="Element13"><div class="Element12" id="code00716"><pre class="Element12">@(posedge clk0) if (b) @(posedge clk0) s1</pre></div></div>
<p class="Element10">
is legal, but </p><div class="Element170">
<a href="#" onclick="CopyElementToClipboard('code00717');">Copy Code</a></div>
<div class="Element13"><div class="Element12" id="code00717"><pre class="Element12">@(posedge clk0) if (b) @(posedge clk0) s1 else @(posedge clk1) s2</pre></div></div>
<p class="Element10">
is illegal because the else clause property begins on a different clock than the if condition.</p></div>
</div>
<a name="Group"></a><div class="Element14">
<a onclick="toggleVisibilityStored('Group');" class="a_Element14"><img src="sectionminus.png" border="0" alt="" title="" id="imgGroup">Group</a></div>
<div id="divGroup">
<div class="Element11">
<div class="Element10">
<p class="Element10">
<a href="00151.html" target="topic">17.12 多时钟的支持</a></p></div>
</div>
</div>
<a name="Links"></a><div class="Element14">
<a onclick="toggleVisibilityStored('链接');" class="a_Element14"><img src="sectionminus.png" border="0" alt="" title="" id="img链接">链接</a></div>
<div id="div链接">
<div class="Element11">
<div class="Element10">
<a href="00151.html" target="topic">17.12 多时钟的支持</a></div>
</div>
</div>
</div>
<!-- End Page Content -->
<!-- Begin Page Footer -->
<hr width="98%" align="center" size="1" color="#CCCCCC" />
<table align="center" cellpadding="0" cellspacing="0" border="0">
<tbody>
<tr height="10">
<td></td>
</tr>
<tr align="center">
<td>
<script type="text/javascript"><!--
google_ad_client = "pub-5266859600380184";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
google_page_url = document.location;
//--></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</td>
</tr>
<tr height="15">
<td></td>
</tr>
<tr align="center">
<td>
<font size=2>除非特别声明,原文版权归作者所有,如有转摘请注明原作者以及译者(<a href="http://www.fpgatech.net/" target="_blank">FPGA技术网</a>)信息。<br />
如果您对本主题有何建议或意见,请登陆<a href="http://www.fpgatech.net/forum/forumdisplay.php?fid=18" target="_blank">FPGA开发者家园</a>提交,您的参与是我们前进的动力。</font>
<script language="javascript" type="text/javascript" src="http://js.users.51.la/195685.js"></script>
<noscript><a href="http://www.51.la/?195685" target="_blank"><img alt="我要啦免费统计" src="http://img.users.51.la/195685.asp" style="border:none" /></a></noscript>
</td>
</tr>
</tbody>
</table>
<!-- End Page Footer -->
</div>
</div>
<!-- End Client Area -->
</body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -