【教程】Verilog中数组的表示

  发布时间:2023-10-03  |    作者:yi jin yun  |  浏览量:390


FPGA中的二维数组其实不是真正意义上的数组,而是由多个寄存器组成的ROM或RAM。


具体来说,就是可以将内存宣称为一个reg类型的数组,这个数组中的任何一个单元都可以通过一个下标去访问。

这样的数组定义方式如下:
reg [wordsize : 0]  memory_name [0 : memorysize];
其中[wordsize : 0]是内存的宽度,而 [0 : memorysize]则是内存的深度(也就是有多少存储单元)。


如果要存储一个值到某个单元中去,可以这样做:
memory_name [address] = data_in;


如果要读取每个单元的值,可以这么做:
data_out = memory_name [address];


由于Verilog不允许读/写一个位,所以需要读写一位或者多个位时的操作要麻烦点:
data_out = memory_name [address];
data_out_0 = data_out [0];
这里首先从一个单元读出数据,然后再取出数据的某一位的值。

初始化内存
初始化内存有多种方式,这里介绍的是使用$readmemb和$readmemh系统任务来讲保存在文件中得数据填充到内存单元中去。

$readmemb和$readmemh是类似得,只不过$readmemb用于内存得二进制表示,

$readmemh用于内存内容得十六进制表示。这里以$readmemh系统任务来介绍


语法:


$readmemh("file_name", mem_array, start_addr, stop_addr);



注意的是:file_name是包含数据的文本文件名,mem_array是要初始化的内存单元数组名,

start_addr 和 stop_addr是可选的,指示要初始化单元的起始地址和结束地址。

如果对寄存器组进行在复位得时候进行置0,可以参考如何往寄存器组中写入数据



温馨提示:明德扬2023推出了全新课程——逻辑设计基本功修炼课,降低学习FPGA门槛的同时,增加了学习的趣味性,并组织了考试赢积分活动

http://www.mdy-edu.com/ffkc/415.html

(点击→了解课程详情☝)感兴趣请联系易老师:13112063618(微信同步)


明德扬除了培训学习还有项目承接业务,擅长的项目主要包括的方向有以下几个方面:

1. MIPI视频拼接
     2. SLVS-EC转MIPI接口(IMX472 IMX492)
     3. PCIE采集系统
     4. 图像项目
     5. 高速多通道ADDA系统
     6. 基于FPGA板卡研发
     7. 多通道高灵敏电荷放大器
     8. 射频前端

需要了解相关信息可以联系:易老师13112063618(微信同号)


本文TAG:

Copyright © 2012-2023 版权所有:深圳明德扬科技教育有限公司