verilog 给数组集体赋值_Verilog中如何对数组赋值(存储器memory详解)
http://blog.sina.com.cn/s/blog_9424755f0101rhrh.html
存储器是一个寄存器数组。存储器使用如下方式说明:
reg [ msb: 1sb] memory1 [ upper1: lower1],
memory2 [upper2: lower2],. . . ;
例如:
reg [0:3 ] MyMem [0:63]
//MyMem为64个4位寄存器的数组。
reg Bog [1:5]
//Bog为5个1位寄存器的数组。
MyMem和Bog都是存储器。数组的维数不能大于2。注意存储器属于寄存器数组类型。线网数据类型没有相应的存储器类型。
单个寄存器说明既能够用于说明寄存器类型,也可以用于说明存储器类型。
parameter ADDR_SIZE = 16 , WORD_SIZE = 8;
reg [1: WORD_SIZE] RamPar [ ADDR_SIZE-1 : 0], DataReg;
RamPar是存储器,是16个8位寄存器数组,而DataReg是8位寄存器。
在赋值语句中需要注意如下区别:存储器赋值不能在一条赋值语句中完成,但是寄存器可以。因此在存储器被赋值时,需要定义一个索引。下例说明它们之间的不同。
reg [1:5] Dig; //Dig为5位寄存器。
. . .
Dig = 5'b11011;
上述赋值都是正确的, 但下述赋值不正确:
reg BOg[1:5]; //Bog为5个1位寄存器的存储器。
. . .
Bog = 5'b11011;
有一种存储器赋值的方法是分别对存储器中的每个字赋值。例如:
reg [0:3] Xrom [1:4]
. . .
Xrom[1] = 4'hA;
Xrom[2] = 4'h8;
Xrom[3] = 4'hF;
Xrom[4] = 4'h2;
为存储器赋值的另一种方法是使用系统任务:
1) $readmemb (加载二进制值)
2) $readmemb (加载十六进制值)
这些系统任务从指定的文本文件中读取数据并加载到存储器。文本文件必须包含相应的二进制或者十六进制数。例如:
reg [1:4] RomB [7:1] ;
$ readmemb ('ram.patt', RomB);
Romb是存储器。文件“ram.patt”必须包含二进制值。文件也可以包含空白空间和注释。下面是文件中可能内容的实例。
1101
1110
1000
0111
0000
1001
0011
系统任务$readmemb促使从索引7即Romb最左边的字索引,开始读取值。如果只加载存储器的一部分,值域可以在$readmemb方法中显式定义。例如:
$readmemb ('ram.patt', RomB, 5, 3);
在这种情况下只有Romb[5],Romb[4]和Romb[3]这些字从文件头开始被读取。被读取的值为1101、1100和1000。
文件可以包含显式的地址形式。
@hex_address value
如下实例:
@5 11001
@2 11010
在这种情况下,值被读入存储器指定的地址。
当只定义开始值时,连续读取直至到达存储器右端索引边界。例如:
$readmemb ('rom.patt', RomB, 6);
//从地址6开始,并且持续到1。
$readmemb ( 'rom.patt', RomB, 6, 4);
//从地址6读到地址4。
verilog 给数组集体赋值_Verilog中如何对数组赋值(存储器memory详解)相关推荐
- js 浅拷贝直接赋值_JS中实现浅拷贝和深拷贝的代码详解
(一)JS中基本类型和引用类型 JavaScript的变量中包含两种类型的值:基本类型值 和 引用类型值,在内存中的表现形式在于:前者是存储在栈中的一些简单的数据段,后者则是保存在堆内存中的一个对象. ...
- pythonbool类型数组生成_对numpy中布尔型数组的处理方法详解
布尔数组的操作方式主要有两种,any用于查看数组中是否有True的值,而all则用于查看数组是否全都是True. 如果用于计算的时候,布尔量会被转换成1和0,True转换成1,False转换成0.通过 ...
- springMVC注解中@RequestMapping中常用参数value params 以及@RequestParam 详解
转载自 https://blog.csdn.net/qq_35067322/article/details/52811300?locationNum=9&fps=1 https://www.c ...
- python中的class怎么用_对python 中class与变量的使用方法详解
python中的变量定义是很灵活的,很容易搞混淆,特别是对于class的变量的定义,如何定义使用类里的变量是我们维护代码和保证代码稳定性的关键. #!/usr/bin/python #encoding ...
- python中class变量_对python 中class与变量的使用方法详解
python中的变量定义是很灵活的,很容易搞混淆,特别是对于class的变量的定义,如何定义使用类里的变量是我们维护代码和保证代码稳定性的关键. #!/usr/bin/python #encoding ...
- python复制列表元素_Python学习教程:Python列表赋值,复制,深拷贝及5种浅拷贝详解...
Python学习教程:Python列表赋值,复制,深拷贝及5种浅拷贝详解 概述 在列表复制这个问题,看似简单的复制却有着许多的学问,尤其是对新手来说,理所当然的事情却并不如意,比如列表的赋值.复制.浅 ...
- python中append函数解析_对python中的pop函数和append函数详解
对python中的pop函数和append函数详解 pop()函数 1.描述 pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值. 语法 pop()方法语法: list. ...
- Matlab中的FCM算法代码及中文详解
Matlab中的FCM算法代码及中文详解 转自:http://xiaozu.renren.com/xiaozu/106512/336681453 function [center, U, obj_fc ...
- props传递对象_vue组件中使用props传递数据的实例详解
在 Vue 中,父子组件的关系可以总结为 props向下传递,事件向上传递.父组件通过 props 给子组件下发数据,子组件通过事件给父组件发送消息.看看它们是怎么工作的. 一.基本用法 组件不仅仅是 ...
最新文章
- 中国人工智能AI框架自主研发
- 如何从字符串中删除文本?
- 设计模式C++实现(4)——单例模式
- System.InvalidOperationException:“线程间操作无效: 从不是创建控件“txtPortName02”的线程访问它。”...
- 笔记2深度学习 梯度和梯度法
- 【自适应盲均衡3】多模算法(MMA)——复数改进常模算法(MCMA)的理论推导与MATLAB仿真
- 莱斯大学找到了多被提升3G/4G网络性能的方法
- Web-HTML特殊符号的表示
- Python如何在循环语句中加入两个变量_Python基础知识
- php将开始日期与结束日期组成数组,php根据开始日期和结束日期得到时间数组
- 我的压缩软件选择:7zip软件+Zip格式
- xlsx文件打开乱码_excel打不开xlsx文件怎么办 excel打开xlsx文件乱码怎么解决
- java初中级程序员面试宝典-蚂蚁课堂
- python随机密码生成代码大全_Python实现随机密码生成器
- 解决thinkpad sl410 evc windows7硬盘安装ubuntu12.04以后,windows 无线出现断开网速慢等问题
- U大师U盘装系统——启动U盘制作(V1.2.0版)
- C/C++ | 23-12 用指针的方法,将字符串“ABCD1234efgh”前后对调显示
- 【技术邻】CAE工程师崩溃的10个瞬间
- Rust简短笔记:原始指针(Raw Pointer)
- MySQL(入门篇18)SQLyog 的用户权限管理 ; SQL语句的用户权限管理。
热门文章
- 即构科技:解决行业痛点,以MSDN为基础构建全球实时音视频通信云
- 从编解码、传输到基础架构 详解Bigo多媒体技术栈
- x265与SVT-HEVC现已合二为一
- LiveVideoStackCon讲师热身分享 ( 三 ) —— Facebook的工具文化与多媒体QoE
- 腾讯运维技术专家集结,揭秘高效智能运维 | 沙龙报名中
- linux ngx listen的解析
- 面试官:看你简历写了熟悉Kafka,它为什么速度会这么快?
- ubuntu 16.04 usb转串口
- Vue中的 computed 和 watch的区别
- Spark _23 _读取parquet文件创建DataFrame(二)