目录

1.遍历

1.1for和foreach循环

2.复制

3.比较

4.运算

4.1 sum

4.2 product

4.3 and,or,xor

4.4 max,min,unique

5.排序

5.1 reverse翻转

5.2 shuffle乱序

5.3 sort升序

5.4 rsort降序

6.定位

6.1 find

6.2 find_index

6.3 find_first/last_index

6.4 find_last/first


1.遍历

1.1for和foreach循环

一维数组:

program example1;initial beginbit [31:0] src[5], dst[5];//声明2个数组各自有5个32bits的元素for (int i=0; i<$size(src); i++)//通过for循环遍历数组,$size是系统函数,会返回数组的个数src[i] = i;//结果:0,1,2,3,4foreach (dst[j]) dst[j] = src[j] * 2;//通过foreach循环遍历数组,结果:0,2,4,6,8end
endprogram

多维数组:

//对于多维数组:
program example2;int md[2][3]=' {'{0,1,2},'{3,4,5}};initial begin$display("initial value:");foreach(md[i,j])    $display("md[%0d][%0d]=%0d",i,j,md[i][j]);//先遍历第0行所有列,再遍历第1行所有列end
endprogram
/*结果:
initial value:
0,1,2,3,4,5 */

2.复制

对于复制,可以利用赋值符号“=”直接进行数组的复制

program example3;bit [31:0] src[5] = '{0,1,2,3,4},dst[5];initial begindst = src; // 数组复制,将src数组复制给dst数组src[0] = 5; // 只改变一个元素的值,将第0号元素改变成5$display(dst);//打印dst,看其是否得到了src的值,元素[0]是旧的值还是新值;$display(src);//打印src,看是否改变了src[0]的值end
endprogram

3.比较

在不使用循环的情况下,可以利用“==”或者“!=”来比较数组的内容,不过结果仅限于内容相同或者不相同

program example4;bit [31:0] src[5] = '{0,1,2,3,4},dst[5] = '{5,4,3,2,1};initial beginif (src==dst) $display("src == dst");//比较数组,数量和各个位置的内容都相等才行else $display("src != dst");dst = src;//数组复制src[0] = 5;//只改变一个元素的值//所有元素是否相等$display("src %s dst",(src==dst)?"==":"!=");//使用数组片段对第1-4个元素进行比较$display("src[1:4] %s dst[1:4] ",(src[1:4]==dst[1:4])?"==":"!=");end
endprogram

若要得到数组中的每个元素是否相等,可以用for循环遍历数组的每一个元素,并进行比较:

program example5;bit [31:0] src[5] = '{0,1,2,3,4},dst[5] = '{5,4,3,2,1};initial begindst = src;//数组复制src[0] = 5;//只改变一个元素的值for(int i=0; i<$size(src); i++) beginif (dst[i]==src[i])$display("src[%d] == dst[%d]",i,i);else$display("src[%d] != dst[%d] ",i,i);end/*也可用foreach循环来遍历foreach(dst[i]) beginif (dst[i]==src[i])$display("src[%d] == dst[%d]",i,i);else$display("src[%d] != dst[%d] ",i,i);end
*/end
endprogram

4.运算

4.1 sum

4.2 product

4.3 and,or,xor

4.4 max,min,unique

program example;int array[7]='{5,98,98,3,6,6,0};int summ,j,a,o,x;initial begin$write("initial array:");$display(array);summ=array.sum;//求和$write("sum array:");$display(summ);j=array.product;//求积$write("product array:");$display(j);a=array.and;//and缩减数组,以二进制按位与$write("and array:");$display(a);o=array.or;//or缩减数组,以二进制按位或$write("or array:");$display(o);x=array.xor;//xor缩减数组,以二进制按位异或$write("xor array:");$display(x);array.max;//数组中的最大值$write("max array:");$display(array.max);array.min;//数组中的最小值$write("min array:");$display(array.min);array.unique;//提取出数组中不重复的元素$write("unique array:");$display(array.unique);end
endprogram

仿真结果如下:

这里需要重点注意的是:进行求和时,求和结果的位宽如果没有定义,则默认是加数中的最大位宽,如1'b1+1'b1+1'b1+1'b1=1'b0,若1'b1+1'b1+1'b1+1'b1+3'b0=3'b100=4。

5.排序

5.1 reverse翻转

5.2 shuffle乱序

5.3 sort升序

5.4 rsort降序

以上几种排序方法,通过以下代码示例:

program example;int array[5]='{5,98,3,6,1};initial begin$write("initial array:");$display(array);array.reverse;//使整个数组调个个儿$write("reverse array:");$display(array);array.shuffle;//乱序$write("shuffle array:");$display(array);array.sort;//升序$write("sort array:");$display(array);array.rsort;//降序$write("rsort array:");$display(array);end
endprogram

运行结果:

6.定位

6.1 find

6.2 find_index

6.3 find_first/last_index

6.4 find_last/first

program example;int array[6]='{9,1,8,3,4,4};initial begin$display(array.find with(item>3));//找到并列出大于3的元素$display(array.find_index with(item>3));//找到并列出大于3的元素的位置$display(array.find_first_index with(item>3));//找到并列出大于3的第一个元素的位置$display(array.find_last_index with(item>3));//找到并列出大于3的最后一个元素的位置$display(array.find_first with(item>3));找到并列出大于3的第一个元素$display(array.find_last with(item>3));找到并列出大于3的最后一个元素end
endprogram

SV学习笔记—数组的方法相关推荐

  1. SV学习笔记—队列及方法

    SV引入一个新的数据类型-队列,它结合了链表和数组的优点,可以在队列中的任何地方添加或者删除元素;但队列不是数组,它的元素个数不一样,也不需要new,并且很方便添加或删除元素. 队列的声明使用[$], ...

  2. SV学习笔记—结构体及枚举类型及字符串

    目录 1.结构体 1.1 压缩结构体 1.2 非压缩结构体 1.3联合结构体 2.枚举类型 3.字符串 1.结构体 Verilog的最大缺陷之一是没有数据结构,SV中可以使用struct语句创建结构, ...

  3. c语言中void arrout,c语言学习笔记(数组、函数

    <c语言学习笔记(数组.函数>由会员分享,可在线阅读,更多相关<c语言学习笔记(数组.函数(53页珍藏版)>请在人人文库网上搜索. 1.数组2010-3-29 22:40一维数 ...

  4. Go语言学习笔记-数组、切片、map

    Go语言学习笔记-数组.切片.map 数组:同一数据类型元素的集合.是值类型,长度固定无法修改 声明格式:var 数组名字 [元素数量] 数据类型 var arr [3] int //声明定义了一个长 ...

  5. SV学习笔记—类型转换

    1.静态转换 静态转换操作不对转换值进行检查,格式是type'(value): program test;initial begin$display("int'(42+1.1) is&quo ...

  6. Laravel学习笔记汇总——Collection方法详解

    ## Laravel学习笔记汇总--Collection方法详解 本文参考:https:// laravel.com/docs/8.x/collections // 返回整个底层的数组 collect ...

  7. 深度学习笔记:优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam)

    深度学习笔记(一):logistic分类  深度学习笔记(二):简单神经网络,后向传播算法及实现  深度学习笔记(三):激活函数和损失函数  深度学习笔记:优化方法总结  深度学习笔记(四):循环神经 ...

  8. 2020-4-5 深度学习笔记17 - 蒙特卡罗方法 3 ( 马尔可夫链蒙特卡罗方法MCMC-先验分布/后验分布/似然估计,马尔可夫性质)

    第十七章 蒙特卡罗方法 中文 英文 2020-4-4 深度学习笔记17 - 蒙特卡罗方法 1 (采样和蒙特卡罗方法-必要性和合理性) 2020-4-4 深度学习笔记17 - 蒙特卡罗方法 2 ( 重要 ...

  9. Java 学习笔记 - 数组类型互转

    Java 学习笔记 - 数组类型互转 数组类型转换 字符串数组 to (Integer.Long.Double)列表 传统方式 Java8 Stream方式 数组 to 数组 字符串数组 to (in ...

最新文章

  1. 转 无依赖Office资源的导入导出
  2. CM5.11与CDH5.11安装使用说明
  3. java---编写一个方法,返回一个int型的二维数组,数组中的元素通过解析字符串参数获得。
  4. 微信公众号-接口配置信息url和tokken
  5. 游戏笔记本计算机购买,游戏笔记本电脑推荐 三分钟售罄TA为何如此火爆?
  6. SQL数据库打包发送与接收
  7. 实战Java企业商品进销存管理系统
  8. 乾隆的太医留下来的民间偏方
  9. 数学中的哈斯图如何构造?附实例
  10. Python书法碑帖分割(分别以对于汉字命名)
  11. [NOIP2008]笨小猴 T1
  12. 【图像处理】记一次粗心:未加载opencv_world300d.dll
  13. Josh 的学习笔记之数字通信(Part 2——格式化和基带调制)
  14. 软件测试实训的意义和目的,软件测试报告目的是什么
  15. 训练好的深度学习模型是怎么部署的?
  16. Error: spawn cmd ENOENT at Process.ChildProcess._handle.onexit
  17. 八皇后问题python实现
  18. Java学习路线之并发编程(五)
  19. 分析Not enough variable values available to expand ‘xxx‘
  20. 解决audio音频标签在ios系统上失效的办法

热门文章

  1. 嵌入式常见经典笔试题
  2. 【茗创科技】最酷的脑功能连接图--Circos安装教程
  3. AI智能外呼机器人网络拓扑结构笔记
  4. vue拨打电话功能实现
  5. 一行代码,让你变得有钱
  6. [No0000A3]护眼谎言大揭秘,选择正确的方式保护眼睛!
  7. 文件上传-绕过安全狗
  8. 分享一些摘抄的优美句子~
  9. 在internet网络的某自治系统内交换到达其他自治系统网络可达性信息的协议是_详解:BGP路由协议...
  10. Xmind:安装+破解激活教程