📄 00871.html
字号:
<div class="Element207">
一个时钟控制块既是一个声明也是这个声明的一个实例。单独的实例化步骤不是必要的。相反,会为包含声明的块的每一个实例产生一个拷贝(就像一个<span style="color: #0000FF">always</span>块一样)。一旦声明了一个时钟控制块,定时信号就可以通过时钟控制块的名字和一个点(<strong><span style="color: #800080">.</span></strong>)操作符来引用: </div></td></tr><tr>
<td class="Element202" valign="top" width="50%">
<div class="Element203">
<a href="00132.html" target="topic">15.7 多时钟控制块的例子</a> </div></td><td class="Element206" valign="top" width="50%">
<div class="Element207">
在这个例子中,一个简单的测试程序包含了两个时钟控制块。在本例中使用的程序结构将在<a href="00867.html" target="topic">第十六章</a>中讨论。 </div></td></tr><tr>
<td class="Element202" valign="top" width="50%">
<div class="Element203">
<a href="00133.html" target="topic">15.8 接口与时钟控制块</a> </div></td><td class="Element206" valign="top" width="50%">
<div class="Element207">
一个时钟控制块封装了一组共享一个基本时钟的信号,因此使用一个SystemVerilog接口说明一个时钟控制块能够显著地减少连接测试平台所需代码的数目。此外,由于测试平台内时钟控制块中信号方向是有关测试平台而不是被测设计的,一个<span style="color: #0000FF">modport</span>声明可以恰当地描述这两个方向。一个测试平台程序可以包含在一个程序当中,并且它的端口可以是接口,这个接口对应于每个时钟控制块中声明的信号。从测试平台这一侧(也就是<span class="Element146"><span style="color: #0000FF">modport</span> test</span>)看接口中的连线应该与时钟控制块中声明的方向相同,而从被测设计来看则具有相反的方向(也就是<span class="Element146"><span style="color: #0000FF">modport</span> dut</span>)。<br><br>例如,前面的例子可以使用接口按如下的方式重新编写: </div></td></tr><tr>
<td class="Element202" valign="top" width="50%">
<div class="Element203">
<a href="00134.html" target="topic">15.9 时钟控制块事件</a> </div></td><td class="Element206" valign="top" width="50%">
<div class="Element207">
一个时钟控制块的时钟控制事件可以直接使用时钟控制块的名字来引用,而不用理会用来声明时钟控制块的真实时钟控制事件。<br><br>例如: </div></td></tr><tr>
<td class="Element202" valign="top" width="50%">
<div class="Element203">
<a href="00120.html" target="topic">15.10 周期延时:##</a> </div></td><td class="Element206" valign="top" width="50%">
<div class="Element207">
<span style="color: #800080">##</span>操作符可以被用来将执行延时一个指定数目的时钟控制事件,或者时钟周期。<br><br>周期延时语句的语法如下: </div></td></tr><tr>
<td class="Element202" valign="top" width="50%">
<div class="Element203">
<a href="00121.html" target="topic">15.11 缺省时钟控制</a> </div></td><td class="Element206" valign="top" width="50%">
<div class="Element207">
一个时钟控制可以被说明成缺省的,这样它可以作用于一个指定模块、接口、或程序内的所有周期延时操作。<br><br>缺省周期说明语句的语法如下: </div></td></tr><tr>
<td class="Element202" valign="top" width="50%">
<div class="Element203">
<a href="00122.html" target="topic">15.12 输入采样</a> </div></td><td class="Element206" valign="top" width="50%">
<div class="Element207">
所有的时钟控制块输入(<span style="color: #0000FF">input</span>或<span style="color: #0000FF">inout</span>)都在对应的时钟控制事件上采样。如果输入时滞不是一个显式的<span style="color: #800080">#</span><span style="color: #FF0000">0</span>,那么采样的值对应于先于时钟控制事件的时间布值时滞时间单位的<span class="Element146">Postponed</span>区域中的信号值(参见<a href="00128.html" target="topic">15.3节</a>中的图15-1)。如果输入时滞是一个显式的<span style="color: #800080">#</span><span style="color: #FF0000">0</span>,那么采样的值对应于<span class="Element146">Observed</span>区域的采样值。<br><br>采样会立即发生(调用进程不会阻塞)。当一个信号出现在一个表达式中的时候,它会被信号的采样值替代,也就是在最后一个采样点上采样的值。<br><br>当同一个信号是多个始终控制块输入的时候,它的语义是很直接的;每一个时钟控制块使用自己的时钟控制事件采样对应的信号。 </div></td></tr><tr>
<td class="Element202" valign="top" width="50%">
<div class="Element203">
<a href="00123.html" target="topic">15.13 同步的事件</a> </div></td><td class="Element206" valign="top" width="50%">
<div class="Element207">
显式的同步通过事件控制操作符<span style="color: #800080">@</span>来实现,它允许一个进程来等待一个特定的信号值变化或者一个时钟控制事件(参见<a href="00134.html" target="topic">15.9节</a>)。<br><br>同步操作符的语法在<a href="00577.html" target="topic">第8.10节</a>给出。<br><br>与事件控制一起使用的表达式可以指示时钟控制块的输入(<span style="color: #0000FF">input</span>或<span style="color: #0000FF">inout</span>)或者一个分片。分片可以包含动态索引,它会在<span style="color: #800080">@</span>表达式执行的时候进行一次计算。<br><br>下面是一些同步语句的例子:</p>
<ul class="Element630">
<li class="Element600">等待时钟控制块<span class="Element146">ram_bus</span>中<span class="Element146">ack_1</span>信号的下一次变化</li>
</ul><p class="Element207">
</div></td></tr><tr>
<td class="Element202" valign="top" width="50%">
<div class="Element203">
<a href="00124.html" target="topic">15.14 同步的驱动</a> </div></td><td class="Element206" valign="top" width="50%">
<div class="Element207">
时钟控制块的输出(output或inout)被用来在一个指定的时间上将值驱动到它们对应的信号。换句话说,对应的信号在指定的时钟控制事件上通过输出时滞来修改它的值。<br><br>说明一个同步驱动的语法类似于一个赋值: </div></td></tr></table></div></div>
</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="00941.html" target="topic">主题</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 + -