Verilog HDL 变量 memory型

Verilog HDL通过对reg型变量建立数组来对存储器建模,可以描述RAM型存储器,ROM存储器和reg文件。数组中的每一个单元通过一个数组索引进行寻址。在Verilog语言中没有多维数组存在。 memory型数据是通过扩展reg型数据的地址范围来生成的。其格式如下:
reg [n-1:0] 存储器名[m-1:0];
或 reg [n-1:0] 存储器名[m:1];

在这里,reg[n-1:0]定义了存储器中每一个存储单元的大小,即该存储单元是一个n位的寄存器。存储器名后的[m-1:0]或[m:1]则定义了该存储器中有多少个这样的寄存器。最后用分号结束定义语句。
下面举例说明:
reg [7:0] mema[255:0];
这个例子定义了一个名为mema的存储器,该存储器有256个8位的存储器。该存储器的地址范围是0到255。注意:对存储器进行地址索引的表达式必须是常数表达式。
另外,在同一个数据类型声明语句里,可以同时定义存储器型数据和reg型数据。见下例:
parameter wordsize=16, //定义二个参数。
memsize=256;
reg [wordsize-1:0] mem[memsize-1:0],writereg, readreg;
尽管memory型数据和reg型数据的定义格式很相似,但要注意其不同之处。如一个由n个1位寄存器构成的存储器组是不同于一个n位的寄存器的。见下例:
reg [n-1:0] rega; //一个n位的寄存器
reg mema [n-1:0]; //一个由n个1位寄存器构成的存储器组
一个n位的寄存器可以在一条赋值语句里进行赋值,而一个完整的存储器则不行。见下例:
rega =0; //合法赋值语句
mema =0; //非法赋值语句
如果想对memory中的存储单元进行读写操作,必须指定该单元在存储器中的地址。下面的写法是正确的。
mema[3]=0; //给memory中的第3个存储单元赋值为0。
进行寻址的地址索引可以是表达式,这样就可以对存储器中的不同单元进行操作。表达式的值可以取决于电路中其它的寄存器的值。例如可以用一个加法计数器来做RAM的地址索引。

有你想看的精彩

听大神聊FPGA设计:豁然开朗

ADC/DAC设计经典问答

基于FPGA的快速傅立叶变换

Google版「鸿蒙」,Fuchsia悄悄地来了

日本断供光刻胶,国产迎头赶上!100页国产光刻胶研究框架PPT!

Xilinx 7系列 FPGA选型

SPI怎么玩?搞懂时序,运用自如

谈谈Xilinx FPGA设计的实现过程

Verilog_实现任意占空比、任意分频的方法

【FPGA】几种时序问题的常见解决方法

开源DIY墨水屏手表!外观可盐可甜,无线蓝牙计步闹钟一应俱全!

Verilog 版本:Verilog-95、Verilog-2001与System Verilog区别简谈

1202年了,还在使用虚拟机吗?Win10安装Ubuntu子系统及图形化界面详细教程

例说Verilog HDL和VHDL区别,助你选择适合自己的硬件描述语言

FPGA重点知识13条,助你构建完整“逻辑观”之一

FPGA 的重构

ISP(图像信号处理)算法概述、工作原理、架构、处理流程

用Verilog设计一个16 位 RISC 处理器

Xilinx FPGA程序升级详解

Xilinx 高速收发器Serdes深入研究

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值