📄 00871.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<html>
<head>
<title>第十五章 时钟控制块</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', '00871.html');" onmousedown="onBodyMouseDown();">
<!-- Begin Popups -->
<div class="Element801" id="popup00299">
<div class="Element800">
<div class="Element14">
链接</div>
<div class="Element11">
<div class="Element10">
<a href="00941.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, 'popup00299');"><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="00118.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><img src="btn_up_d.gif" border="0" alt="Up" title="Up"><a href="00119.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">
第十五章 时钟控制块</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="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">
<div class="Element212">
<div class="TableDiv">
<table cellspacing="0" class="Table0">
<tr>
<td class="Element200" valign="top" width="50%">
<div class="Element201">
主题 </div></td><td class="Element204" valign="top" width="50%">
<div class="Element205">
描述 </div></td></tr><tr>
<td class="Element202" valign="top" width="50%">
<div class="Element203">
<a href="00119.html" target="topic">15.1 简介(一般信息)</a> </div></td><td class="Element206" valign="top" width="50%">
<div class="Element207">
在Verilog中,块与块之间的通信通过模块端口来指定。SystemVerilog加入了接口(<span style="color: #0000FF">interface</span>)这一概念,接口是一个关键的结构,它能够封装块与块之间的通信,因此,用户能够方便地改变模块间通信的建模抽象层次。<br><br>一个接口指定了一个测试平台用来与被测设计进行通信的信号或线网。然而,一个接口并没有任何显式的时序规程、同步要求、或时钟控制范例。<br><br>SystemVerilog加入了时钟控制块,它能够识别时钟信号,并能够捕获被建模块的时序和同步要求。一个时钟控制块集合了同步于一个特定时钟的信号,并且使得它们的时序成为显式的。在一个基于周期的方法中,时钟控制块是一个关键的元素,它使得用户能够在一个更高的抽象层次上编写测试平台。除了关注于信号以及时间上的转变外,测试还可以根据周期和事务定义。根据环境的不同,一个测试平台可以包含一个或多个时钟控制块,每一个都可以包含它自己的时钟加上任意数目的信号。<br><br>时钟控制块将时序和同步细节与一个测试平台中的结构、功能和过程元素分割开来。因此,采样和驱动时钟控制块信号的时序成为隐式的并且相对于时钟控制块的时钟。这使得我们能够以一个非常简洁的方式编写一组关键的操作,而无需显式地使用时钟或指定时序。这些操作是:</p>
<ul class="Element630">
<li class="Element600">同步的事件</li>
<li class="Element600">输入采样</li>
<li class="Element600">同步的驱动</li>
</ul><p class="Element207">
</div></td></tr><tr>
<td class="Element202" valign="top" width="50%">
<div class="Element203">
<a href="00127.html" target="topic">15.2 时钟控制块声明</a> </div></td><td class="Element206" valign="top" width="50%">
<div class="Element207">
时钟控制块的声明语法如下: </div></td></tr><tr>
<td class="Element202" valign="top" width="50%">
<div class="Element203">
<a href="00128.html" target="topic">15.3 输入时滞与输出时滞</a> </div></td><td class="Element206" valign="top" width="50%">
<div class="Element207">
输入或双向信号在指定的时钟事件上采样。如果指定了一个输入时滞,那么信号在时钟事件之前的时滞时间单位上采样。类似地,输出或双向信号在相应的时钟事件之后的时滞仿真时间单位上被驱动。图15-1为一个上升沿时钟显示了基本的采样/驱动时序。<br> </p><p class="Element207" style="text-align: center">
<img src="Figure_15_1.png" border="0" alt="" title=""><br><strong>图15-1 — 包含相对于时钟上升沿的时滞的采样和驱动时间</strong> </p><p class="Element207">
<br>一个时滞必须是一个常量表达式,并且可以被说明成一个参数。如果没有指定时滞的时间单位,那么会使用当前的时间单位。如果使用了一个数字的话,那么时滞会使用当前作用范围的时间比例来解释。 </div></td></tr><tr>
<td class="Element202" valign="top" width="50%">
<div class="Element203">
<a href="00129.html" target="topic">15.4 层次化的表达式</a> </div></td><td class="Element206" valign="top" width="50%">
<div class="Element207">
一个时钟控制块中的任何信号都可以与一个任意的层次化表达式相关联。正像<a href="00127.html" target="topic">15.2节</a>所描述的那样,层次化的表达式通过在层次化表达式前面附加一个等号(<span style="color: #800080">=</span>)来引入: </div></td></tr><tr>
<td class="Element202" valign="top" width="50%">
<div class="Element203">
<a href="00130.html" target="topic">15.5 多时钟控制块中的信号</a> </div></td><td class="Element206" valign="top" width="50%">
<div class="Element207">
相同的信号(时钟、输入、输入输出、或输出)可以在一个时钟控制块中出现多次。使用相同时钟(或时钟表达式)的时钟控制块应该共享相同的同步事件,这种方式就像几个锁存器可以被一个相同的时钟控制一样。输入语义在<a href="00122.html" target="topic">15.12节</a>中描述,输出语义在<a href="00124.html" target="topic">15.14节</a>中描述。 </div></td></tr><tr>
<td class="Element202" valign="top" width="50%">
<div class="Element203">
<a href="00131.html" target="topic">15.6 时钟控制块的作用范围和生命周期</a> </div></td><td class="Element206" valign="top" width="50%">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -