【Verilog】Verilog定义二维数组(2D Array)

这篇具有很好参考价值的文章主要介绍了【Verilog】Verilog定义二维数组(2D Array)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

 

定义的种类

第一种

赋值方法

第二种

赋值方法

第三种

赋值方法


 

定义的种类

首先看几组定义类型

第一种

定义一个位宽为8的 data1(reg) 和 data2(wire) 的变量。

reg     [7:0]    data1;
wire    [7:0]    data2;

赋值方法

如果要对其进行赋值等操作,可以用 always 块进行赋值,或者利用 assign 语句。

第二种

定义一个一维数组

将内存定义为一个 reg 类型的一维数组,这个数组中的任何一个单元都可以通过一个下标去访问。这样的数组的定义方式如下:

reg    [7:0]    data  [255:0];

其中 [7:0] 表示一维数组中的每个元素的位宽大小,而在变量后面的 [255:0] ,表示的却不是位宽大小,它表示的是所创建的数组的深度,也就是一维数组中的元素大小,也可以称作为数组的容量大小。

赋值方法

直接访问数组中元素的下标即可,下面的代码表示的是将数字1赋值到一维数组中的第一个元素。

reg    [7:0]    data  [255:0];

data[0] = 1;

第三种

定义一个二维数组,也可以说是一种向量。

这种定义方式比较少见,因为一般在Verilog代码不会涉及到二维数组的定义,这种定义方法和C语言很类似,它所表达的含义也是向内存取得一块行256、列256,每个位宽为8的二维数组,这种定义方法是我在做矩阵运算的时候发现的,这样定义一个二维数组就可以将矩阵中的数值映射到二维数组的每一个空间中,从另一方面来看,矩阵也可以看做成一个二维数组。

reg    [7:0]    data  [255:0] [255:0];

赋值方法

错误方法:

reg    [7:0]    data  [255:0] [255:0];

assign data[0] = 1;

这样赋值会报错。

首先,不能用 assign 对 reg 型的赋值。assign 类型针对于 wire 类型,而不是 reg 类型。要对一个reg 类型进行操作,需要在一个逻辑块内的语句像always块一样。

正确方法:

reg [7:0] b [0:3] [0:3];

initial begin

// using 2D
for (int i=0; i<=3; i++)
for (int j=0; j<=3; j++)
b[i][j] = i*j;
end

 文章来源地址https://www.toymoban.com/news/detail-512821.html

到了这里,关于【Verilog】Verilog定义二维数组(2D Array)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【第43天】sort 的复杂运用 | 对二维数组与结构体实现自定义排序

    本文已收录于专栏 🌸《Java入门一百练》🌸

    2024年01月17日
    浏览(38)
  • JAVA的sort用法详解(二维数组排序,List<>排序,lambada表达式,自定义类型排序)

    目录 前言: 一维数组降序: 方法1.Comparator接口: 代码实现: 方法2.Collections.reverseOrder(): 代码实现:  二维数组排序: 代码如下: List排序: 代码如下: 自定义类型比较排序: 按照年龄逆序排序: 按照姓名升序排序: lambada表达式简写: 一维数组逆序代码: 二维数组排

    2024年04月09日
    浏览(60)
  • shell 数组 ${array[@]} ${array[*]}的使用及区别

    shell中用括号来表示数组,数组元素间使用空格隔开。 例如: a=(1 2 3 4) 表示a数组且有元素为1,2,3,4 也可单个元素逐步来赋值 关联数组 定义关联数组,数组元素带键,键是唯一的。  declare -A array_name 通常使用下标来选择元素  可以使用${array[@]} ,${array[*]}来获取所有元素 区别

    2024年02月11日
    浏览(50)
  • JS对象-数组(Array)

    1.        arr1.concat(arr2,arr3..) 合并数组 2.        arr1.join(\\\"指定字符串\\\"); 将数组按指定字符串拼接成一个新的字符串             arr1.toString() 转字符串,默认,分割 无法指定 3.    arr1.pop() 删除最后一个元素         arr1.push(\\\"元素\\\") 在结尾添加元素(可多个) 4.       

    2024年02月11日
    浏览(45)
  • 定义一个5*5的矩阵(二维数组),赋上初值,通过调用函数实现:将数组中的最大值放在中心,4个角分别放4个最小的元素(顺序为从左到右,从上到下依次从小到大存放),在主函数中输出变换后的数组。

    程序代码: #includestdio.h int min(int (*a)[5]) {    int i,j,*min,t;    min=a;    for(i=0;i5;i++)    for(j=0;j5;j++)    {    if(*(a[i]+j)*min)     min=(a[i]+j);        //交换地址     }     t=*min;     *min=*(a[0]+0);     *(a[0]+0)=t;         for(i=0;i5;i++)    for(j=0;j5;j++)    {    if(i==0j==0) continue; 

    2024年01月24日
    浏览(54)
  • python中的数组(Array)

    作者简介 :一名后端开发人员,每天分享后端开发以及人工智能相关技术,行业前沿信息,面试宝典。 座右铭 :未来是不可确定的,慢慢来是最快的。 个人主页 :极客李华-CSDN博客 合作方式 :私聊+ 这个专栏内容 :BAT等大厂常见后端java开发面试题详细讲解,更新数目10

    2024年02月08日
    浏览(35)
  • 数据结构与算法 | 数组(Array)

    数组(Array)应该是最基础的数据结构之一,它由相同类型的元素组成的集合,并按照一定的顺序存储在内存中。每个元素都有一个唯一的索引,可以用于访问该元素。 数组索引(Index): 数组中的每个元素都有一个唯一的整数索引,从0开始计数。索引用于访问数组中的元素

    2024年02月08日
    浏览(48)
  • Hive中数组array的相关应用

    array():创建一个数组。split(string,delimiter):按指定字符分隔字符串成数组。 array[int]:获取数组元素。 角标从0开始,越界返回NULL。 array_max(array):返回数组中的最大值。 array_min(array):返回数组中的最小值。 array_join(array, delimiter):使用指定的分隔符将数组中的元素连接成一

    2024年02月08日
    浏览(40)
  • Rust 原始类型之数组array内置方法

    目录 数组 array 声明 访问 引用 Reference 切片 Slice 方法 题目实例 在 Rust 中,数组是一种固定大小的数据结构,用于存储具有相同数据类型的元素的有序集合。 “固定大小”是指数组中的元素的类型和数量确定,也就确定了整数数组的大小。 数组可以在声明时指定长度,声明

    2024年02月10日
    浏览(48)
  • 监听数组Array变化或Obj属性变化

    工作中经常会遇到监听数组发生变化时执行相应的回调触发逻辑,客户应用场景中需要实现对象变量的动态监听,当变量发生变化时触发回调函数,实现事件发送等应用场景。       通常由以下两种方式实现需求 一.通过改变对象原型prototype方法实现回调监听 二.利用Proxy对象

    2024年02月09日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包