📄 00860.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', '00860.html');" onmousedown="onBodyMouseDown();">
<!-- Begin Popups -->
<div class="Element801" id="popup00118">
<div class="Element800">
<div class="Element14">
链接</div>
<div class="Element11">
<div class="Element10">
<a href="00910.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, 'popup00118');"><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="00553.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="00554.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="00554.html" target="topic">7.1 简介(一般信息)</a> </div></td><td class="Element206" valign="top" width="50%">
<div class="Element207">
SystemVerilog操作符是Verilog和C语言操作符的组合。在这两种语言中,操作数的类型和尺寸是固定的,因此操作符具有固定的类型和尺寸。SystemVerilog保持了操作符的固定类型和尺寸。这能够产生有效的编码。<br><br>Verilog不包含赋值操作符或递增及递减操作符。SystemVerilog包含了C语言的赋值操作符,例如<span style="color: #800080">+=</span>,以及C语言的递增和递减操作符(<span style="color: #800080">++</span>和<span style="color: #800080">--</span>)。<br><br>Verilog-2001加入了有符号线网和<span style="color: #0000FF">reg</span>变量,以及有符号文本值。对于有符号整数和无符号整数的结合规则,Verilog和C语言存在差异。SystemVerilog使用Verilog-2001的规则。 </div></td></tr><tr>
<td class="Element202" valign="top" width="50%">
<div class="Element203">
<a href="00567.html" target="topic">7.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="00569.html" target="topic">7.3 赋值操作符</a> </div></td><td class="Element206" valign="top" width="50%">
<div class="Element207">
除了简单赋值操作符(<span style="color: #800080">=</span>)之外,SystemVerilog包含了C语言赋值操作符以及特殊的位级赋值操作符:<span style="color: #800080">+=</span>、<span style="color: #800080"> -=</span>、<span style="color: #800080"> *=</span>、<span style="color: #800080"> /=</span>、<span style="color: #800080"> %=</span>、<span style="color: #800080"> &=</span>、<span style="color: #800080"> |=</span>、<span style="color: #800080"> ^=</span>、<span style="color: #800080"> <<=</span>、<span style="color: #800080"> >>=</span>、<span style="color: #800080"> <<<=</span>、 以及 <span style="color: #800080">>>>=</span>。除了左侧索引表达式仅仅计算一次之外,赋值操作符在语义上等价于一个阻塞赋值。例如: </div></td></tr><tr>
<td class="Element202" valign="top" width="50%">
<div class="Element203">
<a href="00570.html" target="topic">7.4 对logic和bit类型的操作</a> </div></td><td class="Element206" valign="top" width="50%">
<div class="Element207">
当一个二元操作符包含一个<span style="color: #0000FF">bit</span>类型的操作数和一个<span style="color: #0000FF">logic</span>类型的操作数的时候,结果的数据类型是<span style="color: #0000FF">logic</span>。如果一个操作数的类型是<span style="color: #0000FF">int</span>而另一个操作数的类型是<span style="color: #0000FF">integer</span>的时候,那么结果的数据类型是<span style="color: #0000FF">integer</span>。<br><br>对于<span style="color: #800080">!=</span>和<span style="color: #800080">==</span>操作符,如果任何一个操作数包含<span style="color: #FF0000">X</span>或<span style="color: #FF0000">Z</span>,那么就像Verilog-2001一样,返回一个<span style="color: #FF0000">X</span>。如果结果被转换成<span style="color: #0000FF">bit</span>类型(例如在一个<span style="color: #0000FF">if</span>语句中),那么结果被转换成<span style="color: #FF0000">0</span>。<br><br>一元缩减操作符(<span style="color: #800080">& ~& | ~| ^ ~^</span>)可以应用于任何整数类型(包括压缩数组)。如果压缩类型是一个四态类型,那么操作符应该返回类型为<span style="color: #0000FF">logic</span>的值;如果压缩类型是一个两态类型,那么返回值的类型是<span style="color: #0000FF">bit</span>。 </div></td></tr><tr>
<td class="Element202" valign="top" width="50%">
<div class="Element203">
<a href="00571.html" target="topic">7.5 通配等式与通配不等式</a> </div></td><td class="Element206" valign="top" width="50%">
<div class="Element207">
SystemVerilog 3.1引入了如下所述的通配比较操作符。<br> </p><p class="Element207" style="text-align: center">
<strong><i>表 7-1:通配等式与通配不等式操作符</i></strong> </p><p class="Element207">
</div></td></tr><tr>
<td class="Element202" valign="top" width="50%">
<div class="Element203">
<a href="00572.html" target="topic">7.6 实操作符</a> </div></td><td class="Element206" valign="top" width="50%">
<div class="Element207">
<span style="color: #0000FF">shortreal</span>类型的操作数与Verilog <span style="color: #0000FF">real</span>类型的操作数具有相同的操作限制。一元操作符<span style="color: #800080">++</span>和<span style="color: #800080">--</span>可以应用于类型为<span style="color: #0000FF">real</span>和<span style="color: #0000FF">shortreal</span>的操作数(按<span style="color: #FF0000">1.0</span>递增或递减)。赋值操作符<span style="color: #800080">+=</span>、<span style="color: #800080">-=</span>、<span style="color: #800080">*=</span>、<span style="color: #800080">/=</span>也可以具有<span style="color: #0000FF">real</span>和<span style="color: #0000FF">shortreal</span>类型的操作数。<br><br>除了三元操作符中<span style="color: #800080">?</span>之前的操作数外,如果任一操作数是<span style="color: #0000FF">real</span>类型的,那么结果就是<span style="color: #0000FF">real</span>类型的。另外,除了三元操作符中<span style="color: #800080">?</span>之前的操作数外,如果任一操作数是<span style="color: #0000FF">shortreal</span>类型的,那么结果就是<span style="color: #0000FF">shortreal</span>类型的。<br><br>实操作数还可以用在下面的表达式中: </div></td></tr><tr>
<td class="Element202" valign="top" width="50%">
<div class="Element203">
<a href="00573.html" target="topic">7.7 尺寸</a> </div></td><td class="Element206" valign="top" width="50%">
<div class="Element207">
一个表达式的位宽由操作数和上下文决定,它与Verilog遵从相同的规则。在SystemVerilog中,可以使用强制类型转换来设置中间值的尺寸。<br><br>在Verilog中,当一条赋值语句的左侧和右侧具有不同尺寸的时候,工具可以发布一条警告信息。使用SystemVerilog的尺寸强制转换,可以阻止掉这些警告信息。 </div></td></tr><tr>
<td class="Element202" valign="top" width="50%">
<div class="Element203">
<a href="00574.html" target="topic">7.8 符号</a> </div></td><td class="Element206" valign="top" width="50%">
<div class="Element207">
确定SystemVerilog表达式符号的规则应该与Verilog相同。通过类型转换将<span style="color: #0000FF">shortreal</span>转换成<span style="color: #0000FF">integer</span>应该是有符号的。 </div></td></tr><tr>
<td class="Element202" valign="top" width="50%">
<div class="Element203">
<a href="00575.html" target="topic">7.9 操作符优先级与关联性</a> </div></td><td class="Element206" valign="top" width="50%">
<div class="Element207">
操作符的优先级与关联性在表7-2中列出。最先列出的操作符具有最高优先级。<br> </p><p class="Element207" style="text-align: center">
<strong>表 7-2:操作符优先级与关联性</strong> </p><p class="Element207">
</div></td></tr><tr>
<td class="Element202" valign="top" width="50%">
<div class="Element203">
<a href="00555.html" target="topic">7.10 内建方法</a> </div></td><td class="Element206" valign="top" width="50%">
<div class="Element207">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -