📄 00874.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', '00874.html');" onmousedown="onBodyMouseDown();">
<!-- Begin Popups -->
<div class="Element801" id="popup00056">
<div class="Element800">
<div class="Element14">
链接</div>
<div class="Element11">
<div class="Element10">
<a href="00900.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, 'popup00056');"><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="00387.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="00495.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="00495.html" target="topic">4.1 简介(一般信息)</a> </div></td><td class="Element206" valign="top" width="50%">
<div class="Element207">
数组是变量的集合,这些变量具有相同的数据类型,并可以使用相同的名字加上一个或多个索引来访问。<br><br>在C语言中,数组从0开始并以整数的形式进行索引,或者将其转换成指针。尽管整个数组可以作为一个整体被初始化,但在过程语句中,它的每一个元素必须被分离地读或写。<br><br>在Verilog-2001中,数组使用从左边界到右边界的顺序进行索引。如果它们是向量,它们还可以作为一个整体赋值,而如果他们是数组则不允许这样做。在Verilog-2001中允许多维数组。<br><br>在Verilog-2001中,所有的数据类型都可以声明成数组。<span style="color: #0000FF">reg</span>、<span style="color: #0000FF">wire</span>以及所有其它线网类型还可以具有向量宽度。在对象名字之前声明的尺寸被称作是“向量宽度”尺寸。在对象名字之后声明的尺寸被称为“数组”尺寸。 </div></td></tr><tr>
<td class="Element202" valign="top" width="50%">
<div class="Element203">
<a href="00522.html" target="topic">4.2 压缩与非压缩数组</a> </div></td><td class="Element206" valign="top" width="50%">
<div class="Element207">
压缩数组提供了一种将向量细分成子域的机制,这些子域可以作为数组元素方便地访问。这就可以保证压缩数组能够被表示成一个连续的位组(<i>FPGA技术网提示:是指可以在内存中连续分配存储空间</i>)。一个非压缩数组既可以这样表示也可以不这样表示(<i>FPGA技术网提示:是指仿真器可以选择如何安排存储空间</i>)。压缩数组与非压缩数组的不同之处在于:当一个压缩数组作为一个整体出现的时候,它被当作是单一的向量。<br><br>如果一个压缩数组被声明成有符号的,那么作为单一向量看待的数组也是有符号的。数组的单个元素是无符号的,除非它们的类型是被声明成有符号的命名类型。一个压缩数组的部分选择也是无符号的。<br><br>压缩数组可以是任意长度的整数类型(关于整数类型参见<a href="00389.html" target="topic">3.3节</a>),因此,尺寸为48的压缩数组可以由48位组成,然后这个压缩数组就可以使用在48位算术表达式中。一个压缩数组可以实现的最大尺寸可以是有限制的,但最少应该可以实现65536(2<sup>16</sup>)的长度。<br><br>压缩数组可以仅由单位整数数据类型(<span style="color: #0000FF">bit</span>、<span style="color: #0000FF">logic</span>、<span style="color: #0000FF">reg</span>、<span style="color: #0000FF">wire</span>以及其他线网类型)组成,也可以由其它能够递归成单位整数类型的压缩数组和压缩结构体组成。<br><br>具有预定义宽度的整数类型不能声明成压缩数组。这些类型是:<span style="color: #0000FF">byte</span>、<span style="color: #0000FF">shorting</span>、<span style="color: #0000FF">int</span>、<span style="color: #0000FF">longint</span>、以及<span style="color: #0000FF">integer</span>。一个具有预定义宽度的整数类型可以被看作是一个一维的压缩数组。这些整数类型的压缩尺寸应该以趋向0的方向编号,并且最右边的索引是<span style="color: #FF0000">0</span>。 </div></td></tr><tr>
<td class="Element202" valign="top" width="50%">
<div class="Element203">
<a href="00523.html" target="topic">4.3 多维数组</a> </div></td><td class="Element206" valign="top" width="50%">
<div class="Element207">
于Verilog的存储器类型类似,在类型之后声明的尺寸设置压缩尺寸,在实例之后的尺寸设置非压缩尺寸。 </div></td></tr><tr>
<td class="Element202" valign="top" width="50%">
<div class="Element203">
<a href="00524.html" target="topic">4.4 数组的索引与分片</a> </div></td><td class="Element206" valign="top" width="50%">
<div class="Element207">
一个表达式可以选取压缩数组的一部分,或者选取任何整数类型,并假定具有趋向0的编号方式。<br><br>SystemVerilog使用术语“<strong><i>部分选择</i></strong>(part selet)”来表示从一个单维压缩数组中选取一个或多个连续的位。这与Verilog中对术语“部分选择”的使用是一致的。 </div></td></tr><tr>
<td class="Element202" valign="top" width="50%">
<div class="Element203">
<a href="00525.html" target="topic">4.5 数组查询函数</a> </div></td><td class="Element206" valign="top" width="50%">
<div class="Element207">
SystemVerilog提供了新的系统函数来返回有关数组的信息。包括:<span style="color: #0000FF">$left</span>、<span style="color: #0000FF">$right</span>,、<span style="color: #0000FF">$low</span>,、<span style="color: #0000FF">$high</span>,、<span style="color: #0000FF">$increment</span>、<span style="color: #0000FF">$size</span>、以及<span style="color: #0000FF">$dimensions</span>。这些函数将在<a href="00287.html" target="topic">23.7节</a>中描述。 </div></td></tr><tr>
<td class="Element202" valign="top" width="50%">
<div class="Element203">
<a href="00526.html" target="topic">4.6 动态数组</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="00530.html" target="topic">4.7 数组赋值</a> </div></td><td class="Element206" valign="top" width="50%">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -